Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Вопрос по ВПФ БП 3

Вопрос по ВПФ БП 3
Я
   voproshatel
 
08.09.21 - 11:23
Привет кодерам, делаю впф упд бп3, из дока РТиУ идет модуль менеджера "ПечатьУПД", там есть параметр КоллекцияПечатныхФорм, откуда он берется? Как программа понимает что нужно печатать статус упд 1 или 2.
Задача такая: чтобы в моей впф было печать Упд, а не печать упд 1 и печать упд 2.Памагити.
   voproshatel
 
1 - 08.09.21 - 11:24
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ЕстьСчетаФактурыВыданные   = Ложь;
    ЕстьСчетаФактурыПолученные = Ложь;
    
    Для каждого Объект Из МассивОбъектов Цикл
        Если ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
            ЕстьСчетаФактурыВыданные = Истина;
            Прервать;
        ИначеЕсли ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураПолученный") Тогда
            ЕстьСчетаФактурыПолученные = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    ТаблицаМакетовУПД = УчетНДС.ТаблицаМакетовУПД();
    
    // Печать УПД в статусе "1"

    Если ЕстьСчетаФактурыВыданные ИЛИ ЕстьСчетаФактурыПолученные Тогда
        Для Каждого МакетУПД ИЗ ТаблицаМакетовУПД Цикл
            Если МакетУПД.Статус <> "1" Тогда
                Продолжить;
            КонецЕсли;
            Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, МакетУПД.ИДМакета) Тогда
                
                Если ЕстьСчетаФактурыВыданные Тогда
                    ТекстЗапроса = Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(
                        МакетУПД.ВерсияПостановленияНДС1137, Истина, МакетУПД.ПрослеживаемыеТовары);
                Иначе
                    ТекстЗапроса = Документы.СчетФактураПолученный.ТекстЗапросаПечатьСчетовФактур(
                        МакетУПД.ВерсияПостановленияНДС1137, МакетУПД.ПрослеживаемыеТовары);
                КонецЕсли;
                
                СтруктураПараметровПечати = УчетНДС.НовыйСтруктураПараметровПечатиУПД_УКД();
                СтруктураПараметровПечати.МассивОбъектов              = МассивОбъектов;
                СтруктураПараметровПечати.ОбъектыПечати               = ОбъектыПечати;
                СтруктураПараметровПечати.ТекстЗапросаДокументам      = ТекстЗапроса;
                СтруктураПараметровПечати.ТолькоПередаточныйДокумент  = Ложь;
                СтруктураПараметровПечати.ТабДокумент                 = Неопределено;
                СтруктураПараметровПечати.ПараметрыПечати             = ПараметрыПечати;
                СтруктураПараметровПечати.КлючПараметровПечати        = МакетУПД.КлючПараметровПечати;
                СтруктураПараметровПечати.ПолныйПутьКМакету           = МакетУПД.ПолныйПутьКМакету;
                
                ТабличныйДокумент = УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(СтруктураПараметровПечати);
                
                УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
                    КоллекцияПечатныхФорм, МакетУПД.ИДМакета, МакетУПД.СинонимМакета,ТабличныйДокумент,,МакетУПД.ПолныйПутьКМакету);
                
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
    // Печать УПД в статусе "2"

    Для Каждого МакетУПД ИЗ ТаблицаМакетовУПД Цикл
        Если МакетУПД.Статус <> "2" Тогда
            Продолжить;
        КонецЕсли;
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, МакетУПД.ИДМакета) Тогда
            ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = "";
            Для каждого Объект Из МассивОбъектов Цикл
                Если ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураВыданный")
                    И ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураПолученный") Тогда
                    ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = 
                        Документы[Объект.Метаданные().Имя].ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов(
                            МакетУПД.ВерсияПостановленияНДС1137, МакетУПД.ПрослеживаемыеТовары);
                    Прервать;
                КонецЕсли;
            КонецЦикла;
            Если НЕ ПустаяСтрока(ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов) Тогда
                
                СтруктураПараметровПечати = УчетНДС.НовыйСтруктураПараметровПечатиУПД_УКД();
                СтруктураПараметровПечати.МассивОбъектов              = МассивОбъектов;
                СтруктураПараметровПечати.ОбъектыПечати               = ОбъектыПечати;
                СтруктураПараметровПечати.ТекстЗапросаДокументам      = ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов;
                СтруктураПараметровПечати.ТолькоПередаточныйДокумент  = Истина;
                СтруктураПараметровПечати.ТабДокумент                 = Неопределено;
                СтруктураПараметровПечати.ПараметрыПечати             = ПараметрыПечати;
                СтруктураПараметровПечати.КлючПараметровПечати        = МакетУПД.КлючПараметровПечати;
                СтруктураПараметровПечати.ПолныйПутьКМакету           = МакетУПД.ПолныйПутьКМакету;
                
                ТабличныйДокумент = УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(СтруктураПараметровПечати);
                    
                УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
                    КоллекцияПечатныхФорм, МакетУПД.ИДМакета, МакетУПД.СинонимМакета, ТабличныйДокумент,,МакетУПД.ПолныйПутьКМакету);
                
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);    
    
КонецПроцедуры
   voproshatel
 
2 - 08.09.21 - 11:24
Функция ТаблицаМакетовУПД() Экспорт
    
    ТаблицаМакетов = Новый ТаблицаЗначений;
    ТаблицаМакетов.Колонки.Добавить("ИДМакета",                   Новый ОписаниеТипов("Строка"));
    ТаблицаМакетов.Колонки.Добавить("СинонимМакета",              Новый ОписаниеТипов("Строка"));
    ТаблицаМакетов.Колонки.Добавить("Статус",                     Новый ОписаниеТипов("Строка"));
    ТаблицаМакетов.Колонки.Добавить("ВерсияПостановленияНДС1137", Новый ОписаниеТипов("Число"));
    ТаблицаМакетов.Колонки.Добавить("ПолныйПутьКМакету",          Новый ОписаниеТипов("Строка"));
    ТаблицаМакетов.Колонки.Добавить("ПрослеживаемыеТовары",       Новый ОписаниеТипов("Булево"));
    ТаблицаМакетов.Колонки.Добавить("КлючПараметровПечати",       Новый ОписаниеТипов("Строка"));
    
    ПорядокПримененияФормСФ = 
        УчетНДСПереопределяемый.СоответствиеВерсийПостановленияФормамСчетовФактур();
    
    // УПД.

    НовыйМакет = ТаблицаМакетов.Добавить();
    НовыйМакет.ИДМакета                   = "УПДСтатус1";
    НовыйМакет.СинонимМакета              = "УПД (статус 1)";
    НовыйМакет.Статус                     = "1";
    НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
    НовыйМакет.ПолныйПутьКМакету          = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент";
    НовыйМакет.ПрослеживаемыеТовары       = Ложь;
    НовыйМакет.КлючПараметровПечати       = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент";
    
    НовыйМакет = ТаблицаМакетов.Добавить();
    НовыйМакет.ИДМакета                   = "УПДСтатус2";
    НовыйМакет.СинонимМакета              = "УПД (статус 2)";
    НовыйМакет.Статус                     = "2";
    НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
    НовыйМакет.ПолныйПутьКМакету          = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент";
    НовыйМакет.ПрослеживаемыеТовары       = Ложь;
    НовыйМакет.КлючПараметровПечати       = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент";
    
    // УПД 981.

    НовыйМакет = ТаблицаМакетов.Добавить();
    НовыйМакет.ИДМакета                   = "УПДСтатус1_981";
    НовыйМакет.СинонимМакета              = "УПД (статус 1)";
    НовыйМакет.Статус                     = "1";
    НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
    НовыйМакет.ПолныйПутьКМакету          = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент981";
    НовыйМакет.ПрослеживаемыеТовары       = Ложь;
    НовыйМакет.КлючПараметровПечати       = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_981";
    
    НовыйМакет = ТаблицаМакетов.Добавить();
    НовыйМакет.ИДМакета                   = "УПДСтатус2_981";
    НовыйМакет.СинонимМакета              = "УПД (статус 2)";
    НовыйМакет.Статус                     = "2";
    НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
    НовыйМакет.ПолныйПутьКМакету          = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент981";
    НовыйМакет.ПрослеживаемыеТовары       = Ложь;
    НовыйМакет.КлючПараметровПечати       = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_981";
    
    // УПД 534

    // без прослеживаемого товара.

    НовыйМакет = ТаблицаМакетов.Добавить();
    НовыйМакет.ИДМакета                   = "УПДСтатус1_534";
    НовыйМакет.СинонимМакета              = "УПД (статус 1)";
    НовыйМакет.Статус                     = "1";
    НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
    НовыйМакет.ПолныйПутьКМакету          = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент534";
    НовыйМакет.ПрослеживаемыеТовары       = Ложь;
    НовыйМакет.КлючПараметровПечати       = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_534";
    
    НовыйМакет = ТаблицаМакетов.Добавить();
    НовыйМакет.ИДМакета                   = "УПДСтатус2_534";
    НовыйМакет.СинонимМакета              = "УПД (статус 2)";
    НовыйМакет.Статус                     = "2";
    НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
    НовыйМакет.ПолныйПутьКМакету          = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент534";
    НовыйМакет.ПрослеживаемыеТовары       = Ложь;
    НовыйМакет.КлючПараметровПечати       = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_534";
    
    // УПД 534

    // с прослеживаемым товаром.

    НовыйМакет = ТаблицаМакетов.Добавить();
    НовыйМакет.ИДМакета                   = "УПДСтатус1_534Прослеж";
    НовыйМакет.СинонимМакета              = "УПД (статус 1)";
    НовыйМакет.Статус                     = "1";
    НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
    НовыйМакет.ПолныйПутьКМакету          = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент534Прослеж";
    НовыйМакет.ПрослеживаемыеТовары       = Истина;
    НовыйМакет.КлючПараметровПечати       = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_534Прослеж";
    
    НовыйМакет = ТаблицаМакетов.Добавить();
    НовыйМакет.ИДМакета                   = "УПДСтатус2_534Прослеж";
    НовыйМакет.СинонимМакета              = "УПД (статус 2)";
    НовыйМакет.Статус                     = "2";
    НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
    НовыйМакет.ПолныйПутьКМакету          = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент534Прослеж";
    НовыйМакет.ПрослеживаемыеТовары       = Истина;
    НовыйМакет.КлючПараметровПечати       = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_534Прослеж";
    
    Возврат ТаблицаМакетов;
    
