Как программировать в «1С:Предприятии»: стартовый гайд для начинающих
Расскажем о системе «1С:Предприятие», её встроенном языке, визуальном конструировании и вообще о том, как проходит разработка в «1С».
![](https://248006.selcdn.ru/main/iblock/5ce/5ce7287ef2daad6758708284b34c520f/9a34dbbe3d903481506208010b77af0f.png)
![](https://248006.selcdn.ru/main/iblock/5ce/5ce7287ef2daad6758708284b34c520f/9a34dbbe3d903481506208010b77af0f.png)
Иллюстрация: Оля Ежак для 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.
А теперь запустим программу. Сразу видим, что программа установки создала две учебные базы. Но так как мы хотим создать конфигурацию с нуля, нажимаем на кнопку Добавить.
![](/upload/setka_images/16122504072023_5c20dcbcfbab07ab6c2df7e27444d5ac2afca569.png)
В открывшемся окне выбираем Создание новой информационной базы и нажимаем кнопку Далее.
![](/upload/setka_images/16122504072023_278cadb5c5a600fd354bbb4a32acf34407bf98f0.png)
Программа предложит создать базу по шаблону «Бухгалтерия предприятия», но мы выбираем Создание информационной базы без конфигурации и нажимаем кнопку Далее.
![](/upload/setka_images/16122604072023_bd473197c461193ea9b6d317f4c236910d065887.png)
Вводим название информационной базы: Учёт товаров на складе. Нажимаем Далее.
![](/upload/setka_images/16122604072023_e3039f248dd555899a396179b51a05be377f9973.png)
Выбираем каталог, в котором будет находиться наша информационная база, и нажимаем Далее.
![](/upload/setka_images/16122604072023_ee673444daa2c4c150863fb4fe2e59385df85324.png)
Оставляем параметры по умолчанию и нажимаем кнопку Готово.
![](/upload/setka_images/16122604072023_a3e9b924b0c79cb7169afa563a255fa0a5b1cadd.png)
Открылось окно запуска «1С:Предприятия».
![](/upload/setka_images/16122504072023_cae856732bd4226855875d839121e46dd85999a9.png)
Информационную базу можно запускать в двух режимах:
- 1С:Предприятие — пользовательский режим. В нём пользователи работают с данными и формируют отчёты.
- Конфигуратор — режим для разработчика. В нём создаются прикладные решения на встроенном языке и выполняется администрирование информационной базы.
Так как наша задача — попробовать свои силы в разработке конфигураций, запускаем базу в режиме Конфигуратор. Когда программа запустится, в главном меню выбираем Конфигурация > Открыть конфигурацию.
![](/upload/setka_images/16124604072023_073efc852a65b7685aeef7707c1c1bd107b26868.png)
Открывается дерево конфигурации. Здесь находятся все классы, на основании которых можно создавать объекты, — например, документы, отчёты, справочники, обработки и так далее.
![](/upload/setka_images/16130104072023_d0e289e355555cb39f9d7f499b6888c389473c54.png)
Теперь давайте дадим имя нашей конфигурации. Для этого дважды кликаем по корневому элементу с надписью Конфигурация. После этого откроется палитра свойств, где можно добавить новое имя и его синоним.
Синонимы отображаются в формах, отчётах и других элементах интерфейса, поэтому они должны осмысленно и кратко описывать объекты конфигурации. Имя объекта обычно строят на основе синонима: пробелы и другие недопустимые символы удаляют, а первые буквы слов делают прописными.
![](/upload/setka_images/16130104072023_26df41bdfacbababd13ce5a2ed7e751b3c19643a.png)
Мы видим, что в заголовке окна дерева конфигурации появился знак *. Это знак того, что в нашу конфигурацию внесены изменения. Чтобы сохранить их, нажимаем на значок дискеты.
![](/upload/setka_images/16130104072023_6451db2226570ea0b99a95968d54a6a08d58b1f8.png)
Но этого недостаточно для того, чтобы изменения конфигурации были видны при работе в пользовательском режиме. Дело в том, что информационная база хранит как минимум две конфигурации:
- Основную — ту, с которой работает программист. Она не исполняется в пользовательском режиме.
- Конфигурацию базы данных. Она предназначена для пользователей и исполняется в режиме «1С:Предприятие».
Первую можно редактировать, а вторую — нельзя. Её можно только автоматически обновить на основании первой.
Видим, что в заголовке дерева конфигурации появился знак различия конфигураций — <!>. Это означает, что конфигурация базы данных отличается от основной. Чтобы внести в неё изменения, нужно нажать на иконку с бочонком, который отмечен на скриншоте.
![](/upload/setka_images/16130104072023_79a3bf1b60dcd0c001f9454c21d4401a9576e013.png)
Справочники
Справочники — это объекты конфигурации, которые используются для хранения данных, имеющих одинаковую структуру и списочный характер, — например, списки сотрудников, товаров, поставщиков и покупателей.
Давайте создадим в нашей конфигурации первый справочник — Организации. Он нам нужен для того, чтобы хранить реквизиты организации, для которой нужно организовать учёт. Эти реквизиты могут понадобиться для отчётности.
Кликаем правой кнопкой мыши по элементу Справочники и нажимаем на Добавить (или на клавишу Insert на клавиатуре).
![](/upload/setka_images/16180504072023_44e69e18d5579b310b71a78d394ed8c7a91c182f.png)
Открылись два окна: редактор справочника и палитра свойств. Здесь мы можем редактировать свойства, события и методы — для удобства они сгруппированы по тематике.
![](/upload/setka_images/16182004072023_854dea6f537eb50a7df2fcca1a632655ba83fb34.png)
Далее добавляем нашему справочнику реквизиты. Это поля, которые затем будут доступны пользователю в интерфейсе, — в них он будет заносить информацию об организациях.
У всех элементов справочников есть два обязательных реквизита — код и наименование. Наименование вводит пользователь, а код программа формирует автоматически. При этом она следит за тем, чтобы коды не дублировались в пределах одного справочника.
Добавим в справочнике реквизит Адрес, в котором будет храниться адрес организации. Он имеет тип Строка.
![](/upload/setka_images/16182004072023_35e8ec2c216ebe3b8a886221f50a89fb11b30057.png)
И второй реквизит — Дата регистрации, который имеет тип Дата. Здесь будет храниться дата регистрации организации.
![](/upload/setka_images/16182004072023_977ecce833acf31fb612a48f20161dd32ced1cab.png)
В системе «1С» есть примитивные типы данных: Строка, Число, Дата, Булево и другие. Они определены на уровне платформы.
Создадим ещё один справочник под названием Склады. Он будет подчинён справочнику Организации — то есть у каждого элемента справочника Склад будет владелец — элемент справочника Организации.
Вот как выглядит настройка в редакторе:
![](/upload/setka_images/16182104072023_3511985f8d2fe60f5a689701dcfbe84110df1893.png)
Сохраняем изменения в основной конфигурации и конфигурации базы данных. Теперь заходим в информационную базу в пользовательском режиме — для этого нажимаем клавишу F5 и запускаем отладку.
![](/upload/setka_images/16182004072023_5df0b482fb1dc77b26b81c121d5af0d3e5869e14.png)
Перед нами — интерфейс пользователя. Здесь пользователи могут самостоятельно настраивать внешний вид программы, задавать расположение панелей и разделов, использовать закладки. Для этого нужно в главном меню выбрать пункт Настройки.
![](/upload/setka_images/16182004072023_4cbe6f4354dda2f27002951462e6105f47be6d89.png)
Теперь откроем справочник Организации. Создадим и запишем элемент — ООО «Дом техники».
![](/upload/setka_images/16182104072023_2d42bcd147bbaf6c3e403c3df1bc46190d6f5651.png)
Мы видим, что программа автоматически сформировала всё, что нужно для работы со справочником: создала формы ввода и списка, добавила поля ввода на основании реквизитов, автоматически заполнила поле Код.
Если мы нажмем на кнопку Ещё, то появится меню с действиями, которые можно совершать с элементами:
![](/upload/setka_images/16182004072023_04e895521bad597e6bd544a1cb9afcd9db62fcf7.png)
Мы можем:
- Искать, добавлять, редактировать, копировать и удалять элементы справочника.
- Настраивать отборы, группировки, сортировки.
- Изменять внешний вид формы.
- Выводить список в табличный документ.
- Выбирать и сохранять настройки формы.
- Добавлять в избранное.
В форме элемента справочника Организации мы видим вкладку Склады. Здесь можно работать с элементами подчинённого справочника.
![](/upload/setka_images/16182004072023_fd855cfe5fcc2e450b54422f60ca2e4a0b277aab.png)
Элемент подчинённого справочника нельзя записать, если не определён владелец. Программа выдаст сообщение об ошибке.
![](/upload/setka_images/16182004072023_a4fda8a8daf91ce2662aa3054d135a8d8c1242a8.png)
Для учёта на складе нам понадобится ещё один справочник — Товары. Сделаем его иерархическим, чтобы можно было группировать товары по категориям. Для этого поставим флажок на вкладке Иерархия в редакторе справочника.
![](/upload/setka_images/16194704072023_a6433e3d0e387dfcc17fb3247071ca7d850a189e.png)
Сохраняем изменения и запускаем «1С:Предприятие». Далее открываем справочник Товары и создаём в нём группы — скажем, «Бытовая техника» и «Смартфоны». Внутри этих групп можно добавлять любые элементы, какие захотите. Чтобы не запутаться, выбираем иерархический режим просмотра справочника.
![](/upload/setka_images/16195704072023_d923d832852c84ff8cb1d764c150f8a33ddaf2bc.png)
Документы
Помимо справочников для учёта на складе нам понадобятся документы. Это объекты, которые хранят информацию о хозяйственных операциях или других событиях на предприятии с привязкой ко времени.
В типовой конфигурации «1С:Управление торговлей» есть много документов для учёта товаров: приходные и расходные накладные, акты о перемещении, списании и других операциях с товарами. В нашей небольшой конфигурации мы будем использовать два документа: «Поступление товаров» и «Продажа товаров».
У каждого документа есть обязательные реквизиты: номер, дата и время. В «1С» есть режим автоматической нумерации, при котором система сама генерирует номера для новых документов и следит, чтобы они не повторялись.
Создадим документ ПоступлениеТоваров, который отражает операцию поступления товаров на склад.
Добавим в документ реквизит Склад (тип СправочникСсылка.Склады).
![](/upload/setka_images/16204204072023_e232256a49fa7e721d9a6532e6c1427f31d3174c.png)
СправочникСсылка.Склады — это прикладной тип данных. Такие типы не определяются на платформе, а образуются в конкретном прикладном решении.
Выражение СправочникСсылка.Склады означает: в базе данных с документами типа ПоступлениеТоваров, в поле Склад будет храниться не вся информация о складе, а лишь ссылка на соответствующую запись в справочнике Склады.
Это видно на рисунке:
![](/upload/setka_images/16204204072023_f9b0de1e9b4ae52e91fcaefb97f3a0c121b34237.png)
Также добавим табличную часть Товары. Чтобы это сделать, нужно раскрыть иерархию документа, кликнуть правой кнопки мыши на пункт Табличные части и нажать Добавить. Следом задаём нашей табличке реквизиты Количество, Цена и Сумма с типом неотрицательное число, длина 10, точность 2.
Вуаля! Теперь у нас есть таблица со всеми поступающими и убывающими товарами на складе. В конфигураторе документ будет выглядеть так:
![](/upload/setka_images/16204204072023_699184ca50692a14175429d1c4431ae86d6bbbb6.png)
Теперь запустим пользовательский режим «1С:Предприятия» с помощью всё той же клавиши F5. Создадим документ «Поступление товаров» и заполним реквизиты.
![](/upload/setka_images/16204204072023_da370518f8b52faddfe465175846d7d4775a0897.png)
В нашей табличке появилась первая запись. Но есть один нюанс: при вводе количества и цены Сумма не считается автоматически, а нас это не устраивает. Чтобы это исправить, надо будет запустить конструктор формы документа и написать код — о том, как это сделать, расскажем в следующем разделе.
Конструктор формы
Конструктор формы объекта (например, документа) позволяет создавать формы, которые будут работать в интерфейсе пользователя для отображения этого объекта. Конструктор запускается автоматически при создании новой формы.
Настроим в конфигураторе форму нашего документа ПоступлениеТоваров. Для этого выделим в меню документа элемент Форма и нажмём клавишу Добавить. Запустится окно конструктора формы.
![](/upload/setka_images/16204204072023_ddace1f881c1a08e89577b760a2164f86af39d29.png)
Нажмем кнопку Далее.
В окне конструктора выбираем элементы, которые будут располагаться в интерфейсе формы.
![](/upload/setka_images/16204204072023_573d3a90bd6b0e2cffb974dbb2c1ad97b00d4e0f.png)
После того как мы нажмём Готово, откроется окно редактора форм. Видим, что он автоматически создал форму объекта документа ПоступлениеТоваров и расположил на ней поля для ввода значений реквизитов.
![](/upload/setka_images/16204204072023_c5ca533415fa6b78fa5b8c55ea64bd5856c8ef38.png)
Теперь нам нужно написать скрипт, который будет автоматически пересчитывать Сумму при изменении значений элементов Количество или Цена. Для этого дважды кликнем по полю Количество и войдём в палитру свойств объекта. Выберем обработчик события ПриИзменении.
![](/upload/setka_images/16204304072023_add7766bc49df29a6c5ca98a947824619af27964.png)
Создаём обработчик события по умолчанию на клиенте. «На клиенте» означает, что код будет работать только на компьютере пользователя, без передачи вычислений на сервер. В нашем случае это логично, так как скрипт будет работать только в приложении пользователя для более полного и удобного отображения данных.
![](/upload/setka_images/16204204072023_029ff492d4a8bb8b3b13a746fff4f416396d012a.png)
Открывается модуль формы с автоматически созданной процедурой.
![](/upload/setka_images/16204204072023_c1529f4ca453e127db639f0fd734b552d2e57fcf.png)
Проделаем то же самое с элементом формы Цена и получим ещё одну автоматически созданную процедуру.
![](/upload/setka_images/16204204072023_4448049c38bfa05c5072d0c36ffc2002cbcae561.png)
Добавим в обе процедуры одинаковый код — формулу расчёта стоимости товара:
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
Элементы.ТоварыСумма = Элементы.ТоварыЦена * Элементы.ТоварыКоличество;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
Элементы.ТоварыСумма = Элементы.ТоварыЦена * Элементы.ТоварыКоличество;
КонецПроцедуры
Упростим код — вынесем расчёт суммы в отдельную процедуру РассчитатьСумму ():
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
РассчитатьСумму();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
РассчитатьСумму();
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСумму()
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество;
КонецПроцедуры
Теперь, если мы запустим программу в пользовательском режиме, то увидим, что сумма заполняется автоматически при изменении значений в полях ввода Количество и Цена. Двигаемся дальше.
![](/upload/setka_images/16204204072023_4a275c7c8711ee6ddebf41f0a6675d75ce81243f.png)
Далее нам понадобится ещё один документ для учёта — ПродажаТоваров. Структура и процедуры в модуле формы у него будут те же самые, что и у документа ПоступлениеТоваров — попробуйте создать его самостоятельно по аналогии, чтобы отточить полученные знания.
![](/upload/setka_images/16204304072023_4278c750599d7457b6d8b1a9e7651bb8f886bd81.png)
Общие модули
Теперь в документах ПоступлениеТоваров и ПродажаТоваров появились две одинаковые процедуры: РассчитатьСумму (). Но, как мы помним, согласно принципу DRY, дублирование кода — это совсем не здорово. Поэтому, чтобы не повторяться, вынесем процедуру в общий модуль.
Общие модули — это объекты конфигурации, в которых можно хранить процедуры, вызываемые в нескольких местах программы.
Перейдём в ветку Общие дерева конфигурации и создадим общий модуль под названием ОбщиеМодулиДокументов.
![](/upload/setka_images/16241504072023_006866f50e658fdfce99d82d7fdb7d49c6d3f3dc.png)
Добавим в него процедуру РассчитатьСумму () и немного изменим её.
Процедура РассчитатьСумму(Товары) Экспорт
ТекущаяСтрока = Товары.ТекущиеДанные;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество;
КонецПроцедуры
В примере выше мы сделали процедуру экспортной, чтобы её можно было вызывать из любого места программы.
А в модулях форм обоих документов изменим код следующим образом:
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ОбщиеМодулиДокументов.РассчитатьСумму(Элементы.Товары);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ОбщиеМодулиДокументов.РассчитатьСумму(Элементы.Товары);
КонецПроцедуры
Запишем изменения конфигурации. Запустим «1С:Предприятие» в режиме пользователя и создадим новый документ «Продажа товаров».
![](/upload/setka_images/16241504072023_0fac5d280bca55f7f3747958cccfe7e38d2e7886.png)
Теперь настроим движения документов по регистрам.
Регистры
Регистры — это объекты конфигурации, выполненные в виде таблиц с колонками и строками, наподобие таблиц Excel. В них записываются все процессы, которые происходят с документом, и на основе этих записей потом формируются отчёты. Этот процесс в «1С» называется движением по регистрам. Запускается он прямо из документа с помощью кнопки Провести.
Зачем нужны регистры
Дело в том, что брать данные напрямую из документов неэффективно. Каждый раз при формировании отчёта программе понадобилось бы перебирать все документы, извлекать и обрабатывать данные, что занимает много времени. Использование регистров в «1С» позволяет хранить и систематизировать полученную информацию, а в случае необходимости быстро извлекать её и выводить в отчёт.
В «1С» версии 8.3 есть четыре вида регистров:
- Регистры сведений — самые простые. В отличие от других регистров, данные в них можно записывать без документа-регистратора.
- Регистры бухгалтерии предназначены для хранения данных о бухгалтерских проводках в конфигурациях, связанных с бухучётом.
- Регистры расчёта используются для сложных периодических расчётов, например расчёта заработной платы и других выплат сотрудникам.
- Регистры накопления состоят из двух таблиц Остатки и Обороты. Первая используется для получения информации о данных на текущий момент, а вторая — о данных за период.
В регистрах накопления можно «накапливать» данные в разрезе нескольких измерений. Рассмотрим это на примере. Создадим регистр накопления.
![](/upload/setka_images/16241604072023_6bb40952ffaf9caa95039c00148d6c59293239c6.png)
Назовём его ОстаткиТоваров.
![](/upload/setka_images/16241604072023_cc65cd7be7e06db407eca497a9fb42e3fb3074f5.png)
Зададим измерения:
- Склад (тип — СправочникСсылка.Склады);
- Товар (тип — СправочникСсылка.Товары).
Зададим ресурсы:
- Количество (тип — неотрицательное число, длина 10, точность 2). Здесь будет накапливаться количество товаров.
- Сумма (тип — неотрицательное число, длина 10, точность 2). Здесь будет накапливаться стоимость товаров.
![](/upload/setka_images/16241604072023_a3c3ee6d37dc6053769d900583fc89dd669679b5.png)
Чтобы сформировать движения регистра, перейдём в документ ПоступлениеТоваров. Кликнем правой кнопкой мыши по наименованию и выберем конструктор движений.
![](/upload/setka_images/16241604072023_b32762a7028bd5dd4034db8c7aa16d23fe33953a.png)
Настроим его так:
![](/upload/setka_images/16241604072023_8063604dd999d0cf7824bf2d762e7aec92dc80ab.png)
Теперь откроем модуль документа ПоступлениеТоваров»:
![](/upload/setka_images/16241604072023_a4098694b657894b47b05d776db7dbc42b93873b.png)
Мы видим, что программа автоматически создала процедуру проведения документа:
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора внесённые вручную изменения будут утеряны!!!
// Регистр ОстаткиТоваров Приход
Движения.ОстаткиТоваров.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Товар = ТекСтрокаТовары.Товары;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма = ТекСтрокаТовары.Сумма;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Похожим образом настроим документ ПродажаТоваров, только поставим в конструкторе тип движения Расход.
![](/upload/setka_images/16241604072023_6f65c72a2e521b47a98f05ae6b2aefea6231788f.png)
В модуле документа программа автоматически создаст код:
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора внесённые вручную изменения будут утеряны!!!
// Регистр ОстаткиТоваров Приход
Движения.ОстаткиТоваров.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Товар = ТекСтрокаТовары.Товары;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма = ТекСтрокаТовары.Сумма;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Запустим «1С:Предприятие» и проведём созданные ранее документы. Теперь в регистре Остатки товаров мы видим их движения — то есть все изменения, которые происходят с элементами документа.
![](/upload/setka_images/16241604072023_2bd8835c248a902cdccc2cd0b38dae42a281d62b.png)
В этом примере движения документа «Поступление товаров» обозначаются зелёным знаком +, а «Продажа товаров» — красным знаком –.
Отчёты
Сформируем отчётность по складам, чтобы можно было узнать, сколько товара поступило и было продано за определённый промежуток времени.
Здесь мы будем использовать один из важнейших механизмов платформы «1С» — схему компоновки данных. Она предназначена для построения отчётов со сложной структурой (настройками, детализацией и свёрткой, группировкой и отборами) на основе их декларативного описания.
Благодаря этой системе разработчику не нужно писать программный код — он задаёт желаемый результат с помощью настроек в конструкторе, а система автоматически генерирует выходную форму. А пользователь, в свою очередь, может гибко настроить отчёт под свои нужды.
Создадим объект Отчёт.
![](/upload/setka_images/16241604072023_62f97ae2d479cb51d2b0a585d52ff04ac62c5d22.png)
Назовем его ОтчётПоТоварам.
Нажимаем на кнопку Открыть схему компоновки данных.
![](/upload/setka_images/16241604072023_8bf086f873b95ce52c3bfd70ab21a972659fd71b.png)
![](/upload/setka_images/16265304072023_a2b2a7e8a12f7a5bcb06d670c8c4c0b528df1181.png)
Нажимаем на кнопку Готово и переходим в конструктор макета.
![](/upload/setka_images/16271404072023_a8d7648b0c613f77fbecaf5e3c21f4f5f54f8adb.png)
Создаём набор данных Запрос.
![](/upload/setka_images/16272704072023_5c76b7f7a16e997cd91291fa4057fc9dccda640b.png)
Нажимаем на кнопку Конструктор запроса.
![](/upload/setka_images/16272704072023_407533df55b377672aa6f491085be4935ed0ec69.png)
В качестве источника данных для отчёта выбираем виртуальную таблицу ОстаткиТоваров.ОстаткиИОбороты и переносим в окно Поля реквизиты, которые нужны для нашего отчёта. Нажимаем ОК.
![](/upload/setka_images/16273204072023_378b987ff41a2f723f01dd66c5f9c0cbd2c7dfcd.png)
Мы видим, что программа автоматически сгенерировала текст запроса. Теперь переключаемся на вкладку Настройки.
![](/upload/setka_images/16273204072023_dd1c6ff9357acadb843aeb0b5bf651fb96b3fe2c.png)
Выбираем нужные поля и создаём группировку Склад.
![](/upload/setka_images/16273704072023_422b8a06f53cb9c213624ed0dd6073385405fd7f.png)
Мы можем также настроить отбор по полям Склад и Товар.
![](/upload/setka_images/16273704072023_e3726c51b9fc1ac6454d535af3fa926752d0b713.png)
И сортировку по тем же полям.
![](/upload/setka_images/16282104072023_97c2bb8dff1477181b39e835747b94cad2231229.png)
Перейдём на вкладку Другие настройки и создадим заголовок отчёта.
![](/upload/setka_images/16282304072023_9ef96450f23148599692a67d220cdc2dc463e6a9.png)
Сохраним изменения и запустим информационную базу в пользовательском режиме программы «1С:Предприятие».
Работа с отчётом в интерфейсе пользователя
Вызовем отчёт Остатки товаров. Выберем даты начала и окончания периода отслеживания. Нажмём кнопку Сформировать.
![](/upload/setka_images/16282504072023_b43ae593f062a25d61a3776525f44cb78ecc9bcb.png)
Также мы можем перейти в настройки отчёта и сделать, например, отбор по какому-то отдельному складу.
![](/upload/setka_images/16282704072023_939036ba103c823fc32ae204b8cf87091b32d39b.png)
В результате получим отчёт только по «Складу1»:
![](/upload/setka_images/16282904072023_536770c718b633c9ba27e3668a26a65c736dfbe2.png)
Что в итоге
Эта статья — стартовый гайд по основным нюансам разработки в «1С». Мы создали с нуля небольшую конфигурацию и на её примере показали, как можно визуально конструировать основные объекты «1С». Написали несколько процедур на встроенном языке и создали отчёт с использованием схемы компоновки данных.
Этого набора знаний хватит, чтобы создавать простые решения с нехитрой бизнес-логикой. Если подумываете заняться «1С» профессионально, советуем чуть глубже изучить официальную документацию к платформе. А если хотите освоить разработку быстро, на реальных кейсах, да ещё и с сертификатом от «1С» на выходе — приходите на курс «Профессия 1С-разработчик».