Создание внешних печатных форм под управляемым приложением с нуля

Опубликовал Ильяс Низамутдинов (signum2009) в раздел Печать - Печатные формы документов

Когда мне пришлось создавать внешние печатные формы под управляемым приложением, я обнаружил, что нет грамотных инструкций. Те, что имелись, использовали так называемые шаблоны: готовые обработки, в которых необходимо выполнять определенные корректировки. Но как создать сам шаблон, конкретных мануалов не было, справочную информацию я нашел на сайте ИТС и, обработав ее, написал статью, где подробно и понятно объясняются все этапы создания внешней печатной формы для управляемого приложения

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

 

Все это делается довольно просто))

 Вы можете посмотреть видео данной статьи по адресу: http://youtu.be/OdY5JdHMilU

И так, создадим новую обработку.

Мы будем создавать внешний счет на оплату покупателю, поэтому обработку так и назовем: «СчетНаОплатуВнешний».

 

 

 Сохраним ее на жесткий диск.

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

Зайдем в модуль обработки, и создадим экспортную функцию СведенияОВнешнейОбработке.

 

 

 

Внутри этой функции создадим структуру ПараметрыРегистрации, которая будет содержать определенный список полей. Каждое поле мы разберем в отдельности.

 

 

 

Создадим первый элемент структуры, он будет иметь ключ с название «Вид».

 

Значением данной связки КлючИЗначение идет одна из строк:

 

  • «ДополнительнаяОбработка»
  • «ДополнительныйОтчет»
  • «ЗаполнениеОбъекта»
  • «Отчет»
  • «ПечатнаяФорма»
  • «СозданиеСвязанныхОбъектов»

 

В нашем случае должна быть строка «ПечатнаяФорма».

 

 Следующий элемент структуры должен иметь ключ с названием Назначение.

 

В качестве значения данного элемента должен выступать массив, где перечислены будут все документы или справочники, в которых будет выходить данная печатная форма.

Они должны иметь тип строка, и в следующем формате:

 

Документ."НазваниеДокумента"

Справочник."НазваниеСправочника"

 

У нас этот массив будет возвращать отдельная функция ПолучитьНазначениеОбработки.

 

Создадим ее.

 

 

Допишем созданный последним элемент структуры.

 

 

 Создадим новый элемент структуры, ключ которого будет называться «Наименование»,

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

 

Следующий элемент структуры будет иметь название «Версия»,  значением данного элемента будет версия обработки. Задается программистом на его усмотрение.

 

 Следующий элемент имеет название «Информация», который содержит краткую информацию по обработке.

 

 Следующий элемент имеет название «БезопасныйРежим», его необходим устанавливать в значение истина или ложь, в зависимости от того необходимо устанавливать или отключать безопасный режим во время выполнения обработки. Мы установим значение  Ложь.

 

 И в последнем параметре необходимо добавить команды, которые будут поставляться обработкой.  Для этого нам необходимо создать и заполнить таблицу команд. Создадим функцию, которая создает и возвращает таблицу с определенным набором полей. Делать это будем в функции ПолучитьТаблицуКоманд.

 Создадим функцию и таблицу значений внутри нее.

 

 Теперь создадим пять колонок этой таблицы.

И первая колонка – Представление.

 

 Эта колонка – представление команды в пользовательском интерфейсе, т.е. то что пользователь увидит при нажатии кнопки печать в документе или справочнике.

 Вторая колонка – Идентификатор.

 

Это может быть любая текстовая строка, уникальная в пределах данной обработки.

 

Третья колонка – Использование.

 

Параметр данной колонки типа строка, должен принимать одно из четырех  значений –

 

  • ОткрытиеФормы – Открывает форму обработки.
  • ВызовКлиентскогоМетода – будет вызвана клиентская процедура из модуля формы обработки.
  • ВызовСерверногоМетода  - будет вызвана серверная процедура из модуля обработки.
  • СценарийВБезопасномРежиме – тоже будет вызвана серверная процедура из модуля обработки в безопасном режиме.

 

Конкретно мы будем использовать вызов серверного метода.

 

