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



















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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

13 Comments

  1. webester

    Работа с типовыми, от релиза к релизу, все проще и проще. Скоро будет отдельный экзамен на спеца, что бы добавить реквизит в типовую, отдельный(более сложный), что бы добавить печатную форму в документ.

    Reply
  2. maraton1185

    Эта статья рассчитана на начинающих. Вряд ли подобные вопросы включат в экзамен спеца) А по поводу работы с типовыми, всё зависит от задачи. Где-то по-проще, как здесь, а где-то есть над чем подумать.

    Reply
  3. vec435

    плюс за наводки по анализу кода.пригодится для любой задачи.что-то подобное реализовал для себя на 1С

    Reply
  4. maraton1185

    (3) vec435, скажите, а как такое можно реализовать в 1С?

    Reply
  5. vec435

    той же выгрузкой текстов модулей и их обработкой

    Reply
  6. buval

    Мне статья пригодилась, как начинающего программиста в УФ

    Reply
  7. webester

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

    Reply
  8. webester

    (6)вам тоже понравилось что код картинками?

    Reply
  9. buval

    (8) webester, Если статья познавательная достаточно картинок. Если прикладная желательно коды текстом, Чтобы можно было копировать и попробовать

    Reply
  10. webester

    (9)Да как бы тогда, можно обойтись вообще без кода, рассказав на словах концепцию, что мешало сделать точно такой же красивый код, но текстом, непонятно. Это даже проще, чем скрины добавлять.

    Reply
  11. ksvd

    Название намекает на продолжение. Когда вторая часть?

    Reply
  12. sidka89

    автор планирует продолжить тему или все, часть первая и последняя?:)

    Reply
  13. volha-77

    сайт http://www.codeanalyzer.ru/ не открывается. Где еще можно взять этот плагин? В поисковике смотрела, больше не нашла

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *