Переход с устаревших систем, таких как 1С:Управление торговым предприятием (УТП), на современные флагманы вроде 1С:Комплексная автоматизация 2 (КА) или 1С:ERP 2 — это серьезный вызов для разработчика. Архитектура программ изменилась кардинально: появились новые механизмы учета, изменилась логика работы регистров, а количество реквизитов в документах увеличилось в разы. В этой статье мы разберем, какие курсы помогут программисту быстро войти в курс дела, и проанализируем ключевые технические моменты, которые нужно знать при работе с этими системами.
Рассмотрим важный нюанс: с точки зрения кода и структуры метаданных 1С:КА и 1С:ERP практически идентичны. Они построены на едином ядре. Разница заключается в том, что в «Комплексной автоматизации» программно отключены некоторые сложные модули, такие как:
Проанализируем ситуацию: если вы изучите 1С:ERP, вы автоматически станете экспертом в 1С:КА. При этом стоимость курсов зачастую одинакова, а материалов по ERP значительно больше. Разберем наиболее эффективный набор курсов от Учебного центра №1 (УЦ1), который рекомендуют опытные коллеги:
Выясним, почему программисту недостаточно просто знать «куда нажать» в интерфейсе. В отличии от УТП, в современных системах реализована концепция ключей аналитики. Это позволяет избежать дублирования данных в регистрах накопления и значительно ускоряет работу системы.
Рассмотрим, как это работает на примере регистра ВыручкаИСебестоимостьПродаж. Вместо того чтобы хранить в каждой строке регистра ссылки на Номенклатуру, Склад, Организацию и Заказ, система создает уникальную запись в справочнике КлючиАналитикиУчетаНоменклатуры. В самом регистре хранится только ссылка на этот ключ. Для программиста это означает, что прямая запись в регистры «по-старому» (через набор записей) может привести к потере целостности данных, если не учитывать эти ключи.
Проанализируем еще одно важное отличие, которое часто сбивает с толку при переносе данных из УТП. В новых конфигурациях разделены понятия управленческого и регламентированного учета контрагентов:
Связь между ними может быть «один ко многим». При разработке обменов или переносе остатков мы должны четко понимать, какой объект в какой момент использовать. В коде это часто выглядит как поиск связки по регистру сведений СоответствиеПартнеровИКонтрагентов.
Одной из главных ошибок программиста при переходе на КА/ERP является попытка дописать функционал, который уже есть в типовом решении. Рассмотрим пример с дебиторской задолженностью. В системе существует как минимум пять типовых механизмов контроля задолженности:
Прежде чем приступать к кодингу, проанализируем настройки функциональных опций. Многие задачи решаются простым включением «галочки» в разделе «НСИ и администрирование». Если же кастомизация неизбежна, крайне рекомендуется использовать механизм расширений. Посмотрим на типичную структуру расширения для КА:
&НаСервере
&Вместо("ОбработкаПроведения")
Процедура Расш1_ОбработкаПроведения(Отказ, РежимПроведения)
// Наша логика перед типовым проведением
ПродолжитьВызов(Отказ, РежимПроведения);
// Логика после выполнения типового кода
КонецПроцедуры
Использование аннотаций &Перед, &После и &Вместо позволяет сохранять возможность легкого обновления системы, что критично для таких тяжелых конфигураций, как ERP.
Разберем вопрос использования типового функционала на примере адресного хранения. Часто возникают споры: использовать ли штатный механизм ячеистого склада или писать свой. Типовой механизм 1С:ERP/КА в части WMS достаточно стабилен и не менялся радикально уже несколько лет. Однако он имеет свои особенности в части блокировок при подборе товаров. Если склад небольшой (до 5-10 тыс. кв. метров), типового функционала обычно достаточно. При разработке складских АРМ (автоматизированных рабочих мест) важно использовать методы встроенного программного интерфейса (API) конфигурации, чтобы не нарушить логику распределения товаров по ячейкам.
Подведем итог. Чтобы стать востребованным «прогером» в среде 1С:ERP/КА, недостаточно просто знать синтаксис языка 1С. Необходимо:
Помните, что владение ERP на уровне разработчика выходит далеко за рамки написания кода. Это понимание того, как каждый реквизит влияет на финансовый результат компании в конце месяца.