Основы программирования в 1С:Предприятие 8

Курс предназначен для начинающих разработчиков и охватывает базовые принципы работы с платформой 1С, создание конфигураций и написание программного кода. Вы изучите архитектуру системы, работу с данными и создание пользовательских интерфейсов.

1. Введение в платформу 1С:Предприятие и работа в режиме Конфигуратора

Введение в платформу 1С:Предприятие и работа в режиме Конфигуратора

Добро пожаловать в курс «Основы программирования в 1С:Предприятие 8». Это первая статья, с которой начнется ваше погружение в мир разработки бизнес-приложений. Многие слышали о «1С», но часто под этим понимают лишь бухгалтерскую программу. На самом деле, 1С — это мощная технологическая платформа, позволяющая создавать самые разнообразные информационные системы: от учета на складе до управления холдингами.

В этой статье мы разберем фундаментальные понятия: что такое платформа, чем она отличается от конфигурации, и как устроен главный инструмент разработчика — Конфигуратор.

Платформа и Конфигурация: в чем разница?

Самый важный концептуальный барьер для новичка — это понимание архитектуры системы 1С:Предприятие. Система всегда состоит из двух неразрывных частей:

  • Платформа (Технологическая платформа 1С:Предприятие 8).
  • Конфигурация (Прикладное решение).
  • Аналогия с медиаплеером

    Представьте, что у вас есть видеофайл с фильмом. Сам по себе файл — это просто набор данных. Чтобы его посмотреть, вам нужна программа-видеоплеер.

    * Платформа — это видеоплеер. Это среда запуска, «движок», который умеет интерпретировать команды и работать с компьютером. * Конфигурация — это файл с фильмом. Это набор правил, алгоритмов и структур данных, написанных для конкретной задачи (например, «Бухгалтерия» или «Управление торговлей»).

    !Схема взаимодействия Платформы и Конфигурации, показывающая, что Платформа является основой для запуска различных прикладных решений.

    Разработчик 1С (то есть вы) пишет Конфигурацию. Платформа же разрабатывается самой фирмой «1С», и мы, как прикладные программисты, не можем изменить её исходный код, но используем её возможности.

    Режимы запуска системы

    Когда вы устанавливаете 1С:Предприятие, вы получаете доступ к двум основным режимам работы. Понимание различий между ними критически важно.

    1. 1С:Предприятие (Пользовательский режим)

    Это режим, в котором работают конечные пользователи: бухгалтеры, менеджеры, кладовщики. В этом режиме они вводят данные, проводят документы, формируют отчеты.

    * Что можно делать: Создавать и изменять данные (документы, справочники). * Что нельзя делать: Изменять структуру программы или её программный код.

    2. Конфигуратор (Режим разработчика)

    Это ваша «мастерская». В этом режиме работают программисты и администраторы. Здесь создается структура базы данных, пишутся программные модули, рисуются формы интерфейса.

    * Что можно делать: Создавать новые объекты (справочники, документы), писать код, администрировать базу. * Что нельзя делать: Вводить пользовательские данные (например, создать конкретную накладную на продажу товара).

    > Важно: Данные (информация о продажах, клиентах) и Метаданные (структура программы, код) хранятся в одной базе, но управляются из разных режимов.

    !Сравнение визуального интерфейса Пользовательского режима и режима Конфигуратора.

    Начало работы: Окно запуска

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

    Алгоритм создания новой базы:

  • Нажать кнопку Добавить.
  • Выбрать Создание новой информационной базы.
  • Выбрать пункт Создание информационной базы без конфигурации (это создаст абсолютно чистый лист для разработки).
  • Указать имя базы (например, «МояПерваяБаза») и каталог на диске, где она будет храниться.
  • После создания базы выделите её в списке и нажмите кнопку Конфигуратор.

    Интерфейс Конфигуратора

    Зайдя в Конфигуратор, вы увидитескелет будущей программы. Давайте разберем основные элементы интерфейса, с которыми вам придется работать 90% времени.

    Дерево конфигурации

    Это главное окно. Если оно не открылось автоматически, нажмите меню Конфигурация -> Открыть конфигурацию.

    Дерево конфигурации — это иерархический список всех объектов, из которых состоит ваша программа. Оно напоминает оглавление книги или структуру папок в проводнике. Все объекты сгруппированы по типам (классам):

    * Справочники (списки клиентов, товаров). * Документы (накладные, заказы). * Отчеты (аналитика). * Обработки (сервисные функции).

    В 1С принят подход метаданных. Вы не создаете таблицу в базе данных вручную через SQL-запрос CREATE TABLE. Вы просто добавляете новый объект «Справочник» в дереве, а Платформа сама создаст нужные таблицы в базе данных.

    Палитра свойств

    У каждого объекта в дереве есть свойства. Если выделить объект (например, сам корень конфигурации) и нажать правую кнопку мыши -> Свойства (или Alt+Enter), откроется палитра свойств.

    Здесь задаются: * Имя (уникальный идентификатор для использования в коде, например, Товары). * Синоним (то, что увидит пользователь, например, Список товаров). * Типы данных, длины строк и другие настройки.

    Окно редактирования объекта

    Если дважды кликнуть по объекту в дереве, откроется специальное окно редактирования. Это «мастер», который позволяет настроить объект по шагам: создать его реквизиты (поля), настроить формы, права доступа и прочее.

    !Детальная схема интерфейса Конфигуратора с указанием ключевых зон: Дерево конфигурации, Палитра свойств и Окно редактирования.

    Ваш первый запуск

    Даже если вы еще ничего не создали, пустая конфигурация — это уже рабочая программа. Давайте проверим это.

  • В Конфигураторе нажмите клавишу F5 (или меню Отладка -> Начать отладку).
  • Платформа предложит обновить конфигурацию базы данных. Ответьте Да.
  • > Обратите внимание: В 1С существует понятие «Основная конфигурация» (то, что вы правите в Конфигураторе) и «Конфигурация базы данных» (то, с чем работают пользователи). Изменения применяются только после обновления (нажатия F7 или F5).

    После запуска откроется режим 1С:Предприятие. Вы увидите пустой интерфейс. Это и есть ваша программа. Пока она пуста, но в следующих уроках мы начнем наполнять её смыслом: создавать справочники для хранения информации и документы для фиксации хозяйственных операций.

    Синтаксис-помощник

    Последний инструмент, о котором нужно знать с первого дня — это Синтаксис-помощник. Это встроенная справка для программиста.

    В 1С тысячи встроенных функций и процедур. Запомнить их все невозможно. Синтаксис-помощник (вызывается через меню Справка или Ctrl+Shift+F1) содержит описание всех объектов языка, примеры кода и объяснение параметров.

    Умение читать Синтаксис-помощник — главный навык профессионального разработчика 1С.

    Заключение

    Сегодня мы познакомились с фундаментом разработки в 1С: * Узнали, что Платформа запускает Конфигурацию. * Поняли разницу между режимом Конфигуратора (для программиста) и Предприятия (для пользователя). * Рассмотрели Дерево конфигурации — основной инструмент управления структурой программы.

    В следующей статье мы перейдем от теории к практике и создадим свои первые объекты метаданных — Справочники, научившись хранить информацию в нашей системе.

    2. Проектирование структуры данных: Справочники, Документы и Регистры

    Проектирование структуры данных: Справочники, Документы и Регистры

    В предыдущей статье мы познакомились с интерфейсом Конфигуратора и создали пустую информационную базу. Сейчас она похожа на чистый лист бумаги. Чтобы превратить её в полезный инструмент для бизнеса, нам нужно научить систему хранить и обрабатывать информацию.

    В мире 1С:Предприятие существует уникальный подход к проектированию данных. В отличие от классических SQL-баз данных, где разработчик оперирует просто «таблицами», в 1С мы работаем с высокоуровневыми объектами, которые имитируют реальные сущности бизнеса. Эти объекты называют объектами метаданных.

    Сегодня мы разберем «Трёх китов» архитектуры 1С:

  • Справочники (Кто? Что?)
  • Документы (Что произошло?)
  • Регистры (Какой итог?)
  • Понимание взаимодействия этих трех элементов — это 80% успеха в проектировании любой конфигурации.

    Справочники: Существительные системы

    Справочники — это списки объектов, которые имеют условно-постоянный характер. Это те данные, которые не меняются каждую секунду.

    Представьте, что вы ведете учет в обычном блокноте. На первых страницах вы, скорее всего, выпишете список своих клиентов с телефонами или список товаров с их описанием. В 1С это и есть справочники.

    Примеры справочников:

    * Номенклатура (товары, услуги). * Контрагенты (клиенты, поставщики). * Сотрудники. * Склады.

    Ключевые особенности:

    * Идентификация: Каждый элемент справочника — это уникальная сущность. Система различает их по внутреннему идентификатору (ссылке), даже если их названия совпадают. * Иерархия: Справочники могут быть многоуровневыми. Например, в справочнике «Номенклатура» можно создать папку «Бытовая техника», а внутри — папку «Холодильники». * Реквизиты: Это поля, описывающие элемент. У товара это может быть «Артикул», «Вес», «Производитель».

    > Справочники отвечают на вопросы: «Кто?» и «Что?». Они хранят информацию о мире, в котором работает предприятие.

    Документы: Глаголы системы

    Если Справочники — это статика, то Документы — это динамика. Документы фиксируют события, происходящие во времени.

    Бизнес не стоит на месте: товары покупаются, деньги выплачиваются, сотрудники нанимаются. Каждое такое событие в 1С отражается с помощью Документа.

    Примеры документов:

    * Поступление товаров (привезли товар на склад). * Реализация товаров (продали товар клиенту). * Прием на работу. * Платежное поручение.

    Ключевые особенности:

  • Привязка ко времени: У каждого документа обязательно есть Дата (с точностью до секунды). Это позволяет выстроить хронологию событий.
  • Номер: Система автоматически присваивает уникальный номер каждому документу.
  • Табличные части: В отличие от справочников, документы часто содержат списки внутри себя. Например, в накладной мы перечисляем не один товар, а целый список с указанием количества и цены.
  • Проведение документа

    Это самое важное понятие в работе документов. Документ может быть просто записан (как черновик), а может быть проведен.

    * Записанный документ: Просто лежит в базе, как бумажка на столе. Он не влияет на остатки товаров или долги клиентов. * Проведенный документ: Активно влияет на систему учета. Он «сообщает» системе, что событие свершилось, и нужно изменить остатки.

    !Запись сохраняет данные документа, а Проведение изменяет состояние учета.

    Регистры: Счетное табло

    Здесь новички часто совершают ошибку. Они думают: «Если у меня есть документы продаж, я могу просто перебрать их все, сложить суммы и узнать, сколько у меня денег».

    Технически — да. Практически — это катастрофа для производительности. Представьте, что для того, чтобы узнать остаток товара на складе сегодня, системе нужно пересчитать все накладные за 10 лет работы компании. Это займет минуты или даже часы.

    Для решения этой задачи существуют Регистры.

    Регистр — это специальная таблица, оптимизированная для быстрого получения итогов. Когда Документ проводится, он делает записи в Регистры.

    Виды регистров

    В 1С существует четыре вида регистров, но мы рассмотрим два самых главных:

    #### 1. Регистры накопления (Accumulation Registers) Они похожи на кошелек или склад. Они хранят числовые значения, которые можно складывать и вычитать. * Пример: Остатки товаров, Взаиморасчеты с клиентами, Денежные средства. * Что хранят: Остатки (сколько сейчас?) и Обороты (сколько пришло/ушло за период?).

    #### 2. Регистры сведений (Information Registers) Они хранят значения свойств, которые могут меняться со временем, но не складываются арифметически. * Пример: Курсы валют, Цены товаров, Паспортные данные сотрудников. Почему не накопление? Нельзя сложить курс доллара за вчера и за сегодня и получить «суммарный курс». Курс просто есть* на определенную дату.

    Архитектурный треугольник 1С

    Теперь соберем всё вместе. Как эти объекты взаимодействуют?

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

  • Справочники хранят нормативно-справочную информацию (НСИ). Они используются в Документах, чтобы пользователь не вводил название товара вручную, а выбирал его из списка.
  • Документы используют данные Справочников, добавляют к ним количество, цену, дату и при проведении пишут данные в Регистры.
  • Отчеты (то, ради чего всё затевалось) получают данные только из Регистров.
  • !Справочники питают Документы, Документы пишут в Регистры, Отчеты читают из Регистров.

    Пример из жизни: Продажа телефона

    Давайте проследим цепочку событий при продаже смартфона:

  • Справочники: У нас есть элемент справочника Номенклатура — «iPhone 15» и справочника Контрагенты — «Иван Иванов».
  • Документ: Менеджер создает документ «Реализация товаров».
  • Выбирает дату: Сегодня*. Выбирает клиента: «Иван Иванов»* (ссылка на Справочник). В таблице выбирает товар: «iPhone 15»* (ссылка на Справочник). Указывает количество: 1 шт*. Указывает цену: 100 000 руб*.
  • Проведение (Движения по регистрам): Менеджер нажимает кнопку «Провести». В этот момент Документ делает записи в регистры:
  • В Регистр накопления «Товары на складах»: минус 1 шт* товара «iPhone 15». В Регистр накопления «Продажи»: плюс 100 000 руб* выручки.
  • Отчет: Директор открывает отчет «Остатки товаров». Отчет обращается к Регистру «Товары на складах» и мгновенно выдает результат, не пересчитывая документы.
  • Почему нельзя читать итоги из документов?

    Это один из главных вопросов на собеседованиях. Почему отчет не может просто прочитать документы?

    Предположим, мы хотим узнать остаток денег в кассе. Если мы будем считать по документам, формула будет выглядеть так:

    Где — текущий остаток, — количество всех документов за всю историю, — приход денег в -м документе, — расход денег в -м документе.

    С каждым днем растет. Через год расчет будет занимать секунды, через 5 лет — минуты. Система встанет.

    Регистр же хранит уже готовое значение . Обращение к нему занимает миллисекунды.

    Заключение

    Мы спроектировали ментальную модель нашей будущей программы: * Справочники — для хранения списков объектов. * Документы — для регистрации событий. * Регистры — для хранения итогов и состояний.

    В следующей статье мы перейдем к практике: откроем Конфигуратор и создадим наши первые Справочники, настроив их структуру и формы.

    3. Основы встроенного языка программирования: переменные, циклы, процедуры и функции

    Основы встроенного языка программирования: переменные, циклы, процедуры и функции

    В предыдущих статьях мы создали «тело» нашей информационной системы: спроектировали Справочники, Документы и Регистры. Но пока что это тело неподвижно. Чтобы система начала «думать», принимать решения и автоматизировать рутину, ей нужен «мозг». Этим мозгом является программный код.

    В платформе 1С:Предприятие используется собственный встроенный язык программирования. Он высокого уровня, предметно-ориентированный и, что самое заметное для новичка, — двуязычный. Вы можете писать код как на английском (как в Java или C#), так и на русском языке. В русскоязычном пространстве стандартом де-факто является написание кода на русском, поэтому в этом курсе мы будем использовать именно его.

    Сегодня мы разберем атомы и молекулы программирования: переменные, операторы, циклы и подпрограммы.

    Где пишется код?

    Прежде чем изучать синтаксис, нужно понять, где физически находится код. В 1С код не пишется в одном сплошном файле. Он разбит на Модули.

    У каждого объекта (Справочника, Документа) есть свои модули: * Модуль объекта — здесь описываются алгоритмы, связанные с самим объектом (например, проверка заполнения полей перед записью). * Модуль формы — здесь описывается поведение интерфейса (что произойдет при нажатии на кнопку).

    Переменные: Контейнеры для данных

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

    Представьте переменную как коробку, на которой маркером написано имя. Вы можете положить в эту коробку значение, потом вынуть его, посмотреть, изменить и положить обратно.

    Объявление переменных

    В 1С переменные можно объявлять явно с помощью ключевого слова Перем (в начале модуля), но чаще всего они создаются «на лету» в момент присваивания значения.

    Типизация

    Язык 1С имеет динамическую типизацию. Это значит, что жесткой привязки типа данных к переменной нет. В одну и ту же «коробку» можно сначала положить число, а потом — строку (хотя с точки зрения стиля программирования так делать не рекомендуется).

    Основные примитивные типы данных:

  • Число: 10, 3.14, -500.
  • Строка: Любой текст в кавычках "Привет, мир!".
  • Дата: Пишется в апострофах '20231231' (31 декабря 2023 года).
  • Булево: Логическое значение Истина или Ложь.
  • Операторы и выражения

    С переменными можно производить действия. Для этого используются операторы.

    Арифметические операции

    Здесь всё как в математике: * + (сложение) * - (вычитание) (умножение) * / (деление)

    Особенность знака +: если вы складываете два числа, будет сумма. Если две строки — они склеятся (конкатенация).

    Логические операции

    Используются для проверки условий: * = (Равно). Важно: В 1С один знак равенства используется и для присваивания значения (А = 5), и для сравнения (Если А = 5 Тогда). Система сама понимает контекст. * <> (Не равно). * <, >, <=, >= (Меньше, больше, меньше или равно, больше или равно).

    Условный оператор: Если...Тогда

    Программа редко бывает линейной. Часто нужно выполнить код только при определенном условии. Для этого используется конструкция Если ... Тогда ... Иначе ... КонецЕсли.

    !Схема работы условного оператора: программа выбирает путь выполнения в зависимости от истинности условия.

    Пример кода:

    В программировании условия часто описываются с помощью булевой алгебры. Рассмотрим формальную запись условия:

    Где: * — результат (Истина или Ложь). * и — сравниваемые значения (например, сумма заказа и порог скидки). * — дополнительное условие (например, наличие товара). * — логическое «И» (в 1С пишется как И). * — логическое «Не равно» (в 1С пишется как <>).

    В коде 1С это выглядело бы так: Если СуммаЗаказа > ПорогСкидки И ОстатокТовара <> 0 Тогда ...

    Циклы: Повторение действий

    Если вам нужно выполнить одно и то же действие много раз (например, проверить 100 строк в накладной), используются циклы. В 1С есть три основных вида циклов.

    1. Цикл «Для» (со счетчиком)

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

    2. Цикл «Для Каждого» (обход коллекции)

    Это самый популярный цикл в 1С. Он используется для перебора строк в таблицах, массивах или списках. Вам не нужно знать количество элементов, цикл сам возьмет первый, потом второй, и так до конца.

    3. Цикл «Пока» (по условию)

    Выполняется до тех пор, пока условие истинно. Опасный цикл: если условие никогда не станет ложным, программа «зависнет» (уйдет в бесконечный цикл).

    Процедуры и Функции

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

    В 1С подпрограммы делятся на два типа:

  • Функция — выполняет действия и обязательно возвращает результат (ответ).
  • Процедура — просто выполняет действия, ничего не возвращая в точку вызова.
  • Аналогия из жизни

    * Функция — это кофемашина. Вы даете ей зерна и воду (параметры), она жужжит и возвращает вам чашку кофе. * Процедура — это телевизор. Вы нажимаете кнопку «Вкл» (вызов), он начинает показывать картинку. Он не выдает вам физический предмет в руки, он просто меняет состояние окружающего мира (светится экран).

    Пример Функции

    Пример Процедуры

    Область видимости переменных

    Важно понимать, где «живут» переменные.

  • Локальные переменные: Объявлены внутри процедуры или функции. Они видны только внутри неё. Как только процедура завершилась, переменная уничтожается.
  • Переменные модуля: Объявлены в самом начале модуля (вне процедур). Они доступны любой процедуре этого модуля.
  • Комментарии

    Хороший код должен быть понятен не только компьютеру, но и человеку. Используйте комментарии для пояснения сложных моментов. В 1С комментарий начинается с двух косых черт //.

    Заключение

    Мы рассмотрели фундамент языка 1С: * Переменные хранят данные. * Условия (Если) управляют логикой. * Циклы (Для, Пока) автоматизируют повторения. * Процедуры и Функции структурируют код.

    Этого набора инструментов достаточно, чтобы написать практически любой алгоритм. В следующей статье мы применим эти знания на практике: напишем обработчики событий для наших документов, чтобы автоматически рассчитывать суммы и контролировать остатки.

    4. Язык запросов 1С: выборка данных и работа с конструктором запросов

    Язык запросов 1С: выборка данных и работа с конструктором запросов

    В предыдущих статьях мы научились создавать структуру базы данных (Справочники, Документы, Регистры) и писать алгоритмы на встроенном языке, используя переменные и циклы. Казалось бы, у нас есть всё необходимое: мы можем перебрать все товары в цикле Для Каждого и найти нужный.

    Однако, когда в вашей базе данных накопится 100 000 товаров или миллион записей о продажах, обычный цикл заставит систему «зависнуть» на несколько минут. Для эффективной работы с данными в 1С:Предприятие существует специальный механизм — Язык запросов.

    В этой статье мы разберем, как правильно «общаться» с базой данных, чтобы получать информацию мгновенно, и изучим главный инструмент разработчика — Конструктор запросов.

    Почему нельзя использовать циклы для поиска?

    Представьте, что вы пришли в огромную библиотеку за конкретной книгой «Война и мир».

  • Подход с циклами (объектная модель): Вы подходите к первой полке, берете первую книгу, читаете название. Не та. Берете вторую. Не та. И так перебираете тысячи книг, пока не найдете нужную.
  • Подход с запросами (табличная модель): Вы подходите к библиотекарю и говорите: «Дайте мне книгу с названием "Война и мир"». Библиотекарь смотрит в картотеку (индекс) и сразу приносит вам книгу.
  • Язык запросов — это способ отдать приказ системе управления базами данных (СУБД) выбрать только нужные записи, не передавая лишнюю информацию на ваш компьютер.

    Математическая модель выборки

    С точки зрения теории множеств, выполнение запроса — это операция фильтрации. Мы можем описать результат выборки следующей формулой:

    Где: * — результирующее множество записей (то, что вернет запрос). * — исходная таблица (например, Справочник «Товары»). * — конкретная запись (строка) в этой таблице. * — предикат (условие), которое мы накладываем (например, «Цена > 1000»). * — символ принадлежности элемента множеству. * — разделитель, означающий «таких, что».

    Запрос позволяет получить множество , не перебирая элементы вручную на стороне клиента.

    Основы синтаксиса языка запросов

    Язык запросов 1С очень похож на классический SQL (Structured Query Language), который используется во всем мире, но имеет две ключевые особенности:

  • Русский синтаксис (хотя английский тоже поддерживается).
  • Работа с объектами, а не просто с таблицами (разыменование полей).
  • Структура простейшего запроса выглядит так:

    Пример запроса

    Допустим, мы хотим получить список названий товаров и их закупочных цен из справочника «Номенклатура», но только для тех товаров, которые являются услугами.

    Разберем ключевые слова: * ВЫБРАТЬ — указывает, какие колонки мы хотим видеть в результате. * ИЗ — указывает источник данных (откуда берем). * КАК — задает псевдоним (короткое имя) для таблицы, чтобы удобнее обращаться к ней в тексте запроса. * ГДЕ — накладывает фильтр.

    Разыменование полей (Точка — мощнейший инструмент)

    В обычном SQL, чтобы получить имя поставщика товара, вам пришлось бы писать сложную конструкцию соединения таблиц (JOIN). В 1С всё гораздо проще благодаря объектной природе данных.

    Если у товара есть реквизит «Поставщик» (который ссылается на справочник «Контрагенты»), а у контрагента есть реквизит «Регион», мы можем обратиться к ним через точку.

    Система сама построит все необходимые связи между таблицами базы данных. Это называется разыменованием ссылочных полей.

    !Визуализация механизма разыменования полей через точку, связывающего данные из разных справочников.

    Конструктор запросов

    Писать текст запроса вручную — полезный навык, но профессионалы 90% времени используют Конструктор запросов. Это визуальный инструмент, который позволяет «накликивать» запрос мышкой, избегая синтаксических ошибок.

    Как вызвать конструктор?

    В любом модуле (где вы пишете код) нажмите правую кнопку мыши и выберите пункт Конструктор запроса.... Если система спросит «Создать новый запрос?», ответьте утвердительно.

    Интерфейс конструктора

    Конструктор состоит из нескольких вкладок. Разберем самые важные:

  • Таблицы и поля (первая вкладка).
  • * Слева: список всех таблиц базы (Справочники, Документы, Регистры). * Посередине: выбранные таблицы. * Справа: поля, которые попадут в результат. Действие:* Перетащите таблицу «Справочник.Номенклатура» в центр, а затем нужные поля (Наименование, Артикул) в правое окно.

  • Условия.
  • * Здесь задается секция ГДЕ. * Вы можете перетащить поле «Услуга» и написать условие Услуга = Истина.

  • Порядок.
  • * Позволяет отсортировать результат (например, по алфавиту или по возрастанию цены).

    После нажатия кнопки ОК, конструктор автоматически сгенерирует программный код и вставит его в ваш модуль.

    !Основное окно Конструктора запросов: выбор таблиц и полей для выборки.

    Выполнение запроса в коде

    Текст запроса — это просто строка. Чтобы получить данные, нужно создать объект Запрос и выполнить его. Стандартный шаблон кода выглядит так:

    Параметры запроса

    Обратите внимание на конструкцию &МинимальныйОклад в тексте запроса и метод УстановитьПараметр.

    Никогда не склеивайте текст запроса с значениями переменных через «+»!

    Плохо:* ... ГДЕ Оклад > " + МояПеременная Хорошо:* ... ГДЕ Оклад > &МойПараметр

    Использование параметров (&Имя) позволяет системе кэшировать план выполнения запроса, что значительно ускоряет работу, и защищает от ошибок типов данных.

    Работа с итогами и группировками

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

    Для этого в языке запросов используются агрегатные функции: * СУММА(Поле) * КОЛИЧЕСТВО(Поле) * СРЕДНЕЕ(Поле) * МАКСИМУМ(Поле) / МИНИМУМ(Поле)

    Если вы используете агрегатную функцию, обязательно нужно указать, по каким полям делать группировку (ключевое слово СГРУППИРОВАТЬ ПО).

    Пример подсчета количества товаров по видам:

    Заключение

    Язык запросов — это фундамент производительности в 1С. * Мы узнали, что запросы позволяют выбирать данные точечно, в отличие от перебора в циклах. * Познакомились с ключевыми словами ВЫБРАТЬ, ИЗ, ГДЕ. * Увидели магию «точки» для обращения к связанным таблицам. * Рассмотрели Конструктор запросов, который пишет код за нас.

    В следующей статье мы применим эти знания для создания Отчетов — главного инструмента, с помощью которого руководители видят пульс своего бизнеса, используя систему компоновки данных (СКД).

    5. Разработка управляемых форм и создание отчетов на Системе Компоновки Данных

    Разработка управляемых форм и создание отчетов на Системе Компоновки Данных

    Мы уже проделали большой путь: спроектировали структуру базы данных (Справочники, Документы, Регистры), научились писать алгоритмы на встроенном языке и извлекать данные с помощью запросов. Однако, пока наша программа выглядит как «черный ящик» — мы знаем, что внутри есть данные, но у пользователя нет удобного способа взаимодействовать с ними и анализировать результаты.

    В этой статье мы займемся «лицом» нашей программы. Мы разберем две фундаментальные темы:

  • Управляемые формы — интерфейс, через который пользователи вводят данные.
  • Система Компоновки Данных (СКД) — мощный конструктор для создания аналитических отчетов.
  • Философия Управляемого интерфейса

    До появления платформы 1С:Предприятие 8.2 (и концепции управляемого приложения) разработчики рисовали формы «по пикселям», жестко задавая координаты кнопок и полей. Это работало на обычных мониторах, но становилось проблемой при изменении разрешения экрана или переходе в веб-браузер.

    Управляемая форма — это декларативное описание интерфейса. Вы как разработчик не говорите системе: «Нарисуй кнопку в координатах 100x200». Вы говорите: «Мне нужна кнопка в группе Командная панель».

    Платформа сама решает, как именно отрисовать эту кнопку, в зависимости от того, где запущена программа: * На компьютере с Windows. * В веб-браузере (Chrome, Safari). * На планшете или смартфоне.

    Клиент-серверная архитектура формы

    Это самый сложный момент для понимания, но критически важный. Управляемая форма разделена на две части:

  • Клиент (Тонкий клиент, Веб-клиент): Это то, что происходит на экране пользователя. Здесь мы можем только взаимодействовать с интерфейсом (нажать кнопку, открыть окно, вывести сообщение).
  • Сервер: Это то, где живут данные. База данных доступна только на сервере.
  • !Визуализация взаимодействия клиентской и серверной части при работе с формой.

    Если вы попытаетесь выполнить Запрос к базе данных на Клиенте, система выдаст ошибку. Почему? Потому что «Тонкий клиент» не знает, где лежит база данных, он умеет только рисовать окошки.

    Работа с редактором форм

    Когда вы создаете форму (например, форму элемента Справочника), открывается редактор форм. Он состоит из трех основных вкладок:

  • Элементы: Это дерево визуальных компонентов (поля ввода, кнопки, группы, таблицы). То, что видит пользователь.
  • Реквизиты: Это данные формы. Переменные, которые живут, пока открыта форма. Важно отличать Реквизит Формы (временные данные) от Реквизита Объекта (то, что запишется в базу).
  • Команды: Это действия (кнопки), которые можно выполнить.
  • Связь данных и интерфейса

    Главный принцип: Элемент формы отображает Реквизит формы.

    Чтобы поле ввода заработало, вы должны связать его с данными через свойство ПутьКДанным. Например, вы создаете поле ввода и указываете путь Объект.Наименование. Теперь всё, что пользователь введет в это поле, автоматически попадет в реквизит Наименование вашего справочника.

    Программирование формы: Директивы компиляции

    В модуле формы весь код разделен специальными инструкциями — директивами компиляции, которые указывают, где должен выполняться код.

    &НаКлиенте

    Используется для обработки действий пользователя (нажатие кнопок, открытие окон, вопросы пользователю).

    &НаСервере

    Используется для работы с базой данных (чтение, запись, запросы).

    > Золотое правило: Делайте на клиенте минимум действий. Как только нужны данные — уходите на сервер, делайте вычисления там и возвращайте готовый результат.

    Система Компоновки Данных (СКД)

    Теперь перейдем к отчетам. Раньше (в версиях 7.7 и 8.0) отчеты писались полностью вручную: программист создавал макет (таблицу Excel-подобного вида) и кодом заполнял каждую ячейку. Это было долго и негибко.

    Система Компоновки Данных (СКД) — это визуальный конструктор, который позволяет создавать сложные отчеты практически без написания кода.

    Из чего состоит СКД?

    Создав объект «Отчет» и нажав кнопку «Открыть схему компоновки данных», вы увидите множество вкладок. Разберем главные:

  • Наборы данных: Здесь пишется Запрос (тот самый, который мы изучали в прошлой статье). Это источник сырых данных.
  • Ресурсы: Здесь мы указываем, какие поля являются числами и как их нужно суммировать.
  • Настройки: Здесь мы определяем внешний вид отчета (группировки, таблицы, диаграммы).
  • Математика агрегации данных

    Вкладка Ресурсы отвечает за агрегацию. Когда отчет сворачивает детальные записи в общие итоги, он применяет математическую операцию суммирования (или другую функцию, например, Максимум или Среднее).

    Формально процесс вычисления итога ресурса можно описать формулой:

    Где: * — значение ресурса для конкретной группировки (например, «Итого по складу»). * — знак суммирования (операция агрегации). * — количество записей, попавших в эту группировку. * — значение поля в -й строке выборки. * — функция агрегации (чаще всего просто само значение , но может быть и и т.д.).

    Без настройки ресурсов СКД выведет вам просто длинный список строк, как в Excel, без итогов внизу.

    Создание первого отчета: Пошаговый алгоритм

    Давайте создадим отчет «Остатки товаров».

    Шаг 1: Набор данных На вкладке «Наборы данных» добавляем новый «Набор данных - запрос». Запускаем Конструктор запроса и выбираем таблицу РегистрНакопления.ТоварыНаСкладах.Остатки. Выбираем поля Номенклатура, Склад и КоличествоОстаток.

    Шаг 2: Ресурсы Переходим на вкладку «Ресурсы». Перетаскиваем поле КоличествоОстаток в окно ресурсов. Выражение автоматически станет Сумма(КоличествоОстаток). Это значит, что если у нас будет несколько записей по одному товару, система их сложит.

    Шаг 3: Настройки Переходим на вкладку «Настройки».

  • В окне слева (иерархия) добавляем новую группировку. Если оставить поле пустым, это будет «Детальные записи» (просто список).
  • Но мы хотим структуру. Добавим группировку по полю Склад.
  • Внутри группировки Склад добавим вложенную группировку Номенклатура.
  • Шаг 4: Выбранные поля На вкладке «Выбранные поля» (внизу) указываем, что мы хотим видеть в отчете: КоличествоОстаток.

    !Пример настройки структуры отчета в Системе Компоновки Данных.

    Теперь, запустив отчет в режиме Предприятия, пользователь увидит дерево: * Склад Основной (Всего: 100 шт) * Товар А (10 шт) * Товар Б (90 шт)

    Преимущества СКД

    Почему стоит использовать СКД, а не писать код вручную?

  • Интерактивность: Пользователь может сам в режиме Предприятия изменить настройки: добавить группировку, наложить отбор, изменить сортировку. Программисту не нужно переписывать код.
  • Производительность: Платформа автоматически оптимизирует запрос. Если пользователь не выбрал поле «Артикул» в настройках, СКД даже не будет выбирать его из базы данных.
  • Универсальность: Один и тот же отчет можно вывести в таблицу, в диаграмму или выгрузить в сводную таблицу Excel.
  • Заключение

    Сегодня мы замкнули круг разработки: * Мы научились создавать Управляемые формы, чтобы пользователи могли вводить данные в систему. * Мы разобрали Директивы компиляции (&НаКлиенте, &НаСервере), поняв, как распределяется нагрузка между компьютером пользователя и сервером. * Мы познакомились с СКД — инструментом, который превращает сухие цифры базы данных в наглядные аналитические отчеты.

    Теперь вы обладаете полным набором базовых знаний для создания простой учетной системы. Вы можете спроектировать структуру, написать логику проведения документов и создать удобный интерфейс для работы и анализа.