Разработка и Конфигурация · 11 мин
Как написать 1С под себя: практическое руководство по доработке
Пошаговая инструкция, как написать 1С под себя: внешние обработки, расширения, доработка конфигурации, типичные ошибки и безопасные приёмы для начинающих.
Фраза «написать 1С под себя» обычно означает одно из трёх: добавить пару кнопок и отчётов без вмешательства в конфигурацию, сделать расширение, которое изменит поведение типовых объектов, или полноценно доработать конфигурацию с последующей поддержкой обновлений. Эти пути сильно различаются по трудозатратам, рискам и цене ошибки, поэтому сначала нужно понять, какой из них решает вашу задачу.
Главный принцип безопасной доработки — чем меньше вы трогаете типовой код, тем дешевле обходится каждое обновление 1С. Внешние обработки и расширения почти не мешают обновлениям, тогда как прямая правка модулей конфигурации превращает каждый релиз в ручную сверку изменений. Поэтому правильный вопрос звучит не «как переписать 1С», а «как получить нужное поведение с минимальным вмешательством».
Работа ведётся в конфигураторе на копии базы. Никогда не дорабатывайте «вживую» на рабочей базе, где идёт учёт: синтаксическая ошибка в модуле может остановить проведение документов у всех пользователей. Порядок всегда один — копия, доработка, тестирование на реальных данных, перенос в рабочую базу.
Определите, что именно нужно доработать
Прежде чем открывать конфигуратор, сформулируйте задачу на языке бизнес-процесса: «при проведении реализации автоматически проверять остаток на складе», «добавить в счёт печать с нашим логотипом», «сделать отчёт по продажам по менеджерам за произвольный период». Размытая формулировка «сделайте удобнее» приводит к бесконечным правкам и конфликтам с пользователями.
Далее проверьте, не решается ли задача штатными средствами: настройками, пользовательскими отчётами, дополнительными реквизитами и сведениями. В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) есть механизм «Дополнительные реквизиты и сведения», который позволяет добавить поля к документам и справочникам вообще без программирования. Значительная часть запросов «написать под себя» закрывается именно им.
Как выбрать способ доработки
Способ 1. Внешние обработки и отчёты — самый безопасный вариант
Внешняя обработка — это файл с расширением .epf (или .erf для отчёта), который подключается к базе без изменения конфигурации. Через механизм «Дополнительные отчеты и обработки» в разделе администрирования такой файл регистрируется в системе, и пользователи запускают его как обычный пункт меню. Обновление конфигурации внешние обработки не затрагивает.
Типовые сценарии: собственные печатные формы (счета, акты, ТОРГ-12 с нужным оформлением), отчёты на СКД под специфику компании, массовая загрузка данных из Excel, обработки для исправления ошибок в данных. Для печатных форм это вообще единственный разумный путь — типовые макеты править не нужно, своя форма подключается внешней обработкой.
Чтобы создать внешнюю обработку, откройте конфигуратор, выберите «Файл — Новый — Внешняя обработка», добавьте форму и напишите код на встроенном языке. Для подключения к типовой конфигурации обработка должна содержать экспортную функцию СведенияОВнешнейОбработке(), которая описывает вид обработки, назначение и команды.
Способ 2. Расширения конфигурации — изменение поведения без правки типового кода
Расширение — это механизм платформы, который позволяет добавлять свои объекты и «оборачивать» типовые процедуры и функции, не меняя саму конфигурацию. Конфигурация остаётся на полной поддержке, обновления ставятся как обычно, а расширение применяется поверх. Это основной инструмент, когда нужно изменить логику проведения, добавить проверки или доработать формы.
Создаётся расширение в конфигураторе: «Конфигурация — Расширения конфигурации — Создать». Затем нужные объекты (документы, справочники, общие модули) добавляются в расширение через контекстное меню «Добавить в расширение», после чего в заимствованных процедурах доступны аннотации &Перед, &После и &Вместо. Свой код вставляется до или после типового, а при необходимости полностью его замещает.
У расширений есть ограничения: нельзя изменять структуру типовых реквизитов, ряд объектов недоступен для изменения, а несколько расширений, правящих один и тот же метод, могут конфликтовать. Если задача упирается в эти рамки — остаётся прямая доработка конфигурации.
&Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если СуммаДокумента > 100000 И Не Согласовано Тогда
Отказ = Истина;
Сообщить("Документ свыше 100 000 требует согласования");
КонецЕсли;
КонецПроцедурыСпособ 3. Прямая доработка конфигурации
Когда расширения недостаточно — например, нужны новые документы, регистры или глубокая переработка типовых механизмов, — конфигурацию снимают с полной поддержки: «Конфигурация — Поддержка — Настройка поддержки — Включить возможность изменения». После этого любые объекты доступны для правки, но каждое обновление превращается в сравнение и объединение с ручным разбором конфликтов.
Главные правила выживания в этом режиме: не правьте типовые процедуры «внутри», а вызывайте из них свои общие модули; все свои объекты именуйте с префиксом (например, «Преф_»), чтобы они не пересекались с новыми объектами поставщика; ведите список всех изменённых объектов с описанием правок. Эти три приёма сокращают трудоёмкость обновления в разы.
Писать свою конфигурацию «с нуля» вместо доработки типовой имеет смысл только при радикально нестандартном учёте. Для типовых задач (торговля, склад, зарплата, бухгалтерия) самописная конфигурация означает, что вы самостоятельно отслеживаете все изменения законодательства — отчётность, форматы обмена, ставки. Это постоянная и дорогая нагрузка, которую обычно недооценивают.
Основы языка: что нужно знать для самостоятельной доработки
Встроенный язык 1С (его часто называют «язык 1С» или BSL) по синтаксису напоминает упрощённый BASIC с русскими ключевыми словами. Для старта достаточно освоить: переменные и типы, условия Если...Тогда...КонецЕсли, циклы Для Каждого ... Из ... Цикл, процедуры и функции, а также работу с запросами — именно запросы, а не перебор записей, являются правильным способом получать данные.
Отдельно стоит изучить систему компоновки данных (СКД): большинство отчётов в 1С строится на ней, и уметь собрать отчёт на СКД значительно полезнее, чем программно формировать табличный документ. СКД позволяет пользователю самому менять группировки, отборы и период без доработки кода.
Отладка выполняется в конфигураторе: точки останова, просмотр значений переменных, пошаговое выполнение. Для отладки серверного кода и фоновых заданий нужно включить отладку на сервере 1С или запускать файловую базу в режиме отладки. Умение читать стек вызовов в окне ошибок экономит часы поиска причины падения.
- 1Сделайте копию рабочей базы (выгрузка .dt или копия через СУБД)
- 2Сформулируйте задачу и проверьте, не решается ли она настройками или дополнительными реквизитами
- 3Выберите минимально инвазивный способ: внешняя обработка, расширение, доработка конфигурации
- 4Реализуйте доработку на копии и протестируйте на реальных данных: проведение, печать, отчёты, права пользователей
- 5Проверьте работу под учётной записью обычного пользователя, а не администратора
- 6Перенесите доработку в рабочую базу в нерабочее время, предварительно сделав резервную копию
- 7Задокументируйте изменения: что, где и зачем изменено
Проверка результата и типичные ошибки
Доработка считается завершённой не тогда, когда «у разработчика работает», а когда сценарий проходит под правами реального пользователя на реальных данных. Проверьте: проведение документов, которые затрагивает доработка; формирование связанных отчётов; печатные формы; поведение при пустых и некорректных данных (нулевое количество, незаполненный договор, отрицательный остаток).
Отдельно проверьте производительность. Запрос в цикле, обращение к данным через точку («Документ.Контрагент.ИНН» в запросе) и отсутствие индексов по новым реквизитам — классические причины того, что база начинает «тормозить» после доработки. На копии с полным объёмом данных такие проблемы видны сразу, на пустой тестовой базе — нет.
Как проверить результат
Документы проводятся, движения по регистрам корректны
Ошибки проведения, дубли или пропажа движений
Все функции доступны, нет ошибок прав доступа
«Нарушение прав доступа» при открытии или проведении
Время выполнения сопоставимо с типовыми операциями
Проведение или отчёт выполняются в разы дольше
Обновление проходит, расширение/обработки работают
Конфликты при объединении, расширение отключается
Часто задаваемые вопросы
Можно ли дорабатывать 1С без знания программирования?
Частично. Дополнительные реквизиты и сведения, пользовательские отчёты на СКД (в режиме настроек), настройка рабочих мест и подписок не требуют кода. Но любая бизнес-логика — проверки, автозаполнение, интеграции — уже требует написания кода на встроенном языке.
Что выбрать: расширение или доработку конфигурации?
Всегда сначала пробуйте расширение: конфигурация остаётся на поддержке, обновления не усложняются. К прямой доработке переходите только если расширение в принципе не может решить задачу — например, нужны новые объекты метаданных или изменение структуры типовых реквизитов.
Слетит ли моя доработка при обновлении 1С?
Внешние обработки и отчёты обновление не затрагивает. Расширения обычно продолжают работать, но их нужно проверять после каждого обновления — если поставщик изменил заимствованный метод, расширение может отключиться. Прямые доработки конфигурации требуют ручного разбора при каждом обновлении.
Сколько времени нужно, чтобы научиться дорабатывать 1С?
Базовые внешние обработки и простые расширения реально освоить за несколько недель при знании любого языка программирования. Уверенная доработка типовых конфигураций требует дополнительно изучить архитектуру конкретной конфигурации и библиотеку стандартных подсистем — это месяцы практики на реальных задачах.
Можно ли вернуть конфигурацию на полную поддержку после доработок?
Да, через загрузку типовой конфигурации поставщика, но все ваши изменения будут потеряны. Поэтому перед возвратом на поддержку перенесите нужную логику в расширения и внешние обработки — это стандартный путь «очистки» сильно доработанных баз.
Где безопасно тестировать доработки?
На копии рабочей базы, созданной через выгрузку .dt или средствами СУБД. Копия должна содержать реальные данные — только так выявляются проблемы производительности и ошибки на «неудобных» документах. Тестирование на пустой демобазе даёт ложную уверенность.