HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>6 июл 2023</li>
2 <ul><li>6 июл 2023</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Расскажем о системе "1С:Предприятие", её встроенном языке, визуальном конструировании и вообще о том, как проходит разработка в "1С".</p>
4 </ul><p>Расскажем о системе "1С:Предприятие", её встроенном языке, визуальном конструировании и вообще о том, как проходит разработка в "1С".</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
6 <p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
7 <p>Программы "1С" позволяют быстро и недорого решать экономические задачи: считать зарплату и налоги, вести бухгалтерский учёт и документооборот, контролировать расчёты с клиентами и подрядчиками, формировать отчётность и многое другое.</p>
7 <p>Программы "1С" позволяют быстро и недорого решать экономические задачи: считать зарплату и налоги, вести бухгалтерский учёт и документооборот, контролировать расчёты с клиентами и подрядчиками, формировать отчётность и многое другое.</p>
8 <p>Но "1С" - это не просто набор готовых программ. Это ещё и среда разработки, которая позволяет гибко настраивать конфигурации под задачи разных компаний. В этой статье расскажем об основных нюансах разработки под "1С", создадим первую конфигурацию и напишем код на встроенном языке.</p>
8 <p>Но "1С" - это не просто набор готовых программ. Это ещё и среда разработки, которая позволяет гибко настраивать конфигурации под задачи разных компаний. В этой статье расскажем об основных нюансах разработки под "1С", создадим первую конфигурацию и напишем код на встроенном языке.</p>
9 <p>Содержание:</p>
9 <p>Содержание:</p>
10 <ul><li><a>Что такое "1С" и из чего она состоит</a></li>
10 <ul><li><a>Что такое "1С" и из чего она состоит</a></li>
11 <li><a>Немного о встроенном языке</a></li>
11 <li><a>Немного о встроенном языке</a></li>
12 <li><a>Создаём первую конфигурацию</a></li>
12 <li><a>Создаём первую конфигурацию</a></li>
13 <li><a>Справочники</a></li>
13 <li><a>Справочники</a></li>
14 <li><a>Документы</a></li>
14 <li><a>Документы</a></li>
15 <li><a>Конструктор формы</a></li>
15 <li><a>Конструктор формы</a></li>
16 <li><a>Общие модули</a></li>
16 <li><a>Общие модули</a></li>
17 <li><a>Регистры</a></li>
17 <li><a>Регистры</a></li>
18 <li><a>Отчёты</a></li>
18 <li><a>Отчёты</a></li>
19 <li><a>Заключение</a></li>
19 <li><a>Заключение</a></li>
20 </ul><p>"1С:Предприятие" - это система для автоматизации деятельности предприятий. С её помощью можно рассчитать бизнес-процессы в компаниях любого масштаба и направления: в небольших фирмах и огромных холдингах, на оптовых складах и в интернет-магазинах, на сельхозпредприятиях и так далее.</p>
20 </ul><p>"1С:Предприятие" - это система для автоматизации деятельности предприятий. С её помощью можно рассчитать бизнес-процессы в компаниях любого масштаба и направления: в небольших фирмах и огромных холдингах, на оптовых складах и в интернет-магазинах, на сельхозпредприятиях и так далее.</p>
21 <p>Система состоит из двух основных частей - технологической платформы и конфигураций.</p>
21 <p>Система состоит из двух основных частей - технологической платформы и конфигураций.</p>
22 <p><strong>Платформа.</strong>Это одновременно и среда разработки, и среда выполнения. Она содержит собственный язык программирования, IDE для разработчика, приложение для администрирования и многое другое. Разработкой платформы занимается сама компания "1С" - она регулярно выпускает новые версии. На сегодняшний день самая актуальная версия платформы - 8.3.</p>
22 <p><strong>Платформа.</strong>Это одновременно и среда разработки, и среда выполнения. Она содержит собственный язык программирования, IDE для разработчика, приложение для администрирования и многое другое. Разработкой платформы занимается сама компания "1С" - она регулярно выпускает новые версии. На сегодняшний день самая актуальная версия платформы - 8.3.</p>
23 <p><strong>Конфигурации.</strong>Прикладные решения, которые не могут работать сами по себе, без платформы. Они предназначены для решения учётных задач: ведения бухгалтерии, расчёта зарплаты, учёта на складах и многих других. Компания "1С" создаёт и поддерживает конфигурации, которые называются типовыми.</p>
23 <p><strong>Конфигурации.</strong>Прикладные решения, которые не могут работать сами по себе, без платформы. Они предназначены для решения учётных задач: ведения бухгалтерии, расчёта зарплаты, учёта на складах и многих других. Компания "1С" создаёт и поддерживает конфигурации, которые называются типовыми.</p>
24 <p>Вот примеры некоторых популярных конфигураций:</p>
24 <p>Вот примеры некоторых популярных конфигураций:</p>
25 <ul><li><strong>"1С:Бухгалтерия предприятия"</strong> - предназначена для ведения бухгалтерского и налогового учёта.</li>
25 <ul><li><strong>"1С:Бухгалтерия предприятия"</strong> - предназначена для ведения бухгалтерского и налогового учёта.</li>
26 <li><strong>"1С:Зарплата и управление персоналом"</strong> - для расчёта зарплаты и кадрового учёта.</li>
26 <li><strong>"1С:Зарплата и управление персоналом"</strong> - для расчёта зарплаты и кадрового учёта.</li>
27 <li><strong>"1С:Управление торговлей"</strong> - для учёта на складах и в магазинах,<strong>"1С:Розница"</strong>- для автоматизации розничных торговых точек.</li>
27 <li><strong>"1С:Управление торговлей"</strong> - для учёта на складах и в магазинах,<strong>"1С:Розница"</strong>- для автоматизации розничных торговых точек.</li>
28 </ul><p>Помимо стандартных конфигураций есть множество отраслевых решений, например "1С:Общепит", "1С:Салон красоты", "1С:Хлебозавод" и другие. Большинство продуктов "1С" поставляются с открытым исходным кодом, поэтому их можно редактировать, дополнять новыми функциями, изменять алгоритмы. Таким образом можно создавать продукты, точно учитывающие бизнес-процессы в каждой компании.</p>
28 </ul><p>Помимо стандартных конфигураций есть множество отраслевых решений, например "1С:Общепит", "1С:Салон красоты", "1С:Хлебозавод" и другие. Большинство продуктов "1С" поставляются с открытым исходным кодом, поэтому их можно редактировать, дополнять новыми функциями, изменять алгоритмы. Таким образом можно создавать продукты, точно учитывающие бизнес-процессы в каждой компании.</p>
29 <p>Конфигурации "1С" можно разрабатывать с нуля, а можно взять готовую и настроить под свои задачи.</p>
29 <p>Конфигурации "1С" можно разрабатывать с нуля, а можно взять готовую и настроить под свои задачи.</p>
30 <p>Но сами по себе конфигурации не содержат данных - это лишь описания объектов и алгоритмов их взаимодействия. Для того чтобы пользователи могли работать, платформа создаёт информационную базу, то есть по описанию формирует таблицы и связи между ними.</p>
30 <p>Но сами по себе конфигурации не содержат данных - это лишь описания объектов и алгоритмов их взаимодействия. Для того чтобы пользователи могли работать, платформа создаёт информационную базу, то есть по описанию формирует таблицы и связи между ними.</p>
31 <p>Информационная база содержит конфигурацию и данные, которые добавляют пользователи. Она работает под управлением платформы, причём на одной платформе может быть установлено несколько информационных баз, созданных на основе разных конфигураций.</p>
31 <p>Информационная база содержит конфигурацию и данные, которые добавляют пользователи. Она работает под управлением платформы, причём на одной платформе может быть установлено несколько информационных баз, созданных на основе разных конфигураций.</p>
32 <p>"1С" поддерживает различные СУБД, в том числе<a>Microsoft SQL Server</a>, PostgreSQL, IBM Db2 и Oracle Database. Их выбирают при установке программы, а программист при написании кода об этом не думает.</p>
32 <p>"1С" поддерживает различные СУБД, в том числе<a>Microsoft SQL Server</a>, PostgreSQL, IBM Db2 и Oracle Database. Их выбирают при установке программы, а программист при написании кода об этом не думает.</p>
33 <p>Решения "1С" - мультиплатформенные, то есть их можно запускать на разных операционных системах: Windows, macOS, Linux, а также в браузере. Можно интегрировать их с внешними базами, веб-сервисами и мессенджерами. Можно писать приложения под Android и iOS.</p>
33 <p>Решения "1С" - мультиплатформенные, то есть их можно запускать на разных операционных системах: Windows, macOS, Linux, а также в браузере. Можно интегрировать их с внешними базами, веб-сервисами и мессенджерами. Можно писать приложения под Android и iOS.</p>
34 <p>В "1С" есть много разных возможностей: видеозвонки, встроенные чаты, демонстрация экрана, инструменты построения многоязычного интерфейса для тиражирования своего продукта и многое другое. Всё это можно использовать в своих приложениях.</p>
34 <p>В "1С" есть много разных возможностей: видеозвонки, встроенные чаты, демонстрация экрана, инструменты построения многоязычного интерфейса для тиражирования своего продукта и многое другое. Всё это можно использовать в своих приложениях.</p>
35 <p>Для разработчиков на 1С есть большое количество обучающих материалов: статей, видео, телеграм-каналов, а также готового кода. Так, на официальном ресурсе "<a>1С:ИТС</a>" есть подробные материалы по работе с 1С.</p>
35 <p>Для разработчиков на 1С есть большое количество обучающих материалов: статей, видео, телеграм-каналов, а также готового кода. Так, на официальном ресурсе "<a>1С:ИТС</a>" есть подробные материалы по работе с 1С.</p>
36 <p>Язык программирования 1С - встроенный язык платформы "1С:Предприятие". Он предметно-ориентированный, то есть на нём нельзя писать сайты и игры, но можно быстро и экономично автоматизировать бухгалтерский и налоговый учёт, учёт на складах, разработать CRM-систему и делать многое другое.</p>
36 <p>Язык программирования 1С - встроенный язык платформы "1С:Предприятие". Он предметно-ориентированный, то есть на нём нельзя писать сайты и игры, но можно быстро и экономично автоматизировать бухгалтерский и налоговый учёт, учёт на складах, разработать CRM-систему и делать многое другое.</p>
37 <p>Встроенный язык поддерживает механизм ООП, но в довольно урезанном виде: есть строгий набор классов с заданными свойствами и методами, например<strong>Справочники</strong>,<strong>Документы</strong>,<strong>Регистры</strong>,<strong>Отчёты</strong>,<strong>Обработки</strong>. Новые классы создавать нельзя, но для разработки достаточно и тех, что есть.</p>
37 <p>Встроенный язык поддерживает механизм ООП, но в довольно урезанном виде: есть строгий набор классов с заданными свойствами и методами, например<strong>Справочники</strong>,<strong>Документы</strong>,<strong>Регистры</strong>,<strong>Отчёты</strong>,<strong>Обработки</strong>. Новые классы создавать нельзя, но для разработки достаточно и тех, что есть.</p>
38 <p>По синтаксису язык 1С напоминает Pascal и BASIC в сочетании с языком запросов T-SQL, хотя его нельзя назвать их аналогом. Писать код в "1С" можно на двух языках - русском и английском. Программисты, как правило, предпочитают русский. На него быстро переходят и те, кто раньше программировал на английском, - так понятнее.</p>
38 <p>По синтаксису язык 1С напоминает Pascal и BASIC в сочетании с языком запросов T-SQL, хотя его нельзя назвать их аналогом. Писать код в "1С" можно на двух языках - русском и английском. Программисты, как правило, предпочитают русский. На него быстро переходят и те, кто раньше программировал на английском, - так понятнее.</p>
39 <p>Русскоязычный синтаксис стал стандартом в системе "1С". На нём написаны все конфигурации, а также множество дополнительных отчётов и обработок.</p>
39 <p>Русскоязычный синтаксис стал стандартом в системе "1С". На нём написаны все конфигурации, а также множество дополнительных отчётов и обработок.</p>
40 <p>При разработке программисты не только пишут код, но и используют визуальное конструирование - это ускоряет разработку. С помощью визуальных редакторов создают новые объекты, настраивают их свойства, разрабатывают формы представления в интерфейсе и связи с другими объектами. А 1С выступает как скриптовый язык, на котором пишутся и дорабатываются методы объектов и обработки событий.</p>
40 <p>При разработке программисты не только пишут код, но и используют визуальное конструирование - это ускоряет разработку. С помощью визуальных редакторов создают новые объекты, настраивают их свойства, разрабатывают формы представления в интерфейсе и связи с другими объектами. А 1С выступает как скриптовый язык, на котором пишутся и дорабатываются методы объектов и обработки событий.</p>
41 <p>С терминами вроде разобрались - настало время перейти к практике. Чтобы лучше разобраться в нюансах платформы, создадим небольшую конфигурацию - назовём её "Учёт товаров на складе". Для этого скачаем бесплатный<a>дистрибутив для обучения</a>с официального сайта "1С" и установим его на компьютер - есть версии для Linux, macOS и Windows.</p>
41 <p>С терминами вроде разобрались - настало время перейти к практике. Чтобы лучше разобраться в нюансах платформы, создадим небольшую конфигурацию - назовём её "Учёт товаров на складе". Для этого скачаем бесплатный<a>дистрибутив для обучения</a>с официального сайта "1С" и установим его на компьютер - есть версии для Linux, macOS и Windows.</p>
42 <p>А теперь запустим программу. Сразу видим, что программа установки создала две учебные базы. Но так как мы хотим создать конфигурацию с нуля, нажимаем на кнопку<strong>Добавить</strong>.</p>
42 <p>А теперь запустим программу. Сразу видим, что программа установки создала две учебные базы. Но так как мы хотим создать конфигурацию с нуля, нажимаем на кнопку<strong>Добавить</strong>.</p>
43 <em>Скриншот: Skillbox Media</em><p>В открывшемся окне выбираем<strong>Создание новой информационной базы</strong>и<strong></strong>нажимаем<strong></strong>кнопку<strong>Далее</strong>.</p>
43 <em>Скриншот: Skillbox Media</em><p>В открывшемся окне выбираем<strong>Создание новой информационной базы</strong>и<strong></strong>нажимаем<strong></strong>кнопку<strong>Далее</strong>.</p>
44 <em>Скриншот: Skillbox Media</em><p>Программа предложит создать базу по шаблону "Бухгалтерия предприятия", но мы выбираем<strong>Создание информационной базы</strong><strong>без конфигурации</strong>и<strong></strong>нажимаем кнопку<strong>Далее</strong>.</p>
44 <em>Скриншот: Skillbox Media</em><p>Программа предложит создать базу по шаблону "Бухгалтерия предприятия", но мы выбираем<strong>Создание информационной базы</strong><strong>без конфигурации</strong>и<strong></strong>нажимаем кнопку<strong>Далее</strong>.</p>
45 <em>Скриншот: Skillbox Media</em><p>Вводим название информационной базы:<strong>Учёт товаров на складе</strong>. Нажимаем<strong>Далее</strong>.</p>
45 <em>Скриншот: Skillbox Media</em><p>Вводим название информационной базы:<strong>Учёт товаров на складе</strong>. Нажимаем<strong>Далее</strong>.</p>
46 <em>Скриншот: Skillbox Media</em><p>Выбираем каталог, в котором будет находиться наша информационная база, и нажимаем<strong>Далее</strong>.</p>
46 <em>Скриншот: Skillbox Media</em><p>Выбираем каталог, в котором будет находиться наша информационная база, и нажимаем<strong>Далее</strong>.</p>
47 <em>Скриншот: Skillbox Media</em><p>Оставляем параметры по умолчанию и нажимаем кнопку<strong>Готово</strong>.</p>
47 <em>Скриншот: Skillbox Media</em><p>Оставляем параметры по умолчанию и нажимаем кнопку<strong>Готово</strong>.</p>
48 <em>Скриншот: Skillbox Media</em><p>Открылось окно запуска "1С:Предприятия".</p>
48 <em>Скриншот: Skillbox Media</em><p>Открылось окно запуска "1С:Предприятия".</p>
49 <em>Скриншот: Skillbox Media</em><p>Информационную базу можно запускать в двух режимах:</p>
49 <em>Скриншот: Skillbox Media</em><p>Информационную базу можно запускать в двух режимах:</p>
50 <ul><li><strong>1С:Предприятие</strong>- пользовательский режим. В нём пользователи работают с данными и формируют отчёты.</li>
50 <ul><li><strong>1С:Предприятие</strong>- пользовательский режим. В нём пользователи работают с данными и формируют отчёты.</li>
51 <li><strong>Конфигуратор</strong>- режим для разработчика. В нём создаются прикладные решения на встроенном языке и выполняется администрирование информационной базы.</li>
51 <li><strong>Конфигуратор</strong>- режим для разработчика. В нём создаются прикладные решения на встроенном языке и выполняется администрирование информационной базы.</li>
52 </ul><p>Так как наша задача - попробовать свои силы в разработке конфигураций, запускаем базу в режиме<strong>Конфигуратор</strong>. Когда программа запустится, в главном меню выбираем<strong>Конфигурация</strong><em>&gt;</em><strong>Открыть конфигурацию</strong><em>.</em></p>
52 </ul><p>Так как наша задача - попробовать свои силы в разработке конфигураций, запускаем базу в режиме<strong>Конфигуратор</strong>. Когда программа запустится, в главном меню выбираем<strong>Конфигурация</strong><em>&gt;</em><strong>Открыть конфигурацию</strong><em>.</em></p>
53 <em>Скриншот: Skillbox Media</em><p>Открывается дерево конфигурации. Здесь находятся все классы, на основании которых можно создавать объекты, - например, документы, отчёты, справочники, обработки и так далее.</p>
53 <em>Скриншот: Skillbox Media</em><p>Открывается дерево конфигурации. Здесь находятся все классы, на основании которых можно создавать объекты, - например, документы, отчёты, справочники, обработки и так далее.</p>
54 <em>Скриншот: Skillbox Media</em><p>Теперь давайте дадим имя нашей конфигурации. Для этого дважды кликаем по корневому элементу с надписью<strong>Конфигурация</strong>. После этого откроется палитра свойств, где можно добавить новое имя и его синоним.</p>
54 <em>Скриншот: Skillbox Media</em><p>Теперь давайте дадим имя нашей конфигурации. Для этого дважды кликаем по корневому элементу с надписью<strong>Конфигурация</strong>. После этого откроется палитра свойств, где можно добавить новое имя и его синоним.</p>
55 <p>Синонимы отображаются в формах, отчётах и других элементах интерфейса, поэтому они должны осмысленно и кратко описывать объекты конфигурации. Имя объекта обычно строят на основе синонима: пробелы и другие недопустимые символы удаляют, а первые буквы слов делают прописными.</p>
55 <p>Синонимы отображаются в формах, отчётах и других элементах интерфейса, поэтому они должны осмысленно и кратко описывать объекты конфигурации. Имя объекта обычно строят на основе синонима: пробелы и другие недопустимые символы удаляют, а первые буквы слов делают прописными.</p>
56 <em>Скриншот: Skillbox Media</em><p>Мы видим, что в заголовке окна дерева конфигурации появился знак<em>*</em>. Это знак того, что в нашу конфигурацию внесены изменения. Чтобы сохранить их, нажимаем на значок дискеты.</p>
56 <em>Скриншот: Skillbox Media</em><p>Мы видим, что в заголовке окна дерева конфигурации появился знак<em>*</em>. Это знак того, что в нашу конфигурацию внесены изменения. Чтобы сохранить их, нажимаем на значок дискеты.</p>
57 <em>Скриншот: Skillbox Media</em><p>Но этого недостаточно для того, чтобы изменения конфигурации были видны при работе в пользовательском режиме. Дело в том, что информационная база хранит как минимум две конфигурации:</p>
57 <em>Скриншот: Skillbox Media</em><p>Но этого недостаточно для того, чтобы изменения конфигурации были видны при работе в пользовательском режиме. Дело в том, что информационная база хранит как минимум две конфигурации:</p>
58 <ul><li><strong>Основную</strong> - ту, с которой работает программист. Она не исполняется в пользовательском режиме.</li>
58 <ul><li><strong>Основную</strong> - ту, с которой работает программист. Она не исполняется в пользовательском режиме.</li>
59 <li><strong>Конфигурацию базы данных.</strong>Она предназначена для пользователей и исполняется в режиме "1С:Предприятие".</li>
59 <li><strong>Конфигурацию базы данных.</strong>Она предназначена для пользователей и исполняется в режиме "1С:Предприятие".</li>
60 </ul><p>Первую можно редактировать, а вторую - нельзя. Её можно только автоматически обновить на основании первой.</p>
60 </ul><p>Первую можно редактировать, а вторую - нельзя. Её можно только автоматически обновить на основании первой.</p>
61 <p>Видим, что в заголовке дерева конфигурации появился знак различия конфигураций - &lt;!&gt;. Это означает, что конфигурация базы данных отличается от основной. Чтобы внести в неё изменения, нужно нажать на <strong>иконку с бочонком</strong>, который отмечен на скриншоте.</p>
61 <p>Видим, что в заголовке дерева конфигурации появился знак различия конфигураций - &lt;!&gt;. Это означает, что конфигурация базы данных отличается от основной. Чтобы внести в неё изменения, нужно нажать на <strong>иконку с бочонком</strong>, который отмечен на скриншоте.</p>
62 <em>Скриншот: Skillbox Media</em><p>Справочники - это объекты конфигурации, которые используются для хранения данных, имеющих одинаковую структуру и списочный характер, - например, списки сотрудников, товаров, поставщиков и покупателей.</p>
62 <em>Скриншот: Skillbox Media</em><p>Справочники - это объекты конфигурации, которые используются для хранения данных, имеющих одинаковую структуру и списочный характер, - например, списки сотрудников, товаров, поставщиков и покупателей.</p>
63 <p>Давайте создадим в нашей конфигурации первый справочник -<em></em><strong>Организации</strong>. Он нам нужен для того, чтобы хранить реквизиты организации, для которой нужно организовать учёт. Эти реквизиты могут понадобиться для отчётности.</p>
63 <p>Давайте создадим в нашей конфигурации первый справочник -<em></em><strong>Организации</strong>. Он нам нужен для того, чтобы хранить реквизиты организации, для которой нужно организовать учёт. Эти реквизиты могут понадобиться для отчётности.</p>
64 <p>Кликаем правой кнопкой мыши по элементу<strong>Справочники</strong>и нажимаем на <strong>Добавить</strong>(или на клавишу<strong>Insert</strong>на клавиатуре).</p>
64 <p>Кликаем правой кнопкой мыши по элементу<strong>Справочники</strong>и нажимаем на <strong>Добавить</strong>(или на клавишу<strong>Insert</strong>на клавиатуре).</p>
65 <em>Скриншот: Skillbox Media</em><p>Открылись два окна: редактор справочника и палитра свойств. Здесь мы можем редактировать свойства, события и методы - для удобства они сгруппированы по тематике.</p>
65 <em>Скриншот: Skillbox Media</em><p>Открылись два окна: редактор справочника и палитра свойств. Здесь мы можем редактировать свойства, события и методы - для удобства они сгруппированы по тематике.</p>
66 <em>Скриншот: Skillbox Media</em><p>Далее добавляем нашему справочнику реквизиты. Это поля, которые затем будут доступны пользователю в интерфейсе, - в них он будет заносить информацию об организациях.</p>
66 <em>Скриншот: Skillbox Media</em><p>Далее добавляем нашему справочнику реквизиты. Это поля, которые затем будут доступны пользователю в интерфейсе, - в них он будет заносить информацию об организациях.</p>
67 <p>У всех элементов справочников есть два обязательных реквизита - код и наименование. Наименование вводит пользователь, а код программа формирует автоматически. При этом она следит за тем, чтобы коды не дублировались в пределах одного справочника.</p>
67 <p>У всех элементов справочников есть два обязательных реквизита - код и наименование. Наименование вводит пользователь, а код программа формирует автоматически. При этом она следит за тем, чтобы коды не дублировались в пределах одного справочника.</p>
68 <p>Добавим в справочнике реквизит<strong>Адрес</strong>, в котором будет храниться адрес организации. Он имеет тип<strong>Строка.</strong></p>
68 <p>Добавим в справочнике реквизит<strong>Адрес</strong>, в котором будет храниться адрес организации. Он имеет тип<strong>Строка.</strong></p>
69 <em>Скриншот: Skillbox Media</em><p>И второй реквизит -<strong>Дата регистрации</strong>, который имеет тип<strong>Дата</strong>. Здесь будет храниться дата регистрации организации.</p>
69 <em>Скриншот: Skillbox Media</em><p>И второй реквизит -<strong>Дата регистрации</strong>, который имеет тип<strong>Дата</strong>. Здесь будет храниться дата регистрации организации.</p>
70 <em>Скриншот: Skillbox Media</em><p>В системе "1С" есть примитивные типы данных:<strong>Строка</strong>,<strong>Число</strong>,<strong>Дата</strong>,<strong>Булево</strong>и другие. Они определены на уровне платформы.</p>
70 <em>Скриншот: Skillbox Media</em><p>В системе "1С" есть примитивные типы данных:<strong>Строка</strong>,<strong>Число</strong>,<strong>Дата</strong>,<strong>Булево</strong>и другие. Они определены на уровне платформы.</p>
71 <p>Создадим ещё один справочник под названием<strong>Склады</strong>. Он будет подчинён справочнику<strong>Организации</strong> - то есть у каждого элемента справочника<em></em><strong>Склад</strong>будет владелец - элемент справочника<strong>Организации</strong>.</p>
71 <p>Создадим ещё один справочник под названием<strong>Склады</strong>. Он будет подчинён справочнику<strong>Организации</strong> - то есть у каждого элемента справочника<em></em><strong>Склад</strong>будет владелец - элемент справочника<strong>Организации</strong>.</p>
72 <p>Вот как выглядит настройка в редакторе:</p>
72 <p>Вот как выглядит настройка в редакторе:</p>
73 <em>Скриншот: Skillbox Media</em><p>Сохраняем изменения в основной конфигурации и конфигурации базы данных. Теперь заходим в информационную базу в пользовательском режиме - для этого нажимаем клавишу<strong>F5</strong>и запускаем отладку.</p>
73 <em>Скриншот: Skillbox Media</em><p>Сохраняем изменения в основной конфигурации и конфигурации базы данных. Теперь заходим в информационную базу в пользовательском режиме - для этого нажимаем клавишу<strong>F5</strong>и запускаем отладку.</p>
74 <em>Скриншот: Skillbox Media</em><p>Перед нами - интерфейс пользователя. Здесь пользователи могут самостоятельно настраивать внешний вид программы, задавать расположение панелей и разделов, использовать закладки. Для этого нужно в главном меню выбрать пункт<strong>Настройки</strong>.</p>
74 <em>Скриншот: Skillbox Media</em><p>Перед нами - интерфейс пользователя. Здесь пользователи могут самостоятельно настраивать внешний вид программы, задавать расположение панелей и разделов, использовать закладки. Для этого нужно в главном меню выбрать пункт<strong>Настройки</strong>.</p>
75 <em>Скриншот: Skillbox Media</em><p>Теперь откроем справочник<strong>Организации</strong>. Создадим и запишем элемент - ООО "Дом техники".</p>
75 <em>Скриншот: Skillbox Media</em><p>Теперь откроем справочник<strong>Организации</strong>. Создадим и запишем элемент - ООО "Дом техники".</p>
76 <em>Скриншот: Skillbox Media</em><p>Мы видим, что программа автоматически сформировала всё, что нужно для работы со справочником: создала формы ввода и списка, добавила поля ввода на основании реквизитов, автоматически заполнила поле<strong>Код</strong>.</p>
76 <em>Скриншот: Skillbox Media</em><p>Мы видим, что программа автоматически сформировала всё, что нужно для работы со справочником: создала формы ввода и списка, добавила поля ввода на основании реквизитов, автоматически заполнила поле<strong>Код</strong>.</p>
77 <p>Если мы нажмем на кнопку<strong>Ещё</strong>, то появится меню с действиями, которые можно совершать с элементами:</p>
77 <p>Если мы нажмем на кнопку<strong>Ещё</strong>, то появится меню с действиями, которые можно совершать с элементами:</p>
78 <em>Скриншот: Skillbox Media</em><p>Мы можем:</p>
78 <em>Скриншот: Skillbox Media</em><p>Мы можем:</p>
79 <ul><li>Искать, добавлять, редактировать, копировать и удалять элементы справочника.</li>
79 <ul><li>Искать, добавлять, редактировать, копировать и удалять элементы справочника.</li>
80 <li>Настраивать отборы, группировки, сортировки.</li>
80 <li>Настраивать отборы, группировки, сортировки.</li>
81 <li>Изменять внешний вид формы.</li>
81 <li>Изменять внешний вид формы.</li>
82 <li>Выводить список в табличный документ.</li>
82 <li>Выводить список в табличный документ.</li>
83 <li>Выбирать и сохранять настройки формы.</li>
83 <li>Выбирать и сохранять настройки формы.</li>
84 <li>Добавлять в избранное.</li>
84 <li>Добавлять в избранное.</li>
85 </ul><p>В форме элемента справочника<strong>Организации</strong><em></em>мы видим вкладку<em></em><strong>Склады</strong>. Здесь можно работать с элементами подчинённого справочника.</p>
85 </ul><p>В форме элемента справочника<strong>Организации</strong><em></em>мы видим вкладку<em></em><strong>Склады</strong>. Здесь можно работать с элементами подчинённого справочника.</p>
86 <em>Скриншот: Skillbox Media</em><p>Элемент подчинённого справочника нельзя записать, если не определён владелец. Программа выдаст сообщение об ошибке.</p>
86 <em>Скриншот: Skillbox Media</em><p>Элемент подчинённого справочника нельзя записать, если не определён владелец. Программа выдаст сообщение об ошибке.</p>
87 <em>Скриншот: Skillbox Media</em><p>Для учёта на складе нам понадобится ещё один справочник -<strong>Товары.</strong>Сделаем его иерархическим, чтобы можно было группировать товары по категориям. Для этого поставим флажок на вкладке<strong>Иерархия</strong>в редакторе справочника.</p>
87 <em>Скриншот: Skillbox Media</em><p>Для учёта на складе нам понадобится ещё один справочник -<strong>Товары.</strong>Сделаем его иерархическим, чтобы можно было группировать товары по категориям. Для этого поставим флажок на вкладке<strong>Иерархия</strong>в редакторе справочника.</p>
88 <em>Скриншот: Skillbox Media</em><p>Сохраняем изменения и запускаем "1С:Предприятие". Далее открываем справочник<strong>Товары</strong>и создаём в нём группы - скажем, "Бытовая техника" и "Смартфоны". Внутри этих групп можно добавлять любые элементы, какие захотите. Чтобы не запутаться, выбираем иерархический режим просмотра справочника.</p>
88 <em>Скриншот: Skillbox Media</em><p>Сохраняем изменения и запускаем "1С:Предприятие". Далее открываем справочник<strong>Товары</strong>и создаём в нём группы - скажем, "Бытовая техника" и "Смартфоны". Внутри этих групп можно добавлять любые элементы, какие захотите. Чтобы не запутаться, выбираем иерархический режим просмотра справочника.</p>
89 <em>Скриншот: Skillbox Media</em><p>Помимо справочников для учёта на складе нам понадобятся документы. Это объекты, которые хранят информацию о хозяйственных операциях или других событиях на предприятии с привязкой ко времени.</p>
89 <em>Скриншот: Skillbox Media</em><p>Помимо справочников для учёта на складе нам понадобятся документы. Это объекты, которые хранят информацию о хозяйственных операциях или других событиях на предприятии с привязкой ко времени.</p>
90 <p>В типовой конфигурации "1С:Управление торговлей" есть много документов для учёта товаров: приходные и расходные накладные, акты о перемещении, списании и других операциях с товарами. В нашей небольшой конфигурации мы будем использовать два документа: "<em>Поступление товаров"</em>и "<em>Продажа товаров"</em>.</p>
90 <p>В типовой конфигурации "1С:Управление торговлей" есть много документов для учёта товаров: приходные и расходные накладные, акты о перемещении, списании и других операциях с товарами. В нашей небольшой конфигурации мы будем использовать два документа: "<em>Поступление товаров"</em>и "<em>Продажа товаров"</em>.</p>
91 <p>У каждого документа есть обязательные реквизиты: номер, дата и время. В "1С" есть режим автоматической нумерации, при котором система сама генерирует номера для новых документов и следит, чтобы они не повторялись.</p>
91 <p>У каждого документа есть обязательные реквизиты: номер, дата и время. В "1С" есть режим автоматической нумерации, при котором система сама генерирует номера для новых документов и следит, чтобы они не повторялись.</p>
92 <p>Создадим документ<strong>ПоступлениеТоваров</strong>, который отражает операцию поступления товаров на склад.</p>
92 <p>Создадим документ<strong>ПоступлениеТоваров</strong>, который отражает операцию поступления товаров на склад.</p>
93 <p>Добавим в документ реквизит<strong>Склад</strong>(тип<strong>СправочникСсылка.Склады</strong>).</p>
93 <p>Добавим в документ реквизит<strong>Склад</strong>(тип<strong>СправочникСсылка.Склады</strong>).</p>
94 <em>Скриншот: Skillbox Media</em><p><strong>СправочникСсылка.Склады</strong> - это прикладной тип данных. Такие типы не определяются на платформе, а образуются в конкретном прикладном решении.</p>
94 <em>Скриншот: Skillbox Media</em><p><strong>СправочникСсылка.Склады</strong> - это прикладной тип данных. Такие типы не определяются на платформе, а образуются в конкретном прикладном решении.</p>
95 <p>Выражение<strong>СправочникСсылка.Склады</strong>означает: в базе данных с документами типа<strong>ПоступлениеТоваров</strong>,<strong></strong>в поле<strong>Склад</strong>будет храниться не вся информация о складе, а лишь ссылка на соответствующую запись в справочнике<strong>Склады</strong><em>.</em></p>
95 <p>Выражение<strong>СправочникСсылка.Склады</strong>означает: в базе данных с документами типа<strong>ПоступлениеТоваров</strong>,<strong></strong>в поле<strong>Склад</strong>будет храниться не вся информация о складе, а лишь ссылка на соответствующую запись в справочнике<strong>Склады</strong><em>.</em></p>
96 <p>Это видно на рисунке:</p>
96 <p>Это видно на рисунке:</p>
97 <em>Скриншот: Skillbox Media</em><p>Также добавим табличную часть<strong>Товары</strong>. Чтобы это сделать, нужно раскрыть иерархию документа, кликнуть правой кнопки мыши на пункт<strong>Табличные части</strong>и нажать<strong>Добавить</strong>. Следом задаём нашей табличке реквизиты<strong>Количество</strong>,<strong>Цена</strong>и <strong>Сумма</strong>с типом<strong>неотрицательное число</strong>, длина 10, точность 2.</p>
97 <em>Скриншот: Skillbox Media</em><p>Также добавим табличную часть<strong>Товары</strong>. Чтобы это сделать, нужно раскрыть иерархию документа, кликнуть правой кнопки мыши на пункт<strong>Табличные части</strong>и нажать<strong>Добавить</strong>. Следом задаём нашей табличке реквизиты<strong>Количество</strong>,<strong>Цена</strong>и <strong>Сумма</strong>с типом<strong>неотрицательное число</strong>, длина 10, точность 2.</p>
98 <p>Вуаля! Теперь у нас есть таблица со всеми поступающими и убывающими товарами на складе. В конфигураторе документ будет выглядеть так:</p>
98 <p>Вуаля! Теперь у нас есть таблица со всеми поступающими и убывающими товарами на складе. В конфигураторе документ будет выглядеть так:</p>
99 <em>Скриншот: Skillbox Media</em><p>Теперь запустим пользовательский режим "1С:Предприятия" с помощью всё той же клавиши<strong>F5</strong>. Создадим документ "Поступление товаров" и заполним реквизиты.</p>
99 <em>Скриншот: Skillbox Media</em><p>Теперь запустим пользовательский режим "1С:Предприятия" с помощью всё той же клавиши<strong>F5</strong>. Создадим документ "Поступление товаров" и заполним реквизиты.</p>
100 <em>Скриншот: Skillbox Media</em><p>В нашей табличке появилась первая запись. Но есть один нюанс: при вводе количества и цены<strong>Сумма</strong>не считается автоматически, а нас это не устраивает. Чтобы это исправить, надо будет запустить конструктор формы документа и написать код - о том, как это сделать, расскажем в следующем разделе.</p>
100 <em>Скриншот: Skillbox Media</em><p>В нашей табличке появилась первая запись. Но есть один нюанс: при вводе количества и цены<strong>Сумма</strong>не считается автоматически, а нас это не устраивает. Чтобы это исправить, надо будет запустить конструктор формы документа и написать код - о том, как это сделать, расскажем в следующем разделе.</p>
101 <p>Конструктор формы объекта (например, документа) позволяет создавать формы, которые будут работать в интерфейсе пользователя для отображения этого объекта. Конструктор запускается автоматически при создании новой формы.</p>
101 <p>Конструктор формы объекта (например, документа) позволяет создавать формы, которые будут работать в интерфейсе пользователя для отображения этого объекта. Конструктор запускается автоматически при создании новой формы.</p>
102 <p>Настроим в конфигураторе форму нашего документа<strong>ПоступлениеТоваров</strong>. Для этого выделим в меню документа элемент<strong>Форма</strong>и нажмём клавишу<strong>Добавить</strong>. Запустится окно конструктора формы.</p>
102 <p>Настроим в конфигураторе форму нашего документа<strong>ПоступлениеТоваров</strong>. Для этого выделим в меню документа элемент<strong>Форма</strong>и нажмём клавишу<strong>Добавить</strong>. Запустится окно конструктора формы.</p>
103 <em>Скриншот: Skillbox Media</em><p>Нажмем кнопку<strong>Далее</strong>.</p>
103 <em>Скриншот: Skillbox Media</em><p>Нажмем кнопку<strong>Далее</strong>.</p>
104 <p>В окне конструктора выбираем элементы, которые будут располагаться в интерфейсе формы.</p>
104 <p>В окне конструктора выбираем элементы, которые будут располагаться в интерфейсе формы.</p>
105 <em>Скриншот: Skillbox Media</em><p>После того как мы нажмём<strong>Готово,</strong>откроется окно редактора форм. Видим, что он автоматически создал форму объекта документа<strong>ПоступлениеТоваров</strong>и расположил на ней поля для ввода значений реквизитов.</p>
105 <em>Скриншот: Skillbox Media</em><p>После того как мы нажмём<strong>Готово,</strong>откроется окно редактора форм. Видим, что он автоматически создал форму объекта документа<strong>ПоступлениеТоваров</strong>и расположил на ней поля для ввода значений реквизитов.</p>
106 <em>Скриншот: Skillbox Media</em><p>Теперь нам нужно написать скрипт, который будет автоматически пересчитывать<strong>Сумму</strong>при изменении значений элементов<strong>Количество</strong>или<strong>Цена</strong>. Для этого дважды кликнем по полю<strong>Количество</strong>и войдём в палитру свойств объекта. Выберем обработчик события<strong>ПриИзменении</strong>.</p>
106 <em>Скриншот: Skillbox Media</em><p>Теперь нам нужно написать скрипт, который будет автоматически пересчитывать<strong>Сумму</strong>при изменении значений элементов<strong>Количество</strong>или<strong>Цена</strong>. Для этого дважды кликнем по полю<strong>Количество</strong>и войдём в палитру свойств объекта. Выберем обработчик события<strong>ПриИзменении</strong>.</p>
107 <em>Скриншот: Skillbox Media</em><p>Создаём обработчик события по умолчанию на клиенте. "На клиенте" означает, что код будет работать только на компьютере пользователя, без передачи вычислений на сервер. В нашем случае это логично, так как скрипт будет работать только в приложении пользователя для более полного и удобного отображения данных.</p>
107 <em>Скриншот: Skillbox Media</em><p>Создаём обработчик события по умолчанию на клиенте. "На клиенте" означает, что код будет работать только на компьютере пользователя, без передачи вычислений на сервер. В нашем случае это логично, так как скрипт будет работать только в приложении пользователя для более полного и удобного отображения данных.</p>
108 <em>Скриншот: Skillbox Media</em><p>Открывается модуль формы с автоматически созданной процедурой.</p>
108 <em>Скриншот: Skillbox Media</em><p>Открывается модуль формы с автоматически созданной процедурой.</p>
109 <em>Скриншот: Skillbox Media</em><p>Проделаем то же самое с элементом формы<strong>Цена</strong>и получим ещё одну автоматически созданную процедуру.</p>
109 <em>Скриншот: Skillbox Media</em><p>Проделаем то же самое с элементом формы<strong>Цена</strong>и получим ещё одну автоматически созданную процедуру.</p>
110 <em>Скриншот: Skillbox Media</em><p>Добавим в обе процедуры одинаковый код - формулу расчёта стоимости товара:</p>
110 <em>Скриншот: Skillbox Media</em><p>Добавим в обе процедуры одинаковый код - формулу расчёта стоимости товара:</p>
111 &amp;НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) Элементы.ТоварыСумма = Элементы.ТоварыЦена * Элементы.ТоварыКоличество; КонецПроцедуры &amp;НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) Элементы.ТоварыСумма = Элементы.ТоварыЦена * Элементы.ТоварыКоличество; КонецПроцедуры<p>Упростим код - вынесем расчёт суммы в отдельную процедуру<strong>РассчитатьСумму ()</strong>:</p>
111 &amp;НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) Элементы.ТоварыСумма = Элементы.ТоварыЦена * Элементы.ТоварыКоличество; КонецПроцедуры &amp;НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) Элементы.ТоварыСумма = Элементы.ТоварыЦена * Элементы.ТоварыКоличество; КонецПроцедуры<p>Упростим код - вынесем расчёт суммы в отдельную процедуру<strong>РассчитатьСумму ()</strong>:</p>
112 &amp;НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры &amp;НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры &amp;НаКлиенте Процедура РассчитатьСумму() ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество; КонецПроцедуры<p>Теперь, если мы запустим программу в пользовательском режиме, то увидим, что сумма заполняется автоматически при изменении значений в полях ввода<strong>Количество</strong>и <strong>Цена</strong>. Двигаемся дальше.</p>
112 &amp;НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры &amp;НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры &amp;НаКлиенте Процедура РассчитатьСумму() ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество; КонецПроцедуры<p>Теперь, если мы запустим программу в пользовательском режиме, то увидим, что сумма заполняется автоматически при изменении значений в полях ввода<strong>Количество</strong>и <strong>Цена</strong>. Двигаемся дальше.</p>
113 <em>Скриншот: Skillbox Media</em><p>Далее нам понадобится ещё один документ для учёта -<strong>ПродажаТоваров</strong>. Структура и процедуры в модуле формы у него будут те же самые, что и у документа<strong>ПоступлениеТоваров</strong> - попробуйте создать его самостоятельно по аналогии, чтобы отточить полученные знания.</p>
113 <em>Скриншот: Skillbox Media</em><p>Далее нам понадобится ещё один документ для учёта -<strong>ПродажаТоваров</strong>. Структура и процедуры в модуле формы у него будут те же самые, что и у документа<strong>ПоступлениеТоваров</strong> - попробуйте создать его самостоятельно по аналогии, чтобы отточить полученные знания.</p>
114 <em>Скриншот: Skillbox Media</em><p>Теперь в документах<strong>ПоступлениеТоваров</strong>и <strong>ПродажаТоваров</strong>появились две одинаковые процедуры:<strong>РассчитатьСумму ()</strong>. Но, как мы помним, согласно принципу<a>DRY</a>, дублирование кода - это совсем не здорово. Поэтому, чтобы не повторяться, вынесем процедуру в общий модуль.</p>
114 <em>Скриншот: Skillbox Media</em><p>Теперь в документах<strong>ПоступлениеТоваров</strong>и <strong>ПродажаТоваров</strong>появились две одинаковые процедуры:<strong>РассчитатьСумму ()</strong>. Но, как мы помним, согласно принципу<a>DRY</a>, дублирование кода - это совсем не здорово. Поэтому, чтобы не повторяться, вынесем процедуру в общий модуль.</p>
115 <p><strong>Общие модули</strong> - это объекты конфигурации, в которых можно хранить процедуры, вызываемые в нескольких местах программы.</p>
115 <p><strong>Общие модули</strong> - это объекты конфигурации, в которых можно хранить процедуры, вызываемые в нескольких местах программы.</p>
116 <p>Перейдём в ветку<strong>Общие</strong>дерева конфигурации и создадим общий модуль под названием<strong>ОбщиеМодулиДокументов</strong>.</p>
116 <p>Перейдём в ветку<strong>Общие</strong>дерева конфигурации и создадим общий модуль под названием<strong>ОбщиеМодулиДокументов</strong>.</p>
117 <em>Скриншот: Skillbox Media</em><p>Добавим в него процедуру<strong>РассчитатьСумму ()</strong>и немного изменим её.</p>
117 <em>Скриншот: Skillbox Media</em><p>Добавим в него процедуру<strong>РассчитатьСумму ()</strong>и немного изменим её.</p>
118 Процедура РассчитатьСумму(Товары) Экспорт ТекущаяСтрока = Товары.ТекущиеДанные; ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество; КонецПроцедуры<p>В примере выше мы сделали процедуру экспортной, чтобы её можно было вызывать из любого места программы.</p>
118 Процедура РассчитатьСумму(Товары) Экспорт ТекущаяСтрока = Товары.ТекущиеДанные; ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество; КонецПроцедуры<p>В примере выше мы сделали процедуру экспортной, чтобы её можно было вызывать из любого места программы.</p>
119 <p>А в модулях форм обоих документов изменим код следующим образом:</p>
119 <p>А в модулях форм обоих документов изменим код следующим образом:</p>
120 &amp;НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) ОбщиеМодулиДокументов.РассчитатьСумму(Элементы.Товары); КонецПроцедуры &amp;НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) ОбщиеМодулиДокументов.РассчитатьСумму(Элементы.Товары); КонецПроцедуры<p>Запишем изменения конфигурации. Запустим "1С:Предприятие" в режиме пользователя и создадим новый документ "Продажа товаров".</p>
120 &amp;НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) ОбщиеМодулиДокументов.РассчитатьСумму(Элементы.Товары); КонецПроцедуры &amp;НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) ОбщиеМодулиДокументов.РассчитатьСумму(Элементы.Товары); КонецПроцедуры<p>Запишем изменения конфигурации. Запустим "1С:Предприятие" в режиме пользователя и создадим новый документ "Продажа товаров".</p>
121 <em>Скриншот: Skillbox Media</em><p>Теперь настроим движения документов по регистрам.</p>
121 <em>Скриншот: Skillbox Media</em><p>Теперь настроим движения документов по регистрам.</p>
122 <p>Регистры - это объекты конфигурации, выполненные в виде таблиц с колонками и строками, наподобие таблиц Excel. В них записываются все процессы, которые происходят с документом, и на основе этих записей потом формируются отчёты. Этот процесс в "1С" называется движением по регистрам. Запускается он прямо из документа с помощью кнопки<strong>Провести</strong>.</p>
122 <p>Регистры - это объекты конфигурации, выполненные в виде таблиц с колонками и строками, наподобие таблиц Excel. В них записываются все процессы, которые происходят с документом, и на основе этих записей потом формируются отчёты. Этот процесс в "1С" называется движением по регистрам. Запускается он прямо из документа с помощью кнопки<strong>Провести</strong>.</p>
123 <p><strong>Зачем нужны регистры</strong></p>
123 <p><strong>Зачем нужны регистры</strong></p>
124 <p>Дело в том, что брать данные напрямую из документов неэффективно. Каждый раз при формировании отчёта программе понадобилось бы перебирать все документы, извлекать и обрабатывать данные, что занимает много времени. Использование регистров в "1С" позволяет хранить и систематизировать полученную информацию, а в случае необходимости быстро извлекать её и выводить в отчёт.</p>
124 <p>Дело в том, что брать данные напрямую из документов неэффективно. Каждый раз при формировании отчёта программе понадобилось бы перебирать все документы, извлекать и обрабатывать данные, что занимает много времени. Использование регистров в "1С" позволяет хранить и систематизировать полученную информацию, а в случае необходимости быстро извлекать её и выводить в отчёт.</p>
125 <p>В "1С" версии 8.3 есть четыре вида регистров:</p>
125 <p>В "1С" версии 8.3 есть четыре вида регистров:</p>
126 <ul><li><strong>Регистры сведений</strong> - самые простые. В отличие от других регистров, данные в них можно записывать без документа-регистратора.</li>
126 <ul><li><strong>Регистры сведений</strong> - самые простые. В отличие от других регистров, данные в них можно записывать без документа-регистратора.</li>
127 <li><strong>Регистры бухгалтерии</strong>предназначены для хранения данных о бухгалтерских проводках в конфигурациях, связанных с бухучётом.</li>
127 <li><strong>Регистры бухгалтерии</strong>предназначены для хранения данных о бухгалтерских проводках в конфигурациях, связанных с бухучётом.</li>
128 <li><strong>Регистры расчёта</strong>используются для сложных периодических расчётов, например расчёта заработной платы и других выплат сотрудникам.</li>
128 <li><strong>Регистры расчёта</strong>используются для сложных периодических расчётов, например расчёта заработной платы и других выплат сотрудникам.</li>
129 <li><strong>Регистры накопления</strong>состоят из двух таблиц<strong>Остатки</strong>и <strong>Обороты</strong>. Первая используется для получения информации о данных на текущий момент, а вторая - о данных за период.</li>
129 <li><strong>Регистры накопления</strong>состоят из двух таблиц<strong>Остатки</strong>и <strong>Обороты</strong>. Первая используется для получения информации о данных на текущий момент, а вторая - о данных за период.</li>
130 </ul><p>В регистрах накопления можно "накапливать" данные в разрезе нескольких измерений. Рассмотрим это на примере. Создадим регистр накопления.</p>
130 </ul><p>В регистрах накопления можно "накапливать" данные в разрезе нескольких измерений. Рассмотрим это на примере. Создадим регистр накопления.</p>
131 <em>Скриншот: Skillbox Media</em><p>Назовём его<strong>ОстаткиТоваров</strong>.</p>
131 <em>Скриншот: Skillbox Media</em><p>Назовём его<strong>ОстаткиТоваров</strong>.</p>
132 <em>Скриншот: Skillbox Media</em><p>Зададим измерения:</p>
132 <em>Скриншот: Skillbox Media</em><p>Зададим измерения:</p>
133 <ul><li>Склад (тип - СправочникСсылка.Склады);</li>
133 <ul><li>Склад (тип - СправочникСсылка.Склады);</li>
134 <li>Товар (тип - СправочникСсылка.Товары).</li>
134 <li>Товар (тип - СправочникСсылка.Товары).</li>
135 </ul><p>Зададим ресурсы:</p>
135 </ul><p>Зададим ресурсы:</p>
136 <ul><li>Количество (тип - неотрицательное число, длина 10, точность 2). Здесь будет накапливаться количество товаров.</li>
136 <ul><li>Количество (тип - неотрицательное число, длина 10, точность 2). Здесь будет накапливаться количество товаров.</li>
137 <li>Сумма (тип - неотрицательное число, длина 10, точность 2). Здесь будет накапливаться стоимость товаров.</li>
137 <li>Сумма (тип - неотрицательное число, длина 10, точность 2). Здесь будет накапливаться стоимость товаров.</li>
138 </ul><em>Скриншот: Skillbox Media</em><p>Чтобы сформировать движения регистра, перейдём в документ<strong>ПоступлениеТоваров</strong>. Кликнем правой кнопкой мыши по наименованию и выберем конструктор движений.</p>
138 </ul><em>Скриншот: Skillbox Media</em><p>Чтобы сформировать движения регистра, перейдём в документ<strong>ПоступлениеТоваров</strong>. Кликнем правой кнопкой мыши по наименованию и выберем конструктор движений.</p>
139 <em>Скриншот: Skillbox Media</em><p>Настроим его так:</p>
139 <em>Скриншот: Skillbox Media</em><p>Настроим его так:</p>
140 <em>Скриншот: Skillbox Media</em><p>Теперь откроем модуль документа<strong>ПоступлениеТоваров</strong>":</p>
140 <em>Скриншот: Skillbox Media</em><p>Теперь откроем модуль документа<strong>ПоступлениеТоваров</strong>":</p>
141 <em>Скриншот: Skillbox Media</em><p>Мы видим, что программа автоматически создала процедуру проведения документа:</p>
141 <em>Скриншот: Skillbox Media</em><p>Мы видим, что программа автоматически создала процедуру проведения документа:</p>
142 - Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора внесённые вручную изменения будут утеряны!!! // Регистр ОстаткиТоваров Приход Движения.ОстаткиТоваров.Записываь = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Склад = Склад; Движение.Товар = ТекСтрокаТовары.Товары; Движение.Количество = ТекСтрокаТовары.Количество; Движение.Сумма = ТекСтрокаТовары.Сумма; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры<p>Похожим образом настроим документ<strong>ПродажаТоваров</strong>, только поставим в конструкторе тип движения<strong>Расход</strong>.</p>
142 + Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора внесённые вручную изменения будут утеряны!!! // Регистр ОстаткиТоваров Приход Движения.ОстаткиТоваров.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Склад = Склад; Движение.Товар = ТекСтрокаТовары.Товары; Движение.Количество = ТекСтрокаТовары.Количество; Движение.Сумма = ТекСтрокаТовары.Сумма; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры<p>Похожим образом настроим документ<strong>ПродажаТоваров</strong>, только поставим в конструкторе тип движения<strong>Расход</strong>.</p>
143 <em>Скриншот: Skillbox Media</em><p>В модуле документа программа автоматически создаст код:</p>
143 <em>Скриншот: Skillbox Media</em><p>В модуле документа программа автоматически создаст код:</p>
144 Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора внесённые вручную изменения будут утеряны!!! // Регистр ОстаткиТоваров Приход Движения.ОстаткиТоваров.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Склад = Склад; Движение.Товар = ТекСтрокаТовары.Товары; Движение.Количество = ТекСтрокаТовары.Количество; Движение.Сумма = ТекСтрокаТовары.Сумма; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры<p>Запустим "1С:Предприятие" и проведём созданные ранее документы. Теперь в регистре<strong>Остатки товаров</strong>мы видим их движения - то есть все изменения, которые происходят с элементами документа.</p>
144 Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора внесённые вручную изменения будут утеряны!!! // Регистр ОстаткиТоваров Приход Движения.ОстаткиТоваров.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Склад = Склад; Движение.Товар = ТекСтрокаТовары.Товары; Движение.Количество = ТекСтрокаТовары.Количество; Движение.Сумма = ТекСтрокаТовары.Сумма; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры<p>Запустим "1С:Предприятие" и проведём созданные ранее документы. Теперь в регистре<strong>Остатки товаров</strong>мы видим их движения - то есть все изменения, которые происходят с элементами документа.</p>
145 <em>Скриншот: Skillbox Media</em><p>В этом примере движения документа "Поступление товаров" обозначаются зелёным знаком +, а "Продажа товаров" - красным знаком -.</p>
145 <em>Скриншот: Skillbox Media</em><p>В этом примере движения документа "Поступление товаров" обозначаются зелёным знаком +, а "Продажа товаров" - красным знаком -.</p>
146 <p>Сформируем отчётность по складам, чтобы можно было узнать, сколько товара поступило и было продано за определённый промежуток времени.</p>
146 <p>Сформируем отчётность по складам, чтобы можно было узнать, сколько товара поступило и было продано за определённый промежуток времени.</p>
147 <p>Здесь мы будем использовать один из важнейших механизмов платформы "1С" - схему компоновки данных. Она предназначена для построения отчётов со сложной структурой (настройками, детализацией и свёрткой, группировкой и отборами) на основе их декларативного описания.</p>
147 <p>Здесь мы будем использовать один из важнейших механизмов платформы "1С" - схему компоновки данных. Она предназначена для построения отчётов со сложной структурой (настройками, детализацией и свёрткой, группировкой и отборами) на основе их декларативного описания.</p>
148 <p>Благодаря этой системе разработчику не нужно писать программный код - он задаёт желаемый результат с помощью настроек в конструкторе, а система автоматически генерирует выходную форму. А пользователь, в свою очередь, может гибко настроить отчёт под свои нужды.</p>
148 <p>Благодаря этой системе разработчику не нужно писать программный код - он задаёт желаемый результат с помощью настроек в конструкторе, а система автоматически генерирует выходную форму. А пользователь, в свою очередь, может гибко настроить отчёт под свои нужды.</p>
149 <p>Создадим объект<strong>Отчёт</strong>.</p>
149 <p>Создадим объект<strong>Отчёт</strong>.</p>
150 <em>Скриншот: Skillbox Media</em><p>Назовем его<strong>ОтчётПоТоварам</strong>.</p>
150 <em>Скриншот: Skillbox Media</em><p>Назовем его<strong>ОтчётПоТоварам</strong>.</p>
151 <p>Нажимаем на кнопку<strong>Открыть схему компоновки данных</strong>.</p>
151 <p>Нажимаем на кнопку<strong>Открыть схему компоновки данных</strong>.</p>
152 <em>Скриншот: Skillbox Media</em><em>Скриншот: Skillbox Media</em><p>Нажимаем на кнопку<strong>Готово</strong>и переходим в конструктор макета.</p>
152 <em>Скриншот: Skillbox Media</em><em>Скриншот: Skillbox Media</em><p>Нажимаем на кнопку<strong>Готово</strong>и переходим в конструктор макета.</p>
153 <em>Скриншот: Skillbox Media</em><p>Создаём набор данных<strong>Запрос</strong>.</p>
153 <em>Скриншот: Skillbox Media</em><p>Создаём набор данных<strong>Запрос</strong>.</p>
154 <em>Скриншот: Skillbox Media</em><p>Нажимаем на кнопку<strong>Конструктор запроса</strong>.</p>
154 <em>Скриншот: Skillbox Media</em><p>Нажимаем на кнопку<strong>Конструктор запроса</strong>.</p>
155 <em>Скриншот: Skillbox Media</em><p>В качестве источника данных для отчёта выбираем виртуальную таблицу<strong>ОстаткиТоваров.ОстаткиИОбороты</strong>и переносим в окно<strong>Поля</strong>реквизиты, которые нужны для нашего отчёта. Нажимаем<strong>ОК</strong>.</p>
155 <em>Скриншот: Skillbox Media</em><p>В качестве источника данных для отчёта выбираем виртуальную таблицу<strong>ОстаткиТоваров.ОстаткиИОбороты</strong>и переносим в окно<strong>Поля</strong>реквизиты, которые нужны для нашего отчёта. Нажимаем<strong>ОК</strong>.</p>
156 <em>Скриншот: Skillbox Media</em><p>Мы видим, что программа автоматически сгенерировала текст запроса. Теперь переключаемся на вкладку<strong>Настройки</strong>.</p>
156 <em>Скриншот: Skillbox Media</em><p>Мы видим, что программа автоматически сгенерировала текст запроса. Теперь переключаемся на вкладку<strong>Настройки</strong>.</p>
157 <em>Скриншот: Skillbox Media</em><p>Выбираем нужные поля и создаём группировку<strong>Склад</strong>.</p>
157 <em>Скриншот: Skillbox Media</em><p>Выбираем нужные поля и создаём группировку<strong>Склад</strong>.</p>
158 <em>Скриншот: Skillbox Media</em><p>Мы можем также настроить отбор по полям<strong>Склад</strong>и <strong>Товар</strong>.</p>
158 <em>Скриншот: Skillbox Media</em><p>Мы можем также настроить отбор по полям<strong>Склад</strong>и <strong>Товар</strong>.</p>
159 <em>Скриншот: Skillbox Media</em><p>И сортировку по тем же полям.</p>
159 <em>Скриншот: Skillbox Media</em><p>И сортировку по тем же полям.</p>
160 <em>Скриншот: Skillbox Media</em><p>Перейдём на вкладку<strong>Другие настройки</strong>и создадим заголовок отчёта.</p>
160 <em>Скриншот: Skillbox Media</em><p>Перейдём на вкладку<strong>Другие настройки</strong>и создадим заголовок отчёта.</p>
161 <em>Скриншот: Skillbox Media</em><p>Сохраним изменения и запустим информационную базу в пользовательском режиме программы "1С:Предприятие".</p>
161 <em>Скриншот: Skillbox Media</em><p>Сохраним изменения и запустим информационную базу в пользовательском режиме программы "1С:Предприятие".</p>
162 <p>Вызовем отчёт<strong>Остатки товаров.</strong>Выберем даты начала и окончания периода отслеживания. Нажмём кнопку<strong>Сформировать</strong>.</p>
162 <p>Вызовем отчёт<strong>Остатки товаров.</strong>Выберем даты начала и окончания периода отслеживания. Нажмём кнопку<strong>Сформировать</strong>.</p>
163 <em>Скриншот: Skillbox Media</em><p>Также мы можем перейти в настройки отчёта и сделать, например, отбор по какому-то отдельному складу.</p>
163 <em>Скриншот: Skillbox Media</em><p>Также мы можем перейти в настройки отчёта и сделать, например, отбор по какому-то отдельному складу.</p>
164 <em>Скриншот: Skillbox Media</em><p>В результате получим отчёт только по "Складу1":</p>
164 <em>Скриншот: Skillbox Media</em><p>В результате получим отчёт только по "Складу1":</p>
165 <em>Скриншот: Skillbox Media</em><p>Эта статья - стартовый гайд по основным нюансам разработки в "1С". Мы создали с нуля небольшую конфигурацию и на её примере показали, как можно визуально конструировать основные объекты "1С". Написали несколько процедур на встроенном языке и создали отчёт с использованием схемы компоновки данных.</p>
165 <em>Скриншот: Skillbox Media</em><p>Эта статья - стартовый гайд по основным нюансам разработки в "1С". Мы создали с нуля небольшую конфигурацию и на её примере показали, как можно визуально конструировать основные объекты "1С". Написали несколько процедур на встроенном языке и создали отчёт с использованием схемы компоновки данных.</p>
166 <p>Этого набора знаний хватит, чтобы создавать простые решения с нехитрой бизнес-логикой. Если подумываете заняться "1С" профессионально, советуем чуть глубже изучить<a>официальную документацию</a>к платформе. А если хотите освоить разработку быстро, на реальных кейсах, да ещё и с сертификатом от "1С" на выходе - приходите на курс "<a>Профессия 1С-разработчик</a>".</p>
166 <p>Этого набора знаний хватит, чтобы создавать простые решения с нехитрой бизнес-логикой. Если подумываете заняться "1С" профессионально, советуем чуть глубже изучить<a>официальную документацию</a>к платформе. А если хотите освоить разработку быстро, на реальных кейсах, да ещё и с сертификатом от "1С" на выходе - приходите на курс "<a>Профессия 1С-разработчик</a>".</p>
167 <a>Курс с трудоустройством: "Профессия 1С-программист" Узнать о курсе</a>
167 <a>Курс с трудоустройством: "Профессия 1С-программист" Узнать о курсе</a>