Чтение кода типовых конфигураций 1С (таких как БП 3.0, УТ 11 или ERP) часто сравнивают с изучением иностранного языка. Начинающему разработчику, даже с опытом в PHP или C#, обилие процедур, функций и бесконечные вызовы общих модулей могут показаться хаотичными. Однако за этим «хаосом» стоит строгая архитектурная логика. Разберем по шагам, как эффективно освоить этот навык и перестать тратить недели на задачи, которые опытные коллеги решают за часы.
Современные типовые конфигурации строятся на базе БСП. Это своего рода «фреймворк внутри фреймворка». Если вы не понимаете принципов БСП, код будет казаться бессмысленным набором перенаправлений. Проанализируем, на что обратить внимание в первую очередь:
Переопределяемый. Это позволяет обновлять конфигурацию, не затрагивая основной код.ОбработкаЗаполнения или подписки в дереве метаданных.Рассмотрим пример типичного вызова из БСП, который встречается повсеместно:
// Пример вызова стандартной подсистемы печати
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СчетНаОплату",
"Счет на оплату",
СформироватьПечатнуюФормуСчета(МассивОбъектов, ОбъектыПечати)
);
Важнейший инсайт от опытных разработчиков: 1С — это не программирование в чистом виде, а автоматизация учетных задач. Чтобы понять, почему код написан именно так, нужно знать методологию учета. Выясним причину сложности: зачастую программист тратит 80% времени на понимание того, какую бизнес-задачу решает алгоритм (например, расчет НДС или распределение затрат), и только 20% — на само кодирование.
Совет: Не пренебрегайте изучением бухгалтерского и управленческого учета. Если вы понимаете, как должна выглядеть проводка или движение по регистру с точки зрения законодательства, логика кода в модуле ОбработкаПроведения станет для вас прозрачной.
Отладчик — ваш главный учитель. Однако просто идти «по шагам» (F11) в типовых конфигурациях неэффективно из-за огромной вложенности. Рассмотрим продвинутые техники:
Вместо того чтобы пытаться прочитать код «сверху вниз», попробуйте идти от результата. Проанализируем ситуацию: вам нужно изменить логику заполнения реквизита в документе.
Один из самых действенных советов — попытаться создать свою небольшую систему (например, складской учет), внедрив в нее несколько подсистем из БСП. Когда вы сами пройдете путь интеграции подсистемы «Печать» или «Контактная информация», вы начнете узнавать эти паттерны в любой типовой конфигурации. Вы поймете, что ОбщегоНазначения.ЗначениеРеквизитаОбъекта() — это стандартный способ получить данные без создания тяжелого объекта ссылки, и такие конструкции перестанут пугать.
// Типовой паттерн получения данных через ОбщегоНазначения
ДанныеОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
СсылкаНаДокумент,
"Дата, Номер, Организация, Проведен"
);
Если ДанныеОбъекта.Проведен Тогда
// Ваша логика
КонецЕсли;
Типовые конфигурации пишутся по строгим Стандартам программирования 1С. Ознакомьтесь с ними на сайте ИТС. Когда вы узнаете правила именования переменных, экспортных процедур и структуру программного интерфейса (API) модулей менеджера, вы начнете «читать» код как открытую книгу. Вы будете заранее ожидать найти экспортную процедуру ДобавитьКомандыПечати в модуле менеджера, потому что так велит стандарт.
Разберем использование 1C:EDT (Enterprise Development Tool). В отличие от классического Конфигуратора, EDT построена на базе Eclipse и обладает мощными инструментами навигации. Функция Call Hierarchy (иерархия вызовов) позволяет увидеть дерево всех вызовов функции в обе стороны. Это в разы ускоряет понимание того, как данные мигрируют по системе.
Не пытайтесь понять всё сразу. Типовая конфигурация — это результат труда сотен людей за десятилетие.
&После или &Вместо.Помните: «китайская грамота» превращается в обычный текст ровно в тот момент, когда вы начинаете видеть за кодом знакомые шаблоны БСП и требования бухгалтерского учета. Продолжайте практиковаться, и навык придет с опытом.