Создание внешней печатной формы под Управляемое Приложение (Управление Торговлей 11.1.1.11)

28.03.13

Задачи пользователя - Адаптация типовых решений

Создание внешней печатной формы под Управляемое Приложение (Управление Торговлей 11.1.1.11)

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Obrabotk.rar
.rar 32,10Kb
549
549 Скачать (1 SM) Купить за 1 850 руб.

Публикация предназначена в первую очередь для тех, кто впервые сталкивается с написанием внешних печатных форм  под управляемое приложение.

Здесь будет рассмотрен один из способов создания внешней печатной формы под Управляемое Приложение (Управление Торговлей 11.1.1.11).

Во-первых, регистрация внешней обработки, отчета, печатной формы под УТ 11 отличается от регистрации таких же отчетов, печатных форм, обработок под обычное приложение.

Первое, что необходимо сделать, в модуле обработки прописать функцию СведенияОВнешнейОбработке

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;

МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");

ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //возможны варианты - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов,
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Акт приема-передачи"); //имя под kt обработка зарегистрирована будет в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу РеализацияТоваровУслуг ");

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

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = "Акт приема-передачи";
НоваяКоманда.Идентификатор = "МакетАкт"; //Внешняя печатная форма
НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; //здесь можно прописать использование как серверного так и клиентского, отличие в том, что серверный метод будет обращаться к экспортной процедуре из модуля объекта, клиентский - к экспортной процедуре из модуля формы объекта
НоваяКоманда.ПоказыватьОповещение = Истина;
НоваяКоманда.Модификатор = "ПечатьMXL";

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

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

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


Далее, если используем вызов серверного метода, то в модуле обработки добавляем процедуру печати

Процедура Печать(МассивОбъектов, ПараметрыПечати,КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт


//здесь объект, который будет распечатан содержится в параметре МассивОбъектов, можно либо перебрать массив и распечатать каждый:

Для Каждого ТекущийДокумент Из МассивОбъектов Цикл

КонецЦикла

//либо воспользоваться запросом:

//это пример запроса, не использовать

Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст ="ВЫБРАТЬ
| *
|ИЗ
| Документ.РасходнаяНакладная КАК РасходнаяНакладная
|ГДЕ
| РасходнаяНакладная.Ссылка В (&МассивОбъектов)

//Или, если всегда будет распечатывать только один объект, можно прописать:

СсылкаНаОбъект = МассивОбъектов[0];

///////Далее Свой код


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


Если используется клиентский метод то создаем форму обработки и соответсвующую процедуру

&НаКлиенте
Процедура Печать(ИдентификаторКоманды,ОбъектыНазначения) Экспорт
//здесь объект, который будет распечатан содержится в параметре ОбъектыНазначения, соответственно для распечатки надо перебрать все что там содержится, можно сделать банально, если всегда печатается один объект

СсылкаНаОбъект = ОбъектыНазначения[0];

//Далее либо процедуру печати пишем здесь, при необходимости можно прописать обращение к серверной процедуре

///////Далее Свой код

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

Лично я столкнулся с такой штукой,  у меня есть печатная форма, которая использует шаблон Word, в обычном приложении труда не составит написать соответствующую процедурку, которая выгрузит шаблон в соответствующее приложение и заполнит его. В УП это должно происходить на клиенте,  соответственно я в процедуре Печать прописываю запуск нужного мне приложения, а шаблон, который хранится в макете, можно вытащить на сервере.

&НаКлиенте
Процедура Печать(ИдентификаторКоманды,ОбъектыНазначения) Экспорт

СсылкаНаОбъект = ОбъектыНазначения[0];
НазваниеФайла = ПолучитьИмяВременногоФайла("doc");
Макет = ВернутьМакет();
Макет.Записать(НазваниеФайла);
mWordObject = Новый COMObject("Word.Application");
Попытка
WordDoc = mWordObject.Documents.Add(НазваниеФайла);
Исключение

КонецПопытки;

///////Далее Свой код

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

&НаСервере
Функция ВернутьМакет()
СсылкаНаОбъект = РеквизитФормыВЗначение("Объект");
Макет = СсылкаНаОбъект.ПолучитьМакет("МакетАкт");
Возврат
Макет;
КонецФункции

В довесок выкладываю несколько внешних печатных форм, форм для заполнения ТЧ документов под управляемое приложение (УТ11.1.1.11), т.к предприятие на котором работую, специфичное, обработки содержат минимальный необходимый код.


внешняя печатная форма управляемое приложение

См. также

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    4172    15    1    

33

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    6001    14    5    

24

Печатные формы Адаптация типовых решений Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    6715    73    10    

30

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    20205    dimanich70    81    

145

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4096    3    John_d    11    

57
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4692 28.03.13 20:17 Сейчас в теме
(0) Ничего особенного, всё уже давно описано и разжёвано.
ljubasia; +1 Ответить
2. C0oLZ3r0 05.04.13 10:56 Сейчас в теме
Как пример можно глянуть реализацию внешней печатной формы ТОРГ-12 под УТ 11.1 здесь: http://cheapepf.ru/goods.php?idd=1490114
Adept; Stradivari; +2 2 Ответить
3. wunderland 202 06.04.13 11:52 Сейчас в теме
а дополнительные внешние обработчики табличных частей по такой схеме можно прикрутить?
4. Stradivari 157 08.04.13 08:38 Сейчас в теме
(3) wunderland, Да, практически!
В функции СведенияОВнешнейОбработке надо вместо строки ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); написать - СведенияОбОбработке.Вставить("Вид", "ЗаполнениеОбъекта");
Ну и дальше либо вызов серверного метода, либо клиентского, в зависимости от того, что хотите делать с ТЧ.
5. Yury1001 1472 07.06.13 11:12 Сейчас в теме
И тут вдруг опа и вышла 11.1.2.Х и всё отвалилось :)))
6. kser87 2470 11.06.13 14:00 Сейчас в теме
Это не внешняя обработка для "Управляемого приложения", а внешняя обработка для БСП 2.*.

