Рабочий день программиста 1С: от задачи заказчика до обновления в рабочей базе

· 10 мин

Содержание

1С разработчик превращает задачу бухгалтера или кладовщика в изменение конфигурации: новый отчёт, доработку документа, обмен с сайтом. Работает он в Конфигураторе или 1C:Enterprise Development Tools (EDT), пишет на встроенном языке и языке запросов, а доработки типовых решений по возможности выносит в расширения.

Типичный пример. Главбух пишет: «Нужен отчёт по продажам с маржой по менеджерам, и чтобы при проведении реализации проверялся лимит долга». Разработчик уточняет детали, проектирует решение, пишет код в копии базы, тестирует и переносит в рабочую. Так выглядит работа программиста 1С почти в любой компании, меняется только масштаб.

Платформа и рабочие инструменты программиста 1С

Всё, что видит пользователь, — это конфигурация, запущенная на платформе 1С:Предприятие 8.3. Платформа одна, конфигураций много: Бухгалтерия, ЗУП, УТ, ERP, отраслевые и самописные. Разработчик меняет конфигурацию, а не платформу.

Базы работают в двух вариантах:

  • 📁 Файловый — база лежит в файле 1Cv8.1CD. Подходит для небольших команд.
  • 🖥️ Клиент-серверный — кластер серверов 1С и СУБД (PostgreSQL или Microsoft SQL Server). Клиент обращается к агенту сервера (порт 1540), тот передаёт запрос менеджеру кластера (1541) и рабочим процессам.

Код исполняется в двух контекстах: на клиенте и на сервере. В управляемых формах это видно по директивам &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Начинающий спотыкается именно здесь: обращение к базе данных возможно только на сервере, а каждый лишний серверный вызов замедляет форму.

Чем пользуется разработчик каждый день

ИнструментДля чего
КонфигураторКлассическая среда: дерево метаданных, модули, формы, отладчик
1C:EDTСреда на базе Eclipse: проекты в файлах, удобная работа с Git, проверка кода
Хранилище конфигурацииКомандная разработка в Конфигураторе: захват и помещение объектов
GitКонтроль версий для проектов EDT
Консоль запросовОтладка запросов на живых данных
Отладчик и замер производительностиПоиск ошибок и медленных участков кода
Технологический журналРазбор блокировок и тяжёлых запросов на сервере

Почти любая типовая конфигурация построена на Библиотеке стандартных подсистем (БСП). Знать её — обязательный навык: печатные формы, дополнительные обработки, права, версионирование объектов уже реализованы в библиотеке. Писать своё поверх готового — частая ошибка новичков.

От техзадания до релиза: как идёт разработка

Задачи приходят по-разному: заявкой в трекере, письмом, звонком. Порядок работы при этом примерно одинаковый.

  1. Сбор требований. Разработчик выясняет, что именно нужно и зачем. «Добавить поле» часто означает «хочу видеть это в отчёте», и решается без правки документа.
  2. Постановка или ТЗ. Для крупных доработок пишут документ: какие объекты меняются, какие права нужны, как проверить результат. Для мелких хватает описания в заявке.
  3. Проектирование. Где хранить данные, в каком регистре, как поведёт себя доработка при обновлении типовой.
  4. Разработка в копии базы. Рабочую базу не трогают: разработчик выгружает копию в .dt или поднимает тестовую базу из резервной копии СУБД.
  5. Тестирование. Проверка на реальных сценариях, иногда с автотестами (Vanessa Automation, тестирование через сценарии в EDT).
  6. Перенос в рабочую базу. Через расширение, файл конфигурации .cf или обновление из хранилища.
  7. Сопровождение. Пользователь находит пограничный случай, разработчик исправляет.

Перенос изменений в рабочую базу — опасный шаг. Перед обновлением конфигурации сделайте резервную копию базы. Если меняется структура данных, для «Обновить конфигурацию базы данных» нужен монопольный доступ: сеансы пользователей будут завершены, поэтому обновление планируют на вечер или выходные.

Расширения вместо снятия с поддержки

Главный приём, который отличает опытного разработчика: типовую конфигурацию по возможности не снимают с поддержки. Доработки складывают в расширение конфигурации (механизм появился в платформе 8.3.6).

Почему это важно:

  • 🔄 типовая обновляется почти без ручного сравнения и объединения;
  • 🧩 расширение подключается и отключается отдельно от основной конфигурации;
  • 🔍 видно, что именно доработано, — всё лежит в одном месте.

