Рабочий день программиста 1С: от задачи заказчика до обновления в рабочей базе
Содержание
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 |
| Консоль запросов | Отладка запросов на живых данных |
| Отладчик и замер производительности | Поиск ошибок и медленных участков кода |
| Технологический журнал | Разбор блокировок и тяжёлых запросов на сервере |
Почти любая типовая конфигурация построена на Библиотеке стандартных подсистем (БСП). Знать её — обязательный навык: печатные формы, дополнительные обработки, права, версионирование объектов уже реализованы в библиотеке. Писать своё поверх готового — частая ошибка новичков.
От техзадания до релиза: как идёт разработка
Задачи приходят по-разному: заявкой в трекере, письмом, звонком. Порядок работы при этом примерно одинаковый.
- Сбор требований. Разработчик выясняет, что именно нужно и зачем. «Добавить поле» часто означает «хочу видеть это в отчёте», и решается без правки документа.
- Постановка или ТЗ. Для крупных доработок пишут документ: какие объекты меняются, какие права нужны, как проверить результат. Для мелких хватает описания в заявке.
- Проектирование. Где хранить данные, в каком регистре, как поведёт себя доработка при обновлении типовой.
- Разработка в копии базы. Рабочую базу не трогают: разработчик выгружает копию в
.dtили поднимает тестовую базу из резервной копии СУБД. - Тестирование. Проверка на реальных сценариях, иногда с автотестами (Vanessa Automation, тестирование через сценарии в EDT).
- Перенос в рабочую базу. Через расширение, файл конфигурации
.cfили обновление из хранилища. - Сопровождение. Пользователь находит пограничный случай, разработчик исправляет.
Перенос изменений в рабочую базу — опасный шаг. Перед обновлением конфигурации сделайте резервную копию базы. Если меняется структура данных, для «Обновить конфигурацию базы данных» нужен монопольный доступ: сеансы пользователей будут завершены, поэтому обновление планируют на вечер или выходные.
Расширения вместо снятия с поддержки
Главный приём, который отличает опытного разработчика: типовую конфигурацию по возможности не снимают с поддержки. Доработки складывают в расширение конфигурации (механизм появился в платформе 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С обрывают работу пользователей. Несохранённые документы пропадут. Такие действия делают вне рабочего времени или с предупреждением всем, кто в базе.
Отдельная часть поддержки — разбор жалоб «всё тормозит». Здесь пригождаются технологический журнал, анализ ожиданий на блокировках и планы запросов на стороне СУБД. Чаще всего причина находится в коде доработок, а не в железе.
Профессиональный рост: навыки и сертификация
Платформа и типовые конфигурации меняются каждый год. Разработчик, который не следит за изменениями, через пару лет пишет код по устаревшим приёмам.
Что развивать:
- Встроенный язык и запросы — база, без которой дальше никак.
- Учётную логику. Программист, который понимает, что такое проводка, НДС к вычету и закрытие месяца, ценится выше того, кто знает только код.
- Типовые конфигурации изнутри — БП, ЗУП, УТ, ERP: где лежат механизмы, как устроены проведение и закрытие месяца.
- Стандарты разработки фирмы 1С: оформление кода, работа с формами, производительность. Их проверяет автоматическая проверка в EDT и инструменты контроля качества кода.
- Командная работа: Git, ревью кода, автотесты.
Карьерная лестница выглядит так:
| Уровень | Чем занимается | Ориентир дохода в месяц* |
|---|---|---|
| Стажёр, джуниор | Отчёты, печатные формы, мелкие доработки под присмотром | примерно 70–130 тыс. ₽ |
| Middle | Самостоятельные доработки, обмены, обновление доработанных типовых | примерно 150–250 тыс. ₽ |
| Senior, ведущий | Архитектура, производительность, крупные внедрения, наставничество | примерно 250–400 тыс. ₽ и выше |
* Ориентировочно, по открытым вакансиям в крупных городах. В регионах цифры ниже, у фрилансеров доход сильно зависит от загрузки.
Подтвердить уровень помогают сертификаты фирмы 1С: «1С:Профессионал» (тест по платформе или конкретной конфигурации) и «1С:Специалист» (практический экзамен с решением задачи). Многие работодатели и франчайзи смотрят на них при найме, а «Специалист» по платформе часто ставят условием для старшей позиции.