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

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

1. Введение в платформу 1С: архитектура, установка и режимы работы

Введение в платформу 1С: архитектура, установка и режимы работы

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

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

Что такое система «1С:Предприятие»?

Главная концептуальная особенность системы 1С заключается в четком разделении на две составляющие:

  • Платформа
  • Конфигурация
  • Это разделение является ключевым для понимания роли разработчика.

    Платформа

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

    Конфигурация

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

    > Представьте себе игровую приставку и диск с игрой. Платформа — это сама консоль (железо и ОС), а конфигурация — это диск с игрой. Без консоли диск бесполезен, а консоль без диска — просто коробка с микросхемами.

    !Схема взаимодействия платформы и прикладных решений (конфигураций)

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

    Архитектура системы

    Система «1С:Предприятие 8» поддерживает два основных варианта работы с базой данных. Выбор варианта зависит от масштаба предприятия и количества пользователей.

    1. Файловый вариант работы

    Это самый простой вариант, предназначенный для локальной работы или для небольшого количества пользователей (обычно до 5–10 человек) в локальной сети.

    В этом режиме вся база данных (все справочники, документы, а также сама конфигурация и учетные записи пользователей) хранится в одном физическом файле на жестком диске. Этот файл имеет расширение .1CD.

    Преимущества: * Простота установки (не нужно настраивать сложные серверы). * Легкость резервного копирования (достаточно скопировать один файл). * Низкая стоимость (не требует лицензий на серверные СУБД).

    Недостатки: * Низкая производительность при большом объеме данных. * Ограничение по размеру файла базы данных. * Низкая надежность (при сбое сети в момент записи файл может повредиться).

    2. Клиент-серверный вариант работы

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

    !Трехзвенная архитектура клиент-серверного варианта работы 1С

    Элементы трехзвенной архитектуры:

  • Клиентское приложение: Устанавливается на компьютере пользователя. Оно только отображает интерфейс и передает команды на сервер.
  • Кластер серверов 1С:Предприятие: Это промежуточное звено. Сервер 1С принимает запросы от пользователей, выполняет сложные вычисления и формирует запросы к базе данных.
  • СУБД (Система управления базами данных): Сторонняя программа, которая хранит данные. 1С поддерживает Microsoft SQL Server, PostgreSQL, IBM DB2 и Oracle Database.
  • Преимущества: * Высокая производительность и масштабируемость. * Безопасность данных. * Надежность (сбой на компьютере пользователя не ломает базу).

    Виды клиентских приложений

    Платформа предоставляет несколько видов «клиентов» — программ, через которые пользователь взаимодействует с системой. Понимание разницы между ними критически важно для современного программирования в 1С.

    Толстый клиент (Thick Client)

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

    Тонкий клиент (Thin Client)

    Основной вид клиентского приложения в современных версиях 1С (начиная с версии 8.2 и технологии «Управляемые формы»).

    * Особенность: Он умеет только отображать данные и передавать их на сервер. Он не может напрямую обращаться к базе данных или выполнять сложные алгоритмы. * Зачем это нужно? Это позволяет работать с 1С через интернет даже при плохом канале связи, так как между клиентом и сервером передаются минимальные порции данных.

    Веб-клиент (Web Client)

    Позволяет работать с базой 1С через обычный интернет-браузер (Chrome, Firefox, Safari, Edge). Пользователю даже не нужно устанавливать платформу на свой компьютер. Веб-клиент использует те же принципы работы, что и тонкий клиент, автоматически преобразуя интерфейс 1С в веб-страницу.

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

    После установки платформы у вас появится ярлык запуска. Однако, запуская 1С, вы можете выбрать один из двух принципиально разных режимов работы. Для разработчика это как «мастерская» и «витрина».

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

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

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

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

    Что мы делаем в Конфигураторе: * Создаем новые объекты (справочники, документы). * Пишем программный код на встроенном языке 1С. * Рисуем макеты печатных форм и отчетов. * Администрируем базу данных (создаем пользователей, делаем выгрузку резервных копий).

    > Важно запомнить: разработка ведется в Конфигураторе, а тестирование и работа — в режиме Предприятия.

    Установка учебной версии

    Для обучения вам не обязательно покупать дорогую коммерческую лицензию. Фирма «1С» предоставляет бесплатную Учебную версию платформы.

    Ограничения учебной версии

    Она обладает полным функционалом для разработки, но имеет ограничения на эксплуатацию: * Нельзя использовать для ведения реального учета. * Ограничено количество записей в таблицах документов. * Не поддерживается работа в клиент-серверном варианте (только файловый). * Отключена печать документов (иногда).

    Процесс установки

  • Скачайте дистрибутив учебной версии с официального сайта v8.1c.ru.
  • Распакуйте архив и запустите файл setup.exe.
  • В мастере установки выберите компоненты. Обычно достаточно оставить настройки по умолчанию. Основные компоненты:
  • * 1С:Предприятие — сама платформа. * Тонкий клиент — для подключения к серверным базам (в учебной версии ставится автоматически). * Модули расширения веб-сервера — если планируете тестировать веб-клиент.
  • После установки запустите ярлык 1С. Вы увидите список информационных баз (сначала он будет пуст).
  • Создание первой информационной базы

    Чтобы начать программировать, нам нужно создать пустую базу.

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

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

    Зайдя в Конфигуратор и открыв конфигурацию (меню Конфигурация -> Открыть конфигурацию), вы увидите слева панель — Дерево конфигурации.

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

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

    !Дерево метаданных в режиме Конфигуратора

    В следующих уроках мы будем подробно разбирать каждую ветвь этого дерева и наполнять её смыслом.

    Заключение

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

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

    2. Основные объекты конфигурации: Справочники, Документы и Регистры

    Основные объекты конфигурации: Справочники, Документы и Регистры

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

    В отличие от классического программирования, где разработчик часто начинает с проектирования таблиц в базе данных (SQL), в 1С мы оперируем высокоуровневыми объектами метаданных. Платформа сама знает, как превратить их в таблицы СУБД. Наша задача — правильно выбрать тип объекта для конкретной бизнес-задачи.

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

  • Справочники (хранят информацию о предметах).
  • Документы (фиксируют события).
  • Регистры (накапливают итоги событий).
  • Справочники: Хранители условно-постоянной информации

    Справочники — это списки объектов, которые имеют одинаковую структуру и свойства. Они предназначены для хранения информации, которая меняется редко (условно-постоянной).

    Если переводить на язык обычного бизнеса, справочники — это наши списки:

    * Список клиентов. * Список товаров на складе. * Список сотрудников. * Список валют.

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

    Стандартные реквизиты

    Любой справочник, который вы создадите, автоматически получает два обязательных поля (стандартных реквизита), даже если вы их не добавляли:

  • Код — уникальный идентификатор элемента (обычно числовой или текстовый). По нему система различает элементы, даже если их названия совпадают.
  • Наименование — то, как человек видит этот элемент (например, «ООО Ромашка» или «Стол офисный»).
  • Иерархия

    Одной из мощных возможностей справочников является иерархия. Представьте, что у вас 10 000 товаров. Хранить их плоским списком неудобно. Платформа позволяет создавать группы (папки).

    Существует два вида иерархии:

    * Иерархия групп и элементов: Классическая структура папок, как в Windows. В папке «Бытовая техника» лежит папка «Холодильники», а в ней — конкретный холодильник. * Иерархия элементов: Когда один элемент подчиняется другому. Например, в справочнике «Подразделения» отдел «Бухгалтерия» может подчиняться «Финансовому департаменту». Здесь нет папок, есть только связи «Родитель — Потомок».

    Табличные части

    Иногда информации в «шапке» справочника недостаточно. Например, у одного сотрудника может быть несколько детей, или у одного клиента — несколько контактных телефонов. Для этого используются Табличные части — это таблицы, вложенные внутрь конкретного элемента справочника.

    Документы: Отражение событий во времени

    Если справочники отвечают на вопрос «Кто?» или «Что?», то Документы отвечают на вопрос «Что произошло?».

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

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

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

    Особенности документов

    У документов тоже есть свои стандартные реквизиты, отличающие их от справочников:

  • Номер — уникальный номер документа.
  • Дата — самое важное поле. Документ не может существовать вне времени. Порядок документов на временной оси определяет состояние учета.
  • Проведение документа: Ключевая концепция

    Это то, что отличает 1С от записной книжки или Excel. У документа в 1С есть два основных состояния:

  • Записан (Просто сохранен): Документ лежит в базе как черновик. Мы заполнили, что продали 5 столов, но на складе их количество не уменьшилось, а долг клиента не увеличился. Система просто «помнит», что мы готовим такую бумагу.
  • Проведен: Это команда системе «Исполнить!». В этот момент срабатывают алгоритмы, написанные программистом. Документ делает записи в Регистрах (о них ниже). Складские остатки уменьшаются, долг контрагента растет.
  • > Документ — это лишь первичная заявка на изменение состояния системы. Реальные изменения происходят только в момент его проведения.

    !Разница между записанным и проведенным документом: проведенный документ меняет данные в регистрах

    Регистры: Бухгалтерские книги системы

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

    Ответ прост: Производительность.

    Представьте, что ваша фирма работает 10 лет. За это время было продано миллион товаров. Чтобы узнать, сколько столов осталось на складе прямо сейчас, системе пришлось бы перебирать миллионы документов за 10 лет и считать каждую строчку. Это занимало бы минуты или часы. Пользователь не может ждать столько времени перед выпиской накладной.

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

    Основные виды регистров

    В 1С существует четыре вида регистров, но мы подробно остановимся на двух самых важных для старта.

    #### 1. Регистры накопления (Accumulation Registers)

    Это «кошельки» и «склады» системы. Они умеют накапливать числовые значения.

    * Примеры: Остатки товаров, Взаиморасчеты с клиентами, Продажи (обороты). * Как это работает: Документ «Поступление» добавляет (+5 шт.) в регистр. Документ «Продажа» отнимает (-2 шт.) из регистра. В регистре всегда хранится актуальная цифра (3 шт.).

    Регистры накопления бывают двух видов: * Остатки: Хранят финальное значение (сколько осталось). * Обороты: Хранят информацию о движении за период (сколько всего продали за месяц, неважно, сколько осталось).

    #### 2. Регистры сведений (Information Registers)

    Они хранят произвольную информацию в разрезе каких-то измерений. Они не накапливают (нельзя сложить), они констатируют факт.

    * Примеры: Курсы валют, Цены товаров, Ответственные лица подразделений. * Как это работает: Мы не можем сказать «прибавить 5 рублей к курсу доллара». Мы говорим: «На дату 01.01.2024 курс доллара равен 90 рублей». Если завтра курс изменится, мы создадим новую запись на новую дату.

    Регистры сведений бывают: * Периодические: Хранят историю изменений (как курс валют — важна дата). * Непериодические: Хранят только одно актуальное значение (например, штрихкод товара — он либо есть, либо его заменили).

    Взаимодействие объектов: Архитектурный треугольник

    Чтобы закрепить материал, давайте посмотрим, как эти объекты работают вместе в реальной задаче «Продажа товара».

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

    !Схема движения данных в 1С: Справочники наполняют Документ, Документ пишет в Регистры, Отчеты читают из Регистров

    Заключение

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

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

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

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

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

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

    Особенности языка 1С

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

    1. Двуязычие

    Уникальная особенность 1С — возможность писать код как на русском, так и на английском языке. Все команды имеют синонимы.

    * Русский: КонецЕсли * Английский: EndIf

    В сообществе 1С-разработчиков в России и СНГ стандартом де-факто является русский синтаксис. Весь типовой код от фирмы «1С» написан на русском, поэтому в рамках курса мы будем использовать именно его.

    2. Регистронезависимость

    Платформе все равно, как вы напишете команду: Сообщить, сообщить или СООБЩИТЬ. Однако правилом хорошего тона считается использование «ВерблюжьейНотации» (CamelCase) — каждое новое слово начинается с большой буквы.

    3. Динамическая типизация

    Вам не нужно заранее объявлять тип переменной (число это, строка или ссылка на справочник). Тип определяется в момент присваивания значения.

    Базовый синтаксис

    Рассмотрим основные кирпичики, из которых строится алгоритм.

    Комментарии

    Комментарии — это текст, который игнорируется программой, но полезен для программиста. В 1С они обозначаются двумя косыми чертами //.

    Переменные

    Переменная — это именованная ячейка памяти. Чтобы создать переменную, используется ключевое слово Перем (необязательно внутри процедур, но обязательно в начале модулей) или просто факт присваивания значения.

    Оператор присваивания в 1С — это знак равенства =. Обратите внимание: в 1С знак = используется и для присваивания, и для сравнения, в зависимости от контекста.

    Точка с запятой

    Каждая инструкция (команда) должна заканчиваться точкой с запятой ;. Это сигнал платформе, что команда завершена.

    Управляющие конструкции

    Любой алгоритм подразумевает условия и повторения.

    Условный оператор (Если)

    Позволяет выполнить код только при соблюдении определенного условия.

    Синтаксис:

    Пример:

    Циклы

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

    Он используется для обхода коллекций (например, строк в табличной части документа).

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

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

    В чем разница?

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

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

    Система модулей

    Новички часто теряются: «Куда писать этот код?». В 1С нет одного файла main.cpp или index.php. Код распределен по Модулям.

    Модуль — это контейнер для программного кода. У каждого объекта конфигурации (справочника, документа, отчета) есть свои модули, и есть общие модули для всей системы.

    !Структура основных модулей системы 1С:Предприятие

    Разберем основные виды модулей, с которыми вы столкнетесь в первую очередь.

    1. Модуль формы

    Этот модуль привязан к конкретному окну (форме) справочника или документа.

    * Зачем нужен: Обработка нажатий кнопок, изменение полей при вводе, проверка заполнения перед записью. * Где выполняется: Преимущественно на клиенте (на компьютере пользователя).

    2. Модуль объекта

    Этот модуль принадлежит самому объекту (Справочнику или Документу) как единице базы данных, в отрыве от визуального интерфейса.

    * Зачем нужен: Автоматическое заполнение реквизитов при создании, проведение документа (движения по регистрам), проверки, которые должны срабатывать даже при программной загрузке данных. * Где выполняется: Строго на сервере.

    3. Общие модули

    Это библиотеки кода. Если у вас есть функция «Рассчитать НДС», которая нужна и в документе «Продажа», и в документе «Поступление», не нужно копировать её. Вы пишете её один раз в Общем модуле и вызываете из любых мест.

    Директивы компиляции и контекст

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

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

    Основные директивы:

    * &НаКлиенте — процедура работает на компьютере пользователя. Ей доступен интерфейс, но недоступна база данных напрямую. Здесь мы ловим нажатия кнопок. * &НаСервере — процедура работает на сервере. Ей доступна вся мощь базы данных (запросы, чтение/запись объектов), но она не может «показать окошко» пользователю.

    Пример взаимодействия:

    Практический совет: Синтакс-помощник

    Запомнить все команды невозможно. Главный друг программиста 1С — Синтакс-помощник.

    В режиме Конфигуратора нажмите Ctrl + F1. Откроется справочная система, где описаны все встроенные функции, процедуры и свойства объектов. Если вы забыли, какие параметры у функции Сообщить, просто напишите её в коде, поставьте курсор на слово и нажмите Ctrl + F1.

    Заключение

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

    Мы узнали, что:

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

    4. Язык запросов 1С и получение данных из базы

    Язык запросов 1С и получение данных из базы

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

    Но что делать, если нам нужно получить список всех товаров, проданных за прошлый месяц? Или найти всех клиентов из Москвы с долгом более 10 000 рублей? Перебирать все документы в цикле Для Каждого — это крайне неэффективно и медленно.

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

    Что такое запрос в 1С?

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

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

  • Только чтение: Язык запросов 1С предназначен только для получения данных. С его помощью нельзя изменить, удалить или добавить данные (для этого используется Объектная модель, которую мы разбирали ранее).
  • Русский синтаксис: Как и встроенный язык, язык запросов поддерживает команды на русском языке (ВЫБРАТЬ, ИЗ, ГДЕ).
  • Работа с объектами: Мы обращаемся не к физическим таблицам SQL (например, _Reference32), а к объектам конфигурации по их именам (например, Справочник.Номенклатура).
  • Разыменование полей: Это «киллер-фича» 1С, позволяющая обращаться к свойствам связанных объектов через точку (об этом ниже).
  • !Схема выполнения запроса: от кода 1С через транслятор платформы к базе данных и обратно

    Структура простейшего запроса

    Любой запрос начинается с ключевого слова ВЫБРАТЬ. Рассмотрим базовую конструкцию:

    1. Источники данных (ИЗ)

    После слова ИЗ мы указываем, откуда берем данные. Это могут быть: * Справочник.<ИмяСправочника> * Документ.<ИмяДокумента> * РегистрНакопления.<ИмяРегистра>

    2. Поля выборки (ВЫБРАТЬ)

    Здесь мы перечисляем через запятую, какие именно данные нам нужны. Например: Наименование, Код, Ссылка.

    3. Отбор данных (ГДЕ)

    Необязательная, но очень важная часть. Если не указать условие ГДЕ, система вернет абсолютно все записи из таблицы. Это может «повесить» сервер, если записей миллионы.

    Пример запроса: Получим названия и закупочные цены всех товаров, которые являются услугами.

    Обратите внимание на слово КАК. Это псевдоним. Мы даем источнику Справочник.Номенклатура короткое имя Номенклатура, чтобы удобнее обращаться к нему в тексте запроса.

    Разыменование полей (Обращение через точку)

    Это одна из самых удобных возможностей языка запросов 1С. Представьте, что у нас есть документ «РеализацияТоваров», в котором есть поле «Контрагент». А у контрагента есть поле «ОсновнойМенеджер». А у менеджера есть «ФИО».

    В классическом SQL нам пришлось бы делать два соединения таблица (JOIN). В 1С мы просто пишем через точку:

    Платформа сама построит сложные соединения таблиц за вас. Однако злоупотреблять этим не стоит: слишком длинные цепочки (более 3-х точек) могут замедлить работу системы.

    Использование запросов в программном коде

    Сам по себе текст запроса — это просто строка. Чтобы она заработала, нужно создать специальный объект Запрос.

    Алгоритм работы всегда одинаков:

  • Создать объект Запрос.
  • Написать текст запроса.
  • Установить параметры (если есть).
  • Выполнить запрос.
  • Обработать результат (выгрузить или обойти в цикле).
  • Пример кода

    Допустим, нам нужно найти сотрудника по фамилии и вывести его оклад.

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

    В примере выше вы видели конструкцию &ИскомаяФамилия. Это Параметр.

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

    Неправильно: Запрос.Текст = "... ГДЕ Наименование = """ + ИмяПеременной + """";

    Правильно: Запрос.Текст = "... ГДЕ Наименование = &ИмяПеременной"; Запрос.УстановитьПараметр("ИмяПеременной", Значение);

    Почему это важно:

  • Производительность: СУБД кэширует планы выполнения запросов. Запрос с параметром для СУБД всегда выглядит одинаково, а запрос со вклеенной строкой — каждый раз как новый.
  • Безопасность: Защита от инъекций кода (хотя в 1С это менее критично, чем в вебе, но культура кода важна).
  • Удобство: Не нужно мучиться с кавычками внутри строк.
  • Конструктор запроса

    Разработчики 1С редко пишут сложные запросы вручную с нуля. В платформу встроен мощный визуальный инструмент — Конструктор запроса.

    Чтобы его вызвать:

  • В модуле напишите Запрос = Новый Запрос;.
  • Нажмите правой кнопкой мыши в любом месте кода и выберите «Конструктор запроса...» (или через меню).
  • В открывшемся окне вы сможете мышкой перетаскивать таблицы, выбирать поля и настраивать условия.
  • После нажатия «ОК» платформа сама сгенерирует правильный программный код.
  • !Интерфейс Конструктора запроса, позволяющий собирать запросы мышкой без написания кода вручную

    Работа с результатами

    Метод Запрос.Выполнить() возвращает объект РезультатЗапроса. У него есть два основных метода для получения данных:

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

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

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

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

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

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

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

    Концепция Управляемого интерфейса

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

    С выходом платформы 1С:Предприятие 8.2 (и развитием в 8.3) была внедрена концепция Управляемого интерфейса. Её суть заключается в декларативном описании.

    Разработчик больше не «рисует» форму по пикселям. Вместо этого он говорит платформе:

    > «Я хочу, чтобы здесь была группа полей: Дата и Номер, а под ними — таблица товаров».

    Платформа сама решает, как именно отрисовать эти элементы, в зависимости от того, где запущена программа:

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

    Это гарантирует, что ваше решение будет работать везде без переписывания кода.

    Подсистемы: Строим главное меню

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

    Подсистема — это логический раздел конфигурации. Например: «Продажи», «Закупки», «Склад», «Бухгалтерия».

    Как создать меню:

  • В дереве конфигурации найдите ветку Общие -> Подсистемы.
  • Добавьте новую подсистему, например, «Торговля».
  • В свойствах подсистемы нажмите кнопку «Состав».
  • Отметьте галочками те справочники и документы, которые должны быть видны в этом разделе (например, Справочник «Товары» и Документ «Реализация»).
  • Теперь при запуске в режиме Предприятия у вас появится красивая вкладка «Торговля», внутри которой будут ссылки на выбранные объекты.

    Управляемые формы

    Хотя платформа умеет генерировать формы автоматически (если вы просто откроете справочник, 1С сама создаст список), часто нам нужно настроить внешний вид: скрыть лишнее, добавить кнопки или переставить поля местами.

    Для этого создаются Управляемые формы.

    Редактор формы

    Когда вы создаете форму (например, форму документа), открывается редактор, состоящий из трех основных областей:

    !Три области редактора формы: Элементы (слева), Реквизиты (справа сверху) и Предпросмотр (снизу).

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

    Главный принцип работы формы — ПутьКДанным. Вы не храните значение в «поле ввода». Поле ввода просто отображает значение переменной из раздела «Реквизиты».

    Если вы перетащите мышкой реквизит Контрагент из правой части (Реквизиты) в левую (Элементы), платформа сама создаст поле ввода и свяжет их. Изменится переменная — обновится поле. Пользователь изменит поле — обновится переменная.

    Создание отчетов и СКД

    Теперь перейдем к самому интересному — анализу данных. В прошлом уроке мы научились писать запросы. Но показывать пользователю результат выполнения метода Выбрать() или Выгрузить() в виде сырой таблицы — непрофессионально.

    Для создания отчетов в 1С используется Система Компоновки Данных (СКД). Это мощнейший визуальный конструктор, который позволяет создавать сложные отчеты вообще без программирования (no-code).

    Почему СКД — это круто?

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

    Давайте создадим отчет, который покажет, сколько товаров мы продали.

    #### Шаг 1. Создание объекта

    В дереве конфигурации кликните правой кнопкой на ветку Отчеты -> Добавить. Назовите его «Продажи».

    Нажмите кнопку «Открыть схему компоновки данных». Примите имя по умолчанию (ОсновнаяСхемаКомпоновкиДанных) и нажмите «Готово».

    #### Шаг 2. Набор данных (Запрос)

    Перед вами открылось окно настроек СКД. Слева много вкладок, но нам нужна первая — Наборы данных.

  • Нажмите «Добавить» (зеленый плюс) -> Набор данных - запрос.
  • В поле «Запрос» нужно ввести текст запроса. Можно написать вручную или вызвать Конструктор запроса.
  • Пример текста запроса для отчета:

    Обратите внимание: мы берем данные из виртуальной таблицы Обороты регистра накопления. Она уже содержит просуммированные данные за период.

    #### Шаг 3. Ресурсы

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

    * Перенесите поля КоличествоОборот и СуммаОборот в правое окно. * В колонке «Выражение» автоматически появится Сумма(КоличествоОборот). Это значит, что при сворачивании строк числа будут складываться.

    #### Шаг 4. Настройки (Структура отчета)

    Перейдите на вкладку Настройки. Это самая творческая часть. Здесь мы определяем, как отчет будет выглядеть.

    !Вкладка настройки СКД, где определяется структура вывода данных.

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

    Запуск и проверка

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

    Вы увидите таблицу с вашими продажами. Самое приятное — кнопка «Настройки» в пользовательском режиме работает сразу. Вы можете прямо там добавить фильтр (например, `Товар Равно