В настройках Диадок организации и контрагентов можно выбрать для отправки свою печатную форму в формате pdf
Проблема возникает, если в печатной форме было несколько команд, а в обработке Диадок не предусмотрен выбор команды.
Процедура СформироватьСписокКоманд(Команды)
ДобавитьКоманду(Команды, "АктСверкиВзаиморасчетов", "Акт сверки взаиморасчетов", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(), Истина);
ДобавитьКоманду(Команды, "АктСверкиВзаиморасчетовФаксимиле", "Акт сверки взаиморасчетов факсимиле", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(), Истина);
ДобавитьКоманду(Команды, "АктСверкиВзаиморасчетовКопия", "Акт сверки взаиморасчетов копия", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(), Истина);
КонецПроцедуры
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма1 = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктСверкиВзаиморасчетов");
ПечатнаяФорма2 = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктСверкиВзаиморасчетовФаксимиле");
ПечатнаяФорма2 = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктСверкиВзаиморасчетовКопия");
СинонимМакета = "Акт сверки взаиморасчетов";
Если ПечатнаяФорма1 <> Неопределено Тогда
ПечатнаяФорма1.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода, Ложь);
ПечатнаяФорма1.СинонимМакета = СинонимМакета;
КонецЕсли;
Если ПечатнаяФорма2 <> Неопределено Тогда
ПечатнаяФорма2.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода, Истина);
ПечатнаяФорма2.СинонимМакета = СинонимМакета;
КонецЕсли;
Если ПечатнаяФорма3 <> Неопределено Тогда
ПечатнаяФорма3.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода, Ложь);
ПечатнаяФорма3.СинонимМакета = СинонимМакета;
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода = Неопределено, ПечататьФаксимиле = Ложь) Экспорт
Результат = Новый ТабличныйДокумент;
//тут формируем печатную форму
Возврат Результат;
КонецФункции
Приходится делать отдельную обработку - печатную форму с одной командой. Дублировать код и потом не забывать обновлять, если будет меняться основная печатная форма.
Для примера предположим, что нам нужно отправить в Диадок печатную форму, которая открывается по команде АктСверкиВзаиморасчетов из кода выше.
Для этого в исходной обработке комментируем эту команду
Процедура СформироватьСписокКоманд(Команды)
//ДобавитьКоманду(Команды, "АктСверкиВзаиморасчетов", "Акт сверки взаиморасчетов", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(), Истина);
ДобавитьКоманду(Команды, "АктСверкиВзаиморасчетовФаксимиле", "Акт сверки взаиморасчетов факсимиле", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(), Истина);
ДобавитьКоманду(Команды, "АктСверкиВзаиморасчетовКопия", "Акт сверки взаиморасчетов копия", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(), Истина);
КонецПроцедуры
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
//ПечатнаяФорма1 = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктСверкиВзаиморасчетов");
ПечатнаяФорма2 = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктСверкиВзаиморасчетовФаксимиле");
ПечатнаяФорма2 = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктСверкиВзаиморасчетовКопия");
СинонимМакета = "Акт сверки взаиморасчетов";
//Если ПечатнаяФорма1 <> Неопределено Тогда
// ПечатнаяФорма1.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода, Ложь);
// ПечатнаяФорма1.СинонимМакета = СинонимМакета;
//КонецЕсли;
Если ПечатнаяФорма2 <> Неопределено Тогда
ПечатнаяФорма2.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода, Истина);
ПечатнаяФорма2.СинонимМакета = СинонимМакета;
КонецЕсли;
Если ПечатнаяФорма3 <> Неопределено Тогда
ПечатнаяФорма3.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода, Ложь);
ПечатнаяФорма3.СинонимМакета = СинонимМакета;
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода = Неопределено, ПечататьФаксимиле = Ложь) Экспорт
Результат = Новый ТабличныйДокумент;
//тут формируем печатную форму
Возврат Результат;
КонецФункции
Создаем вторую обработку с одной командой. В процедуре Печать получаем ссылку на исходную обработку и вызываем экспортную процедуру СформироватьПечатнуюФорму из исходной обработки.
Процедура СформироватьСписокКоманд(Команды)
ДобавитьКоманду(Команды, "АктСверкиВзаиморасчетов", "Акт сверки взаиморасчетов", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(), Истина);
КонецПроцедуры
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма1 = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктСверкиВзаиморасчетов");
Если ПечатнаяФорма1 <> Неопределено Тогда
ОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.ПолучитьСсылку(Новый УникальныйИдентификатор("2ace810e-52f6-11ef-bcde-005056873317")); //ПФ акт сверки
ОбработкаОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(ОбработкаСсылка);
ПечатнаяФорма1.ТабличныйДокумент = ОбработкаОбъект.СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыВывода, Ложь);
ПечатнаяФорма1.СинонимМакета = "Акт сверки взаиморасчетов";
КонецЕсли;
КонецПроцедуры
В итоге состав команд не изменился и если будут доработки исходной обработки (печатной формы), то обработку для Диадок менять не нужно.
Тестировал:
- 1С:Комплексная автоматизация 2 (2.4.13.209)
- Платформа 1С:Предприятие 8.3 (8.3.24.1342)