Имя: Пароль:
1C
 
Проблема при выводе данных в печатную форму.
0 Reflection1
 
22.07.25
15:44
Всем добрый день, хотел бы попросить помощи. Застрял на задаче с печатной форме. В чем суть: в Бухгалтерии в печатной форме УПД надо из реализации доработать вывод основания (доверенность, приказ) для ответственных лиц. Получил все данные, логику написал, но не получается корректно вывести данные. Изначально удалил области, где были старые параметры и добавил свои(где уже все нужные параметры), но из-за этого не работает функционал "Подпись и печать", не совсем понимаю, как теперь исправить это. Буду благодарен за помощь или подсказку.
1 Волшебник
 
22.07.25
15:47
Верните как было, к самому началу, когда функционал работал.
Затем вносите изменения ПОШАГОВО и проверяйте каждый шаг.
Если сломалось, то вернитесь на шаг назад.
2 Мультук
 
гуру
22.07.25
15:51
(0)
УПД это типовой документ
Все области, параметры, расписаны
Все тэги пронумерованы (см рис) (2, 2а, 2б и т.п.)
https://www.moysklad.ru/upload/medialibrary/426/vaoajnyba6mr3bpr9rtp64awrey6j5w8/upd-2024.jpg

Вопрос.
Что (какую информацию) и в какой тэг вы хотите вписать и зачем при этом менять область ?
3 Reflection1
 
22.07.25
16:01
(1) Функционал прекращает работать на моменте, когда удаляются старые области. Как я понимаю, решение добавлять новые области неверное, но у меня не получается заполнить эти области. отправляю вам часть кода, которая отвечает за заполнение:     
СтруктураПараметровПечати = УчетНДС.НовыйСтруктураПараметровПечатиУПД_УКД();
СтруктураПараметровПечати.МассивОбъектов			  = МассивОбъектов;
СтруктураПараметровПечати.ОбъектыПечати			   = ОбъектыПечати;
СтруктураПараметровПечати.ТекстЗапросаДокументам	  = ТекстЗапроса;
СтруктураПараметровПечати.ТолькоПередаточныйДокумент  = Ложь;
СтруктураПараметровПечати.ТабДокумент				 = Неопределено;
СтруктураПараметровПечати.ПараметрыПечати			 = ПараметрыПечати;
СтруктураПараметровПечати.КлючПараметровПечати		= МакетУПД.КлючПараметровПечати;
СтруктураПараметровПечати.ПолныйПутьКМакету		   = МакетУПД.ПолныйПутьКМакету;   
СтруктураПараметровПечати.ПараметрыВывода			 = ПараметрыВывода;   
					
ТабличныйДокумент = УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(СтруктураПараметровПечати);	
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
					КоллекцияПечатныхФорм, МакетУПД.ИДМакета, МакетУПД.СинонимМакета,ТабличныйДокумент,,МакетУПД.ПолныйПутьКМакету);
                                                        
На данный момент, мне кажется, что нужно добавить данные в СтруктураПараметровПечати.ПараметрыВывода, но возможно, я не прав.
4 Reflection1
 
22.07.25
15:56
(2) К ФИО руководителя и бухгалтера добавить номер и дату доверенности.
5 2S
 
22.07.25
16:04
"в Бухгалтерии в печатной форме УПД надо из реализации доработать вывод основания (доверенность, приказ) для ответственных лиц"

Все работает "изкаропки"

РС ОтветственныеЛица, ОснованияПолномочийОтветственныхЛиц

UPD. Естественно в уже существующих документах ничего не изменится, исправляйте кодом.
6 Мультук
 
гуру
22.07.25
16:04
(3)

Копи-паст типового кода из Обработка.ПечатьУКД - кошерный.

И где здесь "Получил все данные, логику написал" ?
Где ваш код ?
7 Reflection1
 
22.07.25
16:17
(6) Я добавил новые параметры в макет и заполнил их подобным образом. Возможно следовало оставить один параметр и заполнить уже его всеми данными, но я не уверен.      
Вот вам код:
#Вставка
            Если Объект.ДокументОснование <> Неопределено Тогда       
                Если Объект.ДокументОснование.ЗаРуководителяНаОсновании <> Неопределено Тогда    
                    ТипПриказа=Объект.ДокументОснование.ЗаРуководителяНаОсновании.Наименование;  
                    НомерПриказа=Формат(Объект.ДокументОснование.ЗаРуководителяНаОсновании.ДатаНачала,"ДФ=dd.MM.yyyy");
                    НомерДоверенности = Объект.ДокументОснование.ДоверенностьНомер;
                    ДатаДоверенности = Формат(Объект.ДокументОснование.ДоверенностьДата,"ДФ=dd.MM.yyyy");
                КонецЕсли;  
            КонецЕсли;
            
            Если Объект.ДокументОснование.ЗаГлавногоБухгалтераНаОсновании <> Неопределено Тогда    
                ТипПриказаБухгалтер=Объект.ДокументОснование.ЗаГлавногоБухгалтераНаОсновании.Наименование;  
                ПриказДатаНачалаБухгалтер = Формат(Объект.ДокументОснование.ЗаГлавногоБухгалтераНаОсновании.ДатаНачала,"ДФ=dd.MM.yyyy");
            КонецЕсли;  
            Руководитель=Объект.ДокументОснование.ЗаРуководителяНаОсновании.ФизическоеЛицо;
            Бухгалтер=Объект.ДокументОснование.ЗаГлавногоБухгалтераНаОсновании.ФизическоеЛицо;    
            Кладовщик=Объект.ДокументОснование.ОтпускПроизвел;
            Ответственный=Объект.ДокументОснование.ОтветственныйЗаОформление;
            #КонецВставки
            
            Если ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
                ЕстьСчетаФактурыВыданные = Истина;
                Прервать;
            ИначеЕсли ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураПолученный") Тогда
                ЕстьСчетаФактурыПолученные = Истина;
                Прервать;
            КонецЕсли;
        КонецЦикла;  
        
        #Вставка  
        Макет = Обработки.ПечатьУПД.ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент");
        
        ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
        ОбластьПодвалНакладной = Макет.ПолучитьОбласть("ПодвалНакладной");  
        
        //Заполнение параметров для ОбластьПодвала
        //Руководитель
        
        ОбластьПодвал.Параметры.ФИОРуководителя=Руководитель;
        ОбластьПодвал.Параметры.ТипПриказа=ТипПриказа;  
        
        СтрокаТипПриказаРуководитель=ОбластьПодвал.Параметры.ТипПриказа;
        Если СтрНачинаетсяС(СтрокаТипПриказаРуководитель,"Приказ") Тогда
            ОбластьПодвал.Параметры.НомерДоверенности="";
            ОбластьПодвал.Параметры.ДатаДоверенности=НомерПриказа;         
        Иначе
            ОбластьПодвал.Параметры.НомерДоверенности=НомерДоверенности;
            ОбластьПодвал.Параметры.ДатаДоверенности=ДатаДоверенности;  
        КонецЕсли;
        
        //Бухгалтер
        ОбластьПодвал.Параметры.ФИОГлавногоБухгалтера=Бухгалтер;
        ОбластьПодвал.Параметры.ТипПриказаБухгалтер=ТипПриказаБухгалтер;  
        
        СтрокаТипПриказаБухгалтер=ОбластьПодвал.Параметры.ТипПриказаБухгалтер;
        Если СтрНачинаетсяС(СтрокаТипПриказаБухгалтер, "Приказ") Тогда
            ОбластьПодвал.Параметры.НомерДоверенностиБухгалтер="";
            ОбластьПодвал.Параметры.ПриказДатаНачалаБухгалтер=ПриказДатаНачалаБухгалтер;  
        Иначе
            ОбластьПодвал.Параметры.НомерДоверенностиБухгалтер=НомерДоверенности;
            ОбластьПодвал.Параметры.ПриказДатаНачалаБухгалтер=ДатаДоверенности;
            
        КонецЕсли;
        
        //Заполнение параметров для ОбластьПодвалаНакладной
        //Кладовщик
        ОбластьПодвалНакладной.Параметры.ФИОКладовщика=Кладовщик;     
        Если Кладовщик=Руководитель Тогда  
            ОбластьПодвалНакладной.Параметры.ТипПриказаПодвалКладовщик=ТипПриказа;     
        ИначеЕсли Кладовщик=Бухгалтер Тогда
            ОбластьПодвалНакладной.Параметры.ТипПриказаПодвалКладовщик=ТипПриказаБухгалтер;    
        КонецЕсли;     
        СтрокаТипПриказаКладовщик=ОбластьПодвалНакладной.Параметры.ТипПриказаПодвалКладовщик;    
        Если СтрНачинаетсяС(СтрокаТипПриказаКладовщик,"Приказ") Тогда
            ОбластьПодвалНакладной.Параметры.НомерДоверенностиПодвалКладовщик="";
            ОбластьПодвалНакладной.Параметры.ДатаДоверенностиПодвалКладовщик=ПриказДатаНачалаБухгалтер;        
        Иначе
            ОбластьПодвалНакладной.Параметры.НомерДоверенностиПодвалКладовщик=НомерДоверенности;
            ОбластьПодвалНакладной.Параметры.ДатаДоверенностиПодвалКладовщик=ДатаДоверенности;
        КонецЕсли;        
        
        //Ответственный
        ОбластьПодвалНакладной.Параметры.ФИООтветственного=Ответственный;     
        Если Ответственный=Руководитель Тогда  
            ОбластьПодвалНакладной.Параметры.ТипПриказаПодвалОтветственный=ТипПриказа;     
        ИначеЕсли Ответственный=Бухгалтер Тогда
            ОбластьПодвалНакладной.Параметры.ТипПриказаПодвалОтветственный=ТипПриказаБухгалтер;    
        КонецЕсли;
        СтрокаТипПриказаОтветственный=ОбластьПодвалНакладной.Параметры.ТипПриказаПодвалОтветственный;    
        Если СтрНачинаетсяС(СтрокаТипПриказаОтветственный, "Приказ") Тогда
            ОбластьПодвалНакладной.Параметры.НомерДоверенностиПодвалОтветственный="";
            ОбластьПодвалНакладной.Параметры.ДатаДоверенностиПодвалОтветственный=ПриказДатаНачалаБухгалтер;  
        Иначе
            ОбластьПодвалНакладной.Параметры.НомерДоверенностиПодвалОтветственный=НомерДоверенности;
            ОбластьПодвалНакладной.Параметры.ДатаДоверенностиПодвалОтветственный=ДатаДоверенности;    
        КонецЕсли;
    #КонецВставки
8 Мимохожий Однако
 
22.07.25
16:14
Осталось включить отладчик и пошагово посмотреть, что на самом деле выполняет показанный код
9 СвинТуз
 
23.07.25
09:24
Пишите много. Как Лев Толстой.

Достаточно к существующим параметрам добавить
информацию о доверенности и "Переносить" выставить.

Скорее всего правка не в том месте.
10 СвинТуз
 
23.07.25
09:25
Не исключено и доверенность есть.
Но не заполняется.
11 СвинТуз
 
23.07.25
09:26
Достаточно заполнить.
12 СвинТуз
 
23.07.25
09:31
это совсем забавно:
НомерДоверенности = Объект.ДокументОснование.ДоверенностьНомер;

но возможно видимо.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс