gifts2017

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

                  

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

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

          

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

 

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

  

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

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

 

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

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

  

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

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

 

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

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

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

 

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

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

        КонецЕсли;

  

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

 

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

  

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

  

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

 

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

  

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

  

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

 

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

  

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

                  

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

       КонецЕсли;

  

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

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

 

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

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

См. также

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