Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 06:29

И снова здравствуйте, как перенести код во внешнюю обработку

Автор Nosferatu112, 23 янв 2023, 11:58

0 Пользователей и 1 гость просматривают эту тему.

Nosferatu112

В чем собственно соль есть задача которую я уже решил но проблема в том что я решил её через расширение в обработке а нужно было не через расширение во внешней обработке и теперь я не могу понять как перенести мой код во вншнюю обработку что бы он при этом работал.
&НаКлиенте
Функция ВыполнитьКомандуПечати(КомандаПечати) Экспорт

УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(
КомандаПечати.МенеджерПечати,
КомандаПечати.Идентификатор,
КомандаПечати.ОбъектыПечати,
КомандаПечати.Форма);

Возврат Неопределено;

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

Процедура ПриОпределенииНастроек(Настройки) Экспорт
Настройки.Размещение.Добавить(Метаданные.Документы.ЗаказКлиента);
Настройки.ДобавитьКомандыПечати = Истина;
КонецПроцедуры

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ДоговорЗаказКлиента_WORD";
КомандаПечати.Представление = НСтр("ru = 'Договор по заказу клиента(Word)'");
КомандаПечати.ТребуетсяРасширениеРаботыСФайлами = Истина;
КомандаПечати.МенеджерПечати = "Обработка.Расш1_Обработка1";
КомандаПечати.Обработчик = "ВыполнитьКомандуПечати";
КонецПроцедуры

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ИдентификаторКоманды = "ДоговорЗаказКлиента_WORD";
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм,ИдентификаторКоманды);

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

Функция ПолучитьДанныеПечати(Знач МассивДокументов, Знач МассивИменМакетов) Экспорт

ДанныеПоВсемОбъектам = Новый Соответствие;
Для Каждого ОбъектСсылка Из МассивДокументов Цикл
ДанныеОбъектаПоМакетам = Новый Соответствие;
Для Каждого ИдентификаторКоманды Из МассивИменМакетов Цикл
Если ИдентификаторКоманды = "ДоговорЗаказКлиента_WORD" Тогда
ДанныеОбъектаПоМакетам.Вставить(ИдентификаторКоманды, ПолучитьДанныеОбъекта(ОбъектСсылка));
КонецЕсли;
КонецЦикла;
ДанныеПоВсемОбъектам.Вставить(ОбъектСсылка, ДанныеОбъектаПоМакетам);
КонецЦикла;

ОписаниеОбластей = Новый Соответствие;
ДвоичныеДанныеМакетов = Новый Соответствие;
ТипыМакетов = Новый Соответствие;

Для Каждого ИдентификаторКоманды Из МассивИменМакетов Цикл
Если ИдентификаторКоманды = "ДоговорЗаказКлиента_WORD" Тогда
ДвоичныеДанныеМакетов.Вставить(ИдентификаторКоманды,
УправлениеПечатью.МакетПечатнойФормы("Обработка.Расш1_Обработка1.ПФ_DOC_ДоговорЗаказКлиента"));
ОписаниеОбластей.Вставить(ИдентификаторКоманды, ОбластиМакетаОфисногоДокумента());
КонецЕсли;
КонецЦикла;

Макеты = Новый Структура;
Макеты.Вставить("ОписаниеОбластей", ОписаниеОбластей);
Макеты.Вставить("ТипыМакетов", ТипыМакетов);
Макеты.Вставить("ДвоичныеДанныеМакетов", ДвоичныеДанныеМакетов);

Результат = Новый Структура;
Результат.Вставить("Данные", ДанныеПоВсемОбъектам);
Результат.Вставить("Макеты", Макеты);

Возврат Результат;


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

Функция ПолучитьДанныеОбъекта(СсылкаНаОбъект)



Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Организация КАК Организация,
| ЗаказКлиента.Контрагент КАК Контрагент,
| ЗаказКлиента.Руководитель КАК Руководитель,
| ЗаказКлиента.БанковскийСчет.Банк.Код КАК БИКБанка,
| ЗаказКлиента.БанковскийСчет.Банк.Наименование КАК Банк,
| ЗаказКлиента.БанковскийСчет.НомерСчета КАК РасчетныйСчетОрганизации,
| КонтактныеЛицаПартнеров.Наименование КАК ФИОДиректораКонтрагентаИминПад
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
| ПО ЗаказКлиента.КонтактноеЛицо = КонтактныеЛицаПартнеров.Ссылка
|ГДЕ
| ЗаказКлиента.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл

Результат = ПолучитьСклоненияСтроки(Выборка.Руководитель,,"ПД=Родительный");
  РезультатСклонения = Результат.Получить(0);

РезультатКонтрагент = ПолучитьСклоненияСтроки(Выборка.ФИОДиректораКонтрагентаИминПад,,"ПД=Родительный");
РезультатСклоненияКонтрагент = РезультатКонтрагент.Получить(0);

ДанныеОбъекта = Новый Структура;
ДанныеОбъекта.Вставить("Организация", Выборка.Организация);
ДанныеОбъекта.Вставить("Контрагент", Выборка.Контрагент);
ДанныеОбъекта.Вставить("Банк", Выборка.Банк);
ДанныеОбъекта.Вставить("БИКБанка", Выборка.БИКБанка);
ДанныеОбъекта.Вставить("РасчетныйСчетОрганизации", Выборка.РасчетныйСчетОрганизации);
ДанныеОбъекта.Вставить("ФИОДиректораВИминПад", Выборка.Руководитель);
    ДанныеОбъекта.Вставить("ФИОДиректораКонтрагентаИминПад", Выборка.ФИОДиректораКонтрагентаИминПад);
ДанныеОбъекта.Вставить("ФИОДиректораВРодПад", РезультатСклонения);
ДанныеОбъекта.Вставить("ФИОДиректораКонтрагента", РезультатСклоненияКонтрагент);


Возврат ДанныеОбъекта;

КонецЦикла;

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

Функция ОбластиМакетаОфисногоДокумента()
Области = Новый Структура;
УправлениеПечатью.ДобавитьОписаниеОбласти(Области, "ВесьДокумент", "Общая");
Возврат Области;
КонецФункции

Функция НапечататьДокумент(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета)
ТипМакета = МакетИДанныеОбъекта.Макеты.ТипыМакетов[ИмяМакета];
ДвоичныеДанныеМакетов = МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов;
Области = МакетИДанныеОбъекта.Макеты.ОписаниеОбластей;
ДанныеОбъекта = МакетИДанныеОбъекта.Данные[ДокументСсылка][ИмяМакета];

Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакетов[ИмяМакета], ТипМакета, ИмяМакета);
Если Макет = Неопределено Тогда
Возврат "";
КонецЕсли;

ЗакрытьОкноПечатнойФормы = Ложь;
Попытка
ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета, Макет);
АдресХранилищаПечатнойФормы = "";
Если ПечатнаяФорма = Неопределено Тогда
УправлениеПечатью.ОчиститьСсылки(Макет);
Возврат "";
КонецЕсли;

Область = УправлениеПечатью.ОбластьМакета(Макет, Области[ИмяМакета]["ВесьДокумент"]);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта);

АдресХранилищаПечатнойФормы = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);
Исключение
ОбщегоНазначения.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗакрытьОкноПечатнойФормы = Истина;
Возврат "";
КонецПопытки;

УправлениеПечатью.ОчиститьСсылки(ПечатнаяФорма, ЗакрытьОкноПечатнойФормы);
УправлениеПечатью.ОчиститьСсылки(Макет);

Возврат АдресХранилищаПечатнойФормы;

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

LexaK

Nosferatu112, напомните какая у вас база? типовая?
используйте механизмы БСП.
самое простое возьмите/найдите в своей базе, уже существующую внешнюю обработку (ВПФ) и по ее примеру сделайте/оформите свою
посмотрите справочник Дополнительные отчеты и обработки. (если версия у вас такая)
если помогло нажмите: Спасибо!

Nosferatu112


LexaK

Nosferatu112,
ЦитироватьУТ 11
Хм!  B)  там этих ВПФ (обработок внешних печатных форм) целый вагон!
если помогло нажмите: Спасибо!

Afinogen

А в чем собственно вопрос?
Загоняете все ваши функции и процедуры в модуль объекта, делаете их экспортными

если у вас внещняя обработка то у вас  списке реквизитов формы обработки есть реквизит "Объект", вы можете повесить обработчик на любу кнопку

&НаКлиенте
Процедура НажатиеКнопки(Команда)
ОбработатьНаСервере()
КонецПроцедуры

&НаСервере
Процедура ОбработатьНаСервере()

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");

КонецПроцедуры

Все, таким образом вы получите доступ к модулю объекта, далее через точку вызывайте ваши функции и процедуры, если вам надо еще подключить ее как внешнюю обработку то вам нужно добавить в модуле процедуру из БСП "СведенияОвнешнейОбработке"

Nosferatu112

Afinogen, А если прям совсем для отбитых
Я сделал Сведенияобработки в модуле объекта, перенёс туда свой код что мне нужно сделать дальше. Я пытался всё это перенести и вызвать но он кидал ошибку Недостаточно фактических параметров в процедуре печать, он в общем модуле в самой УТ11 ругаеться я так и не разобрался как правильно всё это вызвать и почему он кидает ошибку

Nosferatu112

Вот я сделал внешнюю обработку подключит ее при нажатии кнопки печати выскакивает ошибка недостаточно фактических параметров
Недостаточно фактических параметров
{ОбщийМодуль.УправлениеПечатью.Модуль(1652)}:   ВнешняяОбработкаОбъект.Печать(
{ОбщаяФорма.ПечатьДокументов.Форма(533)}:      УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
{ОбщаяФорма.ПечатьДокументов.Форма(49)}:      КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(236)}:   ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Форма);
{ОбщийМодуль.УправлениеПечатьюКлиент.Модуль(143)}:      ВыполнитьОбработкуОповещения(ОписаниеПроцедурыЗавершения, СписокДокументов);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(32)}:      УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыНазначения, Форма);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(482)}:      МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы(
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(260)}:      ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}:         МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}:   ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(257)}:         ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(64)}:   ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
{Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов.Форма(448)}:   ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
С вот таким сообщением

Это кусок где происходит ошибка Процедура ПечатьПоВнешнемуИсточнику

ВнешняяОбработкаОбъект.Печать(
ПараметрыИсточника.ОбъектыНазначения,
КоллекцияПечатныхФорм,
ОбъектыПечати,
ПараметрыВывода);

Это мой код

Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;

МассивНазначений.Добавить("Документ.ЗаказКлиента");

ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);

ПараметрыРегистрации.Вставить("Наименование", "Печать договора с клиентом(Word)");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.0.0");
ПараметрыРегистрации.Вставить("Информация", "Печатная форма договоров с клиентами");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Печать договора с клиентом", "ПФ_DOC_ДоговорЗаказКлиента", "ВызовСерверногоМетода", Истина, "ПечатьDOC");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;

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

Функция ПолучитьТаблицуКоманд()

Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование,ПоказыватьОповещение = Ложь, Модификатор = "")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
 

Процедура ПриОпределенииНастроек(Настройки) Экспорт
Настройки.Размещение.Добавить(Метаданные.Документы.ЗаказКлиента);
Настройки.ДобавитьКомандыПечати = Истина;
КонецПроцедуры

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ДоговорЗаказКлиента_WORD";
КомандаПечати.Представление = НСтр("ru = 'Договор по заказу клиента(Word)'");
КомандаПечати.ТребуетсяРасширениеРаботыСФайлами = Истина;
КомандаПечати.МенеджерПечати = "Обработка.Расш1_Обработка1";
КомандаПечати.Обработчик = "ВыполнитьКомандуПечати";
КонецПроцедуры     

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ИдентификаторКоманды = "ДоговорЗаказКлиента_WORD";
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм,ИдентификаторКоманды);

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

Функция ПолучитьДанныеПечати(Знач МассивДокументов, Знач МассивИменМакетов) Экспорт

