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
|
"дурак ты, вася" ;-) отслеживание оплаченных/неоплаченных реализаций (каждой отдельно с разноской оплат по фифо или посделочно) в рамках типовй ТиС решается штатно. без всяких дополнительных регистров... | |
| Интернет-форум Краснодарского края и Краснодара |