Часть 1: Работа с СКД (Схемами Компоновки Данных)
Что такое СКД?
Схема Компоновки Данных (СКД) — это инструмент в 1С, который позволяет создавать отчёты и обрабатывать данные без необходимости каждый раз писать новый программный код. СКД предоставляет гибкие возможности по настройке источников данных, фильтров, группировок и форматирования вывода.
Почему важно освоить СКД?
- Упрощение разработки отчётов: СКД позволяет создавать отчёты с минимальным программированием.
- Гибкость настройки: Пользователь может самостоятельно настраивать отборы, сортировки и группировки.
- Повышение производительности: Правильно настроенные отчёты работают быстрее и не перегружают систему.
Основные компоненты СКД
-
Источники данных: Это объекты, из которых СКД получает данные. Источниками могут быть:
- Справочники
- Документы
- Регистры
- Запросы
-
Настройки компоновки:
- Параметры: Переменные, используемые в отчёте (например, даты начала и окончания периода).
- Отборы: Условия фильтрации данных.
- Группировки: Правила объединения данных по определённым полям.
- Вычисляемые поля: Поля, значения которых вычисляются на основании других данных.
-
Схема компоновки: Определяет структуру и внешний вид отчёта.
Создание простого отчёта с помощью СКД
Шаг 1: Создание источника данных
Предположим, у нас есть документ "Продажи" с табличной частью "Товары", содержащей поля:
- Товар (ссылка на справочник "Номенклатура")
- Количество (число)
- Цена (число)
- ДатаПродажи (дата)
Создаём запрос для выборки данных:
ВЫБРАТЬ
Товары.Товар КАК Товар,
Товары.Количество КАК Количество,
Товары.Цена КАК Цена,
Продажи.Дата КАК ДатаПродажи
ИЗ
Документ.Продажи КАК Продажи
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Продажи.Товары КАК Товары
ПО Продажи.Ссылка = Товары.СсылкаДокумента
ГДЕ
Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
Шаг 2: Настройка параметров и отборов
-
Параметры:
- ДатаНачала (Дата)
- ДатаКонца (Дата)
-
Отборы:
- ДатаПродажи ≥ ДатаНачала
- ДатаПродажи ≤ ДатаКонца
Шаг 3: Настройка группировок и полей
- Группировка по Товару
- Поля вывода:
- Товар
- Количество
- Цена
- ДатаПродажи
Шаг 4: Настройка схемы компоновки
- Добавляем таблицу для вывода данных.
- Настраиваем заголовки и форматирование колонок.
Шаг 5: Вывод отчёта
Используем следующий код для формирования и вывода отчёта:
Процедура СформироватьОтчет(Команда)
// Создание объекта компоновки данных
Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
// Загрузка схемы компоновки из макета
СхемаКомпоновки = ПолучитьОбщийМакет("ОтчетПоПродажам");
Компоновщик.Загрузить(СхемаКомпоновки);
// Настройка параметров
Настройки = Компоновщик.Настройки;
Настройки.Параметры.Вставить("ДатаНачала", НачалоДня(ТекущаяДата() - 30));
Настройки.Параметры.Вставить("ДатаКонца", КонецДня(ТекущаяДата()));
// Формирование отчета
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных(Компоновщик);
Результат = ПроцессорКомпоновки.Сформировать();
// Вывод отчета
ТабДокумент = Новый ТабличныйДокумент;
Вывод = Новый ВыводКомпоновкиДанных(ТабДокумент);
Результат.Вывести(Вывод);
// Отображение отчета
ОткрытьФорму("ТабличныйДокумент", ТабДокумент);
КонецПроцедуры
Дополнительные возможности СКД
- Вычисляемые поля: Позволяют добавлять в отчёт новые поля, значения которых вычисляются на основании других полей.
- Диаграммы и графики: СКД поддерживает визуализацию данных.
- Работа с несколькими источниками данных: Можно объединять данные из разных таблиц и регистров.
Часть 2: Работа с регистрами накопления
Что такое регистры накопления?
Регистры накопления — это объекты в 1С, предназначенные для хранения и учёта количественных и суммовых данных, которые изменяются с течением времени. Они используются для отслеживания остатков и движения товаров, денежных средств и других ресурсов.
Основные понятия
- Измерения: Поля, по которым регистрируется аналитика (например, Товар, Склад).
- Ресурсы: Поля, в которых хранятся количественные или суммовые данные (например, Количество, Сумма).
- Движения: Записи в регистре, отражающие изменения ресурсов.
Создание регистра накопления
Пример: Регистр "ОстаткиТоваров"
-
Измерения:
- Товар (ссылка на справочник "Номенклатура")
- Склад (ссылка на справочник "Склады")
-
Ресурсы:
- Количество (число)
Работа с движениями регистра
Добавление движения при проведении документа
Процедура ПриПроведении()
Для каждого Строка Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.Период = Дата;
Движение.Товар = Строка.Товар;
Движение.Склад = Склад;
Движение.Количество = Строка.Количество;
Движение.ВидДвижения = ВидДвиженияНакопления.Приход; // Или Расход
КонецЦикла;
КонецПроцедуры
Получение остатков и оборотов
Запрос остатков на определенную дату
ВЫБРАТЬ
Остатки.Товар,
Остатки.Склад,
Остатки.КоличествоОстаток КАК КоличествоНаСкладе
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки(&ДатаОстатков, ) КАК Остатки
ДатаОстатков — параметр типа "Дата", на которую необходимо получить остатки.
Совместное использование СКД и регистров накопления
Пример отчёта по остаткам товаров на складах
Шаг 1: Создание запроса
ВЫБРАТЬ
Остатки.Товар КАК Товар,
Товар.Наименование КАК НаименованиеТовара,
Остатки.Склад КАК Склад,
Склад.Наименование КАК НаименованиеСклада,
Остатки.КоличествоОстаток КАК Количество
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки(&ДатаОстатков, ) КАК Остатки
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товар
ПО Остатки.Товар = Товар.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склад
ПО Остатки.Склад = Склад.Ссылка
Шаг 2: Настройка параметров и отборов
-
Параметры:
- ДатаОстатков (Дата)
-
Отборы:
- По Товару или Складу (при необходимости)
Шаг 3: Настройка группировок и полей
- Группировка по Товару и Складам
- Поля вывода:
- НаименованиеТовара
- НаименованиеСклада
- Количество
Шаг 4: Настройка схемы компоновки
- Добавляем таблицу для вывода данных.
- Настраиваем форматирование.
Шаг 5: Вывод отчёта
Используем аналогичный код для формирования и вывода отчёта, как и в предыдущем примере.
Оптимизация работы с СКД и регистрами накопления
Рекомендации по оптимизации
-
Используйте виртуальные таблицы регистров: Это позволяет получать остатки и обороты без сложных запросов.
-
Минимизируйте количество соединений: Лишние JOIN могут замедлить запрос.
-
Используйте индексы: Ускоряют выборку по часто используемым полям.
-
Профилируйте запросы: Инструменты 1С позволяют анализировать производительность запросов.
-
Избегайте вложенных запросов: По возможности заменяйте их на JOIN.
Заключение
В итоге, освоение работы с СКД и регистрами накопления в 1С открывает перед вами широкие возможности для создания эффективных и удобных отчетов. Практикуйтесь, экспериментируйте с настройками и оптимизацией — это поможет вам стать увереннее в 1С-программировании и создавать решения, которые действительно облегчают работу пользователей. Успехов в вашем профессиональном развитии!