Как программировать в «1С:Предприятии»: стартовый гайд для начинающих
Расскажем о системе «1С:Предприятие», её встроенном языке, визуальном конструировании и вообще о том, как проходит разработка в «1С».
Иллюстрация: Оля Ежак для Skillbox Media
Программы «1С» позволяют быстро и недорого решать экономические задачи: считать зарплату и налоги, вести бухгалтерский учёт и документооборот, контролировать расчёты с клиентами и подрядчиками, формировать отчётность и многое другое.
Но «1С» — это не просто набор готовых программ. Это ещё и среда разработки, которая позволяет гибко настраивать конфигурации под задачи разных компаний. В этой статье расскажем об основных нюансах разработки под «1С», создадим первую конфигурацию и напишем код на встроенном языке.
Содержание:
- Что такое «1С» и из чего она состоит
- Немного о встроенном языке
- Создаём первую конфигурацию
- Справочники
- Документы
- Конструктор формы
- Общие модули
- Регистры
- Отчёты
- Заключение
Что такое «1С» и из чего она состоит
«1С:Предприятие» — это система для автоматизации деятельности предприятий. С её помощью можно рассчитать бизнес-процессы в компаниях любого масштаба и направления: в небольших фирмах и огромных холдингах, на оптовых складах и в интернет-магазинах, на сельхозпредприятиях и так далее.
Система состоит из двух основных частей — технологической платформы и конфигураций.
Платформа. Это одновременно и среда разработки, и среда выполнения. Она содержит собственный язык программирования, IDE для разработчика, приложение для администрирования и многое другое. Разработкой платформы занимается сама компания «1С» — она регулярно выпускает новые версии. На сегодняшний день самая актуальная версия платформы — 8.3.
Конфигурации. Прикладные решения, которые не могут работать сами по себе, без платформы. Они предназначены для решения учётных задач: ведения бухгалтерии, расчёта зарплаты, учёта на складах и многих других. Компания «1С» создаёт и поддерживает конфигурации, которые называются типовыми.
Вот примеры некоторых популярных конфигураций:
- «1С:Бухгалтерия предприятия» — предназначена для ведения бухгалтерского и налогового учёта.
- «1С:Зарплата и управление персоналом» — для расчёта зарплаты и кадрового учёта.
- «1С:Управление торговлей» — для учёта на складах и в магазинах, «1С:Розница» — для автоматизации розничных торговых точек.
Помимо стандартных конфигураций есть множество отраслевых решений, например «1С:Общепит», «1С:Салон красоты», «1С:Хлебозавод» и другие. Большинство продуктов «1С» поставляются с открытым исходным кодом, поэтому их можно редактировать, дополнять новыми функциями, изменять алгоритмы. Таким образом можно создавать продукты, точно учитывающие бизнес-процессы в каждой компании.
Конфигурации «1С» можно разрабатывать с нуля, а можно взять готовую и настроить под свои задачи.
Но сами по себе конфигурации не содержат данных — это лишь описания объектов и алгоритмов их взаимодействия. Для того чтобы пользователи могли работать, платформа создаёт информационную базу, то есть по описанию формирует таблицы и связи между ними.
Информационная база содержит конфигурацию и данные, которые добавляют пользователи. Она работает под управлением платформы, причём на одной платформе может быть установлено несколько информационных баз, созданных на основе разных конфигураций.
«1С» поддерживает различные СУБД, в том числе Microsoft SQL Server, PostgreSQL, IBM Db2 и Oracle Database. Их выбирают при установке программы, а программист при написании кода об этом не думает.
Решения «1С» — мультиплатформенные, то есть их можно запускать на разных операционных системах: Windows, macOS, Linux, а также в браузере. Можно интегрировать их с внешними базами, веб-сервисами и мессенджерами. Можно писать приложения под Android и iOS.
В «1С» есть много разных возможностей: видеозвонки, встроенные чаты, демонстрация экрана, инструменты построения многоязычного интерфейса для тиражирования своего продукта и многое другое. Всё это можно использовать в своих приложениях.
Для разработчиков на 1С есть большое количество обучающих материалов: статей, видео, телеграм-каналов, а также готового кода. Так, на официальном ресурсе «1С:ИТС» есть подробные материалы по работе с 1С.
1С: что это за язык программирования
Язык программирования 1С — встроенный язык платформы «1С:Предприятие». Он предметно-ориентированный, то есть на нём нельзя писать сайты и игры, но можно быстро и экономично автоматизировать бухгалтерский и налоговый учёт, учёт на складах, разработать CRM-систему и делать многое другое.
Встроенный язык поддерживает механизм ООП, но в довольно урезанном виде: есть строгий набор классов с заданными свойствами и методами, например Справочники, Документы, Регистры, Отчёты, Обработки. Новые классы создавать нельзя, но для разработки достаточно и тех, что есть.
По синтаксису язык 1С напоминает Pascal и BASIC в сочетании с языком запросов T-SQL, хотя его нельзя назвать их аналогом. Писать код в «1С» можно на двух языках — русском и английском. Программисты, как правило, предпочитают русский. На него быстро переходят и те, кто раньше программировал на английском, — так понятнее.
Русскоязычный синтаксис стал стандартом в системе «1С». На нём написаны все конфигурации, а также множество дополнительных отчётов и обработок.
При разработке программисты не только пишут код, но и используют визуальное конструирование — это ускоряет разработку. С помощью визуальных редакторов создают новые объекты, настраивают их свойства, разрабатывают формы представления в интерфейсе и связи с другими объектами. А 1С выступает как скриптовый язык, на котором пишутся и дорабатываются методы объектов и обработки событий.
Создаём первую конфигурацию
С терминами вроде разобрались — настало время перейти к практике. Чтобы лучше разобраться в нюансах платформы, создадим небольшую конфигурацию — назовём её «Учёт товаров на складе». Для этого скачаем бесплатный дистрибутив для обучения с официального сайта «1С» и установим его на компьютер — есть версии для Linux, macOS и Windows.
А теперь запустим программу. Сразу видим, что программа установки создала две учебные базы. Но так как мы хотим создать конфигурацию с нуля, нажимаем на кнопку Добавить.
В открывшемся окне выбираем Создание новой информационной базы и нажимаем кнопку Далее.
Программа предложит создать базу по шаблону «Бухгалтерия предприятия», но мы выбираем Создание информационной базы без конфигурации и нажимаем кнопку Далее.
Вводим название информационной базы: Учёт товаров на складе. Нажимаем Далее.
Выбираем каталог, в котором будет находиться наша информационная база, и нажимаем Далее.
Оставляем параметры по умолчанию и нажимаем кнопку Готово.
Открылось окно запуска «1С:Предприятия».
Информационную базу можно запускать в двух режимах:
- 1С:Предприятие — пользовательский режим. В нём пользователи работают с данными и формируют отчёты.
- Конфигуратор — режим для разработчика. В нём создаются прикладные решения на встроенном языке и выполняется администрирование информационной базы.
Так как наша задача — попробовать свои силы в разработке конфигураций, запускаем базу в режиме Конфигуратор. Когда программа запустится, в главном меню выбираем Конфигурация > Открыть конфигурацию.
Открывается дерево конфигурации. Здесь находятся все классы, на основании которых можно создавать объекты, — например, документы, отчёты, справочники, обработки и так далее.
Теперь давайте дадим имя нашей конфигурации. Для этого дважды кликаем по корневому элементу с надписью Конфигурация. После этого откроется палитра свойств, где можно добавить новое имя и его синоним.
Синонимы отображаются в формах, отчётах и других элементах интерфейса, поэтому они должны осмысленно и кратко описывать объекты конфигурации. Имя объекта обычно строят на основе синонима: пробелы и другие недопустимые символы удаляют, а первые буквы слов делают прописными.
Мы видим, что в заголовке окна дерева конфигурации появился знак *. Это знак того, что в нашу конфигурацию внесены изменения. Чтобы сохранить их, нажимаем на значок дискеты.
Но этого недостаточно для того, чтобы изменения конфигурации были видны при работе в пользовательском режиме. Дело в том, что информационная база хранит как минимум две конфигурации:
- Основную — ту, с которой работает программист. Она не исполняется в пользовательском режиме.
- Конфигурацию базы данных. Она предназначена для пользователей и исполняется в режиме «1С:Предприятие».
Первую можно редактировать, а вторую — нельзя. Её можно только автоматически обновить на основании первой.
Видим, что в заголовке дерева конфигурации появился знак различия конфигураций — <!>. Это означает, что конфигурация базы данных отличается от основной. Чтобы внести в неё изменения, нужно нажать на иконку с бочонком, который отмечен на скриншоте.
Справочники
Справочники — это объекты конфигурации, которые используются для хранения данных, имеющих одинаковую структуру и списочный характер, — например, списки сотрудников, товаров, поставщиков и покупателей.
Давайте создадим в нашей конфигурации первый справочник — Организации. Он нам нужен для того, чтобы хранить реквизиты организации, для которой нужно организовать учёт. Эти реквизиты могут понадобиться для отчётности.
Кликаем правой кнопкой мыши по элементу Справочники и нажимаем на Добавить (или на клавишу Insert на клавиатуре).
Открылись два окна: редактор справочника и палитра свойств. Здесь мы можем редактировать свойства, события и методы — для удобства они сгруппированы по тематике.
Далее добавляем нашему справочнику реквизиты. Это поля, которые затем будут доступны пользователю в интерфейсе, — в них он будет заносить информацию об организациях.
У всех элементов справочников есть два обязательных реквизита — код и наименование. Наименование вводит пользователь, а код программа формирует автоматически. При этом она следит за тем, чтобы коды не дублировались в пределах одного справочника.
Добавим в справочнике реквизит Адрес, в котором будет храниться адрес организации. Он имеет тип Строка.
И второй реквизит — Дата регистрации, который имеет тип Дата. Здесь будет храниться дата регистрации организации.
В системе «1С» есть примитивные типы данных: Строка, Число, Дата, Булево и другие. Они определены на уровне платформы.
Создадим ещё один справочник под названием Склады. Он будет подчинён справочнику Организации — то есть у каждого элемента справочника Склад будет владелец — элемент справочника Организации.
Вот как выглядит настройка в редакторе:
Сохраняем изменения в основной конфигурации и конфигурации базы данных. Теперь заходим в информационную базу в пользовательском режиме — для этого нажимаем клавишу F5 и запускаем отладку.
Перед нами — интерфейс пользователя. Здесь пользователи могут самостоятельно настраивать внешний вид программы, задавать расположение панелей и разделов, использовать закладки. Для этого нужно в главном меню выбрать пункт Настройки.
Теперь откроем справочник Организации. Создадим и запишем элемент — ООО «Дом техники».
Мы видим, что программа автоматически сформировала всё, что нужно для работы со справочником: создала формы ввода и списка, добавила поля ввода на основании реквизитов, автоматически заполнила поле Код.
Если мы нажмем на кнопку Ещё, то появится меню с действиями, которые можно совершать с элементами:
Мы можем:
- Искать, добавлять, редактировать, копировать и удалять элементы справочника.
- Настраивать отборы, группировки, сортировки.
- Изменять внешний вид формы.
- Выводить список в табличный документ.
- Выбирать и сохранять настройки формы.
- Добавлять в избранное.
В форме элемента справочника Организации мы видим вкладку Склады. Здесь можно работать с элементами подчинённого справочника.
Элемент подчинённого справочника нельзя записать, если не определён владелец. Программа выдаст сообщение об ошибке.
Для учёта на складе нам понадобится ещё один справочник — Товары. Сделаем его иерархическим, чтобы можно было группировать товары по категориям. Для этого поставим флажок на вкладке Иерархия в редакторе справочника.
Сохраняем изменения и запускаем «1С:Предприятие». Далее открываем справочник Товары и создаём в нём группы — скажем, «Бытовая техника» и «Смартфоны». Внутри этих групп можно добавлять любые элементы, какие захотите. Чтобы не запутаться, выбираем иерархический режим просмотра справочника.
Документы
Помимо справочников для учёта на складе нам понадобятся документы. Это объекты, которые хранят информацию о хозяйственных операциях или других событиях на предприятии с привязкой ко времени.
В типовой конфигурации «1С:Управление торговлей» есть много документов для учёта товаров: приходные и расходные накладные, акты о перемещении, списании и других операциях с товарами. В нашей небольшой конфигурации мы будем использовать два документа: «Поступление товаров» и «Продажа товаров».
У каждого документа есть обязательные реквизиты: номер, дата и время. В «1С» есть режим автоматической нумерации, при котором система сама генерирует номера для новых документов и следит, чтобы они не повторялись.
Создадим документ ПоступлениеТоваров, который отражает операцию поступления товаров на склад.
Добавим в документ реквизит Склад (тип СправочникСсылка.Склады).
СправочникСсылка.Склады — это прикладной тип данных. Такие типы не определяются на платформе, а образуются в конкретном прикладном решении.
Выражение СправочникСсылка.Склады означает: в базе данных с документами типа ПоступлениеТоваров, в поле Склад будет храниться не вся информация о складе, а лишь ссылка на соответствующую запись в справочнике Склады.
Это видно на рисунке:
Также добавим табличную часть Товары. Чтобы это сделать, нужно раскрыть иерархию документа, кликнуть правой кнопки мыши на пункт Табличные части и нажать Добавить. Следом задаём нашей табличке реквизиты Количество, Цена и Сумма с типом неотрицательное число, длина 10, точность 2.
Вуаля! Теперь у нас есть таблица со всеми поступающими и убывающими товарами на складе. В конфигураторе документ будет выглядеть так:
Теперь запустим пользовательский режим «1С:Предприятия» с помощью всё той же клавиши F5. Создадим документ «Поступление товаров» и заполним реквизиты.
В нашей табличке появилась первая запись. Но есть один нюанс: при вводе количества и цены Сумма не считается автоматически, а нас это не устраивает. Чтобы это исправить, надо будет запустить конструктор формы документа и написать код — о том, как это сделать, расскажем в следующем разделе.
Конструктор формы
Конструктор формы объекта (например, документа) позволяет создавать формы, которые будут работать в интерфейсе пользователя для отображения этого объекта. Конструктор запускается автоматически при создании новой формы.
Настроим в конфигураторе форму нашего документа ПоступлениеТоваров. Для этого выделим в меню документа элемент Форма и нажмём клавишу Добавить. Запустится окно конструктора формы.
Нажмем кнопку Далее.
В окне конструктора выбираем элементы, которые будут располагаться в интерфейсе формы.
После того как мы нажмём Готово, откроется окно редактора форм. Видим, что он автоматически создал форму объекта документа ПоступлениеТоваров и расположил на ней поля для ввода значений реквизитов.
Теперь нам нужно написать скрипт, который будет автоматически пересчитывать Сумму при изменении значений элементов Количество или Цена. Для этого дважды кликнем по полю Количество и войдём в палитру свойств объекта. Выберем обработчик события ПриИзменении.
Создаём обработчик события по умолчанию на клиенте. «На клиенте» означает, что код будет работать только на компьютере пользователя, без передачи вычислений на сервер. В нашем случае это логично, так как скрипт будет работать только в приложении пользователя для более полного и удобного отображения данных.
Открывается модуль формы с автоматически созданной процедурой.
Проделаем то же самое с элементом формы Цена и получим ещё одну автоматически созданную процедуру.
Добавим в обе процедуры одинаковый код — формулу расчёта стоимости товара:
Упростим код — вынесем расчёт суммы в отдельную процедуру РассчитатьСумму ():
Теперь, если мы запустим программу в пользовательском режиме, то увидим, что сумма заполняется автоматически при изменении значений в полях ввода Количество и Цена. Двигаемся дальше.
Далее нам понадобится ещё один документ для учёта — ПродажаТоваров. Структура и процедуры в модуле формы у него будут те же самые, что и у документа ПоступлениеТоваров — попробуйте создать его самостоятельно по аналогии, чтобы отточить полученные знания.
Общие модули
Теперь в документах ПоступлениеТоваров и ПродажаТоваров появились две одинаковые процедуры: РассчитатьСумму (). Но, как мы помним, согласно принципу DRY, дублирование кода — это совсем не здорово. Поэтому, чтобы не повторяться, вынесем процедуру в общий модуль.
Общие модули — это объекты конфигурации, в которых можно хранить процедуры, вызываемые в нескольких местах программы.
Перейдём в ветку Общие дерева конфигурации и создадим общий модуль под названием ОбщиеМодулиДокументов.
Добавим в него процедуру РассчитатьСумму () и немного изменим её.
В примере выше мы сделали процедуру экспортной, чтобы её можно было вызывать из любого места программы.
А в модулях форм обоих документов изменим код следующим образом:
Запишем изменения конфигурации. Запустим «1С:Предприятие» в режиме пользователя и создадим новый документ «Продажа товаров».
Теперь настроим движения документов по регистрам.
Регистры
Регистры — это объекты конфигурации, выполненные в виде таблиц с колонками и строками, наподобие таблиц Excel. В них записываются все процессы, которые происходят с документом, и на основе этих записей потом формируются отчёты. Этот процесс в «1С» называется движением по регистрам. Запускается он прямо из документа с помощью кнопки Провести.
Зачем нужны регистры
Дело в том, что брать данные напрямую из документов неэффективно. Каждый раз при формировании отчёта программе понадобилось бы перебирать все документы, извлекать и обрабатывать данные, что занимает много времени. Использование регистров в «1С» позволяет хранить и систематизировать полученную информацию, а в случае необходимости быстро извлекать её и выводить в отчёт.
В «1С» версии 8.3 есть четыре вида регистров:
- Регистры сведений — самые простые. В отличие от других регистров, данные в них можно записывать без документа-регистратора.
- Регистры бухгалтерии предназначены для хранения данных о бухгалтерских проводках в конфигурациях, связанных с бухучётом.
- Регистры расчёта используются для сложных периодических расчётов, например расчёта заработной платы и других выплат сотрудникам.
- Регистры накопления состоят из двух таблиц Остатки и Обороты. Первая используется для получения информации о данных на текущий момент, а вторая — о данных за период.
В регистрах накопления можно «накапливать» данные в разрезе нескольких измерений. Рассмотрим это на примере. Создадим регистр накопления.
Назовём его ОстаткиТоваров.
Зададим измерения:
- Склад (тип — СправочникСсылка.Склады);
- Товар (тип — СправочникСсылка.Товары).
Зададим ресурсы:
- Количество (тип — неотрицательное число, длина 10, точность 2). Здесь будет накапливаться количество товаров.
- Сумма (тип — неотрицательное число, длина 10, точность 2). Здесь будет накапливаться стоимость товаров.
Чтобы сформировать движения регистра, перейдём в документ ПоступлениеТоваров. Кликнем правой кнопкой мыши по наименованию и выберем конструктор движений.
Настроим его так:
Теперь откроем модуль документа ПоступлениеТоваров»:
Мы видим, что программа автоматически создала процедуру проведения документа:
Похожим образом настроим документ ПродажаТоваров, только поставим в конструкторе тип движения Расход.
В модуле документа программа автоматически создаст код:
Запустим «1С:Предприятие» и проведём созданные ранее документы. Теперь в регистре Остатки товаров мы видим их движения — то есть все изменения, которые происходят с элементами документа.
В этом примере движения документа «Поступление товаров» обозначаются зелёным знаком +, а «Продажа товаров» — красным знаком –.
Отчёты
Сформируем отчётность по складам, чтобы можно было узнать, сколько товара поступило и было продано за определённый промежуток времени.
Здесь мы будем использовать один из важнейших механизмов платформы «1С» — схему компоновки данных. Она предназначена для построения отчётов со сложной структурой (настройками, детализацией и свёрткой, группировкой и отборами) на основе их декларативного описания.
Благодаря этой системе разработчику не нужно писать программный код — он задаёт желаемый результат с помощью настроек в конструкторе, а система автоматически генерирует выходную форму. А пользователь, в свою очередь, может гибко настроить отчёт под свои нужды.
Создадим объект Отчёт.
Назовем его ОтчётПоТоварам.
Нажимаем на кнопку Открыть схему компоновки данных.
Нажимаем на кнопку Готово и переходим в конструктор макета.
Создаём набор данных Запрос.
Нажимаем на кнопку Конструктор запроса.
В качестве источника данных для отчёта выбираем виртуальную таблицу ОстаткиТоваров.ОстаткиИОбороты и переносим в окно Поля реквизиты, которые нужны для нашего отчёта. Нажимаем ОК.
Мы видим, что программа автоматически сгенерировала текст запроса. Теперь переключаемся на вкладку Настройки.
Выбираем нужные поля и создаём группировку Склад.
Мы можем также настроить отбор по полям Склад и Товар.
И сортировку по тем же полям.
Перейдём на вкладку Другие настройки и создадим заголовок отчёта.
Сохраним изменения и запустим информационную базу в пользовательском режиме программы «1С:Предприятие».
Работа с отчётом в интерфейсе пользователя
Вызовем отчёт Остатки товаров. Выберем даты начала и окончания периода отслеживания. Нажмём кнопку Сформировать.
Также мы можем перейти в настройки отчёта и сделать, например, отбор по какому-то отдельному складу.
В результате получим отчёт только по «Складу1»:
Что в итоге
Эта статья — стартовый гайд по основным нюансам разработки в «1С». Мы создали с нуля небольшую конфигурацию и на её примере показали, как можно визуально конструировать основные объекты «1С». Написали несколько процедур на встроенном языке и создали отчёт с использованием схемы компоновки данных.
Этого набора знаний хватит, чтобы создавать простые решения с нехитрой бизнес-логикой. Если подумываете заняться «1С» профессионально, советуем чуть глубже изучить официальную документацию к платформе. А если хотите освоить разработку быстро, на реальных кейсах, да ещё и с сертификатом от «1С» на выходе — приходите на курс «Профессия 1С-разработчик».