|
Есть задачка пакетной печати внешних ПФ к документу | ☑ | ||
---|---|---|---|---|
0
BigShmax
15.05.24
✎
15:04
|
Открыть док выбрать обработку "Пакетная печать" и чтобы поползли ВнешняяПФ1 - 3 экз. Внешняя ПФ2 - 1 экз ....
Читаю букварь, думаю ка креализовать. с БСП мало знаком как к ним вообще можн ообращаться кк найти конкетную внешнюю ПФ (в дополнительных которая) мож какие статьи есть оборазцы |
|||
1
Мультук
15.05.24
✎
15:11
|
(0)
1) Имхо, типовой механизм примерно так и работает. Почему бы не воспользоваться им? Там уже всё есть Например в УТ11.4 можно глянуть 2) Скажи честно, Infostart гуглил ? Там точно было несколько приятных примеров, когда в зависимости от контрагента (например) составлялся нужный "преднастроенный" пакет |
|||
2
Кондер
21.05.24
✎
15:16
|
Подробности//ГОЛОВА Функция СформироватьОтчет(ИмяФ) Таб = Новый ТабличныйДокумент; Попытка ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере("Сборка заказов за смену"); ИмяОбработкиСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка); //КомпоновщикНастроек = ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек; КомпоновщикНастроек = ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек; СхемаКомпоновкиДанных = ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).СхемаКомпоновкиДанных; СтандартнаяОбработка = Ложь; ПользовательскиеНастройкиМодифицированы = Ложь; УстановитьОбязательныеНастройки(КомпоновщикНастроек, ПользовательскиеНастройкиМодифицированы); //ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Валюта"); //Если ПараметрДанных <> Неопределено Тогда // ПараметрДанных.Использование = Ложь; //КонецЕсли; НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки(); //------- //Настроим период ТекущаяДата = ТекущаяДата(); Если (ТекущаяДата() - НачалоДня(ТекущаяДата)) < 21*3600 Тогда //Ночная ДатаН = НачалоДня(НачалоДня(ТекущаяДата) - 2) + 21*3600; //21час вера ДатаК = НачалоДня(ТекущаяДата) + 9*3600; //9утра ИмяФ ="" + Формат(ДатаН, "ДФ='dd_MM_yy ЧЧ:мм'") + " - " + Формат(ДатаК, "ДФ='dd_MM_yy ЧЧ:мм'"); Иначе //дневная ДатаН = НачалоДня(ТекущаяДата) + 9*3600; ДатаК = НачалоДня(ТекущаяДата) + 21*3600; ИмяФ = "" + Формат(ДатаН, "ДФ='dd_MM_yy ЧЧ:мм'") + " - " + Формат(ДатаК, "ДФ='dd_MM_yy ЧЧ:мм'") ; КонецЕсли; ДатаНачалаСмены = НастройкиОтчета.ПараметрыДанных.Элементы.Найти("ДатаНачалоСмены"); ДатаНачалаСмены.Значение = ДатаН; ДатаНачалаСмены.Использование = Истина; ДатаОкончанияСмены = НастройкиОтчета.ПараметрыДанных.Элементы.Найти("ДатаОкончанияСмены"); ДатаОкончанияСмены.Значение = ДатаК; ДатаОкончанияСмены.Использование = Истина; //-------- КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Таб); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ВспомогательныеПараметры = Новый Массив; //КомпоновкаДанныхСервер.ДобавитьВспомогательныеПараметрыОтчетаПоФункциональнымОпциям(ВспомогательныеПараметры); ?? //КомпоновкаДанныхСервер.СкрытьВспомогательныеПараметрыОтчета(СхемаКомпоновкиДанных, КомпоновщикНастроек, Таб, ВспомогательныеПараметры); ?? Возврат Таб; Исключение Возврат Таб; КонецПопытки; КонецФункции // Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки) Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка; КонецФункции Процедура УстановитьОбязательныеНастройки(КомпоновщикНастроек, ПользовательскиеНастройкиМодифицированы) //КомпоновкаДанныхСервер.УстановитьПараметрыВалютыОтчета(КомпоновщикНастроек, ПользовательскиеНастройкиМодифицированы); //СегментыСервер.ВключитьОтборПоСегментуПартнеровВСКД(КомпоновщикНастроек); //ПараметрПериод = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек, "Период"); //Если ПараметрПериод.Использование И ЗначениеЗаполнено(ПараметрПериод.Значение.ДатаНачала) Тогда УстановитьПараметр(КомпоновщикНастроек, "ДатаНачалаСмены", ТекущаяДата()); УстановитьПараметр(КомпоновщикНастроек, "ДатаОкеончанияСмены", ТекущаяДата() + 12*3600); //Иначе // КомпоновкаДанныхКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "НачалоОстатки", Дата(1,1,1,0,0,1)); //КонецЕсли; КонецПроцедуры Функция УстановитьПараметр(Настройки, Параметр, Значение, Использование = Истина, Недоступный = Ложь) Экспорт ЗначениеПараметра = ПолучитьПараметр(Настройки, Параметр); Если ЗначениеПараметра <> Неопределено Тогда ЗначениеПараметра.Значение = Значение; ЗначениеПараметра.Использование = Использование; Если Недоступный Тогда ЗначениеПараметра.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; КонецЕсли; КонецЕсли; Возврат ЗначениеПараметра; КонецФункции Функция ПолучитьПараметр(ОбъектНастройки, Параметр) Экспорт ЗначениеПараметра = Неопределено; ПолеПараметр = ?(ТипЗнч(Параметр) = Тип("Строка"), Новый ПараметрКомпоновкиДанных(Параметр), Параметр); Если ТипЗнч(ОбъектНастройки) = Тип("НастройкиКомпоновкиДанных") Тогда ЗначениеПараметра = ОбъектНастройки.ПараметрыДанных.НайтиЗначениеПараметра(ПолеПараметр); ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда Для Каждого ЭлементНастройки Из ОбъектНастройки.Элементы Цикл Если ТипЗнч(ЭлементНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") И ЭлементНастройки.Параметр = ПолеПараметр Тогда ЗначениеПараметра = ЭлементНастройки; Прервать; КонецЕсли; КонецЦикла; ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("КомпоновщикНастроекКомпоновкиДанных") Тогда Для Каждого ЭлементНастройки Из ОбъектНастройки.ПользовательскиеНастройки.Элементы Цикл Если ТипЗнч(ЭлементНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") И ЭлементНастройки.Параметр = ПолеПараметр Тогда ЗначениеПараметра = ЭлементНастройки; Прервать; КонецЕсли; КонецЦикла; Если ЗначениеПараметра = Неопределено Тогда ЗначениеПараметра = ОбъектНастройки.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПолеПараметр); КонецЕсли; Если ЗначениеПараметра = Неопределено Тогда ЗначениеПараметра = ОбъектНастройки.ФиксированныеНастройки.ПараметрыДанных.НайтиЗначениеПараметра(ПолеПараметр); КонецЕсли; ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда ЗначениеПараметра = ОбъектНастройки.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПолеПараметр); ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("ДанныеРасшифровкиКомпоновкиДанных") Тогда ЗначениеПараметра = ОбъектНастройки.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПолеПараметр); ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("КоллекцияЗначенийПараметровКомпоновкиДанных") Тогда ЗначениеПараметра = ОбъектНастройки.Найти(ПолеПараметр); ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("ОформлениеКомпоновкиДанных") Тогда ЗначениеПараметра = ОбъектНастройки.НайтиЗначениеПараметра(ПолеПараметр); КонецЕсли; Возврат ЗначениеПараметра; КонецФункции |
|||
3
Garykom
15.05.24
✎
15:17
|
(0)
Читаю букварь
Это даже не смешно У тебя есть полгода-год на решение этой задачки? |
|||
4
BigShmax
15.05.24
✎
15:18
|
(1) с него начал, ничего вменяемого не нашёл :-( либо криво искал нахожу в основном чтобы по массиву доков печаталась форма
|
|||
5
BigShmax
15.05.24
✎
15:20
|
(2) спасибо за чтиво , пойду переваривать.
|
|||
6
mikecool
15.05.24
✎
20:49
|
для древней УТ делал подобное, но там еще с доп плюшками, ушло на все про все неделя часа по 2 каждый вечер
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |