Имя: Пароль:
1C
1С v8
Строки печатной формы
0 Su60ta_SunRise
 
14.08.13
14:02
Нид ХЕЛП
Попросили вытащить печатную форму АктаСверки из БП
И туда запихнуть номенклатуру и количество по документам реализации.

//Создадим список документов по организации и контрагенту
            СписокДокументов  = новый массив;
            СписокДокументовК = новый массив;
            Пока ОбходПоДокументам.Следующий() Цикл
                Если ОбходПоДокументам.Дата<>NULL Тогда
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт,Товары,Количество",
                    ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт));                
                КонецЕсли;
                
                Если ОбходПоДокументам.ДатаК<>NULL Тогда
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр",
                    ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр));                
                КонецЕсли;
            КонецЦикла;    
            
            
            
            //Для упрощения вывода, сравним списки по количеству элементов, добавив пустые
            МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            Если СписокДокументов.Количество()<СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт","","","","",""));
                КонецЦикла;
            ИначеЕсли СписокДокументов.Количество()>СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр","","","",""));
                КонецЦикла;            
            КонецЕсли;
            
            
            
            Для Инд = 0 По МаксИндекс Цикл
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
                ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);    //как тут ему сказать, чтоб не выводил строки?                        
                ТабДок.Вывести(ОбластьОбороты);        
                ///ДОБАВЛЯЕМ НОМЕНКЛАТУРУ И КОЛИЧЕСТВО
                Если ТипЗнч(СписокДокументов[Инд].Регистратор) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
                    ТаблицаТоваров = СписокДокументов[Инд].Регистратор.Товары;
                    Для каждого СтрДок Из ТаблицаТоваров Цикл
                        ОблНом = Макет.ПолучитьОбласть("Обороты");
                        ОблНом.Параметры.РегистраторПредставление = СтрДок.Номенклатура;
                        ОблНом.Параметры.КоличествоТовара = СтрДок.Количество;                         
                        ТабДок.Вывести(ОблНом);                        
                    КонецЦикла;
                    
                    
                КонецЕсли;
                
            КонецЦикла;                  
            
Все делает, что нужно было.
Но проблема вот в чем:
Сам акт сверки делится на две части: Левые Колонки организации и Правые колонки контрагентов и по формированию Печат.формы в правой части контрагентов появляются пустые строки, из за того, что добавляется номенклатура.
Как убрать эти строки в правой части печатной формы Контрагентов.
Вот
1 Su60ta_SunRise
 
14.08.13
14:59
Ема, никто не поможет)
2 capitanjack1
 
14.08.13
15:16
Тоесть тебя попросили сделать акт с детализаций до номенклатуры ? (за которую висит задолженность) но так не получится, разррез ведется в разрезе догооворов/документов расчета/ заказов но не номенклатуры.
3 Su60ta_SunRise
 
14.08.13
15:23
http://yadi.sk/d/0QeCkIG77uQXE
Ну вот, вытащил, только строки теперь мешаются.
4 capitanjack1
 
14.08.13
15:31
(3) пусть не придумывают велосипед, есть стандартная форма акта. двойным щелчком можно по расшифровке открыть документ посмотреть за что оплата или что за продажа. Контрагент с которым акт делается тоже в свою очередь может это посмотреть по исходящим документам.
5 Su60ta_SunRise
 
14.08.13
15:36
хотят это видеть сразу на бумаге, что и сделано впринципе.
Осталось только убрать строки  тут:


МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            Если СписокДокументов.Количество()<СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт","","","","",""));
                КонецЦикла;
            ИначеЕсли СписокДокументов.Количество()>СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр","","","",""));
                КонецЦикла;            
            КонецЕсли;
            
            
            
            Для Инд = 0 По МаксИндекс Цикл
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
                ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);