|
Вопрос по ВПФ БП 3 | ☑ | ||
---|---|---|---|---|
0
voproshatel
08.09.21
✎
11:23
|
Привет кодерам, делаю впф упд бп3, из дока РТиУ идет модуль менеджера "ПечатьУПД", там есть параметр КоллекцияПечатныхФорм, откуда он берется? Как программа понимает что нужно печатать статус упд 1 или 2.
Задача такая: чтобы в моей впф было печать Упд, а не печать упд 1 и печать упд 2.Памагити. |
|||
1
voproshatel
08.09.21
✎
11:24
|
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ЕстьСчетаФактурыВыданные = Ложь; ЕстьСчетаФактурыПолученные = Ложь; Для каждого Объект Из МассивОбъектов Цикл Если ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда ЕстьСчетаФактурыВыданные = Истина; Прервать; ИначеЕсли ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураПолученный") Тогда ЕстьСчетаФактурыПолученные = Истина; Прервать; КонецЕсли; КонецЦикла; ТаблицаМакетовУПД = УчетНДС.ТаблицаМакетовУПД(); // Печать УПД в статусе "1" Если ЕстьСчетаФактурыВыданные ИЛИ ЕстьСчетаФактурыПолученные Тогда Для Каждого МакетУПД ИЗ ТаблицаМакетовУПД Цикл Если МакетУПД.Статус <> "1" Тогда Продолжить; КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, МакетУПД.ИДМакета) Тогда Если ЕстьСчетаФактурыВыданные Тогда ТекстЗапроса = Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур( МакетУПД.ВерсияПостановленияНДС1137, Истина, МакетУПД.ПрослеживаемыеТовары); Иначе ТекстЗапроса = Документы.СчетФактураПолученный.ТекстЗапросаПечатьСчетовФактур( МакетУПД.ВерсияПостановленияНДС1137, МакетУПД.ПрослеживаемыеТовары); КонецЕсли; СтруктураПараметровПечати = УчетНДС.НовыйСтруктураПараметровПечатиУПД_УКД(); СтруктураПараметровПечати.МассивОбъектов = МассивОбъектов; СтруктураПараметровПечати.ОбъектыПечати = ОбъектыПечати; СтруктураПараметровПечати.ТекстЗапросаДокументам = ТекстЗапроса; СтруктураПараметровПечати.ТолькоПередаточныйДокумент = Ложь; СтруктураПараметровПечати.ТабДокумент = Неопределено; СтруктураПараметровПечати.ПараметрыПечати = ПараметрыПечати; СтруктураПараметровПечати.КлючПараметровПечати = МакетУПД.КлючПараметровПечати; СтруктураПараметровПечати.ПолныйПутьКМакету = МакетУПД.ПолныйПутьКМакету; ТабличныйДокумент = УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(СтруктураПараметровПечати); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, МакетУПД.ИДМакета, МакетУПД.СинонимМакета,ТабличныйДокумент,,МакетУПД.ПолныйПутьКМакету); КонецЕсли; КонецЦикла; КонецЕсли; // Печать УПД в статусе "2" Для Каждого МакетУПД ИЗ ТаблицаМакетовУПД Цикл Если МакетУПД.Статус <> "2" Тогда Продолжить; КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, МакетУПД.ИДМакета) Тогда ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = ""; Для каждого Объект Из МассивОбъектов Цикл Если ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураВыданный") И ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураПолученный") Тогда ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = Документы[Объект.Метаданные().Имя].ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов( МакетУПД.ВерсияПостановленияНДС1137, МакетУПД.ПрослеживаемыеТовары); Прервать; КонецЕсли; КонецЦикла; Если НЕ ПустаяСтрока(ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов) Тогда СтруктураПараметровПечати = УчетНДС.НовыйСтруктураПараметровПечатиУПД_УКД(); СтруктураПараметровПечати.МассивОбъектов = МассивОбъектов; СтруктураПараметровПечати.ОбъектыПечати = ОбъектыПечати; СтруктураПараметровПечати.ТекстЗапросаДокументам = ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов; СтруктураПараметровПечати.ТолькоПередаточныйДокумент = Истина; СтруктураПараметровПечати.ТабДокумент = Неопределено; СтруктураПараметровПечати.ПараметрыПечати = ПараметрыПечати; СтруктураПараметровПечати.КлючПараметровПечати = МакетУПД.КлючПараметровПечати; СтруктураПараметровПечати.ПолныйПутьКМакету = МакетУПД.ПолныйПутьКМакету; ТабличныйДокумент = УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(СтруктураПараметровПечати); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, МакетУПД.ИДМакета, МакетУПД.СинонимМакета, ТабличныйДокумент,,МакетУПД.ПолныйПутьКМакету); КонецЕсли; КонецЕсли; КонецЦикла; ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); КонецПроцедуры |
|||
2
voproshatel
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
|
Он к тебе прилетает параметром в твою функцию из недр БСП.
|
|||
4
voproshatel
08.09.21
✎
11:33
|
(3) т.е. разделения на упд 1 и упд 2 в моей впф не избежать?
|
|||
5
voproshatel
08.09.21
✎
11:37
|
Функция СведенияОВнешнейОбработке()Экспорт
ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); МассивНазначений.Добавить("Документ.СчетФактураВыданный"); //Указываем документ к которому делаем внешнюю печ. форму ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "УПД (ред.)"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "УПД (ред.)"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); //ДобавитьКоманду(ТаблицаКоманд, "УПД (ред.)", "УПДСтатус2_981", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); ДобавитьКоманду(ТаблицаКоманд, "УПД Статус1(ред.)", "УПДСтатус1", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); ДобавитьКоманду(ТаблицаКоманд, "УПД Статус2(ред.)", "УПДСтатус2", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции |
|||
6
ДенисЧ
08.09.21
✎
11:39
|
Ты же сам в сведениях задаёшь две команды. Вот она тебе и показывает два пункта.
Сделай одну команду - будет один пункт... |
|||
7
voproshatel
08.09.21
✎
11:52
|
(6) но тогда как она поймет какую упд печатать: 1 или 2? Если оставлю УПДСтатус1, будет печатать только ее.
|
|||
8
ДенисЧ
08.09.21
✎
11:56
|
(7) Я теб не понимаю. ИЛи тебе одна нужна, или две...
Или ты хочешь пункт "упд", а программа сама поняла, какую, 1 или 2, печатать? Так определись, как узнать, какую надо. И сделай одну команду, а там уже проверяй документ, решая, что печатать... |
|||
9
voproshatel
08.09.21
✎
20:36
|
(8) спасибо Денис. Хочу пункт "упд", чтобы программа сама поняла, какую, 1 или 2, печатать.
|
|||
10
hhhh
08.09.21
✎
22:19
|
(9) сам же конкретно указываешь, 1 или 2. программа ничего не собирается понимать, она тупо берет то, что ты указал.
|
|||
11
ДенисЧ
09.09.21
✎
04:24
|
(9) Ну так заставь её понять, исходя из того документа, который печатать собрался...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |