Содержание:
1. Концепция подхода к новым доработкам ERP-проектов
2. Расширение конфигурации 1С 8.3
1. Концепция подхода к новым доработкам ERP-проектов
Я сторонник использования расширений. Но с некоторым ограничением. В моем понимании нужно меньше захватывать формы. Они имеют свойство изменяться в новом релизе 1С. Совсем отказаться нельзя, но делать это следует с жестким обоснованием. Далее все добавления реквизитов и кнопок на форму нужно выполнять программным добавлением. И максимально использовать возможности БСП в 1С для размещения необходимых доработок функционала в 1С. Исходя из этого я и сделал себе заготовку «расширение конфигурации 1С 8.3», которую далее опишу.
2. Расширение конфигурации 1С 8.3
Давайте просмотрим сделанные доработки.
Рисунок 1
Это пять общих модулей и четыре макета.
Последовательно проанализируем работу расширение конфигурации 1С 8.3. Практически все формы справочников и документов имеют вызов СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) в обработчике событий формы «ПриСозданииНаСервере» (см. рисунок 2).
Рисунок 2
Далее отрабатывает общий модуль БСП в 1С «МодификацияКонфигурацииПереопределяемый». Вот он-то и был захвачен в расширении. Также были вставлены вызовы общего модуля «KL_ОбработкаФормСервер» для отработки нужных мне действий. См. рисунок 3. По названию вызываемых процедур понятно их назначение.
Рисунок 3
Теперь последовательно разберем, как это работает в 1С:ERP 2.
И начнем с добавления элементов на форму. Все добавляемые элементы на форму помещаются в макете «ОписаниеЭлементовФормы». Смотри рисунок 4.
Рисунок 4
После того как эти реквизиты поместили в макет на форме, они при открытии формы будут на ней размещены. В данном случае отработают 2 процедуры. См. рисунок 5 и рисунок 6.
Рисунок 5
Рисунок 6
А теперь посмотрим результат отработки данного механизма. В макете «ОписаниеЭлементовФормы» есть описанный новый элемент формы «КL_ ОсновнойСклад, который нужно разместить на форме элементов справочника «Структура Предприятия 1С». Пример размещения см. на рисунке 7.
Рисунок 7
Вот так программно был добавлен новый реквизит на форму. Таким образом, алгоритм следующий: в расширении я добавляю новый реквизит в справочник 1С и описываю его в макете. Этого достаточно, чтобы он был добавлен и представлен на форме.
Рисунок 8
С добавлением нового реквизит в справочник 1С на форме разобрались. Следующий шаг - разобраться с подключением событий при интерактивной работе на форме с этим реквизитом. В данном случае рассмотрим событие «ПриИзменении». Вот тут как раз случай, когда без модуля формы не обойтись, увы. Но я советую помещать только вызов процедуры, а саму обработку размещать в вашем общем модуле.
Начнем с макета. Опишем необходимые данные для обработки элементов. Здесь нужно указать форму, элемент и событие.
Рисунок 9
Данное описание понадобится для программной обработки. Посмотрим на рисунок 3. Там мы увидим, что алгоритм обработки таких событий вызывает процедуру общего модуля KL_ОбработкаФормСервер. Данная процедура представлена на рисунке 10.
Рисунок 10
А далее отрабатывает в цикле процедура, представленная на рисунке 11.
Рисунок 11
Теперь в 1С:ERP 2 рассмотрим форму элемента справочника «Структура предприятий 1С». Там мы увидим следующую процедуру, представленную на рисунке 12.
Рисунок 12
После выполнения этих действий откроем элемент справочника «Структура предприятий 1С» и для реквизита «Основной склад» выберем значение. После выбора отработает событие «ПриИзменении», а результат этих действий вы увидите на рисунке 13.
Рисунок 13
Так отработала описанная в форме процедура.
Мы описали элементы формы и для элементов добавили обработчики. Следующим шагом я опишу, как добавить на форму в 1С кнопки.
Данный механизм несколько сложнее. В данном случае имеем два действия. В начале следует разместить кнопку на форме, а после этого и обработать ее нажатие. В начале все, как всегда. Описание в макете. Далее как мы видим из рисунка 3 - вызов процедуры.
Рисунок 14
Рисунок 15
И в цикле - обращение к процедуре добавления формы.
Рисунок 16
После этих действий мы добавляем на форму в 1С кнопки. При нажатии на кнопку нужно обработать подключаемую переопределяемую команду. Это будет возможно, если воспользоваться сервисом БСП в 1С. При таком нажатии нужно обработать действия в общем модуле «МодификацияКонфигурацииКлиентПереопределяемый», а именно для процедуры «ВыполнитьПереопределяемуюКоманду».
Рисунок 17
И далее обрабатывается в общем модуле «KL_ОбработкаФормКлиент».
Рисунок 18
В этом модуле уже размещаем наши алгоритмы по обработке нажатия кнопки.
А результат нажатия на кнопку представлен на рисунке 19.
Рисунок 19
И еще нужно описать последнюю возможность с использованием макета. Это условное оформление в 1С:ERP 2.
Начнем с описания оформления в макете.
Рисунок 20
После описания условного оформления в макете мы увидим на рисунке 3 вызов соответствующей процедуры. Это две процедуры: для описания всех условных оформлений и для описания конкретного условного оформления.
Рисунок 21
Рисунок 22
И этого достаточно, чтобы сработало условное оформление. Результат мы можем увидеть на рисунке 22.
Рисунок 23
Как видим на рисунке 22 условное оформление работает и дата для данного случая выделяется красным.
Обратите внимание на события документа на рисунке 23.
Рисунок 24
И на события, которые мы можем обработать в общем модуле «МодификацияКонфигурацииПереопределяемый».
Рисунок 25
Как видно из рисунка 23, данные события можно также обработать не в самой форме, а в указанном модуле.
Если вести разработку, используя вышеизложенную методику, это позволит значительно сократить расходы на последующее сопровождение.
Специалист компании «Кодерлайн»
Мазай Евгений