bdd2

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

Опубликовал Автоматизация Производства (dimanich70) в раздел Программирование - Практика программирования

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