К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Повторно закрывается регистр остатков

0 - 05.07.2013 - 15:32
Создал свой регистр остатков "НеоплаченнаяРеализация" для формирования отчета
"Анализ продаж по оплате".
Измерения:
Контрагент, ВидДоговора, Номенклатура, ФизЛицо, Док
Ресурс "ПродСтоимость".

Документ отгрузки формирует движение на +,
документ оплаты на "-" (закрывает его)
Следующие документы оплаты продолжают закрывать уже закрытый
Привожу кусок модуля

регНеоплаченнаяРеализация = СоздатьОбъект("Регистр.НеоплаченнаяРеализация");
регНеоплаченнаяРеализация.УстановитьФильтр(Конт.Ко нтрагент,Конт.Договор.ВидДоговора,,,);

Если Конт.СравнитьТА() < 0 Тогда
Сообщить("Конт.СравнитьТА()"+Конт.СравнитьТА());
регНеоплаченнаяРеализация.ВременныйРасчет(1);
РассчитатьРегистрыНа(Конт.ТекущийДокумент());
КонецЕсли;

ТабРеализация = СоздатьОбъект("ТаблицаЗначений");
регНеоплаченнаяРеализация.ВыгрузитьИтоги(ТабРеализ ация, 1);
регНеоплаченнаяРеализация.ВременныйРасчет(0);
ТабРеализация.Сортировать("+Док", 1);
ТабРеализация.ВыбратьСтроки();
Пока ТабРеализация.ПолучитьСтроку() > 0 Цикл
Если СуммаОплаты<=0 Тогда Прервать; КонецЕсли;
Стоимость = ТабРеализация.ПродСтоимость;
ОплаченнаяСумма = Мин(Стоимость, СуммаОплаты);
ТекДок = ТабРеализация.Док;
регПродажи.ВыбратьДвиженияДокумента(ТекДок);
Пока регПродажи.ПолучитьДвижение() > 0 Цикл
ТабПродажа.НоваяСтрока();
ТабПродажа.Номенклатура = регПродажи.Номенклатура;
ТабПродажа.ПродСтоимость = регПродажи.ПродСтоимость;
ТабПродажа.Себестоимость = регПродажи.Себестоимость;
КонецЦикла;
ТекНоменклатура = ТабРеализация.Номенклатура;
Конт.Регистр.НеоплаченнаяРеализация.Контрагент = Конт.Контрагент;
Конт.Регистр.НеоплаченнаяРеализация.ВидДоговора = ТабРеализация.ВидДоговора;
Конт.Регистр.НеоплаченнаяРеализация.Номенклатура = ТекНоменклатура;
Конт.Регистр.НеоплаченнаяРеализация.ФизЛицо = ТабРеализация.ФизЛицо;
Конт.Регистр.НеоплаченнаяРеализация.Док = ТекДок;
Конт.Регистр.НеоплаченнаяРеализация.ПродСтоимость = ОплаченнаяСумма;
Сообщить(""+ТабРеализация.Контрагент+" "+ТабРеализация.ВидДоговора+" "+ТекНоменклатура+" "+ТабРеализация.ФизЛицо+" "+ТекДок+" "+глФРМ(Стоимость));
Конт.Регистр.НеоплаченнаяРеализация.ДвижениеПриход Выполнить();

Конт.Регистр.ОплаченнаяРеализация.Номенклатура = ТекНоменклатура;
Конт.Регистр.ОплаченнаяРеализация.Склад = ТекДок.Склад;
Конт.Регистр.ОплаченнаяРеализация.Контрагент = Конт.Контрагент;
Конт.Регистр.ОплаченнаяРеализация.ФизЛицо = ТабРеализация.ФизЛицо;
Конт.Регистр.ОплаченнаяРеализация.Док = ТекДок;
Конт.Регистр.ОплаченнаяРеализация.ПродСтоимость = ОплаченнаяСумма;

НомСтр = 0; ТабПродажа.НайтиЗначение(ТекНоменклатура,НомСтр, "Номенклатура");
Если НомСтр > 0 Тогда
ПродСтоимостьОтгрузки = ТабПродажа.ПолучитьЗначение(НомСтр, "ПродСтоимость");
СебестоимостьОтгрузки = ТабПродажа.ПолучитьЗначение(НомСтр, "Себестоимость");
Конт.Регистр.ОплаченнаяРеализация.Себестоимость = СебестоимостьОтгрузки*ОплаченнаяСумма/ПродСтоимостьОтгрузки;
Иначе
Сообщить("Не найдена себестоимость по "+ТекНоменклатура);
КонецЕсли;
Конт.Регистр.ОплаченнаяРеализация.ДвижениеВыполнит ь();

СуммаОплаты = СуммаОплаты-ОплаченнаяСумма;
ТабПродажа.УдалитьСтроки();
КонецЦикла;
ТабПродажа.Очистить();
ТабРеализация.Очистить();
регНеоплаченнаяРеализация = "";



Гость
1 - 11.07.2013 - 02:10
Конт.Регистр.НеоплаченнаяРеализация.ДвижениеПриход Выполнить();
?
2 - 11.07.2013 - 03:35
"дурак ты, вася" ;-)
отслеживание оплаченных/неоплаченных реализаций (каждой отдельно с разноской оплат по фифо или посделочно) в рамках типовй ТиС решается штатно. без всяких дополнительных регистров...


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены