Что компания получает от встроенного языка 1С: задачи, примеры, ограничения

· 9 мин

Содержание

Язык программирования 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. Добавить новые реквизиты, справочники, документы, отчёты.
  2. Изменить форму: добавить поле, кнопку, вкладку.
  3. Вмешаться в типовую процедуру с помощью аннотаций &Перед, &После, &Вместо, &ИзменениеИКонтроль.
  4. Добавить свои роли и права.

Пример: дополнить типовую проверку своей логикой, не трогая оригинал.

&После("ОбработкаПроверкиЗаполнения")
Процедура МоёРасширение_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	Если Не ЗначениеЗаполнено(Договор) Тогда
		Отказ = Истина;
	КонецЕсли;
КонецПроцедуры
Способ доработкиОбновление типовойРиски
Настройка без кодаБез проблемОграничены возможностями программы
Внешняя обработкаБез проблем, иногда нужна проверкаМожет сломаться после смены структуры
РасширениеОбычно автоматическиПерехваченная процедура могла измениться в новом релизе
Снятие с поддержки и правка кодаСравнение и объединение вручнуюДолго и дорого при каждом обновлении

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

Синтаксис языка 1С и инструменты разработчика

Язык 1С — объектный, со строгой привязкой к метаданным конфигурации. Синтаксис русскоязычный, но у каждого оператора есть английский вариант: Если … Тогда … КонецЕсли и If … Then … EndIf равнозначны.

Особенности, которые замечает любой, кто пришёл из других языков:

  • 🧱 Готовые прикладные типы. Справочник, документ, регистр, план счетов уже умеют храниться в базе и показываться в формах.
  • 🖥️ Клиент и сервер в одном модуле. Директивы &НаКлиенте, &НаСервере, &НаСервереБезКонтекста задают, где выполнится процедура. Лишние серверные вызовы — главная причина медленных форм.
  • 🔤 Динамическая типизация. Переменная может хранить значение любого типа, тип проверяется при выполнении.
  • 🗄️ Транзакции и блокировки управляются платформой; программист указывает управляемые блокировки там, где важен порядок списания остатков.
  • 📚 Библиотека стандартных подсистем (БСП) — набор готовых модулей, на котором построены типовые решения. Знать её функции не менее важно, чем сам язык.

Где пишут код

ИнструментДля чего
КонфигураторКлассическая среда: метаданные, модули, формы, отладка
1С:EDT (Enterprise Development Tools)Среда на базе Eclipse: проверки кода, работа с Git, рефакторинг
ОтладчикПошаговое выполнение, точки останова, просмотр значений
Замер производительностиПоказывает, какие строки кода тормозят

Конфигуратор открывается из окна запуска кнопкой «Конфигуратор» или командой 1cv8.exe DESIGNER /F"C:\Base". Для командной разработки чаще выбирают EDT и Git, для небольших доработок хватает Конфигуратора и хранилища конфигурации.

Когда программировать не нужно

Часть задач, с которыми идут к программисту, решается настройкой. Это дешевле и не ломается при обновлении.

Что обычно можно сделать без кода в типовых конфигурациях на БСП:

  • ⚙️ добавить свой реквизит в справочник или документ — через «Дополнительные реквизиты и сведения» (Администрирование → Общие настройки);
  • 📊 изменить отчёт — отборы, группировки, колонки в настройках варианта отчёта;
  • 📧 настроить рассылку отчётов по расписанию;
  • 🔐 разграничить права — через профили групп доступа;
  • 🔄 типовой обмен между Бухгалтерией и УТ/ERP — через готовую синхронизацию данных.
Нужен ли вашей задаче программист 1С?

Спрос на разработчиков 1С и куда развивается профессия

Платформу 1С используют сотни тысяч организаций, и почти каждой рано или поздно нужна доработка или поддержка. Поэтому программисты 1С стабильно нужны франчайзи, крупным компаниям с собственными ИТ-отделами и интеграторам ERP.

Ориентиры по зарплатам в вакансиях (примерно, сильно зависит от региона и формата работы):

УровеньЧто умеетОриентир, ₽/мес
Стажёр, младшийОтчёты, печатные формы, простые обработки~60–110 тыс.
СреднийРасширения, обмены, оптимизация запросов~150–250 тыс.
Ведущий, архитекторКрупные внедрения ERP, высокая нагрузкаот ~300 тыс.

Что ценится на рынке сейчас:

  • 🎓 сертификаты фирмы 1С — «1С:Профессионал» и «1С:Специалист» по платформе и конфигурациям;
  • 🧠 понимание учёта: программист, который знает проводки и закрытие месяца, делает доработку быстрее и с меньшим числом итераций;
  • 🔗 интеграции и REST API, работа с JSON;
  • 🛠️ EDT, Git, автоматические проверки кода;
  • ⚡ оптимизация производительности: блокировки, планы запросов, нагрузка на сервер.

Язык развивается вместе с платформой: появляются новые методы для работы с HTTP и JSON, асинхронные вызовы (Асинх, Ждать), мобильная платформа и веб-клиент. Знание языка 1С остаётся узкоспециальным навыком, но на российском рынке учётных систем у него мало альтернатив.

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

Можно ли написать на языке 1С программу, не связанную с учётом?
Можно, но это неудобно. Язык заточен под прикладные объекты платформы — справочники, документы, регистры. Игры или драйверы на нём не пишут.
Нужно ли менять типовую конфигурацию, чтобы добавить свою логику?
Обычно нет. Начиная с платформы 8.3.6 доработку выносят в расширение, а типовая остаётся на поддержке и обновляется штатно.
Сколько времени нужно, чтобы начать писать на языке 1С?
Простые отчёты и печатные формы осваивают за несколько месяцев практики. Уверенная работа с обменами и производительностью требует года-двух реальных проектов.
Можно ли писать код на английском?
Да. У каждого оператора и метода есть английский синоним, а в свойствах конфигурации есть параметр «Вариант встроенного языка». Типовые конфигурации написаны на русском варианте.
Подходит ли язык 1С бухгалтеру, который хочет автоматизировать свою работу?
Да, для отчётов и обработок. Знание учёта здесь преимущество: бухгалтер лучше понимает, какие данные и проводки нужны.