Авторы:
Константин Мартынов
Людмила Гуреева
ООО "Лаборатория 33"
Я мог бы автоматизировать любое предприятие на программе 1С,
только не знаю, как…
Часть 1. Лирическая, или «как научиться танцевать по правилам 1С».
По нашему мнению, на рынке программного обеспечения в качестве основы автоматизации учета чаще всего используются именно тиражные программные продукты. В верхних строках хит-парада прочно засели продукты компании 1С. Программы на уникальных платформах, написанные «с нуля», мало того, что обходятся слишком дорого при покупке и обслуживании, зачастую еще и создают проблемы при взаимодействии с форматами, в которых требуют данные та же ФНС, Пенсионный фонд и иже с ними.
Итак, Пользователя настойчиво подталкивают к выбору тиражного продукта, и он его приобретает. Оркестр играет туш, и с этого момента начинается замысловатый танец со сложными па, в котором участвуют сразу три партнера – Разработчик, Внедренец и Пользователь. При этом нужно заметить, что собственно Разработчик предпочитает отделываться еле заметными движениями, либо вовсе скромно стоит в сторонке, теребя в руках лицензионное соглашение, в котором черным по белому написано, что Продукт продается «как есть».
Основные сложности выпадают как раз на долю Внедренца и Пользователя. Выясняется, что Продукт, который Разработчик объявлял «универсальным» и способным решать абсолютно все задачи, является таковым только с точки зрения Разработчика. «Бессовестный» Пользователь не желает танцевать по правилам, предложенным Разработчиком, постоянно чем-то недоволен, что-то требует изменить, добавить или упростить. Но, поскольку с Разработчика уже взятки гладки, отдуваться за отсутствие жизненно необходимых функций приходится именно Внедренцу.
Пусть бросят в меня камень те, кто считают, что это не так: на сегодняшний день без грамотного Внедренца невозможно наслаждаться плюсами нового ПО. Внедренец (он же – Сопровожденец) – должен стать универсалом, в котором сочетаются, как минимум, знания учета, программирования и администрирования. Неискушенный в танцах Пользователь наступает на больные мозоли Продукта, громко возмущаясь тем, что ему так сложно учить новые па.
Что остается делать Внедренцу? Лезть в Конфигурацию, менять ее под Пользователя. Дописывать, переделывать, перенастраивать. И вот – свершилось. Пользователя все устраивает, все замечательно, все работает. Но не тут-то было!
Разработчик, который за время стояния в сторонке сделал «работу над ошибками», решает обрадовать Пользователя обновленной конфигурацией. И это часто ставит пользователя перед выбором: обновляться и терять при этом все настройки и доработки Внедренца, либо работать с тем, что есть.
Хорошо, если при этом Внедренец еще рядом, а не ушел в монастырь, устав от бешеной пляски. Он обновит конфигурацию, правда, затратив при этом уйму времени и сил (что, опять же, обойдется Пользователю в копеечку). Без Внедренца Пользователь становится заложником своей собственной программы – ибо разобраться в том, что именно изменилось в Конфигурации, теперь не сможет никто…
Более того, если с «доработанной» программой творится что-то неладное, Разработчик с легкостью отскочит в сторонку, взвигнув: «Это Вы сами испортили программу!»
Как разрешить эту проблему?
Часть 2. Практика, или «лучшее средство от головы».
Тот, кто не хочет прибегать к новым средствам, должен ожидать новых бед.
Фрэнсис Бэкон
Давайте посмотрим на проблему с другой стороны. Как Продукт приспосабливается под реальность? Разработчик может пользоваться Конфигуратором. Пользователь может что-то изменить при помощи настроек и констант. А чем пользоваться Внедренцу? Получается, что каждое, даже незначительное желание Пользователя, заставляет Внедренца изменять Конфигурацию, тем самым создавая массу проблем всем участникам, в первую очередь ПОЛЬЗОВАТЕЛЮ, для которого все и делается.
Вот здесь мы вплотную подходим к решению проблемы. Мы считаем, что для Внедренца должен существовать некий инструмент, который позволил бы ему вносить изменения в работу системы, не затрагивая при этом саму Конфигурацию.
Идеи могут быть обезврежены только идеями.
Оноре Бальзак
1. Для продуктов на платформе 1С:Предприятие 8.1 инструмент Внедренца создан. Назовем его «Мета-конфигуратор». Внешне он представляет собой справочник, доступный в пользовательском режиме.Регламентированные элементы заведены в справочник на уровне Конфигурации, полностью повторяют структуру конфигурации и не подлежат удалению. Мета-конфигуратор дает практически неограниченные возможности «подстройки» Конфигурации под нужды конкретного пользователя:
Хотите создавать дополнительные константы, перечисления, атрибуты документов и справочников – и все это – «в обход» Конфигуратора? – Пожалуйста! Более того, можно настраивать свойства, оформление, поведение атрибута.
Мета-конфигуратор - это удобнейший инструмент, при помощи которого Внедренец может самостоятельно подключать к документам исполняемые модули.
Стало гораздо проще создавать формулы расчета значений атрибутов документов и справочников, привязывать формулы к событиям системы.
Скажем больше – если Вам нужны несколько документов, одинаковых по сути, но отличающихся либо наборами реквизитов, либо с разными алгоритмами заполнения – уже не обязательно создавать в Конфигураторе новые документы. Как такое возможно? Теперь для каждого документа, отличного от стандартного, достаточно создать лишь подвид документа, описав только недостающие атрибуты, либо подключив общий модуль, в котором будет описано «отклонение в поведении» нестандартного документа.
Мета-конфигуратор позволяет назначать каждому документу и подвиду документа список доступных печатных форм и дополнительных атрибутов. И если та или иная печатная форма документа, опять же, ведет себя нестандартно в зависимости от параметров формирования документа, - совсем необязательно создавать новую печатную форму. Можно, используя одну mxl- форму, создать разные варианты печатных форм, вплоть до настройки оформления, а в самом документе достаточно прописать правила выбора варианта.
Решается также и проблема настройки прав доступа пользователей к различным подвидам документов. Причем настройка прав доступа становится гораздо более гибкой, нежели стандартные возможности 1С: например, можно запретить группе пользователей «Менеджеры» изменять документы «задним числом».
Использование Мета-конфигуратора дает возможность настраивать подстановку значений любых пользовательских констант в документы, что, практически, исполняет давнюю мечту каждого пользователя – чтобы документ формировался предельно просто.
Одним словом – все для людей.
Чтобы не быть голословными, разберем работу Мета-конфигуратора на примере.
Молочный завод осуществляет приемку молока от колхозов-поставщиков. При этом реквизитов, имеющихся в стандартном документе «Поступление товаров и услуг», явно недостаточно. Клиенту важно учитывать поступление молока в неких «жирокилограммах», для расчета которых в документ должны вноситься дополнительные реквизиты, такие, как процент жира, процент белка, сортность, бактериальная обсемененность и т.д. и т.п. На основании расчета коэффициента сортности в документе должна рассчитываться цена приемки молока, при расчете должны учитываться расценки, заданные для каждого поставщика, а также должна рассчитываться стоимость транспортных услуг. При этом важно, чтобы стандартный документ поступления не изменялся.
Что делаем?
1. В режиме «1С:Предприятие» вызываем справочник «Настройка типов данных».
2. Создаем подвид документа «Поступление товаров и услуг» - «Приемка молока». (См. Рисунок 1)
3. При этом в самом документе «Поступление товаров и услуг» прописываем условие, при котором при открытии документа будет предложен выбор подвида документа: (См. Рисунок 2)
Заодно можно настроить размеры, способ отображения и положение окна для документа.
4. Создаем набор дополнительных реквизитов табличной части «Товары», необходимых для данного подвида документа: (См. Рисунок 3)
5. Создаем общий модуль «Управление видимостью колонок тп », который будет описывать, какие реквизиты действуют для данного подвида документа: (См. Рисунок 4)
6. В настройке подвидов прописываем, что при изменении подвида документа (при выборе подвида «Приемка молока», например) будет выполняться модуль «УправлениеВидимостьюКолонокТоваров». (См. Рисунок 5)
7. Создаем общие модули, описывающие процедуру расчета значений реквизитов табличной части «Товары»: (См. Рисунок 6)
Для каждого общего модуля описываем алгоритм расчета на языке 1С. Если алгоритм будет использоваться для расчета нескольких реквизитов документа, его целесообразнее описывать как внешний модуль. Так, алгоритм расчета сортности молока выполняется при изменении любого из значимых реквизитов (кислотности, плотности, группы чистоты и т.п.), следовательно, он был описан в качестве общего модуля: (См. Рисунок 7)
Алгоритм, применяемый для расчета только одного реквизита, достаточно указать в описании конкретного атрибута. Общие модули могут также выполняться при наступлении заданного события для каждого отдельного атрибута. В нашем примере при изменении значения атрибута «% жира» производится перерасчет цены молока, зачетного веса и количества: (См. Рисунок 8)
8. Все в том же справочнике «Настройка типов данных» существует возможность создавать дополнительные константы, а также задавать значения для этих констант. Константы также могут быть использованы при расчетах значений атрибутов, либо для подстановки в документ: (См. Рисунок 9)
Удобно и то, что при изменении значений констант их может откорректировать любой пользователь.
9. Далее остается только протестировать правильность формирования документа с подвидом «Приемка молока»: (См. Рисунок 10)
И, что самое приятное во всем этом – при очередном обновлении Пользователя свежим релизом - никакой головной боли, ни у Внедренца, ни у самого Пользователя.
А отсутствие головной боли уже многого стоит, не правда ли?
Итак, подведем итоги. Такое орудие, как Мета-конфигуратор, убивает сразу дюжину зайцев:
1. Избавляет Внедренца от необходимости переписывать Конфигурацию при очередном обновлении 1С.
2. Дает возможность быстро и удобно подстраивать систему под конкретного пользователя.
3. При изменении значений констант, свойств атрибутов, формул расчета и т.д. более нет необходимости править Конфигурацию. С такими задачами сможет теперь справиться даже «продвинутый» пользователь, не говоря уже о системном администраторе.
4. Все изменения, внесенные при помощи Мета-конфигуратора, лежат «на поверхности», то есть в них сможет разобраться любой специалист – и Пользователь больше не зависит от часто меняющихся специалистов.
5. Изящно и просто решается проблема с многообразием печатных форм у одного и того же документа.
6. Огромный простор для творчества. Мы перечислили далеко не все возможности Мета-конфигуратора. Исследуйте и добавляйте в этот список свои идеи.
Рис.1
Рис.2
Рис.3
Рис.4
Рис.5
Рис.6
Рис.7
Рис.8
Рис.9
Рис.10