Добрый день, не ругайтесь пожалуйста, но я новичок и дали задание, чтобы изучить внешние обработки. Мне дали готовую обработку и по ней нужно сделать другую, макет я уже накидал, форму для доп информации сделал. Надо сейчас перейти в макет с переносом данных. Получается печатная форма открывается со справочника "Партнеры". В договоре уже надо описывать данные партнеров. Долго сижу уже, но информацию найти не могу. Я с примера переделал и осталось доделать только как раз таки переход в макет и получить данные со справочника, чтобы вставить их в макет. Код предоставлю далье в коментах
По теме из базы знаний
- Экспресс создание bat-файла с помощью внешней обработки для автоматизации выгрузки баз 1С
- Открытие формы подключаемой внешней обработки без записи документа
- Шаблон внешней обработки на основе БСП с фоновым выполнением модуля обработки и выводом индикации фонового задания
- Работа с внешними обработками на управляемых формах
- Выполнение в фоне во внешней обработке независимо от способа её открытия (подключаемая подсистема)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Это код в форме, где пишутся доп данные
&НаКлиенте
Процедура ПриОткрытии(Отказ)
КонецПроцедуры
&НаКлиенте
Процедура ПечатьПродолжить_(Команда)
НазваниеСобытия = "ПродолжитьПечать";
ИмяСобытия = НазваниеСобытия;
СтркутураДанных = Новый Структура;
СтркутураДанных.Вставить("ДатаФактическогоПодписания", ДатаФактическогоПодписания);
СтркутураДанных.Вставить("СрокПоставки", СрокПоставки);
СтркутураДанных.Вставить("СпособДоставки", Элементы.СпособДоставки.ТекстРедактирования);
СтркутураДанных.Вставить("ОтсрочкаПлатежа", ОтсрочкаПлатежа);
СтркутураДанных.Вставить("ДействуетНаОсновании", ДействуетНаОсновании);
СтркутураДанных.Вставить("ПодписантДолжность", ПодписантДолжность);
СтркутураДанных.Вставить("ПодписантФИО", ПодписантФИО);
СтркутураДанных.Вставить("ПодписантПодпись", ПодписантПодпись);
ФормаИсточник = "ВнешняяОбработка.ВПФ_Спецификация_Россия.Форма.Форма";
Оповестить(ИмяСобытия, СтркутураДанных, ФормаИсточник);
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПечатьПродолжить(Команда)
НазваниеСобытия = "ПродолжитьПечать";
ИмяСобытия = НазваниеСобытия;
СтркутураДанных = Новый Структура;
СтркутураДанных.Вставить("СрокПоставки", СрокПоставки);
СтркутураДанных.Вставить("СпособДоставки", Элементы.СпособДоставки.ТекстРедактирования);
СтркутураДанных.Вставить("ДоверенноеЛицо", Элементы.ДоверенноеЛицо.ТекстРедактирования);
СтркутураДанных.Вставить("Организация", Элементы.Организация.ТекстРедактирования);
ОбъектыПечати = Новый СписокЗначений;
ОбъектыПечати.Добавить(Объект.СсылкаНаОбъект,"Договор по поставкам");
МассивПечатныхФорм = ПечатьНаСервере(ОбъектыПечати, СтркутураДанных);
УправлениеПечатьюКлиент.ПечатьДокументов(МассивПечатныхФорм, ОбъектыПечати, ЭтаФорма);
Закрыть();
КонецПроцедуры
&НаСервере
Функция ПечатьНаСервере(ОбъектыПечати, ПараметрыПечати)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ОбъектыПечати[0].Значение);
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ДоговорПоПоставкам");
ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
ОбработкаОбъект.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, ПараметрыПечати);
МассивПечатныхФорм = ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм);
Возврат МассивПечатныхФорм;
КонецФункции
&НаСервере
Функция ПечатьПродолжитьНаСервере()
СтркутураДанных = Новый Структура;
СтркутураДанных.Вставить("ДатаФактическогоПодписания", ДатаФактическогоПодписания);
СтркутураДанных.Вставить("СрокПоставки", СрокПоставки);
СтркутураДанных.Вставить("ОтсрочкаПлатежа", ОтсрочкаПлатежа);
СтркутураДанных.Вставить("ДействуетНаОсновании", ДействуетНаОсновании);
СтркутураДанных.Вставить("СпособДоставки", Элементы.СпособДоставки.ВыделенныйТекст);
Возврат СтркутураДанных;
КонецФункции
&НаКлиенте
Процедура ПодписантФИООкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПодписантФИО = Текст;
МассивСтрокТекст = СтрЗаменить(Текст, " ", " ");
МассивСтрокТекст = СтрРазделить(Текст, " ", Ложь);
Фам = "";
Имя = "";
Отч = "";
Для Раз = 0 По МассивСтрокТекст.ВГраница() Цикл
Если Раз = 0 Тогда
Фам = МассивСтрокТекст.Получить(Раз);
ИначеЕсли Раз = 1 Тогда
Имя = МассивСтрокТекст.Получить(Раз);
ИначеЕсли Раз = 2 Тогда
Отч = МассивСтрокТекст.Получить(Раз);
КонецЕсли;
КонецЦикла;
ПодписантПодписьТекст = "";
Если НЕ ПустаяСтрока(Фам) Тогда
ПодписантПодписьТекст = Фам;
Если НЕ ПустаяСтрока(Имя) Тогда
ПодписантПодписьТекст = ПодписантПодписьТекст+ ". "+Лев(Имя, 1)+".";
Если НЕ ПустаяСтрока(Отч) Тогда
ПодписантПодписьТекст = ПодписантПодписьТекст+ " "+Лев(Отч, 1)+".";
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПодписантПодпись = ПодписантПодписьТекст;
КонецПроцедуры
Показать
А вот и код с обработчика
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СведенияВПФ
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Справочник.Партнеры"); //Указываем документ к которому делаем внешнюю печ. форму
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Договор-Поставки (Внешняя)"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Изготовлено wpg");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
//ДобавитьКоманду(ТаблицаКоманд, "Счет на оплату с договором (Внешняя)", "ДоговорПоПоставкам", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ДобавитьКоманду(ТаблицаКоманд, "Договор-Поставки (Внешняя)", "ДоговорПоПоставкам", "ОткрытиеФормы", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Печать
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, ПараметрыПечати = Неопределено) Экспорт
//Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ДоговорПоПоставкам") Тогда
СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ДоговорПоПоставкам",
НСтр("ru='Договор по поставкам'"),
СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
//ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
#КонецОбласти
#Область СчетНаОплату
Функция СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати) Экспорт
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ДОГОВОРАПОПЕЧАТИ";
НомерТипаДокумента = 0;
УстановитьПривилегированныйРежим(Истина);
Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл
НомерТипаДокумента = НомерТипаДокумента + 1;
Если НомерТипаДокумента > 1 Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ);
ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, СтруктураОбъектов.Значение);
ЗаполнитьТабличныйДокументДоговорПоПоставке(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати);
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
Возврат ТабличныйДокумент;
КонецФункции
Процедура ЗаполнитьТабличныйДокументДоговорПоПоставке(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати)
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот