Чек-листы
← Предыдущий | 🗺 Оглавление | Следующий →
Актуализировано: сентябрь 2026.
Файл собирает проверочные списки, которые нужны в работе: самопроверка по этапам плана, ревью кода, запросы, проведение документов, расширения, обновления, интеграции, безопасность, производительность, релиз. Списки короткие, каждый пункт проверяется за минуту и, где есть стандарт разработки 1С, привязан к его номеру.
Копируйте нужный раздел в описание merge request или тикета и отмечайте - [x]. Номера вида #436 — это стандарты разработки на ИТС: https://its.1c.ru/db/v8std/content/436/hdoc (подставляйте номер; каталог — its.1c.ru/db/v8std). Подтверждений того, что на экзамене требуются стандарты v8std, нет: они нужны для работы, а не для билета.
Содержание
- Как пользоваться
- Самопроверка по этапам 0–7
- Код-ревью BSL
- Запросы
- Клиент-сервер и формы
- Проведение документа и блокировки
- Расширение конфигурации
- Обновление типовой и нетиповой конфигурации
- Интеграция
- Безопасность
- Производительность
- Работа с ИИ-ассистентом
- Перед сдачей задачи
- Перед релизом
- Первые 90 дней у франчайзи
- Подготовка к экзамену
- Источники
🧭 Как пользоваться
- Чек-лист не заменяет знания: он ловит то, что забывается в спешке. Если пункт непонятен, откройте стандарт по номеру или профильный файл роадмапа.
- Пункт, который в вашем проекте не применим, вычеркните с пометкой «не применимо», не оставляйте пустым.
- Автоматические проверки (BSL Language Server, АПК, 1C:EDT с плагином «1C:Code style V8», тесты в CI) закрывают часть пунктов. Про настройку —
tracks/qa-automation.mdи07_Projects.md(проект P13). - Сроки и объём этапов — в
02_Timeline.md, список проектов — в07_Projects.md, вопросы для собеседования — в08_Interview.md.
✅ Самопроверка по этапам 0–7
Подробные критерии выхода и вопросы — в 02_Timeline.md. Здесь короткая версия: если хотя бы один пункт «нет», вернитесь к теме, а не переходите дальше. Привязка проектов к этапам — по 07_Projects.md.
| Этап | Проекты | Что должно быть готово |
|---|---|---|
| 0. Подготовка | — | Платформа, конфигурация в Git, синтакс-помощник |
| 1. Язык и платформа | P0 | Коллекции, запросы, клиент и сервер |
| 2. Учётные механизмы | P1, P2 | Документы, регистры, проведение (+1С:Профессионал) |
| 3. Отчёты и интерфейс | P3, P7 (P7 можно перенести в начало этапа 4) | СКД, печатные формы, формы, внешние отчёты |
| 4. Типовые конфигурации | P8, P9 (и P7, если не сделан на этапе 3) | Расширение, загрузка данных, внешние формы и отчёты для типовой |
| 5. Надёжность и интеграции | P4, P5, P6, P10, P11, P12 | HTTP, обмены, транзакции, блокировки |
| 6. Командная разработка и качество | P13, P17 | Git-процесс, статический анализ, тесты |
| 7. Специализация | P14, P15, P16 по треку | Углубление по одному из треков |
Этап 0. Подготовка
- [ ] Учебная платформа установлена, файловая база открывается в режимах «Конфигуратор» и «1С:Предприятие».
- [ ] Я объясняю, чем конфигурация отличается от информационной базы и почему 8.5 — новая нумерация той же платформы, а не отдельный продукт.
- [ ] Конфигурация выгружена в файлы и лежит в Git с README.
- [ ] Я нахожу в синтакс-помощнике метод и его параметры, без поиска в интернете.
- [ ] Я могу составить проводки для поступления, оплаты и продажи.
Этап 1. Язык и платформа
- [ ] Пишу процедуры и функции с параметрами и возвратом значения, различаю передачу по значению и по ссылке (
Знач). - [ ] Свободно работаю с
Структура,Соответствие,Массив,ТаблицаЗначений,ДеревоЗначений. - [ ] Знаю разницу
&НаКлиенте,&НаСервере,&НаСервереБезКонтекста,&НаКлиентеНаСервереБезКонтекстаи объясняю, что передаётся между клиентом и сервером. - [ ] Пишу простой запрос с параметрами, соединением и группировкой и не соединяю строки в текст запроса.
- [ ] Отлаживаю код: точки останова, вычисление выражения, просмотр стека вызовов.
- [ ] Проект P0 сдан и разобран.
Этап 2. Учётные механизмы
- [ ] Различаю справочник, документ, регистры сведений, накопления и бухгалтерии и объясняю, когда какой нужен.
- [ ] Пишу
ОбработкаПроведенияи проверяю, что при отмене проведения и перепроведении движения корректны. - [ ] Понимаю, что такое итоги регистра накопления и почему остатки читают через виртуальную таблицу
Остатки. - [ ] Объясняю управляемые блокировки на примере контроля остатков.
- [ ] P1 и P2 сданы, при желании — сдан экзамен «1С:Профессионал» по платформе (условия — в разделе про экзамен ниже).
Этап 3. Отчёты и интерфейс
- [ ] Строю отчёт на СКД: набор данных, ресурсы, группировки, параметры, отбор, условное оформление.
- [ ] Делаю печатную форму на макете и подключаю её через БСП (проект P3).
- [ ] Управляемую форму собираю так, чтобы серверные вызовы были осмысленными, а данные передавались минимальными порциями.
- [ ] Не использую модальные вызовы:
Асинх/Ждать(с 8.3.18) или оповещения.
Этап 4. Типовые конфигурации — вход в работу
- [ ] Я нахожу нужную типовую процедуру или форму в типовой конфигурации и понимаю, где безопасное место для расширения.
- [ ] Делаю расширение (P8): перехват
&Перед/&После/&Вместо, свой префикс объектов и методов. - [ ] Делаю внешнюю печатную форму или отчёт для типовой и подключаю через «Дополнительные отчеты и обработки» (P7).
- [ ] Загружаю данные из Excel и CSV с поиском дублей (P9).
- [ ] Ориентируюсь в настройках БСП и знаю, что поведение подсистем настраивается через общие модули
*Переопределяемый.
Этап 5. Надёжность и интеграции
- [ ] Пишу транзакцию по шаблону (#783) и объясняю, почему исключение не отменяет транзакцию сразу.
- [ ] Поднял HTTP-сервис (P10) и клиент внешнего API с регламентным заданием (P11) с таймаутами и логированием.
- [ ] Настроил обмен между двумя базами (P12), понимаю
ОбменДанными.Загрузкаи конфликты. - [ ] Читаю журнал регистрации и умею воспроизвести ошибку блокировки.
- [ ] Прошёл проекты P4, P5, P6; при желании готов к «1С:Специалист по платформе».
Этап 6. Командная разработка и качество
- [ ] Веду работу в ветках, оформляю коммиты и merge request с понятным описанием.
- [ ] Настроил BSL Language Server и/или проверки EDT, разбираю замечания и не глушу их без причины.
- [ ] Написал хотя бы несколько автоматических тестов (P13) и запускаю их в CI.
- [ ] Знаю, как перенести хранилище конфигурации в Git (1С:ГитКонвертер — официальный бесплатный инструмент, github.com/1C-Company/GitConverter).
- [ ] Могу проверить код ИИ-ассистента и объяснить его ошибки (P17).
Этап 7. Специализация
- [ ] Выбран трек из
tracks/README.md, у него есть план на 3 месяца. - [ ] Сделан хотя бы один проект специализации: P14 (производительность), P15 (RLS и роли) или P16 (мобильное приложение, опционально).
- [ ] Есть один публичный результат: репозиторий, статья, доклад или пул-реквест в open source.
🔍 Код-ревью BSL
Список для автора кода перед отправкой на ревью и для ревьюера. Проверять на диффе, а не «по ощущениям».
Запросы и данные
- [ ] Нет запросов и обращений к данным ИБ в цикле, в том числе неявных (
ОбщегоНазначения.ЗначениеРеквизитаОбъекта,Ссылка.Реквизитдля каждой строки) (#436, #729). - [ ] Нет разыменования полей составного типа в запросах (#654).
- [ ] Параметры виртуальных таблиц заполнены, отбор не вынесен в
ГДЕповерх виртуальной таблицы (#657). - [ ] Нет
ВЫБРАТЬ *(#729) и лишних полей. - [ ] Записи наборов регистров идут набором, а не по одной записи в цикле (#792).
Клиент и сервер
- [ ] Серверных вызовов минимум, данные передаются пачками (#487).
- [ ] У общих модулей нет лишнего признака «Вызов сервера» (#679).
- [ ] Нет модальных окон и синхронных вызовов (#703).
- [ ] Обработчики частых событий формы (например,
ПриАктивизацииСтроки,ПриВыводеСтрокитабличного поля,ОбновлениеОтображенияформы) не ходят в базу данных (#522).
Транзакции и безопасность
- [ ] Транзакции оформлены по шаблону: начало и конец в одном методе, парные
ЗафиксироватьТранзакциюиОтменитьТранзакцию, исключение пробрасывается (#783, #499). - [ ] Блокировки управляемые, установлены до чтения данных, которые будут изменены (#460), остатки читаются с блокировкой (#661).
- [ ] Привилегированный режим включён только там, где нужен, и снят после (#485).
- [ ]
Выполнить/Вычислитьне применяются к строкам, пришедшим от пользователя или с клиента; если без них нельзя, перед вызовом включён безопасный режим (#770). Внешний код (отчёты, обработки, расширения, компоненты) подключается средствами БСП и не выполняется на сервере в небезопасном режиме без аудита (#669). - [ ] Нет паролей, токенов и ключей в коде, макетах и реквизитах (#740).
Оформление
- [ ] Имена процедур и параметров по стандарту (#647, #640), тексты модулей оформлены (#456), запросы оформлены (#437).
- [ ] Экспортные процедуры и функции не размещены в модулях команд и общих команд (#544), директивы компиляции и инструкции препроцессора применены по стандарту (#439).
- [ ] Нет закомментированного кода и отладочных
Сообщить, тексты для пользователя — черезНСтр. - [ ] Комментарии описывают «зачем», а не «что».
Проверки
- [ ] BSL Language Server или АПК без критичных и блокирующих замечаний.
- [ ] Тесты проходят, новый код покрыт хотя бы одним сценарием.
- [ ] Ревью-комментарии закрыты ответом или правкой.
🧪 Запросы
- [ ] Значения передаются параметрами (
&Параметр), а не конкатенацией: это защита от инъекций и корректная работа с типами значений. - [ ]
ПОДОБНО: шаблон передан параметром или константой, а не собран конкатенацией; спецсимволы%,_,[,],^в пользовательском вводе экранированы (ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе+СПЕЦСИМВОЛ "~"), параметр сам их не экранирует (#726). - [ ] Отбор по виртуальной таблице (
Остатки,Обороты,СрезПоследних) задан её параметрами, а не условиемГДЕ(#657). - [ ] Условия в
ГДЕпозволяют использовать индекс: нет функций над индексным полем, нетИЛИпо разным полям без необходимости (#658, #652). - [ ] Нет соединения с вложенными запросами и виртуальными таблицами там, где можно использовать временную таблицу (#655, #777).
- [ ] Нет вложенных запросов в условии соединения (#656): «срез последних» и подобное выносится во временную таблицу.
- [ ] Упорядочивание задано, если порядок важен, и отсутствует, если нет (#412).
- [ ] Для «есть ли записи» используется
ВЫБРАТЬ ПЕРВЫЕ 1илиЗапрос.Выполнить().Пустой()(#438), а не выборка всего набора. - [ ] Количество записей считается запросом функцией
КОЛИЧЕСТВО, а неСУММА(1)(#787) и не выгрузкой в таблицу значений. - [ ] Псевдонимы источников осмысленные, от терминов предметной области, не из одного символа и не с подчёркивания (#758).
- [ ]
ОБЪЕДИНИТЬзаменён наОБЪЕДИНИТЬ ВСЕ, если дубликаты не нужны (#434). - [ ]
РАЗРЕШЕННЫЕне используется в запросах для расчётов и проведения (#415). - [ ] Динамический текст запроса собирается из констант, пользовательский ввод в него не попадает.
Эталонная форма запроса с параметрами и параметрами виртуальной таблицы:
&НаСервереБезКонтекста
Функция ОстаткиТоваровНаСкладе(Склад, Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Склад = &Склад
| И Номенклатура В (&Номенклатура)) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункцииИмена регистра и измерений здесь учебные (проект P2), у вас они свои.
🧱 Клиент-сервер и формы
Разделение контекста
- [ ] Каждый метод формы имеет директиву компиляции; методы, не использующие данные формы, помечены
&НаСервереБезКонтекста. - [ ] Через границу клиент-сервер передаются нужные значения, а не весь объект формы или большие таблицы.
- [ ] Один серверный вызов вместо нескольких подряд (#487).
- [ ] Проверка прав и данных выполняется на сервере: клиентская проверка защищает только от ошибок, но не от злоумышленника.
- [ ] Данные, которые пользователю не положены, не передаются на клиент даже скрытыми реквизитами.
Поведение формы
- [ ] Нет модальных методов
Вопрос,Предупреждение,ВвестиЗначение,ОткрытьЗначение; используетсяПоказатьВопрос,ПоказатьПредупреждениесОписаниеОповещенияилиАсинх/Ждать(#703). - [ ] Чтение и запись в базу в обработчиках частых событий минимальны (#522).
- [ ] Обработчики, назначаемые из кода (
УстановитьДействие), имеют префиксПодключаемый_(#492). - [ ] Форма объекта открывается корректно при создании, копировании и открытии по ссылке; форма корректно читает
Параметры.КлючиПараметры.ЗначениеКопирования. - [ ] Условное оформление применено там, где оно уместно (#710); подсказки добавлены только для элементов, которым нужно пояснение (#721).
- [ ] Список открывается с отбором, а не читает всю таблицу; динамический список настроен на основную таблицу и нужные поля.
- [ ] Команды в форме динамического списка учитывают строки группировки: пропускают их или сообщают пользователю (#495).
- [ ] Вёрстка проверена в тонком и веб-клиенте; при работе с новым интерфейсом 8.5 проверены оба режима совместимости («Такси. Разрешить Версия 8.5» и «Версия 8.5. Разрешить Такси»), если они используются.
Табличные части и печать
- [ ] Табличная часть заполняется одним серверным вызовом, итоги считаются на клиенте только для отображения.
- [ ] Печатная форма собирается средствами БСП («Печать»); данные для нескольких объектов выбираются одним запросом (#548), состав полей макета
ДанныеПечатине ломается правками пользователя (#789). - [ ] Формирование печатной формы не пишет в базу.
📝 Проведение документа и блокировки
- [ ] Проверки заполнения находятся в
ОбработкаПроверкиЗаполнения, а не вОбработкаПроведения. - [ ] Документ проводится: свойство
Проведение=Разрешить, если он влияет на учёт (#603). - [ ] Движения формируются в
ОбработкаПроведенияи не пишутся явнымЗаписать(), кроме случая, когда данные регистра нужны дальше в этой же процедуре, например для контроля остатков (#450). - [ ] Контроль остатков читает данные с блокировкой: перед проверкой установлена управляемая блокировка на регистр по нужным измерениям, режим блокировки данных в конфигурации управляемый (#460, #661).
- [ ] Не используется конструкция
ДЛЯ ИЗМЕНЕНИЯв запросе: в управляемом режиме она бесполезна (#460). - [ ] Повторное проведение даёт тот же результат; перепроведение задним числом пересчитывает и последующие данные, если они зависят.
- [ ] Отмена проведения очищает все движения, включая регистры бухгалтерии и сведений.
- [ ] Порядок захвата блокировок одинаков во всех документах, чтобы не порождать взаимоблокировки.
- [ ] Блокировки короткие: тяжёлые расчёты и обращения к внешним системам вынесены за пределы транзакции.
- [ ] Отдельная проверка: проведение двух документов на один остаток параллельно (два сеанса) не даёт минуса.
Пример: блокировка по измерениям из табличной части и контроль остатков в проведении.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// Блокировка ставится до чтения остатков и записи движений.
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Склад", Склад);
ЭлементБлокировки.ИсточникДанных = Товары;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();
Движения.ТоварыНаСкладах.Записывать = Истина;
Для Каждого СтрокаТовара Из Товары Цикл
Движение = Движения.ТоварыНаСкладах.ДобавитьРасход();
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = СтрокаТовара.Номенклатура;
Движение.Количество = СтрокаТовара.Количество;
КонецЦикла;
// Явная запись допустима здесь, потому что контроль остатков ниже читает регистр (#450).
Движения.ТоварыНаСкладах.Записать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Склад = &Склад
| И Номенклатура В (&Номенклатура)) КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.КоличествоОстаток < 0";
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Номенклатура", Товары.ВыгрузитьКолонку("Номенклатура"));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон(НСтр("ru = 'Не хватает товара ""%1"" на складе'"), Выборка.Номенклатура),
Ссылка,
,
,
Отказ);
КонецЦикла;
КонецПроцедурыПример учебный (проект P2): имена регистра и измерений условные, реальная схема блокировок зависит от вашей конфигурации. Перед применением сверьтесь с #450, #460 и #661. Стандарт #661 описывает и другой приём: записать набор с БлокироватьДляИзменения = Истина в конце проведения и проверить отрицательные остатки запросом; выбирайте один подход и применяйте его во всех документах регистра.
🧩 Расширение конфигурации
- [ ] Порядок доработки типовой: настройки и функциональные опции, дополнительные отчёты и обработки БСП, затем расширение; изменение основной конфигурации с сохранением поддержки допустимо, когда расширение не справляется. Формулировку «правка типовых модулей запрещена» не используйте.
- [ ] У расширения есть префикс, у всех добавленных объектов, методов и переменных он есть (проверки EDT
extension-md-object-prefix,extension-method-prefix,extension-variable-prefix). - [ ] Поведение БСП настраивается через модули
*Переопределяемыйи обработчики&Послек ним, а не копированием модулей БСП. - [ ]
&Вместоприменяется, только когда другие способы не подходят; для правки части тела метода используется&ИзменениеИКонтрольс#Вставка/#Удаление(с 8.3.16), а&Вместобез вызоваПродолжитьВызовне оставляется без веской причины. - [ ] Расширение — внешний код (#669): подключается средствами БСП (общая форма «Расширения» подсистемы «Базовая функциональность») после проверки администратором; проверка АПК «Небезопасное подключение расширения конфигурации» (ACC 554) пройдена.
- [ ] Свои роли добавлены в расширение, чтобы оно работало и в конфигурациях без БСП (#488).
- [ ] Назначение расширения выбрано осознанно: «Исправление», «Адаптация» или «Дополнение».
- [ ] Расширение не ломается после перехода на новый релиз типовой: есть тест или ручной сценарий проверки.
- [ ] Есть документ: что расширяет, зачем, кто автор, как отключать.
- [ ] Непереопределяемые объекты БСП не изменяются без срочной необходимости, а если изменены, отклонение задокументировано (#553).
Подробнее о разработке расширений — проект P8 в 07_Projects.md.
🔧 Обновление типовой и нетиповой конфигурации
Общие пункты для любого обновления
- [ ] Создана резервная копия базы (выгрузка
.dtдля небольших баз или копия на уровне СУБД), проверено, что восстановление работает. - [ ] Определён текущий релиз конфигурации и целевой релиз, проверена совместимость с версией платформы: типовые большие конфигурации в 2026 году работают на 8.3.27, УНФ и «Розница», начиная с 3.0.13, работают и на 8.5; официального плана перевода остальных на 8.5 нет.
- [ ] Прочитан список изменений и, при необходимости, порядок обновления через промежуточные релизы.
- [ ] Обновление сначала выполнено на копии базы.
- [ ] Есть план отката и зафиксировано «окно» обслуживания, монопольный доступ к базе в нём предусмотрен.
- [ ] Пользователи знают о времени недоступности.
Типовая без доработок
- [ ] Релиз установлен штатным обновлением конфигурации из файла поставки, выполнено обновление информационной базы (обработчики обновления отработали без ошибок).
- [ ] Официальные исправления от 1С поставляются расширениями с назначением «Исправление»; устаревшие исправления перед обновлением удалены или отключены (БСП делает это сама при обновлении).
- [ ] Проверены ключевые сценарии: проведение, ключевые отчёты, обмены, интеграции, печатные формы.
Типовая с доработками
- [ ] Сравнение и объединение выполнено на копии, конфликты разобраны, а не приняты «по умолчанию».
- [ ] Расширения проверены на совместимость с новым релизом, сломанные исправлены до боевого обновления.
- [ ] БСП обновлена до редакции, соответствующей платформе: 3.1.12 — для 8.3.24–8.3.27, 3.2.1 — только для 8.5.1.
- [ ] Обработчики обновления информационной базы своих подсистем проверены и идемпотентны (#690).
- [ ] Автоматические или ручные тесты ключевых сценариев пройдены после обновления.
Нетиповая (собственная) конфигурация
- [ ] Ветки и версии в Git соответствуют релизу, у релиза есть тег.
- [ ] Свойства конфигурации
ВерсияиПоставщикзаполнены (#482), режим совместимости и минимальная версия платформы выбраны осознанно (#785). - [ ] Обновление ИБ записывается обработчиками обновления и не «зашито» в ручные обработки.
- [ ] Если меняется алгоритм хеширования паролей или платформа откатывается ниже 8.3.26, учтена оговорка: при откате пользователи с новыми хешами не смогут войти по паролю, пока не будет возвращён SHA-1 и не переустановлены пароли; перед откатом сделайте это заранее (рекомендуемый алгоритм для паролей — PBKDF2-HMAC-SHA256, выбор алгоритма доступен с 8.3.26).
- [ ] «Фоновое обновление конфигурации БД» доступно только с серверной лицензией КОРП; его финальная фаза всё равно требует монопольного доступа, поэтому это не обновление без простоя.
🌐 Интеграция
HTTP-клиент и внешние API
- [ ] У каждого
HTTPСоединение,WSОпределения,WSПрокси,FTPСоединениеиИнтернетПочтовыйПрофильзадан таймаут (#748). - [ ] Ошибки и коды ответов обрабатываются: 4xx и 5xx различаются, для временных ошибок предусмотрена повторная отправка с ограничением числа попыток.
- [ ] Обращения к внешним системам выполняются вне транзакций и вне блокирующей части проведения.
- [ ] Секреты (токены, пароли) хранятся в безопасном хранилище БСП, а не в константах и не в логе (#740).
- [ ] Логируется запрос и результат без секретов и без персональных данных, есть идентификатор корреляции.
- [ ] Формат обмена описан: OpenAPI, XDTO или схема; есть версия формата.
- [ ] Регламентное задание не зависит от того, что кто-то его запустил, и его можно запустить вручную (#539, #540).
HTTP-сервис 1С как сервер
- [ ] Идемпотентность: повторный запрос с тем же ключом не создаёт дубль документа или справочника.
- [ ] Аутентификация и права проверены: сервис работает под ограниченным пользователем, а не под администратором.
- [ ] Входные данные валидируются, ошибки возвращаются с понятным статусом и телом.
- [ ] Ответ не содержит лишних полей и данных, которые вызывающему не положены.
- [ ] Большие выборки возвращаются страницами.
- [ ] Есть контрактный тест или коллекция запросов в репозитории.
Обмены данными (планы обмена, EnterpriseData)
- [ ] При загрузке проверяется
ОбменДанными.ЗагрузкавПередЗаписьюиПриЗаписи: бизнес-логика, не относящаяся к загрузке, не срабатывает (#464, #465). - [ ] Отбор плана обмена сделан по стандарту (#701), правила конвертации в выгрузке проверены на разных версиях приёмника.
- [ ] Исправления ошибок в правилах обмена поставляются расширениями-патчами (#799).
- [ ] Конфликты и коллизии описаны: кто «выигрывает» и что пишется в журнал.
- [ ] Обмен можно перезапустить с точки останова, а повторная загрузка того же сообщения безопасна.
- [ ] Для форматов интеграции прикладных решений используется EnterpriseData, если это уместно (#771).
Пример клиента с таймаутом, безопасным хранилищем и разбором кода ответа:
&НаСервереБезКонтекста
Функция СоздатьЗаказВоВнешнейСистеме(Настройка, Тело, КлючИдемпотентности)
УстановитьПривилегированныйРежим(Истина);
Токен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Настройка, "ТокенAPI");
УстановитьПривилегированныйРежим(Ложь);
// Таймаут в секундах (шестой параметр конструктора) обязателен по стандарту #748.
Соединение = Новый HTTPСоединение(
"api.example.com", , , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/orders");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Запрос.Заголовки.Вставить("Idempotency-Key", КлючИдемпотентности);
Запрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Запрос.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8);
Попытка
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Интеграция.Заказы'"),
УровеньЖурналаРегистрации.Ошибка, , ,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
Если Ответ.КодСостояния <> 201 И Ответ.КодСостояния <> 200 Тогда
ЗаписьЖурналаРегистрации(НСтр("ru = 'Интеграция.Заказы'"),
УровеньЖурналаРегистрации.Ошибка, , ,
СтрШаблон("Код %1", Ответ.КодСостояния));
ВызватьИсключение НСтр("ru = 'Внешняя система отклонила запрос'");
КонецЕсли;
Возврат Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
КонецФункцииПример намеренно короткий: повторные попытки, разбор тела и запись результата вынесите в отдельные методы. Адрес api.example.com условный.
🔐 Безопасность
Код и данные
- [ ] Запросы параметризованы, пользовательский ввод не попадает в текст запроса, в
Выполнить/Вычислитьи в командную строку. - [ ] Пароли, токены и ключи API не лежат в коде, макетах, константах, реквизитах форм и логах. Для секретов используется безопасное хранилище БСП:
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище,ПрочитатьДанныеИзБезопасногоХранилища,УдалитьДанныеИзБезопасногоХранилищав привилегированном режиме. Хранилище защищено правами, но данные там не зашифрованы. - [ ] Права проверяются на сервере методом
ПравоДоступапо объекту и виду права, а не по имени роли черезРольДоступна(роль-маркер без прав на объекты — исключение, #737). - [ ] Привилегированный режим отключает RLS: полученные в нём данные не отдаются на клиент без отдельной проверки прав.
- [ ] Внешние отчёты, обработки и расширения подключаются в безопасном режиме через БСП «Дополнительные отчеты и обработки»; открытие через «Файл → Открыть» ограничено.
- [ ] Файловая система из кода конфигурации используется только там, где это необходимо (#542), внешние ресурсы — через средства платформы (#794).
- [ ] Права доступа к данным, зависящие от организации, склада или подразделения, реализованы через RLS БСП («Управление доступом»);
РАЗРЕШЕННЫЕне используется для расчётов и проведения (#415).
Аутентификация и администрирование (проверьте для боевой базы)
- [ ] Политика паролей включена (с 8.3.17), блокировка после неудачных попыток (с 8.3.16), при необходимости второй фактор (с 8.3.14).
- [ ] Для паролей выбран PBKDF2-HMAC-SHA256 (с 8.3.26); SHA-256 и SHA-512 — быстрые хеши, для паролей не рекомендуются; MD5 в платформе нет.
- [ ] Настроено «Время завершения сеанса при бездействии» (с 8.3.26).
- [ ] После установки сервера создан администратор кластера: по умолчанию администратор не задан.
- [ ] Клиент ↔ веб-сервер — только HTTPS; клиент ↔ кластер: шифрование по собственному протоколу платформы по умолчанию выключено, включается уровнем безопасности; канал к СУБД — SSL средствами СУБД.
- [ ] Профили безопасности кластера настроены для внешних ресурсов (в КОРП), ограничения на COM, файлы и интернет-ресурсы заданы.
- [ ] Журнал регистрации копируется или выгружается в хранилище вне сервера приложений; для персональных данных проверено, какие события доступа фиксируются (часть возможностей аудита — только в КОРП).
- [ ] Копии баз для разработки и тестирования обезличены (152-ФЗ, 98-ФЗ) — подробнее в
10_Domain_and_Law.md. - [ ] Уязвимость платформы, если нашли, сообщается на bugboard.v8.1c.ru.
Пример работы с секретом:
&НаСервереБезКонтекста
Процедура СохранитьТокен(Настройка, Токен)
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Настройка, Токен, "ТокенAPI");
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры⚡ Производительность
До оптимизации
- [ ] Проблема измерена: есть операция, время «до» и целевое время. Оптимизация «по ощущениям» запрещена.
- [ ] Определено, где тратится время: клиент, сервер 1С, СУБД, блокировки, внешний сервис.
- [ ] Включён технологический журнал по узкому сценарию, а не «на всё» (объём логов растёт быстро).
- [ ] Для оценки используется APDEX и подсистема БСП «Оценка производительности».
Что проверять в коде
- [ ] Нет запросов в цикле, лишних серверных вызовов и обращений к реквизитам ссылок в цикле.
- [ ] Временные таблицы применены там, где они улучшают план, а не «по привычке» (#777).
- [ ] Индексы: дополнительные индексы только по обоснованию, есть пример запроса, который они ускоряют; они доступны только с лицензией КОРП (#791).
- [ ] Записи регистров идут порциями примерно по 1000, без лишнего перезаписывания (#792).
- [ ] Итоги регистров и режим разделения итогов подобраны под сценарий.
- [ ] Блокировки минимальны: избыточные блокировки не порождаются структурой данных (#659).
- [ ] Отчёты на СКД получают отбор и параметры в запросе набора данных, а не фильтруют выгруженное в постобработке.
Инфраструктура (для трека «Производительность» и администраторов)
- [ ] СУБД: PostgreSQL используется только в сборках для 1С (от 1С, Postgres Pro, ALT и др.), ванильный PostgreSQL не подходит.
- [ ] Параметры СУБД и ОС, версия платформы и лицензии соответствуют рекомендациям ИТС.
- [ ] Ориентир для расследования:
pg_stat_statements,pg_locks, ТЖ, метрики кластера черезrac. - [ ] Для MS SQL Server учтено: SQL Server 2016 снят с поддержки Microsoft 14.07.2026.
- [ ] Изменения применяются на тестовом стенде, результат замеряется тем же сценарием.
Подробнее — tracks/performance-expert.md и проект P14 (07_Projects.md).
🤖 Работа с ИИ-ассистентом
- [ ] В запросы к внешним ИИ-сервисам не попадают персональные данные, данные заказчика и коммерческая тайна (152-ФЗ, 98-ФЗ, NDA); передача зарубежному провайдеру — трансграничная.
- [ ] Правила работодателя и заказчика по ИИ прочитаны; для госзаказчиков учтены ограничения (Приказ ФСТЭК № 117 действует с 01.03.2026, п. 60 касается ИИ — детали в
10_Domain_and_Law.md). - [ ] ИИ-агент работает с обезличенной копией и с техническим пользователем без права записи; запрет задан правами 1С, а не настройками агента: MCP не является границей безопасности.
- [ ] Код от ИИ прошёл BSL Language Server, тесты и обычное ревью.
- [ ] Имена методов и объектов из ответа ИИ проверены по синтакс-помощнику: ИИ придумывает несуществующие методы.
- [ ] Стандарты v8std соблюдены (контекст, запросы, транзакции); «работает» не значит «правильно».
- [ ] В PR отмечено, какие фрагменты сгенерированы.
Подробнее — 09_AI_Development.md.
📦 Перед сдачей задачи
- [ ] Постановка перечитана, критерии приёмки выполнены, спорное согласовано письменно.
- [ ] Изменения минимальны: нет посторонних правок, форматирования «мимоходом» и мусорных файлов.
- [ ] Пройден раздел «Код-ревью BSL» выше; для затронутых областей — разделы про запросы, формы, проведение, интеграцию.
- [ ] Проверено на копии базы с реалистичными данными, а не только на пустой.
- [ ] Проверены граничные случаи: пустые значения, большие объёмы, повторный запуск, параллельная работа двух пользователей.
- [ ] Проверено под пользователем с ограниченными правами, а не только под администратором.
- [ ] Проверены сценарии записи, проведения, отмены проведения и удаления.
- [ ] Тесты (ручные или автоматические) описаны и приложены.
- [ ] Описание для ревьюера: что и зачем изменено, как проверить, что может сломаться.
- [ ] Документация или инструкция пользователя обновлены, если поведение изменилось.
- [ ] Время работы записано и совпадает с оценкой, расхождение объяснено.
🚀 Перед релизом
- [ ] Версия и тег релиза в Git присвоены, изменения задокументированы (что нового, что исправлено, что делать пользователям).
- [ ] Сборка выполнена из репозитория, а не с чьей-то рабочей базы.
- [ ] Автоматические проверки (статический анализ, тесты) прошли на итоговой сборке.
- [ ] Минимальная версия платформы и режим совместимости определены и проверены на реальной версии платформы: 8.3.27 или 8.5.1.
- [ ] Обновление проверено на копии базы заказчика (или ближайшей к ней): обработчики обновления ИБ отработали, нет потери данных.
- [ ] Резервная копия перед релизом сделана и проверена; план отката записан и понятен исполнителю.
- [ ] Предусмотрен монопольный доступ на время обновления и уведомление пользователей.
- [ ] Роли, профили групп доступа и права на новые объекты выданы.
- [ ] Расширения, внешние обработки и отчёты проверены на совместимость с релизом.
- [ ] Регламентные задания включены или выключены осознанно (на копиях для тестов — выключены).
- [ ] Обмены и интеграции проверены на новой версии, форматы совместимы с приёмниками.
- [ ] После выкладки выполнен «дымовой» тест: вход, ключевой документ, ключевой отчёт, обмен.
- [ ] Назначен ответственный, который следит за журналом регистрации и ошибками первые дни.
- [ ] Обратная связь: канал, куда пользователи сообщают о проблемах.
🎓 Первые 90 дней у франчайзи
Порядок и сроки — рекомендация авторов роадмапа; набор задач соответствует уровню Junior в официальной модели компетенций разработчика. Треки: tracks/developer-franchise.md, ожидания по карьере — 13_Career.md.
Дни 1–30. Ориентация
- [ ] Прочитаны регламенты компании: как ставятся задачи, как ведётся учёт времени, как оформляются коммиты и ревью.
- [ ] Знаю роли в проекте (менеджер, аналитик, разработчик, тестировщик) и к кому идти с вопросом.
- [ ] Получен доступ к ИТС и понятны правила хранения паролей и лицензий.
- [ ] Понимаю режимы лицензирования и работу с клиентскими и серверными лицензиями.
- [ ] Работал с типовыми БП, УТ и ЗУП на уровне пользователя: ввёл документ, посмотрел отчёт, настроил права.
- [ ] Знаю сервисы ИТС и умею искать в них ответы.
- [ ] Первые задачи: правка печатной формы, внешний отчёт на СКД, обновление типовой без доработок.
Дни 31–60. Уверенность
- [ ] Выполнил обновление доработанной конфигурации со сравнением и объединением на копии.
- [ ] Подключил внешние обработки через «Дополнительные отчеты и обработки».
- [ ] Сделал расширение для типовой конфигурации.
- [ ] Загрузил данные из Excel, поиск дублей описан.
- [ ] Настроил или проверил синхронизацию (например, БП ↔ ЗУП, УТ ↔ БП).
Дни 61–90. Самостоятельность
- [ ] Подключил оборудование через БПО (библиотека подключаемого оборудования).
- [ ] Разобрался с маркировкой по инструкции (детали —
10_Domain_and_Law.md). - [ ] Настроил права в типовой через профили групп доступа.
- [ ] Сдан «1С:Профессионал» по платформе, если ещё не сдан.
- [ ] Дал оценку небольшой задачи, сверил с фактом. Формально это уровень Middle, но начать полезно раньше.
- [ ] Провёл разбор с наставником: что получается, что нет, план на следующие три месяца.
🎓 Подготовка к экзамену
Формат и условия экзаменов меняются, всегда сверяйтесь с официальной страницей 1c.ru/prof. Подробности — в 04_Certifications.md.
1С:Профессионал (по платформе)
- [ ] Формат сверен на официальной странице. По вторичным источникам: 14 вопросов, 30 минут, для сдачи нужно не менее 12 верных ответов.
- [ ] Пройдены темы: язык и встроенный язык, запросы, управляемые формы, СКД, права доступа, клиент-серверное взаимодействие, регистры и проведение, транзакции и блокировки.
- [ ] Решены пробные тесты (например, мобильный тренажёр 1С:НИК УЦ №1 — платный, вход по учётной записи УЦ) и разобраны ошибки, а не только запомнены ответы.
- [ ] Для каждого пробного вопроса могу объяснить, почему остальные варианты неверны.
- [ ] Прочитана справка по всем объектам платформы из проектов P0–P6.
1С:Специалист по платформе
- [ ] Понимаю формат: практическая задача на выдаваемой каркасной конфигурации, около 4–5 часов; темы — оперативный учёт, бухгалтерский учёт, сложные периодические расчёты, бизнес-процессы, разработка формы. Сдача в EDT и дистанционно не подтверждена.
- [ ] Прорешаны задачи из проектов P2–P6 на время, без подсказок.
- [ ] Умею быстро создать объекты метаданных, документ с проведением, регистр расчёта или бухгалтерии, бизнес-процесс и форму.
- [ ] Отработана работа с синтакс-помощником и встроенной справкой.
- [ ] Спланирована сдача: время, платформа, повторная попытка при необходимости.
Другие экзамены (кратко)
- [ ] Выбран трек из
04_Certifications.md: «Профессионал по конфигурации» и «Специалист-консультант» (аналитик), «Профессионал по технологическим вопросам» и «Эксперт по технологическим вопросам» (эксперт), «Профессионал по эксплуатации ИС» и «1С:Эксплуататор» (эксплуатация). Формат каждого экзамена сверен на официальном сайте. - [ ] Для «1С:Эксплуататор» параметры практики и теории взяты из
04_Certifications.mdс оговоркой, что источник один; пререквизиты и цены перед записью уточнены у учебного центра.
Перед днём экзамена
- [ ] Проверены документы, время и способ проведения экзамена.
- [ ] Ночь перед экзаменом — сон, а не «доучивание».
- [ ] После сдачи выписан список пробелов и обновлён план обучения.
🔗 Источники
- Стандарты разработки 1С: its.1c.ru/db/v8std; шаблон адреса стандарта —
https://its.1c.ru/db/v8std/content/NNN/hdoc. - BSL Language Server: github.com/1c-syntax/bsl-language-server.
- Официальные проверки стиля для EDT («1C:Code style V8»): github.com/1C-Company/v8-code-style.
- 1С:ГитКонвертер: github.com/1C-Company/GitConverter.
- Vanessa Automation: github.com/Pr-Mex/vanessa-automation.
- Сертификация 1С:Профессионал: 1c.ru/prof.
- Уязвимости платформы: bugboard.v8.1c.ru.
- Внутренние материалы роадмапа:
02_Timeline.md,04_Certifications.md,07_Projects.md,08_Interview.md,09_AI_Development.md,10_Domain_and_Law.md.
