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

Программирование - Практика программирования

Иногда возникает необходимость добавить  документ в базу 1С для расширения функционала программы. Кроме всего прочего, хочется, чтобы к этому документу, как и к типовому, можно было присоединять внешние обработки по заполнению табличных частей и внешние печатные формы. Как это сделать описано ниже. Речь идет не об управляемом приложении. Проверялось на конфигурации 1.3.15.1 Управление производственным предприятием на платформе 8.2.14

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

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

2. Добавляете переменные в модуль формы.

Перем мДеревоМакетов;                                                                     // Хранит дерево макетов печатных форм

Перем мПодменюПечати;                                                                   // Хранит элемент управления подменю печати

Перем мПечатьПоУмолчанию;                                                          // Хранит элемент управления кнопку печать по умолчанию

Перем мКнопкиЗаполненияТЧ;                                                        // Хранит дерево кнопок подменю заполнение ТЧ

3. Процедура "ПередОткрытием" должна содержать вызов двух процедур.

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

      // Установка кнопок печати

      УстановитьКнопкиПечати();            

      // Установка кнопок заполнение ТЧ 

       УстановитьКнопкиПодменюЗаполненияТЧ();   

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

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

Процедура УстановитьКнопкиПодменюЗаполненияТЧ()   

        СоответствиеТЧ = Новый Соответствие;

      // КоманднаяПанель1 - командная панель первой табличной части документа

      // МатериальныйОтчет - имя первой табличной части

      // КоманднаяПанель2 - командная панель второй табличной части документа

      // ТабличнаяЧасть2 - имя второй табличной части

 

      СоответствиеТЧ.Вставить(ЭлементыФормы.МатериальныйОтчет,ЭлементыФормы.КоманднаяПанель1);  

      СоответствиеТЧ.Вставить(ЭлементыФормы.ТабличнаяЧасть2,ЭлементыФормы.КоманднаяПанель2);

                  

       мКнопкиЗаполненияТЧ = УниверсальныеМеханизмы.СформироватьПодменюЗаполненияТЧ(Ссылка,

                                                                                 СоответствиеТЧ, Новый Действие("НажатиеНаДополнительнуюКнопкуЗаполненияТЧ"));  

          

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

 

Процедура НажатиеНаДополнительнуюКнопкуЗаполненияТЧ(Кнопка)

  

           УниверсальныеМеханизмы.ОбработатьНажатиеНаДополнительнуюКнопкуЗаполненияТЧ(мКнопкиЗаполненияТЧ.Строки.Найти(Кнопка.Имя,                                                                                                                                                                                                                                                                                                                                                                             "Имя",Истина),ЭтотОбъект);   

КонецПроцедуры // НажатиеНаДополнительнуюКнопкуЗаполненияТЧ()

 

5. Добавляете процедуры управления кнопками печати доп. печатных форм. 

Процедура УстановитьКнопкиПечати()

  

         мДеревоМакетов = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(Ссылка, Неопределено, Новый Действие("ОсновныеДействияФормыПечать"),

                                                                                                                                                                                                                                                                                Новый Действие("ОсновныеДействияФормыУстановитьПечатьПоУмолчанию"));

 

         УниверсальныеМеханизмы.УстановитьПодменюПечати    (мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов);

          УниверсальныеМеханизмы.УстановитьПечатьПоУмолчанию(мПечатьПоУмолчанию, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов,

                                      Метаданные().Имя,Новый Действие("ОсновныеДействияФормыПечатьПоУмолчанию"));

 

        Если Не мПодменюПечати = Неопределено Тогда

                   УниверсальныеМеханизмы.СформироватьПодменю(мДеревоМакетов, мПодменюПечати,Истина,Истина);

        КонецЕсли;

  

КонецПроцедуры // УстановитьКнопкиПечати()

 

Процедура ОсновныеДействияФормыПечать(Кнопка)

  

       УниверсальныеМеханизмы.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст);

  

КонецПроцедуры // ОсновныеДействияФормыПечать()

 

Процедура ОсновныеДействияФормыПечатьПоУмолчанию(Кнопка)

  

       УниверсальныеМеханизмы.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст);

  

КонецПроцедуры // ОсновныеДействияФормыПечатьПоУмолчанию()

 

Процедура ОсновныеДействияФормыУстановитьПечатьПоУмолчанию(Кнопка)

  

       Если УниверсальныеМеханизмы.НазначитьКнопкуПечатиПоУмолчанию(мДеревоМакетов, Метаданные().Имя) Тогда

                  

                   УстановитьКнопкиПечати();                           

       КонецЕсли;

  

КонецПроцедуры // ОсновныеДействияФормыУстановитьПечатьПоУмолчанию()

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

 

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

Наименование Файл Версия Размер
Инструкция
.docx 192,36Kb
12.10.13
36
.docx 192,36Kb 36 Скачать

См. также

Комментарии
1. Модератор раздела Артур Аюханов (artbear) 10.02.12 16:27 Сейчас в теме
Даю подсказку - лично я тупо создал себе несколько шаблонных инструкций - модуль формы документа, модуль формы документа с ТЧ, модуль формы списка документов, модуль объекта для документа.
в эти шаблоны и закинул весь необходимый код.
Очень просто и очень удобно использовать.
Пользуюсь этими шаблонами уже несколько лет.
2. Автоматизация Производства (dimanich70) 178 10.02.12 22:37 Сейчас в теме
тоже все хочу привести в систему, но никак руки не доходят. Если поднимете мою тему про базу для хранение обработок и инструкций, то это и есть как раз такая попытка.
doleynikov; +1 Ответить
3. Андрей Григорьев (Borisych) 502 11.02.12 00:49 Сейчас в теме
Красавчикус! ещё нужно упомянуть - чтобы документ был ну прям как в типовой - его нужно прописать в подписках на событиях, планах обмена, ПВХ - чтобы свойства можно было задавать и других объектах типовой конфигурации
4. Автоматизация Производства (dimanich70) 178 11.02.12 22:21 Сейчас в теме
Не, ну кто знает все, то может себя комментариями не затруднять.
5. Дмитрий Олейников (doleynikov) 20.03.12 11:05 Сейчас в теме
А может кто-то растолковать нубу, как вся эта шарманка работает? Как такое можно прикрутить к самописной конфигурации?
6. Автоматизация Производства (dimanich70) 178 11.04.12 12:40 Сейчас в теме
К самописной конфигурации??? Нужно понять логику и тогда получится, но данное описание не для этого.
Примерно по шагам.
1. Справочник где хранятся внешние обаработки (печ формы и т.д.) с описанием к каким документам и таб.частям они прикручиваются.
2. При открытии формы, добавить нужные кнопки
3. При нажатии на эти кнопки получать файлы внешних обработок и запускать, передавая в них тек. объект в предопределенные реквизиты.
7. Алексей Т. (CratosX) 98 21.10.13 01:03 Сейчас в теме
8. Константин Куликов (Светлый ум) 202 29.03.15 08:57 Сейчас в теме
(5) Для самописной используйте БСП от 1С
Оставьте свое сообщение