Что компания получает от встроенного языка 1С: задачи, примеры, ограничения
Содержание
Язык программирования 1С нужен, чтобы подогнать программу под конкретный бизнес: добавить свои проверки и документы, собрать отчёт, которого нет в типовой поставке, связать 1С с сайтом, банком, складом или маркетплейсом. На нём написаны сами типовые конфигурации — Бухгалтерия, ЗУП, Управление торговлей, ERP, — поэтому любую из них можно доработать тем же языком.
Официальное название — встроенный язык платформы 1С:Предприятие 8.3. Код не живёт отдельно: он лежит в модулях конфигурации и выполняется платформой. Рядом работает язык запросов, похожий на SQL, — им выбирают данные для отчётов и расчётов.
Где кончаются типовые возможности и начинается автоматизация своих процессов
Типовая конфигурация закрывает учёт «как у всех»: законодательные формы, стандартные документы, регламентированные отчёты. Как только у компании появляется своё правило, которого нет в законе, без кода обычно не обойтись.
Типичные примеры из практики:
- 🧾 Согласование платежей. Заявка на оплату свыше 300 000 ₽ не уходит в банк без отметки финансового директора.
- 📦 Свои правила резерва. Товар под VIP-клиента резервируется раньше остальных, даже если заказ пришёл позже.
- 💰 Нестандартная мотивация. Премия менеджера считается от маржи по оплаченным отгрузкам, а не от выручки.
- 🏭 Отраслевая специфика. Учёт тары, партий с особыми сроками годности, давальческого сырья по собственной схеме.
- 🔔 Контроль и уведомления. Письмо руководителю, если дебиторка клиента превысила лимит.
Технически это решается несколькими механизмами платформы:
| Механизм | Что делает | Пример задачи |
|---|---|---|
Обработчики событий объекта (ПередЗаписью, ОбработкаПроведения, ОбработкаПроверкиЗаполнения) | Реагируют на запись и проведение документа | Запретить провести реализацию без договора |
| Подписки на события | Вешают одну процедуру на много объектов сразу | Логировать изменение цен в любых документах |
| Регламентные задания | Запускают код по расписанию на сервере | Каждую ночь пересчитывать скидки клиентов |
| Бизнес-процессы и задачи | Маршрут согласования с исполнителями | Цепочка «менеджер → юрист → директор» |
| Роли и ограничение доступа к записям (RLS) | Определяют, кто что видит | Менеджер видит только своих контрагентов |
Пример проверки на встроенном языке: документ не записывается, если сумма крупная, а основание не указано.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если СуммаДокумента > 300000 И Не ЗначениеЗаполнено(Комментарий) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Для сумм свыше 300 000 руб. укажите основание в комментарии.";
Сообщение.Поле = "Комментарий";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Такие правила лучше писать не в самой типовой конфигурации, а в расширении — об этом ниже. Тогда обновления не сотрут доработку.
Отчёты и обработки: самый частый повод открыть Конфигуратор
Больше всего заказов программистам 1С — на отчёты. Руководителю нужен свой срез: маржа по менеджерам и регионам, оборачиваемость склада, план-факт по бюджету. Типовой «Универсальный отчёт» и настройки готовых отчётов закрывают часть задач, но не все.
Отчёты на СКД
Почти все отчёты в 8.3 строятся на системе компоновки данных (СКД). Программист пишет запрос, описывает поля, ресурсы и группировки, а пользователь потом сам меняет отборы и варианты без кода.
Фрагмент запроса к регистру — выручка по контрагентам за период:
ВЫБРАТЬ
Продажи.Контрагент КАК Контрагент,
СУММА(Продажи.Выручка) КАК Выручка
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.Контрагент
УПОРЯДОЧИТЬ ПО
Выручка УБЫВ
Имя регистра и ресурсов зависит от конфигурации: в Бухгалтерии, УТ и ERP структура разная. Сам приём одинаков: запрос идёт к объектам конфигурации, а платформа переводит его в SQL для MS SQL, PostgreSQL или файловой базы.
Внешние обработки и отчёты
Файлы .epf (обработка) и .erf (отчёт) подключаются к базе без изменения конфигурации. Так делают:
- 🖨️ свои печатные формы — счёт с логотипом, этикетки, акт в формате заказчика;
- 🔄 групповые операции — перезаполнить реквизит у тысячи документов, перенумеровать, закрыть старые заказы;
- 📥 загрузку данных из Excel — прайсы, остатки, справочники;
- 📊 разовые отчёты для аудитора или собственника.
В Бухгалтерии и других конфигурациях на БСП они подключаются через раздел Администрирование → Печатные формы, отчёты и обработки (флажок «Дополнительные отчёты и обработки»).
Внешняя обработка выполняет любой код с правами пользователя, который её запустил. Не подключайте обработки из непроверенных источников и сначала запускайте групповые операции на копии базы.
Связь 1С с сайтом, банком и другими сервисами
Вторая большая задача языка 1С — интеграции. Компания редко живёт в одной программе: есть интернет-магазин, CRM, маркетплейсы, WMS, банк-клиент, сервисы доставки.
Инструменты платформы для обмена:
- 🌐 HTTP-запросы из кода — 1С сама обращается к REST API сервиса и разбирает JSON.
- 📡 HTTP-сервисы и веб-сервисы — внешняя система обращается к опубликованной базе 1С.
- 🧩 OData — стандартный REST-интерфейс к данным базы после публикации, без написания кода для каждой таблицы.
- 🔁 Планы обмена — механизм регистрации изменений для обмена между базами 1С (например, УТ ↔ Бухгалтерия).
- 📄 XML, JSON, файлы — классический обмен через выгрузку в папку или FTP.
Пример получения заказов из внешнего API:
Соединение = Новый HTTPСоединение("api.example.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/orders?date=" + Формат(ТекущаяДатаСеанса(), "ДФ=yyyy-MM-dd"));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Заказы = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
КонецЕсли;
Дальше программист раскладывает полученные данные по документам 1С: заказ клиента , контрагент, номенклатура. Самая трудоёмкая часть интеграции — не запрос, а сопоставление справочников и обработка ошибок: что делать с неизвестным товаром, дублем заказа, обрывом связи.
Токены и пароли от внешних сервисов не пишут в код. В конфигурациях на БСП для этого есть безопасное хранилище данных, доступное из кода через общий модуль ОбщегоНазначения.
Доработка типовых конфигураций через расширения
Раньше доработка означала снятие конфигурации с поддержки: программист правил типовой код, а каждое обновление превращалось в ручное сравнение и объединение. Это дорого — обновление доработанной базы могло занимать дни.
С версии платформы 8.3.6 появились расширения конфигурации
(файлы .cfe). Доработка лежит отдельно от типовой конфигурации и накладывается поверх неё.
Что можно сделать расширением:
- Добавить новые реквизиты, справочники, документы, отчёты.
- Изменить форму: добавить поле, кнопку, вкладку.
- Вмешаться в типовую процедуру с помощью аннотаций
&Перед,&После,&Вместо,&ИзменениеИКонтроль. - Добавить свои роли и права.
Пример: дополнить типовую проверку своей логикой, не трогая оригинал.
&После("ОбработкаПроверкиЗаполнения")
Процедура МоёРасширение_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если Не ЗначениеЗаполнено(Договор) Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
| Способ доработки | Обновление типовой | Риски |
|---|---|---|
| Настройка без кода | Без проблем | Ограничены возможностями программы |
| Внешняя обработка | Без проблем, иногда нужна проверка | Может сломаться после смены структуры |
| Расширение | Обычно автоматически | Перехваченная процедура могла измениться в новом релизе |
| Снятие с поддержки и правка кода | Сравнение и объединение вручную | Долго и дорого при каждом обновлении |
Расширение с аннотацией &ИзменениеИКонтроль перестаёт применяться, если в новом релизе типовая процедура изменилась. После каждого обновления проверяйте, что все расширения подключены без ошибок.
Синтаксис языка 1С и инструменты разработчика
Язык 1С — объектный, со строгой привязкой к метаданным конфигурации. Синтаксис русскоязычный, но у каждого оператора есть английский вариант: Если … Тогда … КонецЕсли и If … Then … EndIf равнозначны.
Особенности, которые замечает любой, кто пришёл из других языков:
- 🧱 Готовые прикладные типы. Справочник, документ, регистр, план счетов уже умеют храниться в базе и показываться в формах.
- 🖥️ Клиент и сервер в одном модуле. Директивы
&НаКлиенте,&НаСервере,&НаСервереБезКонтекстазадают, где выполнится процедура. Лишние серверные вызовы — главная причина медленных форм. - 🔤 Динамическая типизация. Переменная может хранить значение любого типа, тип проверяется при выполнении.
- 🗄️ Транзакции и блокировки управляются платформой; программист указывает управляемые блокировки там, где важен порядок списания остатков.
- 📚 Библиотека стандартных подсистем (БСП) — набор готовых модулей, на котором построены типовые решения. Знать её функции не менее важно, чем сам язык.
Где пишут код
| Инструмент | Для чего |
|---|---|
| Конфигуратор | Классическая среда: метаданные, модули, формы, отладка |
| 1С:EDT (Enterprise Development Tools) | Среда на базе Eclipse: проверки кода, работа с Git, рефакторинг |
| Отладчик | Пошаговое выполнение, точки останова, просмотр значений |
| Замер производительности | Показывает, какие строки кода тормозят |
Конфигуратор открывается из окна запуска кнопкой «Конфигуратор» или командой 1cv8.exe DESIGNER /F"C:\Base". Для командной разработки чаще выбирают EDT и Git, для небольших доработок хватает Конфигуратора и хранилища конфигурации.
Когда программировать не нужно
Часть задач, с которыми идут к программисту, решается настройкой. Это дешевле и не ломается при обновлении.
Что обычно можно сделать без кода в типовых конфигурациях на БСП:
- ⚙️ добавить свой реквизит в справочник или документ — через «Дополнительные реквизиты и сведения» (
Администрирование → Общие настройки); - 📊 изменить отчёт — отборы, группировки, колонки в настройках варианта отчёта;
- 📧 настроить рассылку отчётов по расписанию;
- 🔐 разграничить права — через профили групп доступа;
- 🔄 типовой обмен между Бухгалтерией и УТ/ERP — через готовую синхронизацию данных.
Спрос на разработчиков 1С и куда развивается профессия
Платформу 1С используют сотни тысяч организаций, и почти каждой рано или поздно нужна доработка или поддержка. Поэтому программисты 1С стабильно нужны франчайзи, крупным компаниям с собственными ИТ-отделами и интеграторам ERP.
Ориентиры по зарплатам в вакансиях (примерно, сильно зависит от региона и формата работы):
| Уровень | Что умеет | Ориентир, ₽/мес |
|---|---|---|
| Стажёр, младший | Отчёты, печатные формы, простые обработки | ~60–110 тыс. |
| Средний | Расширения, обмены, оптимизация запросов | ~150–250 тыс. |
| Ведущий, архитектор | Крупные внедрения ERP, высокая нагрузка | от ~300 тыс. |
Что ценится на рынке сейчас:
- 🎓 сертификаты фирмы 1С — «1С:Профессионал» и «1С:Специалист» по платформе и конфигурациям;
- 🧠 понимание учёта: программист, который знает проводки и закрытие месяца, делает доработку быстрее и с меньшим числом итераций;
- 🔗 интеграции и REST API, работа с JSON;
- 🛠️ EDT, Git, автоматические проверки кода;
- ⚡ оптимизация производительности: блокировки, планы запросов, нагрузка на сервер.
Язык развивается вместе с платформой: появляются новые методы для работы с HTTP и JSON, асинхронные вызовы (Асинх, Ждать), мобильная платформа и веб-клиент. Знание языка 1С остаётся узкоспециальным навыком, но на российском рынке учётных систем у него мало альтернатив.