КонецФункции
   ДенисЧ
 
3 - 08.09.21 - 11:27
Он к тебе прилетает параметром в твою функцию из недр БСП.
   voproshatel
 
4 - 08.09.21 - 11:33
(3) т.е. разделения на упд 1 и упд 2 в моей впф не избежать?
   voproshatel
 
5 - 08.09.21 - 11:37
Функция СведенияОВнешнейОбработке()Экспорт 
    
    ПараметрыРегистрации = Новый Структура; 
    МассивНазначений = Новый Массив; 
    МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");
    МассивНазначений.Добавить("Документ.СчетФактураВыданный");
    
    //Указываем документ к которому делаем внешнюю печ. форму 

    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); 
    //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... 

    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); 
    ПараметрыРегистрации.Вставить("Наименование", "УПД (ред.)"); 
    //имя под которым обработка будет зарегестрирована в справочнике внешних обработок 

    ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); 
    ПараметрыРегистрации.Вставить("Версия", "1.0"); 
    ПараметрыРегистрации.Вставить("Информация", "УПД (ред.)"); 
    ТаблицаКоманд = ПолучитьТаблицуКоманд(); 
    //ДобавитьКоманду(ТаблицаКоманд, "УПД (ред.)", "УПДСтатус2_981", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); 

    ДобавитьКоманду(ТаблицаКоманд, "УПД Статус1(ред.)", "УПДСтатус1", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); 
    ДобавитьКоманду(ТаблицаКоманд, "УПД Статус2(ред.)", "УПДСтатус2", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); 
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); 

    Возврат ПараметрыРегистрации;                                        
КонецФункции
   ДенисЧ
 
6 - 08.09.21 - 11:39
Ты же сам в сведениях задаёшь две команды. Вот она тебе и показывает два пункта.
Сделай одну команду - будет один пункт...
   voproshatel
 
7 - 08.09.21 - 11:52
(6) но тогда как она поймет какую упд печатать: 1 или 2? Если оставлю УПДСтатус1, будет печатать только ее.
   ДенисЧ
 
8 - 08.09.21 - 11:56
(7) Я теб не понимаю. ИЛи тебе одна нужна, или две...
Или ты хочешь пункт "упд", а программа сама поняла, какую, 1 или 2, печатать?
Так определись, как узнать, какую надо. И сделай одну команду, а там уже проверяй документ, решая, что печатать...
   voproshatel
 
9 - 08.09.21 - 20:36
(8) спасибо Денис. Хочу пункт "упд", чтобы программа сама поняла, какую, 1 или 2, печатать.
   hhhh
 
10 - 08.09.21 - 22:19
(9) сам же конкретно указываешь, 1 или 2. программа ничего не собирается понимать, она тупо берет то, что ты указал.
   ДенисЧ
 
11 - 09.09.21 - 04:24
(9) Ну так заставь её понять, исходя из того документа, который печатать собрался...

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.