Следующая колонка – показывать оповещение. Принимает значение истина или ложь, в зависимости от того надо показывать оповещение или нет.

 

 

 

И последняя колонка – модификатор. Это дополнительный модификатор команды. В нашем случае будет иметь название ПечатьXML.

 

 

Теперь создадим процедуру, которая будет заполнять данную таблицу значений.

 

В данном коде все понятно.

 В функции СведенияОВнешнейОбработке создадим команду и заполним ее.

 

Создаем таблицу значений:

 

Теперь заполним ее.

 

Еще раз пройдемся по параметрам.

 

  • Первый параметр, непосредственно таблица команд вновь созданная.
  • Второй параметр, как будет отображаться команда пользователю.
  • Третий – уникальный идентификатор команды, запомните его, он нам еще пригодиться.
  • Четвертый параметр – использование, как будет вызвана ваша команда, и от куда.
  • Пятый  параметр – показывать оповещение, мы не будем это делать.
  • Шестой параметр – модификатор, в нашем случае он всегда один ПечатьXML.

 

Теперь передадим вновь созданную таблицу команд в структуру ПараметрыРегистрации.

И пусть наша функция СведенияОВнешнейОбработке возвращает данную структуру.

 

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

 

Теперь в модуле объекта создадим процедуру Печать.

 

 

 

И вот начинается самое интересное, теперь вам необходимо войти в аналогичную процедуру в менеджере объекта счет на оплату покупателю, и перенести код в вашу обработку.

Сделаем это.

Откроем модуль менеджера документа Счет на оплату покупателю.

 

 

 

 Находим процедуру печать, и раскроем ее.

 

 

Копируем первую строку кода развернутой процедуры в процедуру Печать нашей обработки.

 

 

Поскольку мы будем выводить простую печать, то копируем второе условие

И копируем последнюю строку кода.

 

 

 

 

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

 

 

 

Делаем проверку модуля обработки и находим следующую ошибку:

 

 

Находим данную функцию в модуле менеджера документа и копируем ее.

 

 

 

 

 

Еще раз делаем проверку модуля. Ошибок не обнаружено.

 

Продолжаем, теперь нам необходимо, что бы брался наш макет, и печатался по нашей команде.

 Нас интересует вот этот кусок кода.

 

 

В нашем случае, интересна процедура – ПечатьСчетаНаОплату

 

 

Очевидно, она непосредственно формирует табличный документ. Перейдем в нее. И скопируем ее в модуль нашей обработки.

 

 

 

Делаем проверку модуля. Ругается на несуществующую процедуру.

 

 

 

Переходим в общий модуль, от куда мы взяли процедуру ПечатьСчетаНаОплату, находим проблемную процедуру, и копируем ее в модуль обработки.

 

Проверяем еще раз ошибки. Все нормально.

 

Теперь зайдем в скопированную функцию ПечатьСчетаНаОплату, и посмотрим, где там подтягивается макет.

 

 

Находим данный макет в общих макетах и копируем его в макеты нашей обработки.

 

 

 

 

 

Исправляем выделенный код, где подтягивается макет, следующий образом.

 

 

 

Все! Больше нас эта процедура не интересует. Теперь зайдем в наш скопированный макет, и сделаем какое-нибудь изменение, что бы вы видели, что команда подтянула именно макет из внешней обработки.

 

 

 

Вернемся обратно в процедуру печать.

 Убираем название модуля ПечатьТорговыхДокументов перед функцией ПечатьСчетаНаОплату, т.к. будем брать нашу функцию из модуля обработки. Убираем слово «Общий макет», перед названием макета.

 

И теперь осталась одна небольшая хитрость, без которой ваш внешний отчет не будет работать. Необходимо текст «счетзаказ».

 

 Заменить на название идентификатора команды.

 

 Все, сохраняем данную обработку. И запускаем 1С предприятие из конфигуратора.

Идем в администрирование. В дополнительные отчеты и бработки.

Нажимаем на кнопку создать и выбираем нашу созданную обработку.

 

 

 

Записываем. И смотрим, как выходит наша печатная форма.

 

 

 

 

 