ДанныеПоВсемОбъектам = Новый Соответствие;
Для Каждого ОбъектСсылка Из МассивДокументов Цикл
ДанныеОбъектаПоМакетам = Новый Соответствие;
Для Каждого ИдентификаторКоманды Из МассивИменМакетов Цикл
Если ИдентификаторКоманды = "ДоговорЗаказКлиента_WORD" Тогда
ДанныеОбъектаПоМакетам.Вставить(ИдентификаторКоманды, ПолучитьДанныеОбъекта(ОбъектСсылка));
КонецЕсли;
КонецЦикла;
ДанныеПоВсемОбъектам.Вставить(ОбъектСсылка, ДанныеОбъектаПоМакетам);
КонецЦикла;

ОписаниеОбластей = Новый Соответствие;
ДвоичныеДанныеМакетов = Новый Соответствие;
ТипыМакетов = Новый Соответствие;

Для Каждого ИдентификаторКоманды Из МассивИменМакетов Цикл
Если ИдентификаторКоманды = "ДоговорЗаказКлиента_WORD" Тогда
ДвоичныеДанныеМакетов.Вставить(ИдентификаторКоманды,
УправлениеПечатью.МакетПечатнойФормы("Обработка.Расш1_Обработка1.ПФ_DOC_ДоговорЗаказКлиента"));
ОписаниеОбластей.Вставить(ИдентификаторКоманды, ОбластиМакетаОфисногоДокумента());
КонецЕсли;
КонецЦикла;

Макеты = Новый Структура;
Макеты.Вставить("ОписаниеОбластей", ОписаниеОбластей);
Макеты.Вставить("ТипыМакетов", ТипыМакетов);
Макеты.Вставить("ДвоичныеДанныеМакетов", ДвоичныеДанныеМакетов);

Результат = Новый Структура;
Результат.Вставить("Данные", ДанныеПоВсемОбъектам);
Результат.Вставить("Макеты", Макеты);

Возврат Результат;


КонецФункции
 
Функция ПолучитьДанныеОбъекта(СсылкаНаОбъект) Экспорт



Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Организация КАК Организация,
| ЗаказКлиента.Контрагент КАК Контрагент,
| ЗаказКлиента.Руководитель КАК Руководитель,
| ЗаказКлиента.БанковскийСчет.Банк.Код КАК БИКБанка,
| ЗаказКлиента.БанковскийСчет.Банк.Наименование КАК Банк,
| ЗаказКлиента.БанковскийСчет.НомерСчета КАК РасчетныйСчетОрганизации,
| КонтактныеЛицаПартнеров.Наименование КАК ФИОДиректораКонтрагентаИминПад
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
| ПО ЗаказКлиента.КонтактноеЛицо = КонтактныеЛицаПартнеров.Ссылка
|ГДЕ
| ЗаказКлиента.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл

Результат = ПолучитьСклоненияСтроки(Выборка.Руководитель,,"ПД=Родительный");
  РезультатСклонения = Результат.Получить(0);

РезультатКонтрагент = ПолучитьСклоненияСтроки(Выборка.ФИОДиректораКонтрагентаИминПад,,"ПД=Родительный");
РезультатСклоненияКонтрагент = РезультатКонтрагент.Получить(0);

ДанныеОбъекта = Новый Структура;
ДанныеОбъекта.Вставить("Организация", Выборка.Организация);
ДанныеОбъекта.Вставить("Контрагент", Выборка.Контрагент);
ДанныеОбъекта.Вставить("Банк", Выборка.Банк);
ДанныеОбъекта.Вставить("БИКБанка", Выборка.БИКБанка);
ДанныеОбъекта.Вставить("РасчетныйСчетОрганизации", Выборка.РасчетныйСчетОрганизации);
ДанныеОбъекта.Вставить("ФИОДиректораВИминПад", Выборка.Руководитель);
    ДанныеОбъекта.Вставить("ФИОДиректораКонтрагентаИминПад", Выборка.ФИОДиректораКонтрагентаИминПад);
ДанныеОбъекта.Вставить("ФИОДиректораВРодПад", РезультатСклонения);
ДанныеОбъекта.Вставить("ФИОДиректораКонтрагента", РезультатСклоненияКонтрагент);


Возврат ДанныеОбъекта;

КонецЦикла;

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

Функция ОбластиМакетаОфисногоДокумента()Экспорт
Области = Новый Структура;
УправлениеПечатью.ДобавитьОписаниеОбласти(Области, "ВесьДокумент", "Общая");
Возврат Области;
КонецФункции

Функция НапечататьДокумент(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета)Экспорт
ТипМакета = МакетИДанныеОбъекта.Макеты.ТипыМакетов[ИмяМакета];
ДвоичныеДанныеМакетов = МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов;
Области = МакетИДанныеОбъекта.Макеты.ОписаниеОбластей;
ДанныеОбъекта = МакетИДанныеОбъекта.Данные[ДокументСсылка][ИмяМакета];

Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакетов[ИмяМакета], ТипМакета, ИмяМакета);
Если Макет = Неопределено Тогда
Возврат "";
КонецЕсли;

ЗакрытьОкноПечатнойФормы = Ложь;
Попытка
ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета, Макет);
АдресХранилищаПечатнойФормы = "";
Если ПечатнаяФорма = Неопределено Тогда
УправлениеПечатью.ОчиститьСсылки(Макет);
Возврат "";
КонецЕсли;

Область = УправлениеПечатью.ОбластьМакета(Макет, Области[ИмяМакета]["ВесьДокумент"]);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта);

АдресХранилищаПечатнойФормы = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);
Исключение
ОбщегоНазначения.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗакрытьОкноПечатнойФормы = Истина;
Возврат "";
КонецПопытки;

УправлениеПечатью.ОчиститьСсылки(ПечатнаяФорма, ЗакрытьОкноПечатнойФормы);
УправлениеПечатью.ОчиститьСсылки(Макет);

Возврат АдресХранилищаПечатнойФормы;

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


Afinogen

Nosferatu112,
ЦитироватьЯ сделал Сведенияобработки в модуле объекта, перенёс туда свой код что мне нужно сделать дальше. Я пытался всё это перенести и вызвать но он кидал ошибку Недостаточно фактических параметров в процедуре печать,
У вас процедура "Печать" - это процедура в обработке?
Вы когда вызываете процедуру "Печать" не все ей параметры передаете, смотрите в том месте где она вызывается
Хотите отладить - откройте обработку как внешний файл, по вашим логам вы пользуетесь типовым механизмом печати, ищите тогда где у вас нехватка параметров именно в модуле "УправлениеПечатью"
у вас в момент выпадания ошибки в окне сообщения с ошибкой есть  и имя модуля и строка где она вывалилась туда копайте)

Afinogen

Цитата: Nosferatu112 от 25 янв 2023, 12:17Вот я сделал внешнюю обработку подключит ее при нажатии кнопки печати выскакивает ошибка недостаточно фактических параметров
Недостаточно фактических параметров
{ОбщийМодуль.УправлениеПечатью.Модуль(1652)}:   ВнешняяОбработкаОбъект.Печать(
{ОбщаяФорма.ПечатьДокументов.Форма(533)}:      УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
{ОбщаяФорма.ПечатьДокументов.Форма(49)}:      КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(236)}:   ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Форма);
{ОбщийМодуль.УправлениеПечатьюКлиент.Модуль(143)}:      ВыполнитьОбработкуОповещения(ОписаниеПроцедурыЗавершения, СписокДокументов);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(32)}:      УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыНазначения, Форма);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(482)}:      МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы(
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(260)}:      ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}:         МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}:   ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(257)}:         ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(64)}:   ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
{Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов.Форма(448)}:   ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);

Вот вам и место ошибки и стока с ней, ставите на нее точку останова и смотрите в отладчике что имеете, больше тут вам никто я так думаю не подскажет, либо не замарачивайтесь и делайте свой обработчик печати вместо типового

LexaK

Nosferatu112, просто интересно, какой консилиум надо собрать что бы посчитать количество параметров процедуры Печать()?

при вызове задается 4 (четыре) параметра
а в обработке указано что надо 5 (пять) (откуда взяли их  :dfbbdrfb:  )
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск