Применение cтандартов и методик разработки конфигураций на практике
Разработка - Рефакторинг и качество кода
Что такое система стандартов и методик разработки конфигураций и зачем она нужна?
Основные аргументы для использования.
Система стандартов разработки конфигураций это общепринятые правила, описанные на сайте 1С, по которым рекомендуется вести разработку на платформе 1С. Также стал часто встречать на рынке труда требование к разработчикам на знание и применение стандартов разработки.
1С рекомендует, но многие ли из разработчиков соблюдают эти стандарты, особенно в начале карьеры или, например, когда горят сроки, а заказчику уже нужно что-то ставить, тогда не важно, что там под капотом, лишь бы работало по заявленным требованиям. Второй момент, а нужно ли вообще соблюдать эти стандарты, если и так все работает, квалифицированный специалист разберется и в таком коде.
Я все же склоняюсь к тому, что нужно соблюдать стандарты и методики разработки конфигураций от 1С, пришел к этому выводу исходя из личного опыта. Повидав много решений, "самописных" конфигураций, различных доработок еще начиная с обычных форм, тогда действительно немногим разработчикам были известны эти стандарты и каждый писал как мог, как умел. Со временем бизнес-требования усложнялись, как следствие усложнялась архитектура и код решения и, если он изначально написан не по стандартам и содержит много авторского кода, сопровождать и дорабатывать его становится сложнее и дольше, чем структурированный код с понятными названиями имен переменных, имен таблиц и реквизитов, имен функций и процедур, использования БСП и т.д. К тому же нельзя забывать про сменяемость кадров, и общепринятые правила со временем приобретут более массовый характер, поэтому применяйте их сейчас, чтобы быть востребованным завтра.
Вплотную столкнулся со стандартами и глубоким изучением их на одном из моих мест работы, где разработчики осуществляли перевод отраслевого решения с обычных форм на управляемые, на этом месте работы разработчиков обязали переводить код по системе стандартов. К тому моменту я знал некоторые стандарты, но далеко не все. Решил уделять в день в среднем по часу для изучения и закрепления на практике свод правил. Стандарты находятся в открытом доступе по ссылке 1С:Предприятие 8. Система стандартов и методик разработки конфигураций. Но свод правил немаленький, и все в голове не удержишь и не запомнишь, а постоянно бегать по закладкам такое себе удовольствие, и тогда возникла идея фиксировать изученные правила в шаблонах текста в конфигураторе. Суть в том, что во время разработки, когда необходимо применить стандарт, выбираешь нужный в контексте подсказки шаблон и адаптируешь его в участке своего кода.
Продемонстрирую, как это выглядит на практике, к примеру, создали новый объект метаданных, добавили управляемую форму и начали описывать логику работы формы. Чтобы это сделать по стандартам, нам сначала нужно будет изучить сам стандарт, например, по ссылке Соглашения при написании кода > Оформление модулей > Структура модуля, далее все это закрепляем в шаблонах текста, у меня получилось 4 отдельных стандарта по этому разделу. Создаем новые шаблоны текста в конфигураторе "Сервис - Шаблоны текста". Для удобства я создал новые шаблоны текста "Действия - Новый файл шаблонов", чтобы их легко можно было копировать на другие системы и применять в отдельности.

Первый шаблон - "Ст_РазделыМодулейФорм" (поставил префикс Ст_ вначале названия шаблона для более быстрого вызова в коде), содержание (скопировал из описания стандарта):
#Область ОписаниеПеременных
#КонецОбласти
#Область ОбработчикиСобытийФормы
// Код процедур и функций
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
// Код процедур и функций
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы<ИмяТаблицыФормы>
// Код процедур и функций
#КонецОбласти
#Область ОбработчикиКомандФормы
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
Второй шаблон - "Ст_РазделыМодулейКоманд", содержание:
#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
Третий шаблон - "Ст_РазделыМодулейОбъектовМенеджеровНаборовЗаписейОбработокОтчетов", содержание:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
#КонецОбласти
#Область ПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
#Область Инициализация
#КонецОбласти
#КонецЕсли
Четвертый шаблон - "Ст_РазделыОбщихМодулей", содержание:
#Область ПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
Далее для формы объекта я вызываю шаблон -

"Ст_РазделыМодулейФорм" и формирую структуру модуля, далее по областям распределяю процедуры и функции (также написанные по стандартам). Что имею в итоге - более читаемый и структурированный код, который в дальнейшем легче отладить и сопровождать.
Или, например, мне нужно собрать несколько текстов запросов в пакет, открываю стандарт Реализация обработки данных > Работа с запросами > Оформление текстов запросов, сохраняю, например, такую конкатенацию:
Разделитель =
"
|;
|/////////////////////////////////////////////////////////////
|";
ТекстыЗапросовПакета = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
|ИЗ
| Справочник.Упаковки КАК Упаковки";
ТекстыЗапросовПакета.Добавить(ТекстЗапроса);
ТекстЗапроса =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
ТекстыЗапросовПакета.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(ТекстыЗапросовПакета, Разделитель);
в новый шаблон текста "Ст_ЗапросыКонкатенация" и вызываю этот шаблон в дальнейшем, где это будет необходимо.
Также, например у вас разработка с учетом локализации, изучаем стандарт Требования по локализации и описываем, например, стандарт сообщения с учетом локализации "Ст_СообщениеСПараметрами" (стандарт ОбщегоНазначенияКлиентСервер.СообщитьПользователю устарел. С версии БСП выше 2.1.4 cледует использовать ОбщегоНазначенияКлиент.СообщитьПользователю или ОбщегоНазначения.СообщитьПользователю), с кодом:
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон(НСтр(" ru = '<?> %1'"), Параметр));
Еще пример по стандартам Реализация обработки данных > Обработка и модификация данных > Транзакции: правила использования, хотим где-то явно открывать транзакцию, создаем шаблон "Ст_ТранзакцияЯвная" с содержанием:
НачатьТранзакцию();
Попытка
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Документ.ПриходнаяНакладная");
ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", СсылкаДляОбработки);
ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Исключительный;
БлокировкаДанных.Заблокировать();
// ... // чтение или запись данных
ДокументОбъект.Записать();
ЗафиксироватьТранзакцию(); // Пишем всегда перед словом Исключение
Исключение
ОтменитьТранзакцию(); // Пишем сразу после слова Исключение
ПодробноеПредставлениеОбОшибке = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"), // записывать в ЖР с ВызватьИсключение не нужно
УровеньЖурналаРегистрации.Ошибка, // без ВызватьИсключение пишем в ЖР
,
,
СтрШаблон(НСтр(" ru = '%1'"), ПодробноеПредставлениеОбОшибке));
ВызватьИсключение; // есть внешняя транзакция
КонецПопытки;
Таким образом со временем я формирую помощник по всеми стандартам и при необходимости использую уже сохраненные шаблоны текста, вместо того чтобы бегать по разделам в браузере, выискивать подходящий стандарт и, в конце концов устав от поиска, написать так, как получилось :), в итоге забросив совсем эти стандарты и писать так, как можешь :). Вот такой небольшой кейс из своей практики, который лично мне экономит время и улучшает качество моего кода. Кроме того, я привыкаю писать по стандартам, стал лучше читать и выявлять потенциальные ошибки в своем и чужом коде, лучше стал разбираться в применении тех или иных методов. Например вместо метода ОписаниеОшибки() лучше использовать ИнформацияОбОшибке() более подробное описание тут Соглашения при написании кода > Использование конструкций встроенного языка > Перехват исключений в коде .
Спасибо за внимание, хорошего дня.
Также предлагаю решения вашему вниманию:
Шаблоны для применения cтандартов и методик разработки конфигураций 1С
Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3.
Применение ChatGPT в 1С и не только
Универсальная выгрузка и загрузка зарегистрированных справочников и документов по узлу.
Вступайте в нашу телеграмм-группу Инфостарт
Система стандартов и методик разработки конфигураций соглашения при написании кода оформление модулей структура модуля шаблоны текста локализация оформление текстов запросов.
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Нейросети Рефакторинг и качество кода Запросы Разработчик 1С 8.3 Абонемент ($m)
Нейросеть написала запрос или процедуру для вашей базы 1С, и непонятно, все ли имена в нём настоящие. Обработка компилирует текст без выполнения, сверяет его с метаданными этой базы и к каждой ошибке пишет настоящее имя, например ВНаличииОстаток вместо выдуманного КоличествоОстаток. Список ошибок с подсказками одной кнопкой копируется обратно в чат с моделью.
10 стартмани
02.11.2026 287 1 nedomolkov.ivan 1
Рефакторинг и качество кода Разработчик 1С:Предприятие 8 Россия Бесплатно (free)
Одна проверка в обработчике кнопки может выглядеть достаточной, пока ту же операцию не вызовут из другого места. На примере управляемой формы разберём, почему так происходит, как разместить проверку в общей серверной функции и чем отличается удобная проверка ввода от обязательного условия выполнения операции.
29.10.2026 327 YA_777378709 0
Рефакторинг и качество кода Разработчик Бесплатно (free)
Рассказываем, почему качественный код – это не техническая прихоть, а актив, который помогает бизнесу быстрее адаптироваться к изменениям и запускать новые фичи без бесконечного преодоления техдолга. Показываем, как объяснить бизнесу ценность рефакторинга через понятные признаки: замедление разработки, неточные оценки, страх перед legacy и хрупкость системы. Разбираем, почему неправильный рефакторинг может быть дороже его отсутствия, какие анти-паттерны ломают процесс и как не превратить улучшения в бесконечную переделку ради переделки. Объясняем, как сделать рефакторинг частью культуры команды: договориться с бизнесом, научить разработчиков видеть проблемные места, закрепить правила и поддерживать улучшения на уровне тимлидов, архитекторов и всей команды.
28.10.2026 431 Pavel791 0
Рефакторинг и качество кода HighLoad оптимизация Системный администратор Разработчик Стажер 1С 8.3 Абонемент ($m)
Если к HTTP-сервису 1С обращаются сразу несколько программ, сколько запросов в секунду он успеет обработать? Я опубликовала простой HTTP-сервис на нашей "подопытной" конфигурации «Нано-УТ» (файловая база, Apache, без прав администратора) и нагрузила его скриптом на Python. Ответ: около 15-16 запросов в секунду, сколько бы клиентов ни обращалось одновременно. Запросы ждут своей очереди, и при 32 клиентах ответ приходит через 2 секунды вместо 64 мс. Заодно разобрала скрипт из первого варианта статьи: он «проверял» сервер, который отвечал по одному, и считал ошибки вместе с успешными ответами. В архиве исправленный скрипт, учебный сервер, HTTP-сервис для 1С и инструкция по запуску.
1 стартмани
23.10.2026 485 Ninel_S 3
Рефакторинг и качество кода Разработчик 1С 8.3 Абонемент ($m)
Запустили Analyzer 1C 2.7.65 на промышленной конфигурации (596 модулей, 13 669 функций) и исследовали перегруженные функции (до 1887 строк), циклические зависимости и экран «Циклы» (кольцо из 64 модулей). Разобрали, почему популярные метрики (McCabe, связность) не представлены в продукте вендора, и составили пошаговый план разделения модуля. Привели проверенный платформой 8.3.27 пример до и после рефакторинга и выявили скрытую ловушку загрузки модулей с точкой в имени.
9 стартмани
19.10.2026 432 Ninel_S 2
Рефакторинг и качество кода EDT СКД Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)
Одиннадцать граблей схем компоновки, которые не видно в конструкторе и не ловит EDT, на реальных отчетах БП КОРП. Формат числа задается в двух местах, и условное оформление варианта перебивает формат поля. Ресурс складывает штуки с часами, и помогает выражение «только когда единица одна». Ресурс пуст в детальных записях, параметр не появляется в шапке без userSettingID, valueListAllowed ломает границы периода, Остатки и СрезПоследних с параметром периода падают с «Несоответствием типов», title без xsi:type дает «Исключение XDTO» при загрузке. В конце код проверки схемы из файла до обновления базы, сводная таблица и чеклист.
16.10.2026 474 Konstmax13 2
Инструментарий разработчика Нейросети Рефакторинг и качество кода EDT Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)
Как ИИ-агент (Claude Code) работает в живом EDT-проекте 1С:Бухгалтерии КОРП 3.0: из чего собрать стенд с MCP-сервером для EDT, как ставить задачи агенту, где он ломает проект и какие проверки это ловят. Реальные случаи: рукописные метаданные, ронявшие конфигуратор; четыре дня зависшего обновления из-за порядка блоков в Rights.rights; ошибки, которые EDT пропускает, а платформа нет; сплошная сверка вместо «вроде работает». В приложении шаблон CLAUDE.md, шаблон правила, чеклист перед обновлением базы и скрипты проверки ролей и схем СКД.
15.10.2026 3378 Konstmax13 11
Рефакторинг и качество кода Тестирование QA Разработчик 1С 8.3 Абонемент ($m)
Инженерный анализ влияния (Impact Analysis) при изменении общего метода в 1С:Предприятии: почему штатный поиск ссылок скрывает 99% зависимостей и как обратный обход графа вызовов выявляет 370 скрытых потребителей на глубине 3 уровней. В статье — верификация сквозной цепочки обмена с маркетплейсом; в архиве-компаньоне — автономный BFS-анализатор на Python, слепки графа и план регрессионного тестирования.
1 стартмани
12.10.2026 297 Ninel_S 0
ПакетЗапросов = Новый СписокЗначений;
ПакетЗапросов.Добавить().Значение =
"ВЫБРАТЬ
| 1 КАК Поле
|ИЗ
| ВременнаяТаблица1";
ПакетЗапросов.Добавить().Значение =
"ВЫБРАТЬ
| 2 КАК Поле
|ИЗ
| ВременнаяТаблица2";
ПакетЗапросов.Добавить().Значение =
"ВЫБРАТЬ
| 3 КАК Поле
|ИЗ
| ВременнаяТаблица3";
ТекстЗапроса = СтрСоединить(ПакетЗапросов.ВыгрузитьЗначения(),
ОбщегоНазначения.РазделительПакетаЗапросов()); ПоказатьЕсли для "стройности", то почему тогда не так?
МассивТекстовЗапросов = Новый Массив;
МассивТекстовЗапросов.Добавить(
"ВЫБРАТЬ
| 1");
//...
ПоказатьТекстЗапроса =
"ВЫБРАТЬ
| 1";Соответственной мой пример выше эту конструкцию повторяет.
Ты используешь неоптимальный код, мотивируя чувством прекрасного, также трагично для себя. Когда-нибудь тебя смогут публично ткнуть в твой код ревьюверы, привлечённые твоим клиентом или работодателем. И у тебя не будет аргументов за лишнюю нагрузку на прод кроме "я художник, я так вижу". Тут такая область - надо писать только как правильно.
Замеров я не делал, но по логике это более подходящий тип.
Если тебе хочется красоты со скобками, попробуй так:
ЧастьТекстаЗапроса =
"вававыавыаы";
МассивТекстовЗапросов.Добавить(ЧастьТекстаЗапроса);
Мой пример со списком значений на самом деле не фаворит. На практике сейчас для больших пакетных запросов, где возможно разделение на блоки по смыслу, я чаще использую такой подход:
ПакетЗапросов = Новый Массив;
ПакетЗапросов.Добавить(ТекстЗапросаЧастьПервая());
ПакетЗапросов.Добавить(ТекстЗапросаЧастьВторая());
...А учитывая, что даже разработчики УТКАУП до сих пор не могут обойтись без Конфигуратора, неясно, зачем использовать дополнительный костыль. Видимо, в том случае, если вместо логичного деления кода на модули воспользовались областями, и теперь возникла необходимость нескольким разработчикам работать в одном и том же модуле, что в Хранилище невозможно?
Я несколько раз видел разные способы, чтобы обойтись в проектировании и разработке программного кода, что говорится, "без чертежей". Это и есть "раскрашивание проводов" применительно к программированию. Каждый человек найдет массу вариантов форматирования программного кода исходя из своих оценочных суждений, вкусовщина же в чистом виде. Фраза "умение читать чужой код" меня вообще умиляет) Пока не понял алгоритм - что может дать чтение кода? Конечно, любой ребус можно разгадать когда-то, но наступит временной и затратный момент, когда разгадывание программных ребусов становится дольше и дороже разработки "по-новой", т.е. быстрее и дешевле свое написать, чем чужое расковыривать, что очень часто и происходит.
Можно долго нарезать круги вокруг и придумывать колдовские заклинания, но реальным ответом будет только документирование каждого объекта конфигурации, формы, модуля процедуры или функции. Что когда-то и делалось. Программный код это изделие. И у него должны быть чертежи, описание и инструкция по обслуживанию. Желающие оспорить этот тезис смогут назвать фамилию гения, который это отменил однажды?))
А еще хотел сказать, что фраза "умение читать код" вполне себе верная. Даже не важно какой код чужой или свой трехмесячной давности, который уже мог стать "чужим". Да и как можно понять алгоритм без чтения кода? Ванговать? Опрашивать пользователей? Просто не нужно применять к этой фразе терминологический подход. В данном случае чтение кода это не чтение бульварного романа, а, как раз, изучение заложенного алгоритма.
Я думаю, что все эти "любимые игрушки" программистов потому и обсуждаются, что менеджмент в основном своем составе не умеет руководить сферой IT. Умниками вообще тяжело рулить) Вот эти детки без присмотра и расшалились, причем, игрушки они себе покупают за счет предприятия - занимаются тем, чем сами хотят.)
Да и бессмысленно писать документацию для каждой строки кода. А когда начинаешь абстрагироваться, тогда в документации написано описание функции "Как должно быть", а в коде "Как есть". Если возникают ошибки, нужно начинать читать код.
Кстати, для создания документации тоже есть стандарты, практики, шаблоны и архитектуры. Да и чтение документации - особое мастерство.
На последнем форуме "IT Core" выступал ведущий IT-шник МинАтома. Вот в этой сфере непредсказуемый программный код даже не предполагается. Этим выступающий и объяснил очень медленные переходы на новые версии и платформы программирования. Сама отрасль не предполагает работы программистов в режиме "догони блоху". Когда в остальных отраслях начнут серьезно относится к цифрам - там тоже работа пойдет медленнее, зато наверняка. А пока режим "а давайте попробуем!" Все "на живую нитку" и "в порядке эксперимента")
Бесспорно! Есть сферы, в которых ошибка в коде может серьезно повлиять на процессы, а возможно и чьи-то жизни: энергетика, космос, оборонка и т.п.
Я уверен в том, что во всех сферах хотят создавать быстрее и качественнее. То есть медленная работа не цель, а необходимость, связанная с несовершенством.
Если образовался какой-то "междусобойчик", то в своей среде они всегда назовут соучастника - профессионалом, это уж точно)
И я в крайности давно не впадаю, не было в моих текстах слов "дураки", "днище" и прочая... У меня иное понимание слова "профессионал". Я вполне допускаю словосочетание "врач-профессионал", у меня на голову не налезает комбинация "профессиональный знахарь".
Но все же вернемся к теме. По моему скромному мнению использование автоматизации, упрощающих применение методик и стандартов, полезно и никак не связано с написанием документации.
И этот инструмент лишь попутно может помочь соблюдать при этом требования стандартов.
Да и хорош он при написании кода с нуля.
А как быть с доработкой ранее написанного кода?
И как быть с уже имеющимся в наличии инструментом "Автоматизированная проверка конфигураций", который эту задачу решит гораздо лучше?
Тем более, часть стандартов 1С в них уже зашита.
И технология, которая в АПК заложена пригодна для нового и уже написанного кода.
В АПК фактически аналог шаблона - это пакет проверок.
Каждое утверждение стандарта может быть записано в виде атомарного элемента АПК.
Элементы собираются в пакеты.
Пакеты запускаются для проверки текста кода.
Пакетов много, элементы в пакеты могут собираться в любой комбинации = множество разных проверок.
2) Когда провожу рефакторинг и что-то подзабыл или сомневаюсь в исправлении я открываю 2-е окно например модуль внешней обработки, запускаю нужный шаблон убеждаюсь что код нужно править и правлю в соответствии с шаблоном, таков мой алгоритм.
3) когда-то я запускал АПК проверка хорошая, но чаще использую phoenix bsl на нужных участках, поэтому про АПК не смогу ничего подсказать опять таки это все постпроверка, а шаблон мне помогает сразу писать верно, ну или максимально верно. И да могут быть случаи где нет этих инструментов, такой простой помощник самое то.
4) Не все могут себе позволить рефакторинг по времени, по ресурсам, поэтому лучше сразу писать максимально правильно в этом компоненте я их использую.
Здесь точно также, если ты пишешь код, ты пишешь его из ключевых слов языка, используя спецсимволы, паттерны и т.п. Ты же это изучил? Стандарты точно так же нужно читать и использовать на практике. Сейчас много где в них вставлены примеры "как неправильно" и даны пояснения, почему. Поэтому в большинстве случаев их надо не запоминать, а надо _понимать_ причины их создания. Как правило, каждый стандарт создан на базе какого-то объёма ошибок и проблем, которые он призван исправить.
Т.о. стандарты являются своего рода частью языка разработки, они должны учитываться автоматически.
Например, в системной транзакции выполняются обработчики модулей объектов и соответствующие им подписки на события:
ПередЗаписью;
ПриЗаписи;
ПередУдалением.
Рейтинг: 758
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1861930
Создание 15.05.23 08:00
Обновление 28.02.25 19:25
Просмотры 27937
Загрузки 0
Рейтинг
89
Комментарии 58
Код открыт Да
Рубрики Рефакторинг и качество кода
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)