В расширении можно добавлять свои реквизиты и объекты, перехватывать методы типовых модулей аннотациями &Перед, &После, &Вместо, &ИзменениеИКонтроль. Последняя аннотация удобна тем, что при обновлении типовой платформа сообщит, если перехваченный кусок кода изменился.

Если без снятия с поддержки не обойтись, каждое обновление превращается в «Сравнение и объединение»: разработчик вручную разбирает конфликты между своими правками и новым релизом. На сильно доработанной ERP это может занять несколько дней.

Объекты метаданных: из чего собирается конфигурация

Конфигурация — это дерево объектов. Разработчик выбирает, каким объектом описать данные, и от этого выбора зависит, насколько быстро будут работать отчёты через год.

ОбъектЧто хранитПример
СправочникСписки однотипных элементовНоменклатура, Контрагенты
ДокументХозяйственные операции с датой и номеромРеализация, Поступление
ПеречислениеФиксированный набор значенийСтавки НДС, Виды операций
Регистр сведенийДанные с измерениями, часто с периодомЦены, курсы валют
Регистр накопленияОстатки и оборотыТовары на складах, Продажи
Регистр бухгалтерииПроводки по плану счетовХозрасчётный
Регистр расчётаНачисления с периодами действияНачисления зарплаты
План видов характеристикПроизвольные свойства объектовДополнительные реквизиты
Общий модульКод, общий для разных объектовСерверные функции, обработчики
Отчёт и обработкаВыборка данных и сервисные операцииАнализ продаж, загрузка из Excel

Ключевая связка — документ и регистр. Документ при проведении формирует движения, а отчёты читают регистры, а не документы. Если хранить остатки в табличных частях документов и пересчитывать каждый раз, отчёт за год будет строиться минутами.

Куда положить новые данные?

Запросы к данным и производительность

Язык запросов 1С похож на SQL, но пишется по-русски и работает с объектами метаданных. Через него строятся отчёты, проверки при проведении, выборки для обработок.

Пример запроса к оборотам регистра продаж и его выполнения:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|	Продажи.Номенклатура КАК Номенклатура,
|	Продажи.КоличествоОборот КАК Количество
|ИЗ
|	РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
|УПОРЯДОЧИТЬ ПО
|	Количество УБЫВ";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(Строка(Выборка.Номенклатура) + ": " + Формат(Выборка.Количество, "ЧГ=0"));
КонецЦикла;

Имя регистра и ресурса в вашей конфигурации может быть другим — проверьте его в дереве метаданных.

Что опытный разработчик делает иначе

  • 🚫 Не пишет запрос в цикле. Сто строк документа — не сто запросов, а один запрос с отбором по списку или временной таблице.
  • 📦 Использует временные таблицы и пакетные запросы, чтобы не тянуть лишние данные.
  • 🎯 Обращается к виртуальным таблицам с параметрами (Остатки, Обороты) и задаёт отбор внутри параметров, а не в ГДЕ после соединения.
  • 🔗 Не разыменовывает составные ссылки через точку без нужды: такое обращение превращается в соединение с несколькими таблицами.
  • 🔒 Разбирается в управляемых блокировках. При контроле остатков данные блокируют до чтения, иначе два пользователя одновременно продадут один и тот же последний товар.

Для отчётов основной инструмент — система компоновки данных (СКД). В ней настраивают запрос, группировки, отборы и оформление. Пользователь потом сам меняет вариант отчёта без программиста.

Когда отчёт «тормозит», начните с замера производительности: он покажет строку кода, на которую ушло время. Гадать по тексту запроса дольше.

Интеграции и обмен с внешними системами

Редкая база живёт сама по себе. Её связывают с сайтом, банком, складской системой, другой базой 1С. Это отдельный большой пласт работы разработчика.

СпособГде применяют
Планы обмена и формат EnterpriseDataОбмен между типовыми конфигурациями, распределённые базы
Конвертация данных 3.0Правила обмена между разными конфигурациями, в том числе самописными
HTTP-сервисыСвоё REST-подобное API для сайта или мобильного приложения
Веб-сервисы (SOAP)Интеграция с системами, которые работают по WSDL
Стандартный интерфейс ODataЧтение и запись данных базы без написания своего API
Файлы (XML, JSON, CSV, Excel)Простые выгрузки и загрузки по расписанию
COM-соединение и внешние компонентыСвязь с Windows-приложениями и оборудованием

Для работы с JSON во встроенном языке есть объекты ЧтениеJSON и ЗаписьJSON, для HTTP-запросов — HTTPСоединение и HTTPЗапрос. Опытный интегратор сразу закладывает в обмен журнал: что ушло, что пришло, на чём упало. Без журнала разбор «почему заказ с сайта не появился в 1С» превращается в угадывание.