Извиняюсь за много букв и картинок)) Ниже приведены примеры внешних печатных форм счета на оплату и ТОРГ 12 для бухгалтерии (релиз 3.0.32.7), и счета на оплату для УТ 11 (релиз 11.1.15.16)

Скачать файлы

Наименование Файл Версия Размер
Счет на оплату внешний для БП 3.0
.epf 13,43Kb
03.06.14
202
.epf 13,43Kb 202 Скачать
ТОРГ 12 внешняя для БП 3.0
.epf 17,65Kb
03.06.14
83
.epf 17,65Kb 83 Скачать
Счет на оплату внешний для УТ 11
.epf 23,34Kb
03.06.14
97
.epf 23,34Kb 97 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Артем Целовальников (slazzy) 32 05.06.14 15:14 Сейчас в теме
спасибо тебе, мил человек. Полезное дело делаешь
Мах; requin; turinx; +3 Ответить
2. Павел (Yimaida) 30 06.06.14 00:56 Сейчас в теме
Очень полезная статья. Понятная и наглядная инструкция. Не будет лишней даже для тех, кто уже создавал ВПФ. Вот неплохая статья на эту же тему http://programmist1s.ru/vneshnie-pechatnyie-formyi-v-1s/. Т.е. за основу понимания создания ВПФ можно брать БСП (Библиотека стандартных подсистем).
inanity; hatabvm; Mozgolom1988; Дмитрий74Чел; Rustig; vittany; neyasytyf; greenders71; rafman11; Mi4man; toxicoff; +11 Ответить
3. Aleksandr Filonov (AleksSF) 157 06.06.14 10:27 Сейчас в теме
Не совсем корректное название статьи
"Создание внешних печатных форм под управляемым приложением с нуля"
Правильно было бы "Создание внешних печатных форм под управляемым приложением на основе готовых".
В статье разобрано только как описать ВПФ и скопировать в нее готовые процедуры и функции.
Это хорошо когда нужно изменить макет под свои нужды на основе данных которые формирует стандартная форма.
Но если нужна ВПФ с данными, которых нет в стандартной форме, например СчетЗаказ в котором пропечатывается текущий долг Контрагента. То уже необходимо вносить изменения в функции печати, в запрос и т.д. А вот эти вопросы к сожалению не разобраны.
4. Ильяс Низамутдинов (signum2009) 398 06.06.14 11:21 Сейчас в теме
(3) AleksSF, Да согласен, что статья несколько минимизирована, но если непосредственно править данные, то нужно править именно те процедуры и функции, которые скопированы, а тут может быть очень большое поле для деятельности....я думал о том что бы упомянуть это в статье, но посчитал что в принципе это будет понятно)) да и к тому же, работа с данными в тех же БП 3 и УТ 11 очень сильно отличается, по этому по идее нужно писать две статьи: создание ВПФ с корректированием данных для БП, и создание ВПФ с корректированием данных для УТ 11. В принципе есть такая идея, но нужна ли она людям?
5. welard Куликов (welard) 06.06.14 18:48 Сейчас в теме
(4)signum2009, конечно нужна. Потому как с внешними печатными формами на основе стандартных все же проще дела обстоят. Писать мало, в основном копировать. А вот если нужны допданные вывести на форму, или еще "веселее" выбрать какие то параметры перед выводом на печать (как в 1-Т или транспортной накладной), вот тут то проблемы и начинаются.
6. Павел Ванин (pahich) 95 09.06.14 00:27 Сейчас в теме
(5) welard, Не вижу сложности. Если Вы - пишущий программист 1С, но ни разу не создавали ВПФ для УФ, то прочтение данной статьи заполнит брешь "как сделать", а уж что откуда взять и куда вывести, с такими моментами у Вас сложностей возникнуть не должно.

(4) signum2009, на мой взгляд, дополнительных статей с "разжовыванием" получения данных не надо. Данные меняются гораздо чаще чем механизм создания ВПФ. Спасибо за статью!
Патриот; Артано; KSy; AzagTot; spetzpozh; +5 Ответить
7. Oleg Solovyeff (Solovyeff) 09.06.14 01:54 Сейчас в теме
Эту бы статью, да несколько месяцев назад, не пришлось бы тратить часы на поиск информации (довольно таки длительный поиск), с другой стороны это позволяет лучше усвоить материал, когда сам ищешь по крупицам и создаешь полную картину, но то дело вкуса и количества свободного времени) Автору однозначно плюс.
8. mikhail burlakov (burlakov) 59 09.06.14 13:20 Сейчас в теме
очень хорошая статья! спасибо! напишите продолжение про использование скд на внешке. сам разбирался - все нетривиально несколько.
9. Андрей Сябренко (AzagTot) 35 09.06.14 15:58 Сейчас в теме
Автору спасибо за труд! Полезная статья.
10. Ксения Сумарокова (Bambini23) 3 09.06.14 16:56 Сейчас в теме
Добрый день!
Спасибо за статью - полезно! Все по полочкам разложено.
А у меня вот какой вопрос, может быть не совсем по теме. Когда мы печатаем выводим стандартную печатную форму в ут, вызывается обработка.ПечатьСчетовНаОплату. А когда печатаем через внешнюю естественно, вызова этой обработки не происходит. Зачем это надо? Допустим я собираюсь делать отправку по электронной почте, и в случае печати через эту обработку, у меня автоматом подбираются контактные лица. А если печатать просто внешнюю форму, естественно, что никакие контактные лица не выбираются.
Не пробовали делать впф через вызов этой самой обработки?
11. Ксения Сумарокова (Bambini23) 3 09.06.14 17:02 Сейчас в теме
Прошу прощения=) Вопрос снят. После чашечки кофе голова соображает в разы лучше=)
12. oleg (opus70) 67 10.06.14 09:35 Сейчас в теме
прошу прощения а кто нибуть подскажет как программно распечатать внешнию печатную форму
т.е. хочу на форму добавить кнопку и по этой кнопке распечатать внешнию печатную форму
давно ищу ответ на этот вопрос
13. vicmos victor (vicmos) 40 10.06.14 10:22 Сейчас в теме
14. Михаил Никитин (M.Nikitin) 10.06.14 18:29 Сейчас в теме
Спасибо, полезный материал!
15. Яков Коган (Yashazz) 1957 10.06.14 21:32 Сейчас в теме
Хочется минуснуть за то, что код представлен картинками и за то, что баян, ибо видел подобное на Мисте ещё в лохматые времена.

Не вижу особой сложности - сам с этими новыми форматами разобрался без проблем в 2009-м, заняло от силы полдня.
KapasMordorov; wolfsoft; +2 3 Ответить 1
16. Константин Марков (markovki) 17 11.06.14 08:38 Сейчас в теме
Плюсанул конечно за полезную статью и труды, но код картинками...
18. aleks (maldinitaly) 11.06.14 09:22 Сейчас в теме
Спасибо, автору за труды и конечно плюс. Очень полезная статья.
19. Антон Рощин (wolfsoft) 2410 11.06.14 09:42 Сейчас в теме
(15) Поддержу. Начало было интересное, думал наконец-то статья систематизирующая, а в итоге разобран пример создания простейшей печатной формы, которую вполне можно сделать самому, взяв за основу любую внешнюю форму, даже если до этого ни разу их не делал, там всё интуитивно понятно.
20. Андрей Киреев (FractonKireyev) 11.06.14 09:59 Сейчас в теме
Статья полезная! Пробел в знаниях на тему "как сделать" закрывает хорошо. А всё остальное (где взять данные, как вывести на печать и прочее) - это не тема для таких статей, это в каждой задаче индивидуально!
За такую статью однозначно спасибо и плюс.
21. Андрей Бертыш (ignor) 214 11.06.14 10:01 Сейчас в теме
Не плюсую. Мне интересна тема организации ВПФ с опцией "ОткрытиеФормы", а она нигде толком не раскрыта. Мне надо что бы у пользователя при вызове открывалась некая моя форма.
22. Наталья Кошеварникова (Roby) 29 11.06.14 13:21 Сейчас в теме
Мне тоже очень интересна тема организации ВПФ с опцией "ОткрытиеФормы". Допустим, указала эту опцию и форма открылась. Что дальше? как пустить на печать?
23. Степашка Никулин (Styvi) 5 11.06.14 14:11 Сейчас в теме
24. Евгений Аганин (AganinEvgeniy) 11.06.14 15:58 Сейчас в теме
Спасибо автору за хорошо разобранный пример, который удобно использовать для начала экспериментов! Все понятно и доступно.
25. Сергей Лямин (bydk) 11.06.14 16:10 Сейчас в теме
В конфигурации основанной на БСП 2.1+ функция СведенияОВнешнейОбработке() будет выглядеть так:
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.1.3.1");
	
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Версия = "0.6";
	ПараметрыРегистрации.БезопасныйРежим = Истина;
	ПараметрыРегистрации.Назначение.Добавить("Документ._ДемоСчетНаОплатуПокупателю");
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Счет на оплату'");
	НоваяКоманда.Идентификатор = "СчетЗаказ";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	НоваяКоманда.Модификатор = "ПечатьMXL";
