Имя: Пароль:
1C
 
Во ВПФ для УТ 10.3 не отрабатываются мои параметры (не заполняются на макете)
0 Shecurok
 
31.01.20
09:40
Скачал УПД с форума, необходимо доработать, а именно заполнять доверенность.

Делается как:
В функции Печать вызывается моя форма, где всего 5 кнопок с именами людей. Допустим жму на Иванов Иван Иванович, в макете проставляется он.

Так вот. Алгоритм такой:
1. Печать - открывается Форма
В форме отрабатывается такой код:
Функция Кнопка1Нажатие(Элемент)
    
    ДоверенноеЛицо = "Иванов Иван Иванович";
    Доверенность   = "(По доверенности № 01/20-ШМ от 09 января 2020 года)";
    Печать1();
    ЭтаФорма.Закрыть();    
    
КонецФункции


(всего пять таких функций).
2. Из Формы вызывается процедура Печать1:

Функция Печать1() Экспорт
    
        Если Строка(ТипЗнч(СсылкаНаОбъект)) <> "Счет-фактура выданный" Тогда
        ДокументОснование = СсылкаНаОбъект;
        
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    СчетФактураВыданныйДокументыОснования.ДокументОснование,
        |    СчетФактураВыданныйДокументыОснования.Ссылка
        |ИЗ
        |    Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
        |ГДЕ
        |    СчетФактураВыданныйДокументыОснования.ДокументОснование = &ДокументОснование
        |    И СчетФактураВыданныйДокументыОснования.Ссылка.ПометкаУдаления = ЛОЖЬ";
        
        Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
        
        РезультатЗапроса = Запрос.Выполнить();
        
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
        Если РезультатЗапроса.Пустой() Тогда
            Сообщить("На основании данной реализации нет счет-фактуры! (Или она помечена на удаление)");
            Возврат 0;
        КонецЕсли;
        
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            СсылкаНаОбъект = ВыборкаДетальныеЗаписи.Ссылка;
        КонецЦикла;
        
    КонецЕсли;
    
    Дата = СсылкаНаОбъект.Дата;
    ВидСчетаФактуры = СсылкаНаОбъект.ВидСчетаФактуры;
    ПометкаУдаления = СсылкаНаОбъект.ПометкаУдаления;
    
    Если Дата < УчетНДС.ДатаНачалаПримененияУПД() Тогда
        Предупреждение("Применение формы универсального передаточного (отгрузочного) документа возможно только с "+УчетНДС.ДатаНачалаПримененияУПД(Истина)+"!");
        Возврат 0;
    КонецЕсли;
    
    Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.Корректировочный Тогда
        Предупреждение("Форма1 универсального передаточного (отгрузочного) документа не предназначена для корректировочных счетов-фактур!");
        Возврат 0;
    КонецЕсли;
    
    Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
        ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
        Предупреждение("Форма1 универсального передаточного документа не применяется для счетов-фактур на аванс");
        Возврат 0;
    КонецЕсли;
    
    Если ПометкаУдаления Тогда
        Предупреждение("Форма1 универсального передаточного (отгрузочного) документа не предназначена для помеченных на удаление документов!");
        Возврат 0;
    КонецЕсли;
    
    ДанныеДляПечати = ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумен<wbr>та();
    Если ДанныеДляПечати = Неопределено Тогда
        Возврат 0;
    КонецЕсли;
    
    ТабДокумент = ПечатьУниверсальногоПередаточногоДокумента(ДанныеДляПечати);    
    

    Возврат ТабДокумент;

    
КонецФункции



Тут мы видим, что вызывается другая функция:

3.

Функция ПечатьУниверсальногоПередаточногоДокумента(ДанныеДляПечати, ТабДокумент = Неопределено) Экспорт

    Дата = СсылкаНаОбъект.Дата;
    
    Если ТабДокумент = Неопределено Тогда
        ТабДокумент = Новый ТабличныйДокумент;
    КонецЕсли;
    
    Если Дата < УчетНДС.НачалоДействияПостановления981() Тогда
        Макет = ПолучитьОбщийМакет("УниверсальныйПередаточныйДокумент");
        ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент";
    Иначе
        Макет = ПолучитьМакет("УниверсальныйПередаточныйДокумент981");
        ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент981";
    КонецЕсли;
    
    УчетНДС.ВывестиСчетФактуруВТабличныйДокумент(ТабДокумент, Макет, ДанныеДляПечати);
    УчетНДС.ВывестиПодвалУниверсальногоПередаточногоДокументаВТабличныйД<wbr>окумент(ТабДокумент, Макет, ДанныеДляПечати);
    
    Возврат ТабДокумент;

КонецФункции // ПечатьУниверсальногоПередаточногоДокумента