Автоматические обмены запускают регламентными заданиями. В клиент-серверной базе они выполняются на сервере по расписанию, в файловой — только когда открыт хотя бы один сеанс клиента.

Администрирование и поддержка работающей базы

В небольших компаниях программист 1С одновременно и администратор. Задачи такие:

  • 👥 пользователи и права — профили групп доступа в типовых на БСП, ограничение доступа на уровне записей (RLS);
  • 🔄 обновление типовых — установка новых релизов, проверка доработок после обновления;
  • 💾 резервное копирование — средствами СУБД для серверных баз, копированием файла или выгрузкой .dt для файловых;
  • 🧹 тестирование и исправление базы, если после сбоя появились битые ссылки;
  • ⚙️ кластер серверов — консоль администрирования, сеансы, рабочие процессы, утилита rac (например, rac cluster list, rac session list);
  • 🌐 публикация на веб-сервере — для веб-клиента, HTTP-сервисов и мобильного приложения.

Завершение сеансов, перезапуск рабочих процессов или службы сервера 1С обрывают работу пользователей. Несохранённые документы пропадут. Такие действия делают вне рабочего времени или с предупреждением всем, кто в базе.

Отдельная часть поддержки — разбор жалоб «всё тормозит». Здесь пригождаются технологический журнал, анализ ожиданий на блокировках и планы запросов на стороне СУБД. Чаще всего причина находится в коде доработок, а не в железе.

Профессиональный рост: навыки и сертификация

Платформа и типовые конфигурации меняются каждый год. Разработчик, который не следит за изменениями, через пару лет пишет код по устаревшим приёмам.

Что развивать:

  1. Встроенный язык и запросы — база, без которой дальше никак.
  2. Учётную логику. Программист, который понимает, что такое проводка, НДС к вычету и закрытие месяца, ценится выше того, кто знает только код.
  3. Типовые конфигурации изнутри — БП, ЗУП, УТ, ERP: где лежат механизмы, как устроены проведение и закрытие месяца.
  4. Стандарты разработки фирмы 1С: оформление кода, работа с формами, производительность. Их проверяет автоматическая проверка в EDT и инструменты контроля качества кода.
  5. Командная работа: Git, ревью кода, автотесты.

Карьерная лестница выглядит так:

УровеньЧем занимаетсяОриентир дохода в месяц*
Стажёр, джуниорОтчёты, печатные формы, мелкие доработки под присмотромпримерно 70–130 тыс. ₽
MiddleСамостоятельные доработки, обмены, обновление доработанных типовыхпримерно 150–250 тыс. ₽
Senior, ведущийАрхитектура, производительность, крупные внедрения, наставничествопримерно 250–400 тыс. ₽ и выше

* Ориентировочно, по открытым вакансиям в крупных городах. В регионах цифры ниже, у фрилансеров доход сильно зависит от загрузки.

Подтвердить уровень помогают сертификаты фирмы 1С: «1С:Профессионал» (тест по платформе или конкретной конфигурации) и «1С:Специалист» (практический экзамен с решением задачи). Многие работодатели и франчайзи смотрят на них при найме, а «Специалист» по платформе часто ставят условием для старшей позиции.

Минимум знаний для первой работы программистом 1С
Выполнено: 0 / 7

Частые вопросы

Чем 1С программист отличается от 1С консультанта?
Консультант настраивает типовую конфигурацию и учит пользователей, не меняя код. Программист меняет конфигурацию: пишет код, создаёт объекты, расширения и обмены.
Нужно ли разработчику 1С знать бухгалтерский учёт?
Для работы с БП, ЗУП и ERP — да, хотя бы на уровне счетов, проводок и закрытия месяца. Без этого трудно понять задачу и проверить результат.
Можно ли учиться разработке на бесплатной версии?
Да. Учебная версия платформы 1С:Предприятие распространяется бесплатно и подходит для изучения языка и объектов метаданных. В ней есть ограничения по объёму данных, для рабочей эксплуатации она не предназначена.
Что выбрать для старта: Конфигуратор или EDT?
Конфигуратор проще для первого знакомства и встречается почти в каждой компании. EDT стоит освоить следом: на ней всё чаще ведут командную разработку с Git.
Работает ли 1С разработчик удалённо?
Чаще всего да. Для доступа к базам используют VPN, удалённый рабочий стол или выделенную копию базы, а изменения переносят через хранилище или Git.