...Показать Скрыть

Примеры почти всех видов внешних обработок можно посмотреть в Демо по БСП.

(21) ignor, (22) Roby, про предварительное открытие формы можно почитать здесь!
26. DAnry (DAnry) 3 12.06.14 00:08 Сейчас в теме
Спасибо, грамотная статья. Работаю в основном с обычными формами, но приходится переходить понемногу на управляемые.
27. tixis1c tixis1c (qwed557) 26 13.06.14 17:21 Сейчас в теме
Что такое модификатор - ПечатьXML, почему во всех печатках именно так называется, где это используется, где к этому модифиатору идет обращение?
28. Наталья Кошеварникова (Roby) 29 16.06.14 09:15 Сейчас в теме
(25) bydk, спасибо, как раз то, что нужно
29. Oleg karp (Oleg1708) 16.06.14 12:05 Сейчас в теме
Жаль что механизм ВПФ меняется быстро.
А параметр Использование = "Открытие Формы" только в последних версиях БПС работает.
30. Алексей 1 (AlX0id) 18.06.14 11:34 Сейчас в теме
Плюс за доходчивость изложения - буду проггерам начинающим рекомендовать )
А то описание БСП конечно хорошо, но тяжеловато в усвоении.
31. Евгений (Algiz) 23.06.14 00:49 Сейчас в теме
Спасибо за статью, полезно к усвоению, ну и как заметка теперь будет
32. Алексей Папанов (El_Loco) 80 30.06.14 10:44 Сейчас в теме
Очень доступная статья. Спасибо автору!
33. Александр Полтава (Патриот) 179 30.06.14 14:03 Сейчас в теме
(12) opus70, может я что не так понял, в чём сложность? создаёшь команду в модуле формы, на основе команды элемент формы и нижеследующие процедуры:
&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура Команда1НаСервере()
	ОбработкаОбъект = ВнешниеОбработки.Создать("Полный путь к файлу ВПФ",);
	ОбработкаОбъект.Печать();
КонецПроцедуры
...Показать Скрыть


Автору статьи плюс, естественно)
34. Марина Чирина (chmv) 30.06.14 16:27 Сейчас в теме
35. Виктор Маркевич (warrior1985) 63 30.06.14 19:44 Сейчас в теме
Огромнейшее спасибо Аффтору! Все разложено по полочкам, если времени особо нет, то пригодится для быстрого получения практических навыков создания внешних печатных форм на платформе 1С: Предприятие 8.3.
36. Владимир Клименко (KliMich) 30.06.14 20:15 Сейчас в теме
Спасибо! Очень полезно и познавательно!
Маленькая просьба. У меня одному клиенту захотелось, чтобы счет формировался не в XML, а в Word...
Можно ли в данной статье осветить еще и такой вариант?
37. q_i 305 30.06.14 21:33 Сейчас в теме
Хорошо написано.
Только не очень понял вот что:
Следующий элемент имеет название «БезопасныйРежим», его необходим устанавливать в значение истина или ложь, в зависимости от того необходимо устанавливать или отключать безопасный режим во время выполнения обработки. Мы установим значение Ложь.

а в самом коде:
ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);

38. Владимир Клименко (KliMich) 01.07.14 00:57 Сейчас в теме
Обычно устанавливается
ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);

Но иногда требуется установить "БезопасныйРежим" в Ложь, когда используются какие либо внешние компоненты или .dll (также могут вытаскиваться из макета)
У меня потребовалась данная установка, когда во внешней печатной форме "Трудового догора" потребовалось применять СКЛОНЕНИЯ.
39. Nick (Puk2) 152 02.07.14 09:26 Сейчас в теме
(36) KliMich, во-первых, примеры различных видов внешних отчетов, обработок и печатных форм можно увидеть в самой конфигурации БСП в разделе Администрирование - Печатные формы, отчеты и обработки (users.v8.1c.ru\..\SSL22); во-вторых, если нет доступа в ИТС, то напишите в личку - отправлю обработку _ДемоДополнительнаяОбработкаПечатиMSWordНазначаемая.epf
40. Евгений (Algiz) 04.07.14 12:20 Сейчас в теме
Спасибо, позновательная статья
41. Ivan B (wolverine87) 04.08.14 16:40 Сейчас в теме
Спасибо большое. Много познавательного и исчерпывающе. Автору +1))
42. Вадим . (tindir) 06.08.14 09:05 Сейчас в теме
Отлично "расписано" как собрать на коленке простейшую ВПФ для УФ. НО это уже давно есть на ИТС. А вот чего толком нет на ИТС, это - как пользоваться остальными видами Внешних обработок. Вот такую бы статью. Это было бы вооще "щиколад"!
43. Майя Сульдина (maiUsik) 06.08.14 09:36 Сейчас в теме
Добрый день!
Только начинаю разбираться с ВПФ, сделала все как описано в статье, но при попытке вывести документ на печать появляется следующая ошибка:
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(221)}: Недостаточно фактических параметров ВнешняяОбработкаОбъект.Печать(
Подскажите, пожалуйста, что нужно поправить, не могу сообразить :-(

44. Ильяс Низамутдинов (signum2009) 398 06.08.14 19:42 Сейчас в теме
(43) maiUsik, вот так должно быть:

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

ЗЫ по остальным вопросам, готовлю статью, о возможности создания ВПФ с вводом дополнительных параметров.
Так как прямого способа решения данной задачи с использованием БСП нет, то будет предложено три альтернативных метода...
Ateterev; alexn62rus; niko75; +3 Ответить 2
45. Майя Сульдина (maiUsik) 07.08.14 08:33 Сейчас в теме
(44) signum2009,
Все получилось, спасибо большое! :-)
46. Ильяс Низамутдинов (signum2009) 398 08.08.14 12:09 Сейчас в теме
Вот продолжение этой статьи: http://infostart.ru/public/295368/
где будет предложено два способа создать ВПФ с возможностью передачи параметров.
Ateterev; +1 Ответить
47. Николай Кир (niko75) 15.09.14 10:54 Сейчас в теме
Все превосходно написано. Возникает ошибка:

{Обработка.СчетНаОплату1.МодульОбъекта(268,7)}: Слишком много фактических параметров (ДобавитьКоманду)
<<?>>"ПечатьMXL"); (Проверка: Толстый клиент (обычное приложение))

Помогите разобраться.
48. Николай Кир (niko75) 16.09.14 10:49 Сейчас в теме
Разобрался, несколько раз код переписывал, копировал - вставлял, в итоге ругаться перестал.
49. Наталия Кононец (Hilda Fildgerald) 22.12.14 16:37 Сейчас в теме
Добрый день! Вопрос вам как к эксперту. Ваша внешняя печатная форма счета работает после обновления БП 3.0 на релиз 3.0.37.32? Моя отказалась, ошибка:
ВнешняяОбработка.ЗаявкаПокупателяЮрЛицоНовый.МодульОбъекта(14)}:
Метод объекта не обнаружен (ПолучитьДанныеФайлаИДвоичныеДанные)
ДанныеКартинки = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Организация.ФайлЛоготип); логотипов и картинок нет, почитав форум нашла пост где рекомендовано убрать из ПолучитьДанныеФайлаИДвоичныеДанные(Организация.ФайлЛоготип) слово Получить. Эта ошибка проскочила, но следующая: {ВнешняяОбработка.ЗаявкаПокупателяЧастноеЛицоНовый.МодульОбъекта(573)}:
Поле объекта не обнаружено (ФИОПредпринимателя)
ОбластьМакета.Параметры.ФИОПредпринимателя = СведенияОПолучателе.ФИОПредпринимателя;
Вот и не знаю что делать? Может подскажите что?
50. Ильяс Низамутдинов (signum2009) 398 23.12.14 07:44 Сейчас в теме
Да там изменилась структура процедур печати, необходимо переделать обработку...
51. Наталия Кононец (Hilda Fildgerald) 23.12.14 14:34 Сейчас в теме
Вот с этим-то и проблема. Я бухгалтер, а не программист.
52. Наталья (Natali_77) 17.01.15 13:21 Сейчас в теме
Спасибо огромное за статью! С её помощью без проблем создала внешнюю печатную форму,хотя в 8.3 ни разу не работала, только в 8.1. Спасибо, что делитесь таким важным опытом! Всё доходчиво и без заморочек!
53. Дмитрий Воронов (korppinen) 13 18.01.15 13:13 Сейчас в теме
54. Александр Видревич (hladograd) 21.01.15 09:12 Сейчас в теме
Спасибо за статью, все работает.
55. KindLion (KindLion) 28.01.15 10:18 Сейчас в теме
Большое спасибо за классную статью!
56. pavel ev (pavelyar) 30.01.15 12:51 Сейчас в теме
57. Сергей (СержТ) 04.02.15 11:29 Сейчас в теме
Спасибо. Познавательно.
58. Михаил Петров (mike581) 11.02.15 19:58 Сейчас в теме
ВПФ на УФ создавал, но как-то интуитивно. А теперь буду осознано. Полезная статья. Спасибо.
59. Сергей Ирюпин (lamp) 25 06.04.15 16:59 Сейчас в теме
Спасибо автору, полезная статья. Проследовал по всем пунктам и получил результат.
60. Сергей Крайнов (ccserg) 39 10.04.15 09:54 Сейчас в теме
Спасибо !
БГУ 2.0 не подключается обработка -Слишком много фактических параметров
в ошибке не видно на что ругается , где искать ?
61. Александр Честикин (cheiser1982) 42 18.05.15 10:42 Сейчас в теме
Подскажите, как можно отладить работу внешней печатной формы?
62. Сергей Ш (cdover) 05.06.15 17:38 Сейчас в теме
Подскажите пожалуйста, у вас после добавления печ формы в справочник, она появилась в меню Печать документа как непосредственно печатная форма, а у меня как строка "Дополнительные печатные формы" по нажатию на которую у меня открывается выбор печатной формы которую я хочу запустить. Как можно убрать этот лишний выбор, тобы как у вас на картинках выбиралась непосредственно печатная форма из меню Печать?
И как можно заменить стандартную печатную форму в меню Печать, на внешнюю из справочника?

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

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

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

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

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

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

