Разработка в системе 1С:Предприятие открывает широкие возможности для автоматизации бизнес-процессов, но многим новичкам сложно понять, с чего начать. Эта статья поможет разобраться в основах программирования на платформе 1С 8.3, даже если вы никогда раньше не писали код. Мы рассмотрим все этапы — от установки среды разработки до создания первых работающих модулей.
Важно понимать, что 1С — это не просто язык программирования, а целая экосистема с уникальным подходом. Здесь сочетаются визуальное конфигурирование (работа с объектами через конструкторы) и написание кода на встроенном языке. Такой гибридный подход позволяет быстро создавать приложения для учета, торговли или производства без глубоких знаний классического программирования.
В этой статье вы найдете не только теорию, но и практические примеры с пояснениями. Мы разберем, как работать с основными объектами 1С, писать обработки событий, создавать отчеты и избегать типичных ошибок. А в конце — ответы на частые вопросы, которые возникают у начинающих разработчиков.
Подготовка рабочей среды: что нужно для старта
Прежде чем приступить к написанию программ, необходимо правильно настроить рабочее окружение. Для разработки в 1С вам потребуется:
- 💻 Платформа 1С:Предприятие 8.3 (последняя версия) — основа, на которой работают все конфигурации
- 📁 Конфигурация — готовая или пустая база, в которой вы будете разрабатывать (например, "Управление торговлей" или "Бухгалтерия предприятия")
- 🔧 Режим "Конфигуратор" — специальный интерфейс для программистов и администраторов
- 📚 Документация — справочник по встроенному языку и синтаксис-помощник (входит в поставку платформы)
Скачать дистрибутив платформы можно с официального сайта 1С (требуется лицензия или учебная версия). Для обучения подойдет бесплатная учебная версия с ограничением по количеству объектов. Установите платформу, затем создайте новую информационную базу через 1С:Предприятие → Добавить → Создание новой информационной базы.
После установки запустите базу в режиме Конфигуратор — это ваш основной инструмент. Здесь вы будете:
- 🔹 Создавать и редактировать объекты конфигурации (справочники, документы, отчеты)
- 🔹 Писать программный код в модулях объектов
- 🔹 Отлаживать и тестировать разработанные решения
- 🔹 Управлять версиями и обновлениями
⚠️ Внимание: Работая в Конфигураторе, регулярно сохраняйте изменения черезФайл → Сохранить конфигурациюили горячие клавишиCtrl+S. При аварийном закрытии программы несохраненные данные могут быть утеряны без возможности восстановления.
Основы встроенного языка 1С: синтаксис и конструкции
Язык программирования 1С внешне напоминает Pascal или Basic, но имеет уникальные особенности, связанные с работой с объектами платформы. Давайте разберем ключевые элементы, без которых не обходится ни одна программа:
| Конструкция | Пример | Назначение |
|---|---|---|
| Переменные | Перем МояПеременная; |
Объявление переменной (типизация не обязательна) |
| Условия | Если Условие Тогда ... Иначе ... КонецЕсли; |
Ветвление кода по условию |
| Циклы | Для Каждого Элемент Из Коллекция Цикл ... КонецЦикла; |
Перебор элементов коллекции |
| Процедуры/Функции | Процедура МояПроцедура() ... КонецПроцедуры |
Создание многократно используемых блоков кода |
| Работа с объектами | Док = Документы.ЗаказКлиента.СоздатьДокумент(); |
Создание и манипуляция объектами базы |
Особое внимание уделите работе с контекстом выполнения. В 1С многие объекты (например, формы или документы) имеют свои модули, где доступны специфические методы и свойства. Например, в модуле документа вы можете обращаться к его реквизитам напрямую, а в общем модуле придется явно указывать объект.
Используйте Синтакс-Помощник (вызывается по Ctrl+Shift+Пробел) для быстрого доступа к списку доступных методов и свойств текущего объекта. Это сэкономит время на поиск нужных функций в документации.
Пример простейшей процедуры, которая создает новый документ "Заказ клиента" и заполняет его реквизиты:
Процедура СоздатьНовыйЗаказ()
Заказ = Документы.ЗаказКлиента.СоздатьДокумент();
Заказ.Дата = ТекущаяДата();
Заказ.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Розница");
Заказ.СуммаДокумента = 10000;
Заказ.Записать();
КонецПроцедуры
Создание первого модуля: пошаговая инструкция
Теперь перейдем к практике и создадим простой, но рабочий модуль. Возьмем за основу задачу: при проведении документа "Заказ покупателя" автоматически формировать сообщение в журнал регистрации.
Создать новую конфигурацию или открыть существующую|Открыть объект "Документ.ЗаказПокупателя" в дереве конфигурации|Перейти на вкладку "Модуль объекта"|Проверить права доступа к объекту-->
Шаг 1. Откройте в Конфигураторе дерево объектов и найдите Документы → ЗаказПокупателя. Дважды кликните, чтобы открыть свойства документа.
Шаг 2. Перейдите на вкладку Модуль объекта и вставьте следующий код в процедуру ОбработкаПроведения:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("Документ %1 от %2 проведен на сумму %3",
ЭтотОбъект.Номер,
ЭтотОбъект.Дата,
ЭтотОбъект.СуммаДокумента);
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
Шаг 3. Сохраните модуль (Ctrl+S) и обновите конфигурацию базы данных через Конфигурация → Обновить конфигурацию базы данных.
Шаг 4. Перейдите в режим 1С:Предприятие, создайте новый заказ покупателя, заполните реквизиты и проведите документ. Вы должны увидеть всплывающее сообщение с информацией о проведенном документе.
⚠️ Внимание: При работе с модулями объектов помните о контексте выполнения. В процедуреОбработкаПроведениядоступна переменнаяЭтотОбъект, которая ссылается на текущий документ. В других контекстах (например, в общем модуле) придется передавать объект как параметр.
Работа с данными: справочники, документы, регистры
Основу любой программы в 1С составляют объекты конфигурации, которые хранят и обрабатывают данные. Разберем ключевые типы объектов и способы работы с ними:
- 📋 Справочники — используются для хранения нормативно-справочной информации (контрагенты, номенклатура, сотрудники). Пример обращения:
Контрагент = Справочники.Контрагенты.СоздатьЭлемент();Контрагент.Наименование = "ООО Новый партнер";
Контрагент.ИНН = "1234567890";
Контрагент.Записать();
- 📄 Документы — фиксируют факты хозяйственной деятельности (заказы, платежи, поступления). Особенность: имеют проводки по регистрам.
Поступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();Поступление.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Поставщик1");
Поступление.Добавить();
ТоварнаяПозиция = Поступление.Товары.Добавить();
ТоварнаяПозиция.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Товар1");
ТоварнаяПозиция.Количество = 10;
Поступление.Записать();
- 📊 Регистры — хранят данные для аналитики (остатки, обороты). Работа с ними обычно ведется через документы:
Движение = Движения.ТоварыНаСкладах.Добавить();Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = Номенклатура;
Движение.Количество = Количество;
Критическая особенность 1С: все изменения данных должны проходить через транзакции. Если вы вручную создаете несколько связанных объектов (например, документ и его проводки), обязательно используйте конструкцию НачатьТранзакцию()/ЗафиксироватьТранзакцию(), чтобы избежать рассинхронизации данных при ошибках.
Что такое транзакции и почему они важны?
В 1С транзакция — это механизм, который гарантирует, что несколько операций с базой данных будут выполнены как единое целое. Если в процессе выполнения произойдет ошибка, все изменения будут отменены (откат транзакции). Это предотвращает ситуации, когда, например, документ записан, а его проводки по регистрам — нет. Всегда используйте транзакции при массовых операциях с данными или когда создаете связанные объекты.
Отладка и поиск ошибок
Даже опытные разработчики сталкиваются с ошибками, поэтому умение эффективно отлаживать код — один из самых важных навыков. В 1С для этого предусмотрены специализированные инструменты:
- 🐞 Отладчик — позволяет выполнять код по шагам, просматривать значения переменных и выражения. Запускается через
Отладка → Начать отладкуили клавишейF5. - 📝 Журнал регистрации — фиксирует все события системы, включая ошибки. Просматривается через
Администрирование → Журнал регистрации. - 🔍 Выражение — окно для выполнения произвольного кода в контексте текущей сессии (
Отладка → Вычислить выражениеилиCtrl+Alt+F8). - 📋 Точки останова — метки в коде, при достижении которых выполнение приостанавливается. Устанавливаются двойным кликом на сером поле слева от строки кода.
Типичные ошибки начинающих и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
Ошибка при вызове метода контекста (НетКонтекста) |
Попытка обратиться к свойству объекта вне его контекста | Передавайте объект как параметр или используйте правильный контекст |
Поле объекта не обнаружено (НеопределенноеПоле) |
Опечатка в названии реквизита или попытка обратиться к несуществующему полю | Проверьте имя реквизита в конфигураторе |
Тип не совместим (ОшибкаТипа) |
Попытка присвоить значение неверного типа (например, строку в числовое поле) | Используйте приведение типов или проверку через ТипЗнч() |
Нарушение прав доступа |
Текущему пользователю запрещена операция с объектом | Проверьте настройки прав в конфигураторе |
Если ошибка возникает при работе с базой данных, проверьте сначала целостность информационной базы через Администрирование → Тестирование и исправление. Часто повреждения данных становятся причиной неожиданных сбоев.
Пример отладки процедуры с ошибкой:
- Установите точку останова на строке, где предположительно возникает ошибка
- Запустите отладку (
F5) - Когда выполнение остановится, просмотрите значения переменных в окне
Отладка → Локальные переменные - Используйте
Шаг с заходом(F11), чтобы выполнить код построчно и найти место сбоя
Создание отчетов и обработок
Отчеты и обработки — это отдельные объекты конфигурации, которые позволяют расширять функциональность системы без изменения основных механизмов. Они создаются через Конфигурация → Объекты → Отчеты или Обработки.
Разница между ними:
- 📈 Отчеты — предназначены для вывода данных в удобном виде (таблицы, диаграммы, сводки). Имеют встроенный конструктор схемы компоновки данных.
- ⚙️ Обработки — универсальный инструмент для выполнения произвольных действий (импорт/экспорт данных, массовая обработка объектов).
Пример создания простого отчета "Топ продаж по номенклатуре":
- Создайте новый отчет через контекстное меню в дереве конфигурации
- В конструкторе схемы компоновки данных добавьте набор данных —
Запрос - Напишите текст запроса:
ВЫБРАТЬНоменклатура.Наименование КАК Номенклатура,
СУММА(Документ.Сумма) КАК СуммаПродаж
ИЗ
Документ.РеализацияТоваровУслуг КАК Документ
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Товары КАК Товары
ПО Документ.Ссылка = Товары.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
ПО Товары.Номенклатура = Номенклатура.Ссылка
ГДЕ
Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
Номенклатура.Наименование
УПОРЯДОЧИТЬ ПО
СуммаПродаж УБЫВ
- Добавьте параметры
НачалоПериодаиКонецПериодатипаДата - Настройте макет вывода — добавьте таблицу с колонками "Номенклатура" и "СуммаПродаж"
- Сохраните отчет и протестируйте его работу в режиме
1С:Предприятие
Конструктор схемы компоновки данных (СКД) — мощный инструмент, который позволяет создавать сложные отчеты без глубокого знания языка запросов. Используйте его для быстрой разработки типовых отчетов, а для нестандартных задач пишите собственные запросы.
Интеграция и обмен данными
Современные бизнес-системы редко работают изолированно. Часто требуется интеграция 1С с другими программами: сайтами, CRM, банковскими системами или государственными сервисами (например, для электронного документооборота). Основные способы обмена данными:
- 🔄 Файловый обмен — экспорт/импорт данных через файлы формата
XML,JSON,Excel. Прост в реализации, но требует ручного контроля. - 🌐 Web-сервисы — обмен данными по протоколу
HTTP(S)в форматеSOAPилиREST. Подходит для интеграции с внешними системами. - 📡 Прямое подключение к базе — через
OLE DBилиODBC. Используется для обмена с другими базами данных (например, MS SQL или PostgreSQL). - 📧 Электронная почта — автоматическая отправка/получение писем с вложениями через
Поп3/SMTP.
Пример кода для экспорта данных в JSON:
Процедура ЭкспортироватьДанныеВJSON()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.Наименование КАК Наименование,
| Товары.Цена КАК Цена
|ИЗ
| Справочник.Номенклатура КАК Товары";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
МассивДанных = Новый Массив;
Пока Выборка.Следующий() Цикл
Элемент = Новый Структура;
Элемент.Вставить("ID", Выборка.Ссылка.УникальныйИдентификатор());
Элемент.Вставить("Name", Выборка.Наименование);
Элемент.Вставить("Price", Выборка.Цена);
МассивДанных.Добавить(Элемент);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписьJSON.Записать(МассивДанных);
ТекстJSON = ЗаписьJSON.Закрыть();
ТекстJSON.Записать("C:\Export\товары.json", КодировкаТекста.UTF8);
КонецПроцедуры
⚠️ Внимание: При настройке интеграций через web-сервисы обязательно проверяйте настройки безопасности. Открытые endpoints без аутентификации могут стать уязвимостью для атак. ИспользуйтеHTTP-Сервисы 1Сс настройкой проверки подлинности или передавайте данные через защищенные каналы (HTTPS).
FAQ: ответы на частые вопросы
Могу ли я писать программы в 1С без знания программирования?
Да, частично. Платформа 1С позволяет создавать простые решения с помощью визуальных конструкторов (например, конструктор отчетов или конструктор движений документов). Однако для разработки сложной логики, интеграций или нестандартных отчетов без знания встроенного языка не обойтись. Начните с изучения основ синтаксиса и постепенно переходите к более сложным задачам.
Какой язык программирования используется в 1С?
В 1С:Предприятие используется собственный встроенный язык программирования, который не является диалектом какого-либо другого языка. Он имеет черты, схожие с Pascal (например, конструкции Если...Тогда или Для...Цикл), но содержит уникальные возможности для работы с объектами платформы (документами, справочниками, регистрами).
Где можно учиться программированию в 1С?
Официальные источники:
- Курсы в Учебном центре 1С (очные и онлайн)
- Документация в справочнике
Синтакс-помощник(входит в поставку платформы) - Книги издательства 1С-Паблишинг (например, "1С:Предприятие 8.3. Практическое пособие разработчика")
Неофициальные ресурсы:
- Форумы Infostart и 1С:Клуба программистов
- YouTube-каналы с уроками по 1С (например, "1С для начинающих")
- Телеграм-чаты и сообщества разработчиков
Как отладить код, если ошибка возникает только у пользователя?
В таких случаях поможет:
- Журнал регистрации — попросите пользователя сохранить лог ошибки (
Администрирование → Журнал регистрации → Сохранить) - Удаленная отладка — подключитесь к базе пользователя через
Конфигуратор → Администрирование → Удаленная отладка - Тестовый сценарий — попробуйте воспроизвести действия пользователя на тестовой базе
- Дополнительная диагностика — добавьте в код запись в журнал регистрации перед проблемным участком:
ЗаписьЖурналаРегистрации("Отладка", УровеньЖурналаРегистрации.Ошибка,, ,"Достигнута строка X. Значение переменной Y: " + ЗначениеВСтрокуВнутр(ПеременнаяY));
Можно ли писать программы в 1С на других языках (Python, JavaScript)?
Платформа 1С:Предприятие не поддерживает написание серверной логики на других языках — весь код должен быть на встроенном языке. Однако есть варианты интеграции:
- HTTP-Сервисы — можно вызывать внешние скрипты на Python или PHP через
HTTP-запросы - COM-объекты — подключение внешних библиотек (например, на C#) через
COM-соединение - Внешние обработки — написание клиентской логики на JavaScript для веб-клиента или мобильного приложения
Для серверных задач (например, обработка больших массивов данных) лучше использовать встроенные механизмы 1С или расширения на C# (доступно в последних версиях платформы).