gifts2017

Алгоритм построения печатных форм в 1С: Управление торговлей 11. Часть 1.

Опубликовал Марат Еникеев (maraton1185) в раздел Программирование - Практика программирования

В этой статье будет рассмотрен алгоритм построения печатных форм в типовой конфигурации 1С: Управление торговлей, редакция 11. Целью является наглядно показать применяемый в типовой алгоритм, чтобы помочь начинающим программистам в добавлении новых печатных форм или изменении существующих. Рассматриваются встроенные печатные формы. Алгоритм добавления внешних печатных форм и требования к ним будут рассмотрены в части 2.

Как и в предыдущей статье (http://infostart.ru/public/179398/), для анализа конфигурации я буду использовать ментальные карты. А именно: редактор ментальных карт xMind (www.xmind.net) и, собственно для анализа конфигурации, плагин к нему «Анализатор кода 1С» (www.codeanalyzer.ru). 

Начнём с формулировки задачи. Используем типовую конфигурацию УТ 11.0.7.19.

Зайдём в конфигурацию под администратором. Перейдём в раздел «Продажи» и выберем на панели навигации команду «Документы продажи». Откроется список документов. 

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

Отмечу, что такое же меню отображается в форме документа «Реализация товаров и услуг».

Откроем конфигуратор, найдем документ «РеализацияТоваровУслуг». Видим, что у него есть две параметризуемые им же команды и расположение у них – «Командная панель формы.Печать», т.е. то, где отображаются все печатные формы.


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

Также, если мы посмотрим на доступность этих команд по ролям, то увидим, что для роли «ПолныеПрава» (которая назначена администратору) право «Просмотр» установлено.

Два этих фактора определяют тот факт, что команды появляются в подменю печати командной панели формы документа.

Теперь разберёмся с обработчиками. Сначала обобщим рассматриваемые команды печати:

Откроем обработчик любой из этих команд. Увидим схожий вызов УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(…)

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

При этом, в качестве параметров "ВыполнитьКомандуПечати()" принимает:

И передает их в вызов «ОткрытьФорму("ОбщаяФорма.ПечатьДокументов"...)»

Посмотрим на модуль общей формы «ПечатьДокументов»

В коде ПриСозданииНаСервере(...) есть условие, определяющее, что если есть параметр «ИсточникДанных», то печатаем внешнюю печатную форму, иначе – встроенную.

Посмотрим, что вызывается в «УправлениеПечатьюПереопределяемый.ПечатьПоВнешнемуИсточнику(…)»

Таким образом, по переданному параметру «ИсточникДанных» получается объект внешней обработки и затем, вызывается её метод «Печать». Интересен вызов «ПолучитьОбъектВнешнейОбработки()», который приводит нас к справочнику «ДополнительныеОтчетыИОбработки».

Теперь посмотрим на печать встроенной печатной формы (это если параметр «ИсточникДанных» не был передан).

То есть, получаем менеджер объекта и вызываем его метод «Печать».

Менеджер получается вот так:

Ну что ж, теперь самое время перейти к процедуре модуля менеджера документа  - «Печать».

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

Для общей формы «ПечатьОбщихФорм» модуль менеджера будет выглядеть так:

Теперь вернёмся к общей форме «ПечатьДокументов». При создании на сервере была сформированна коллекция печатных форм. Печать же табличного документа происходит в «ПечатьВыполнить()».

Итак, мы выяснили как формируется список встроенных печатных форм, как происходит формирование и печать этих форм. Так же мы увидели, как происходит печать внешней печатной формы.

О том как добавляются в меню внешние печатные формы и какие требования (и почему) к ним предъявляются будет написано во второй части.

На этом заканчиваю) Легкого кода Вам!) 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Роман Ложкин (webester) 31.03.13 15:00
Работа с типовыми, от релиза к релизу, все проще и проще. Скоро будет отдельный экзамен на спеца, что бы добавить реквизит в типовую, отдельный(более сложный), что бы добавить печатную форму в документ.
2. flameCode (maraton1185) 31.03.13 21:49
Эта статья рассчитана на начинающих. Вряд ли подобные вопросы включат в экзамен спеца) А по поводу работы с типовыми, всё зависит от задачи. Где-то по-проще, как здесь, а где-то есть над чем подумать.
3. Владимир Чаклин (vec435) 04.04.13 09:21
плюс за наводки по анализу кода.пригодится для любой задачи.что-то подобное реализовал для себя на 1С
4. flameCode (maraton1185) 04.04.13 09:44
(3) vec435, скажите, а как такое можно реализовать в 1С?
5. Владимир Чаклин (vec435) 04.04.13 10:35
той же выгрузкой текстов модулей и их обработкой
Прикрепленные файлы:
6. Валерий Буданов (buval) 05.04.13 01:54
Мне статья пригодилась, как начинающего программиста в УФ
7. Роман Ложкин (webester) 09.04.13 03:28
(2)Я говорю такими темпами, печатная форма выводящая реквизиты документа и табличной части будет в ближайшее время весить под пару мегабайт и содержать тысячи строк кода. По моему налицо явный перегиб.
8. Роман Ложкин (webester) 09.04.13 13:29
(6)вам тоже понравилось что код картинками?
9. Валерий Буданов (buval) 12.04.13 15:22
(8) webester, Если статья познавательная достаточно картинок. Если прикладная желательно коды текстом, Чтобы можно было копировать и попробовать
10. Роман Ложкин (webester) 13.04.13 01:42
(9)Да как бы тогда, можно обойтись вообще без кода, рассказав на словах концепцию, что мешало сделать точно такой же красивый код, но текстом, непонятно. Это даже проще, чем скрины добавлять.
11. Сергей Куликов (ksvd) 27.08.13 12:55
Название намекает на продолжение. Когда вторая часть?
12. Павел (sidka89) 24.10.13 13:24
автор планирует продолжить тему или все, часть первая и последняя?:)
Sherdrada; +1 Ответить
13. Ольга Ковалева (volha-77) 25.05.15 23:31
сайт http://www.codeanalyzer.ru/ не открывается. Где еще можно взять этот плагин? В поисковике смотрела, больше не нашла
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа