Каталог решений - Программирование интерфейсов в 1С или паттерн MVC для 1С

Программирование интерфейсов в 1С или паттерн MVC для 1С

Программирование интерфейсов в 1С или паттерн MVC для 1С

В наличии

С какими трудностями можно столкнуться при разработке интерфейса? Одно дело — Вы разработчик системы с нуля, и другое — чего у меня случалось чаще — Вы дорабатываете интерфейс типовой конфигурации, в которой от типового функционала осталось только название. И вот я в очередной раз смотрю на творение n-го количества программистов, поработавших в коде до меня: ни тебе системного подхода, ни качества кода, ни оформления (как этот  код работает — никто не знает). А как это работает? На поверку оказывается, что, в общем и целом — работает. Однако при невыясненных обстоятельствах иногда становится недоступным нужный реквизит, или тип реквизита не тот, или вообще часть реквизитов не видна. А еще, почему то, при простом открытии формы на экран, в документе изменяются значения!?

Категория:

Описание

Введение

Программирование интерфейса — одна из ключевых задач при разработке средств автоматизации. В очередной раз, берясь за разработку интерфейса документа, я решил обобщить свой опыт и написать статью на тему: программирование интерфейсов на 1С.

С какими трудностями можно столкнуться при разработке интерфейса? Одно дело — Вы разработчик системы с нуля, и другое — чего у меня случалось чаще — Вы дорабатываете интерфейс типовой конфигурации, в которой от типового функционала осталось только название. И вот я в очередной раз смотрю на творение n-го количества программистов, поработавших в коде до меня: ни тебе системного подхода, ни качества кода, ни оформления (как этот  код работает — никто не знает). А как это работает? На поверку оказывается, что, в общем и целом — работает. Однако при невыясненных обстоятельствах иногда становится недоступным нужный реквизит, или тип реквизита не тот, или вообще часть реквизитов не видна. А еще, почему то, при простом открытии формы на экран, в документе изменяются значения!?

И вот теперь этот документ нужно доработать. Всего лишь добавить один реквизитик. Как только Вы это сделали — все, теперь проклятие документа падет на Вас! А как Вы хотели? С документом раньше работали и все было — ОК, а тут после Вашей доработки вдруг полезли косяки… Особенно интересно, когда такие претензии выдвигают уже Вам, хотя Вы всего лишь добавили один реквизит.

Вообщем у меня есть один подход. Я его выработал и успешно применяю уже много лет. В этой статье я хочу поделиться своим опытом, и может быть этот опыт поможет Вам лучше осознать свою деятельность и не быть одним из тех n-ых программеров, которые просто добавляют реквизиты и требуют деньги за свою работу (я не против, любая работа должна быть оплачена, но не любая работа достойна достойной оплаты). Возможно, я здесь задел достаточно острый вопрос качества кода, ресурсов, бюджета и т.д. Но не буду отвлекаться.

MVC

Немного теории на тему. Существует весьма известный шаблон проектирования интерфейса — MVC  (Model View Control) 1)2). Шаблон состоит из трех компонентов: модель данных (Model), пользовательский интерфейс (View), управляющая логика (Control). Реализация каждого из компонентов делается отдельно, а их сочетание позволяет пользователю работать с данными через интерфейс. Такая модель реализации позволяет не только разделять работу по проектированию собственно интерфейса (View), управляющей логики (Control) и функциональной логики приложения (Model), но и создавать различные сочетания этих трех компонентов.

Фактически в 1С можно реализовать независимо два компонента модели: Document-View и Model 3).

 

Рисунок 1. Иллюстрация компонентов модели MVC. Источник: http://www.dossier-andreas.net/software_architecture/mvc.html

Реализация идеи MVC на 1С

Пример реализации

Перейду к конкретным примерам. Возьмем объект метаданных «Документ». Так в роли Document-View будем считать реализацию пользовательского интерфейса в форме документа. В реализации пользовательского интерфейса 1С для документа могут выступать: форма списка, форма выбора, форма документа, специальная форма ввода и т.д. Вся управляющая логика может быть представлена процедурами модуля формы документа. Функциональная логика (Model) реализована в модуле документа.

Суть метода MVC в реализации на 1С

Использование подхода MVC для 1С заключается в разделении реализации формы (далее интерфейс  я буду по 1С-овски просто называть формой) и объекта. Все события формы  должны вызывать соответствующие процедуры объекта, изменяющие данные. Вся обработка данных должна быть в объекте (это так называемая бизнес-логика). При этом изменение одних данных может влиять на другие и наоборот  — одни данные могут зависеть от других. Такой подход позволяет использовать одни и те же процедуры обработки данных объекта как из кода (из бизнес-логики), так и из интерфейса (из различных форм). Понимаете о чем я?

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

has been added to your cart:
Оформление заказа