Вся информация есть на сайте ИТС http://its.1c.ru/db/bspdoc#content:22:1:

Раздел ИТС "Разработка и Администрирование",
Стандартные библиотеки
Настройка и использование подсистем при разработке конфигурации

там есть все: Виды внешних отчетов и обработок, как внедрять подсистему в свою конфигурацию, как создавать отчеты и обработки.

Если есть доступ, или диск ИТС, то можно скачать Демо конфигурацию БСП и посмотреть конкретные примеры.
7. WildFire 24.10.13 15:18 Сейчас в теме
(6) Спасибо за ссылку, ознакомился :)
Но эта публикация - для тех, кому надо по-быстрому, по-простому. Потом будет обязательно использовать УправлениеПечатью.НужноПечататьМакет и прочее, но для начала - познавательно.
8. Al777 06.11.13 12:54 Сейчас в теме
Статья помогла, но только один момент не сработал. Почему-то так и не смог получить одиночный объект:

Ссылка = МассивОбъектов[0];

Возвращает пустое значение.
А вот перебор всего массива, то есть

Для Каждого Ссылка Из МассивОбъектов Цикл
...
КонецЦикла

сработал. Я так и не понял, почему. Причём, если назвать не Ссылка, тогда возвращается пустое значение.
serjik777; JetBrain; Анатолий50; WildFire; +4 Ответить
9. insurgut 208 25.12.13 08:59 Сейчас в теме
А как сделать так, чтобы добавленная ПФ в списке печатных форм документов сразу отображалась, а не приходилось проваливаться в Печать -> Дополнительные печатные формы. Или это принципиальный подход такой в УТ11 (в УТ 10.3 внешнюю ПФ можно было назначить легко ПФ по умолчанию)?
10. Stradivari 157 25.12.13 09:35 Сейчас в теме
(9) insurgut, не разбирался, но так понял что это такой подход.
11. Поручик 4692 25.12.13 10:19 Сейчас в теме
(9) (10) Дождаться, когда УТ 11.1 переведут на БСП 2.1.6.19 или позднее. В БП 3.0, начиная с релиза примерно 25, внешние формы показываются вместе со штатными.
Stradivari; +1 Ответить
12. polyakovyan 15.01.14 17:56 Сейчас в теме
Столкнулся в БП 3.0 вот с чем: нашел внешную печатную форму счет-фактуры, подключил. Из документа сч/ф печатается нормально, а вот из документа "Реализация товаров и услуг" пишет что печатная форма недоступна. В функции СведенияОВнешнейОбработке()дописал в Назначении документ реализации, но ничего не выходит. На форумах везде примеры только для печати из одного документа, а как быть когда одна форма нужна в нескольких документаз?
13. Stradivari 157 20.01.14 15:47 Сейчас в теме
(12) Странно, что у вас так. У нас в УТ 11 печатная форма счет-фактуры прекрасно печатается как из "реализации" так и из "Счет-фактура выданный", помимо функции СведенияОВнешнейОбработке() еще и в окне регистрации внешней печатной формы есть возможность указать объекты назначения, там тоже выбраны и документ "Счет-Фактура" и "Реализация"....может с этим что-то связано, может особенности БП 3.0, ее к сожалению (может быть к счастью) еще не смотрел.
25. cmd_vasec 34 26.03.15 10:27 Сейчас в теме
(12) polyakovyan,
У меня была такая же проблема. Установил, что нет данных для печати.
Ujine1313; Manoshkin; +2 Ответить
28. Информаудитсервис 11.07.16 19:25 Сейчас в теме
(12) polyakovyan,
Решил данный вопрос?
14. insurgut 208 04.04.14 15:10 Сейчас в теме
Создал ПФ для клиентов. Сведения об обработке заполнил корректно. Создал форму. Далее не понятно, как получить ссылку на объект, для которого была вызвана ПФ.
Для формы необходимо создать параметр ОбъектыНазначения? С каким типом? На форме вывел реквизит клиент, при открытии делаю что-то вроде:
Клиент = ОбъектыНазначения[0];
Соответственно ничего не получается. Запутался. Насколько понимаю реквизит для обработки "СсылкаНаОбъект" для УФ не актуален? Потому что он при открытии формы - пустой тоже.
15. insurgut 208 05.04.14 17:05 Сейчас в теме
Разобрался. Если кому интересно, в качестве примера: http://infostart.ru/public/270761/
16. BAE1234567 10.05.14 01:33 Сейчас в теме
17. Isperator 13.05.14 10:36 Сейчас в теме
Спасибо, помогла статья.
18. wunderland 202 16.05.14 17:34 Сейчас в теме
Подскажите, а можно в обработке вн. печ. формі добраться до строки табличной части, которую перед этим кликнули мышкой?
Смотрел в БСП, в форме документа есть такая проц.

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)

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

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

