Имя: Пароль:
1C
1С v8
Не работает внешняя печатная форма
,
0 Maratuster
 
03.11.15
10:09
Всем добра )))
Поручили переделать ВПФ с бухни 2.0 на 3.0. Форма выводится на печать, но она пустая! Может кто сказать, где у меня ошибка?
(Я только учусь)

ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
    
    Запрос = Новый Запрос;
    Запрос.Текст =
     "ВЫБРАТЬ
     |    ИнвентаризацияРасчетовСКонтрагентами.Контрагенты.(
     |        Ссылка,
     |        НомерСтроки,
     |        ВидЗадолженности,
     |        Контрагент,
     |        СчетРасчетов,
     |        Подтверждено,
     |        НеПодтверждено,
     |        ИстекСрокДавности
     |    ) Как Контрагенты
     |ИЗ
     |    Документ.ИнвентаризацияРасчетовСКонтрагентами КАК ИнвентаризацияРасчетовСКонтрагентами
     |ГДЕ
     |    ИнвентаризацияРасчетовСКонтрагентами.Ссылка В (&МассивСсылок)";
    
    Запрос.УстановитьПараметр("МассивСсылок", МассивОбъектов);
    
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    
    Для Каждого СтрокаКонтрагента из ВыборкаДетальныеЗаписи.Контрагенты Цикл
        СуммаПоКотрагенту = 0;
        Если СтрокаКонтрагента.ВидЗадолженности = Перечисления.ВидыЗадолженности.Дебиторская Тогда
            СведенияОКонтрагенте = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформации(СтрокаКонтрагента.Контрагент, Шапка.Дата);
            
            ОбластьМакетаСтрока.Параметры.Контрагент = СтрокаКонтрагента.Контрагент;
            ОбластьМакетаСтрока.Параметры.СведенияОКонтрагенте = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм, ЮридическийАдрес,Телефоны");
            
            ТЗЗадолженности = РасшифроватьЗадолженность(СтрокаКонтрагента.Контрагент, СтрокаКонтрагента.СчетРасчетов, Шапка, Истина);
            СуммаПоКотрагенту = ТЗЗадолженности.Итог("СуммаОстаток");
            Разница = СуммаПоКотрагенту -  СтрокаКонтрагента.Подтверждено - СтрокаКонтрагента.НеПодтверждено;
            Если Разница > 0 Тогда
                //СуммаПоКотрагенту = ПолучитьСвернутыйОстаток(СтрокаКонтрагента.Контрагент, СтрокаКонтрагента.СчетРасчетов, Шапка, Истина);
                СуммаПоКотрагенту = СтрокаКонтрагента.Подтверждено + СтрокаКонтрагента.НеПодтверждено;
            КонецЕсли;
            ОбластьМакетаСтрока.Параметры.СуммаДебет =СуммаПоКотрагенту;
            ОбластьМакетаСтрока.Параметры.СуммаКредит = 0;
            НазваниеДокумента = "";
            НомерДокумента = "";
            ДатаДокумента = "";
            //МинимальнаяДатаДокумента = "";
            ЗаЧто = "";
            ДокументПоПорядку = 0;
            
            
            СписокНазванийДоков.Очистить();
            СписокЗаЧто.Очистить();
            
            Для Каждого СтрокаТЗ из ТЗЗадолженности Цикл
                
                Если ЗначениеЗаполнено(СтрокаТЗ.ДокументРасчетов) Тогда
                    ДокументПоПорядку = ДокументПоПорядку + 1;
                    НазваниеДокументаЕдЧисло = СокрЛП(СтрокаТЗ.ДокументРасчетов.Метаданные());
                    Если ДокументПоПорядку=1 Тогда
                        НазваниеДокумента  = НазваниеДокументаЕдЧисло;
                        НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаТЗ.ДокументРасчетов);
                        ДатаДокумента = Формат(СтрокаТЗ.ДокументРасчетов.Дата,"ДФ=dd.MM.yyyy");
                        //МинимальнаяДатаДокумента = СтрокаТЗ.ДокументРасчетов.Дата;
                        ТекущееЗаЧто = ОпределитьПредметЗадолженности(СтрокаТЗ.ДокументРасчетов);
                        ЗаЧто = ТекущееЗаЧто;
                        СписокЗаЧто.Добавить(ТекущееЗаЧто);
                    Иначе
                        Если СписокНазванийДоков.НайтиПоЗначению(НазваниеДокументаЕдЧисло) = Неопределено Тогда
                            Если Найти(НазваниеДокумента,НазваниеДокументаЕдЧисло)=0 Тогда
                                НазваниеДокумента = НазваниеДокумента + ", " + НазваниеДокументаЕдЧисло;
                            Иначе //меняем на множественное число
                                Если СписокНазванийДоков.НайтиПоЗначению(НазваниеДокументаЕдЧисло) = Неопределено Тогда
                                    ПодстрокаЗамены = ПолучитьПОдстрокуЗамены(НазваниеДокументаЕдЧисло);
                                    НазваниеДокумента = СтрЗаменить(НазваниеДокумента,НазваниеДокументаЕдЧисло, ПодстрокаЗамены);
                                    СписокНазванийДоков.Добавить(НазваниеДокументаЕдЧисло);
                                КонецЕсли;
                            КонецЕсли;
                        КонецЕсли;                            
                        НомерДокумента = НомерДокумента + Символы.ПС + ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаТЗ.ДокументРасчетов);
                        ДатаДокумента = ДатаДокумента  + Символы.ПС + Формат(СтрокаТЗ.ДокументРасчетов.Дата,"ДФ=dd.MM.yyyy");
                        ТекущееЗаЧто = ОпределитьПредметЗадолженности(СтрокаТЗ.ДокументРасчетов);
                        Если СписокЗаЧто.НайтиПоЗначению(ТекущееЗаЧто) = Неопределено Тогда
                            ЗаЧто = ЗаЧто +  Символы.ПС + ТекущееЗаЧто;
                            СписокЗаЧто.Добавить(ТекущееЗаЧто);
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
            НПП = НПП + 1;
            ОбластьМакетаСтрока.Параметры.НПП = НПП;
            ОбластьМакетаСтрока.Параметры.НазваниеДокумента = НазваниеДокумента;
            ОбластьМакетаСтрока.Параметры.НазваниеДокумента = НазваниеДокумента;
            ОбластьМакетаСтрока.Параметры.НомерД = НомерДокумента;
            ОбластьМакетаСтрока.Параметры.ДатаД =  ДатаДокумента;
            ОбластьМакетаСтрока.Параметры.ЗаЧто =  ЗаЧто;
            ИтогоСуммаДебет = ИтогоСуммаДебет + СуммаПоКотрагенту;
            ТабДокумент.Вывести(ОбластьМакетаСтрока);
        КонецЕсли;
    КонецЦикла;
1 Горогуля
 
03.11.15
10:10
а почему она должна быть полная по-твоему?
2 butterbean
 
03.11.15
10:11
Весь код не смотрел.
Почему в конце ТабДокумент не возвращается из функции??
3 Горогуля
 
03.11.15
10:12
(2) не весь код ты смотрел. функции там нет
4 hhhh
 
03.11.15
10:36
(0) зачем через задницу делать? может так

ВЫБРАТЬ
     |        Ссылка,
     |        НомерСтроки,
     |        ВидЗадолженности,
     |        Контрагент,
     |        СчетРасчетов,
     |        Подтверждено,
     |        НеПодтверждено,
     |        ИстекСрокДавности
      |ИЗ
     |    Документ.ИнвентаризацияРасчетовСКонтрагентами.Контрагенты КАК ИнвентаризацияРасчетовСКонтрагентамиКонтрагенты
     |ГДЕ
     |    ИнвентаризацияРасчетовСКонтрагентамиКонтрагенты.Ссылка В (&МассивСсылок)
5 Maratuster
 
03.11.15
11:03
(1) а почему не должна? Я потому и спрашиваю у опытных программистов, где косяк. Сам его найти не могу - опыта мало.
(4) попробую
6 Горогуля
 
03.11.15
11:06
да хрен его знает, где косяк. ну что-то выводится в ТабДокумент. и чо?
7 Горогуля
 
03.11.15
11:06
(6) или не выводится
8 Maratuster
 
03.11.15
11:08
(7) В том и дело, что не выводится. Просто пустой макет. Только шапка и подвал заполняются
9 АдинС
 
03.11.15
11:09
Тогда отладчиком смотри, что в цикле заполняется.. Наименование параметров сравни, наименование областей макетов и т.д...
10 Maratuster
 
03.11.15
11:09
(7) У меня вызывает сомнение часть, в которой результат запроса в цикл передается. Может я чего неправильно указал?
11 Горогуля
 
03.11.15
11:11
(10) точку остановка в отладчике ты не указал
12 Maratuster
 
03.11.15
11:18
(11) ставил, в нем и проблема
Но по синтаксису "ошибок нет". Просто я не могу с этим циклом справиться.
13 Maratuster
 
03.11.15
11:20
(11) для точки останова пришлось модуль в конфе менять на данный. Это же ВПФ. Постоянно такие смены за... надоедят
14 АдинС
 
03.11.15
12:14
Сделай ВПФ с Формой для отладки данного модуля, в конфу встраивать модуль необязательно..
2 + 2 = 3.9999999999999999999999999999999...