При работе с современными конфигурациями на платформе 1С:Предприятие 8.3, такими как 1С:ERP Управление предприятием, Комплексная автоматизация или Управление торговлей, разработчики часто сталкиваются с обилием общих модулей, имеющих специфические суффиксы. Наибольшие вопросы вызывают модули с постфиксами Переопределяемый и Локализация. На первый взгляд может показаться, что их назначение дублируется, однако это не так. Разберем детально архитектурную логику фирмы «1С», чтобы понимать, где именно следует размещать доработки и как работает механизм разделения кода.
Для начала проанализируем ситуацию, которая привела к появлению модулей локализации. Начиная с редакций 2.4 и 2.5, фирма «1С» поставила перед собой задачу создать универсальное международное решение. Чтобы одну и ту же конфигурацию (движок планирования, производства, складского учета) можно было успешно продавать и внедрять как в России, так и в Казахстане, ОАЭ или Европе, потребовалось выделить так называемое Международное ядро (World Edition).
Рассмотрим, как это разделение реализовано технически:
Именно для отделения второго слоя от первого и служат модули с суффиксом Локализация.
Модули типа ...Переопределяемый (например, ПрисоединенныеФайлыПереопределяемый, ОбщегоНазначенияПереопределяемый) в подавляющем большинстве случаев относятся к БСП (Библиотеке Стандартных Подсистем). Проанализируем их назначение:
Эти модули являются официальными «точками входа» (хуками), которые разработчики БСП оставили для прикладных разработчиков. Когда БСП интегрируется в конкретную конфигурацию (например, в ERP), разработчик этой конфигурации должен прописать в переопределяемых модулях настройки, специфичные для этого решения.
Рассмотрим пример. В БСП есть механизм печати, но БСП «не знает», какие именно документы будут в вашей базе. Чтобы подсистема печати увидела ваши объекты, вы регистрируете их в соответствующем переопределяемом модуле.
Важное правило: Модули Переопределяемый абстрагированы от конкретной бизнес-логики и служат для настройки технологических механизмов платформы и БСП под нужды конфигурации.
Модули типа ...Локализация (например, ПроведениеСерверЛокализация, ЗаполнениеДокументовЛокализация) — это относительно новое явление в архитектуре 1C:ERP. Выясним причину их активного внедрения:
Ранее код, отвечающий за специфику РФ (например, формирование движений по регистру «НДС Предъявленный»), находился непосредственно в общих модулях или модулях менеджера документов. Теперь фирма «1С» планомерно выносит такие блоки в локализационные модули. Это позволяет им выпускать международную версию ERP, просто заменяя или вычищая эти модули, не затрагивая основной программный код.
Посмотрим на пример логики в модуле менеджера документа:
// Внутри стандартного метода проведения документа
Процедура ОбработкаПроведения(...)
// 1. Выполняем базовые действия (общие для всех стран)
ДвиженияПоСкладам(ТаблицаДанных);
// 2. Вызываем локализацию (специфика конкретной страны)
ОбщегоНазначенияЛокализация.СформироватьДвиженияНДС(ЭтотОбъект, Отказ);
КонецПроцедуры
В российской версии ERP внутри ОбщегоНазначенияЛокализация.СформироватьДвиженияНДС будет сложный код по учету НДС согласно НК РФ. В версии для другой страны этот же метод может быть пустым или содержать совершенно иную логику.
Проанализируем, как эти модули взаимодействуют друг с другом на практике. Представим процесс создания печатной формы для документа «Прием на работу»:
Таким образом, Переопределяемый отвечает на вопрос «Как работает механизм?», а Локализация — на вопрос «Какие данные и правила учета диктует местное законодательство?».
Выясним, как разработчику на внедрении вести себя при наличии этих модулей. Рассмотрим основные сценарии:
Если вы видите, что нужная вам процедура вынесена в модуль ...Локализация, у вас может возникнуть соблазн изменить её прямо там. Мы крайне не рекомендуем этого делать. Модули локализации обновляются фирмой «1С» очень часто, так как законодательство РФ динамично. Ваши правки будут постоянно затираться при обновлениях.
Вместо этого используйте Расширения конфигурации. Создайте расширение и примените аннотации &После или &Вместо к методу в локализационном модуле.
Если вы добавляете новую подсистему (например, интеграцию со сторонним сервисом), вам придется внести правки в ОбщегоНазначенияПереопределяемый или аналогичные модули БСП, чтобы зарегистрировать свою подсистему. Это легитимное использование данных модулей, предусмотренное архитектурой.
Если ваша компания планирует внедрять 1С:ERP в филиалах за рубежом, проанализируйте содержимое всех модулей Локализация. Это даст вам полный список мест, которые потребуют адаптации под требования другого государства. В идеальной картине мира «1С», вам достаточно будет переписать только эти модули, сохранив ядро системы нетронутым.
Подведем итог нашему анализу:
Понимание этой разницы позволяет создавать более устойчивые к обновлениям системы и быстрее ориентироваться в огромном массиве кода современных ERP-решений.