То, что мне нужно, можно достать из "ЭтаФорма", но до обработки, это не передается....

Буду благодарен за любой ответ.
19. vkozak 22.07.14 17:54 Сейчас в теме
Сделал все как написано, но в бухгалтерии 3.0 не сработало. Выдает вот что.

{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(233)}: В обработчике печати не был сформирован табличный документ для: ИмяИдентификатор
ВызватьИсключение(ТекстСообщенияОбОшибке);

Подскажите где ошибся!

Вот Код

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

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

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); //Указываем документ к которому делаем внешнюю печ. форму
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть – ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов… 
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", "Наименовение"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
	ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
	ПараметрыРегистрации.Вставить("Версия", "1.0"); 
	ПараметрыРегистрации.Вставить("Информация", "Это шаблон для облегчения жизни"); 
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд, "Имя печатной формы Как будет наисанно в меню", "ИмяИдентификатор", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации;
	
КонецФункции    // СведенияОВнешнейОбработке

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетНаОплатуВРТУ", "Счет на оплату (шаблон)", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));
	
КонецПроцедуры // Печать()

Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати)
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Торг_12_ОЗК";
	
	МакетОбработки = ПолучитьМакет("Торг12_ОЗК");
	
	//заполняем шапку
	ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
	ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;
	ОбластьШапка.Параметры.ДатаДокумента = СсылкаНаДокумент.Дата;
	ОбластьШапка.Параметры.НазваниеОрганизации = СсылкаНаДокумент.Организация.Наименование;
	//выводим шапку в табличный документ
	ТабличныйДокумент.Вывести(ОбластьШапка);
	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	ТабличныйДокумент.ПолеСверху = 13;
	ТабличныйДокумент.ПолеСлева  = 0;
	ТабличныйДокумент.ПолеСнизу  = 0;
	ТабличныйДокумент.ПолеСправа = 0;

	ТабличныйДокумент.ВерхнийКолонтитул.Выводить          = Истина;
	ТабличныйДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2;
	ТабличныйДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
	ТабличныйДокумент.ВерхнийКолонтитул.ТекстСлева   = "ЗаголовокДляПечати";
	ТабличныйДокумент.ВерхнийКолонтитул.ТекстСправа  = "Лист [&НомерСтраницы]";
	
	Возврат ТабличныйДокумент;
	
КонецФункции
Показать
20. delay 28.07.14 14:33 Сейчас в теме
спасибо, очень помогло!
21. vkozak 06.08.14 09:56 Сейчас в теме
Разобрался где ошибка: просто невнимательность.
22. VitRu 6 28.11.14 10:50 Сейчас в теме
Спасибо, статья помогла. В УП только начал писать и Ваша статья и примеры оказались очень кстати.
23. Phoenix4565 13.12.14 14:52 Сейчас в теме
24. sansanih 02.03.15 23:24 Сейчас в теме
Почему не выводиться макет, а открывается пуствя форма?
26. timgan 17.04.15 10:21 Сейчас в теме
27. JetBrain 76 16.01.16 11:33 Сейчас в теме
ссылка на объект
Док = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(ОбъектыНазначения[0].УникальныйИдентификатор());
29. pvlunegov 158 13.02.17 15:56 Сейчас в теме
Спасибо за решение - внешняя печатная форма, вызов Клиентского метода при печати из документа, спасли меня от многочасовых мучений в поиске велосипеда.
Теперь при запуске печатной формы происходит сразу открытие формы в обработке печатной формы, а в форме при открытии - заполнение макета Word и открытие Word НаКлиенте. Получение параметров для заполнения макета происходит вызовом Серверной функции.
Удобно, позволяет избежать установки Word или офис пакета на Сервере - экономятся деньги предприятия.
30. Aftee 03.12.17 00:18 Сейчас в теме
Большое спасибо. Очень помогла статья. Долго провозился с выводом печатной формы в Word.
31. Glebis 13 13.04.18 13:18 Сейчас в теме
Не могу найти настройку ,чтобы не показывать команду из таблицы команды в формах документов в зависимости от значения реквизита объекта формы.
Оставьте свое сообщение