КонецПроцедуры
...Показать Скрыть
Прикрепленные файлы:
63. Никита Глобин (Nik_novosib) 18.06.15 17:22 Сейчас в теме
(61) cheiser1982, Вот здесь посмотрите: http://www.obrabotki.com/otladka-bsp-1s/ За пару шагов получаете возможность отладки, причем режим отладки перезапускать не нужно.
64. Никита Глобин (Nik_novosib) 18.06.15 17:27 Сейчас в теме
(62) cdover, А что за конфигурация? Нужно смотреть какая версия БСП. Заменить вряд ли получится без снятие с поддержки. Кнопку "печать" платформа на КП выводит сама если не ошибаюсь.
P.S. Сам сейчас разбираюсь ВО. Могу ошибаться.
65. Марат Замилов (Maratuster) 14.10.15 06:51 Сейчас в теме
Перевод внешних печатных форм с бухгалтерии 2.0 на 3.0, по сути, должен происходить схожим образом?
66. Konstantin Iaremchuk (avto1c) 14.10.15 08:49 Сейчас в теме
Извиняюсь за много букв и картинок))
Все буквы осилил. Плюс.
67. a_l_e_xj Волков (a_l_e_xj) 4 19.10.15 16:03 Сейчас в теме
Начало статьи замечательное, а потом не очень. Замах есть, а что если скопировать процедуры неоткуда?
Хотелось бы упоминания о МассивОбъектов[0] - о синтаксисе, как получить доступ к объекту в котором была вызвана печатная форма.
68. Кирилл Тюрин (turinx) 30.10.15 09:39 Сейчас в теме
Большое спасибо, очень понятно и грамотно все объяснено! Первый раз создал ВПФ, все по статье, очень помогло.
Пара несоответствий: когда вставляем модификатор команды, написано "Печать XML", на картинке - "Печать MXL", и второе - значение "Безопасный режим" в ПараметрыРегистрации, в тексте - Ложь, на картинке - Истина.
69. Олег Т (ovt256) 20.11.15 12:26 Сейчас в теме
(44) signum2009,
За статью спасибо!
Пытаюсь в УТ 11 по аналогии создать ВПФ Счет из Заказа клиента. Столкнулся с аналогичной ошибкой. Убрал по Вашей рекомендации параметр "ПараметрыПечати" из Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Теперь ошибка следующего вида:
{ВнешняяОбработка.СчетДоговорВнешний.МодульОбъекта(56,73)}: Переменная не определена (ПараметрыПечати)
СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, <<?>>ПараметрыПечати)); (Проверка: Сервер)
70. evg (evg_m) 6 06.12.15 19:15 Сейчас в теме
Как у вас в 14 году получился релиз УТ 11.1.15.16, если сейчас 11.1.10.197??
71. Галина Михнева (Галина11) 15.02.16 18:25 Сейчас в теме
Спасибо огромное! с нуля научилась создавать свои формы!!
72. Дмитрий Силин (shotsdv) 15.03.16 17:37 Сейчас в теме
В БП 3.0.43.147 эта ВПФ не подключается.
Пишет, что не является объектом "Добавить"
73. Дмитрий Силин (shotsdv) 15.03.16 17:37 Сейчас в теме
А так статья очень полезная для всяких чайников, типа меня :)
74. Ларионова Татьяна (АИС) 30.03.16 12:01 Сейчас в теме
Добрый день,
БП 3.0.43.152 форма не работает.
1я ошибка Поле не найдено СчетНаОплатуюЗаРуководителяПоПриказу
2я ошибка Таблица не найдена Документ.СчетНаОплатуПокупателю.Услуги
75. Виктор Черепонько (viktor_and_ko) 11.04.16 17:42 Сейчас в теме
Здравствуйте, может быть подскажите как можно разрешить пользователям редактировать макет ВПФ в режиме предприятия?
76. Дмитрий Силин (shotsdv) 15.04.16 13:36 Сейчас в теме
Мда, статья, в целом, полезна, только на последних релизах БП она не подключается... :(
77. Roman Vinogradov (RomVin) 20.05.16 08:28 Сейчас в теме
Что правда на последних релизах не работает может подкорректировать статью для чайников типо меня как надо правильно делать?
78. Осипов Сергей (fixin) 3453 07.06.16 12:54 Сейчас в теме
Плохо что все в картинках. текст не скопипастить.
79. Александр Отр (ИНТЕГРА) 20 17.06.16 14:02 Сейчас в теме
Это для бухгалтера писалось? :)

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

	Возврат ПараметрыРегистрации;
	
КонецФункции
...Показать Скрыть

Взять отсюда: http://zdst.net/parametry-registratsii-vneshnej-obrab/
81. Иван Иванович (botcc) 27.01.17 18:40 Сейчас в теме
А как сделать так чтоб по результатам выполнения определенных условий печатная форма не выводилась а появлялось сообщение пользователю?
в 8.2 достаточно Сообщить("Парам пам пам") и вместо макета передать Неопределено.