Тут судя по всему идет заполнение из общего модуля УчетНДС.

Немного отойду от рассказа.
До этого я скачивал другую ПФ (бесплатную), но там не всё заполнялось. Там мне удалось сделать привязку. Там был такой код:

1. В печати открывается форма, в форме вызывается Печать1, там она выглядела иначе:

ТабДокумент = ПечатьУниверсальногоПередаточногоДокумента();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, , , ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект));


Ну и т.д. по процедурам\функциям.

И там был такой код:

    ОбластьМакетаПодвал.Параметры.Заполнить(ДанныеДляПечати);
    

    // Суть: доверенность
    ОбластьМакетаПодвал.Параметры.Доверенность             = Доверенность;
    ОбластьМакетаПодвал.Параметры.ФИОРуководителя         = ДоверенноеЛицо;
    ОбластьМакетаПодвал.Параметры.ФИОГлавногоБухгалтера = ДоверенноеЛицо;

    
    ТабДокумент.Вывести(ОбластьМакетаПодвал);

и соответственно в начале модуля было 2 переменные (Доверенность, ДоверенноеЛицо).

Возвращаемся к используемой ПФ. Тут есть подобная процедура где есть подобное заполнение, но судя по всему она не используется, а идет обращение напрямую в УчетНДС.

Я добавил там заполнение (как выше) и добавил в процедуру переменные 2 штуки, но вместо заполнения строчки оказались пустыми. Т.е. код действительно берется из общего модуля. Но не отрабатывает как надо. Какие варианты посоветуете?
1 Shecurok
 
31.01.20
09:41
Т.е. то, что я добавил в общий модуль не отрабатывает. Может я как-от переменные не так проставил, хотя они аналогичные тем, что были в прошлой ПФ, за исключением того, что переменные тут стоят в процедуре, а там они были общие.
2 Shecurok
 
31.01.20
09:56
переменные добавил в общий модуль УчетНДС, в ВывестиСчетФактуруВТабличныйДокумент.

И кстати, если раньше переменные были Экспортные, то тут нет. Лоакльные перменные нельзя сделать экспортными, а если я их ставлю вне процедур, ругается, что модуль может читать только процедуры и функции
3 unbred
 
31.01.20
10:00
ты чтобы картину на стену повесить сначала разбираешь стену, берёшь нужный кирпич, сверлишь в нём дырку, собираешь стену и вешаешь ? я ничего не перепутал?
4 Shecurok
 
31.01.20
10:03
(3) да ладно вам, я пытаюсь понять, что делаю не так. Не хватает знаний это факт. Что я примерно делаю не так?
5 Shecurok
 
31.01.20
10:06
Скорее всего я как то не верно указываю переменные.
6 Shecurok
 
31.01.20
10:21
не, ну тут точно дело в переменных. Отладчик показывает на них "Неопределенно". А как их в таком случае указать верно? Вот этого не пойму. Доверенное лицо у меня записано в Форме внешней ПФ. Иии как тогда указать?
7 ДенисЧ
 
31.01.20
10:22
Сделать переменные реквизитами обработки. В них и присваивать значения. И читать тоже из них. Про глобальные переменные забудь.
8 Shecurok
 
31.01.20
10:30
(7) а как им присвоить значения и читать из них?
ну допустим в форме у меня так и останется Доверенность = "Иванов Иван Иванович".
Это задастся реквизит?
И как мне его в дальнейшем прочитать если из общего модуля вызывается функция?
9 Пробел
 
31.01.20
10:39
в табличном макете у Вас есть ячейка с текстом "<Доверенность>" или "[Доверенность]"? Эта ячейка принадлежит Области макета подвал? У этой ячейки свойство "Заполнение" установлено в "Параметр" или "Шаблон"?
10 Shecurok
 
31.01.20
10:41
(9) есть, принадлежит подвалу, заполнение = параметр
11 Пробел
 
31.01.20
10:56
ДанныеДляПечати - это должна быть структура или соответствие. Попробуйте добавить в нее свои Доверенность и ДоверенноеЛицо перед строкой:

ТабДокумент = ПечатьУниверсальногоПередаточногоДокумента(ДанныеДляПечати);
12 Пробел
 
31.01.20
11:10
Эта задача просто решается отладкой. Посмотреть доходят ли из формы в модуль Доверенность и ДоверенноеЛицо, посмотреть есть ли в итоговом ТабличномДокументе эти параметры (скорее всего нет), провалиться в

УчетНДС.ВывестиПодвалУниверсальногоПередаточногоДокументаВТабличныйДокумент(ТабДокумент, Макет, ДанныеДляПечати);

посмотреть как заполняется подвал.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший