Обучение работе с СКД и регистрами накопления в 1С (Junior)

01.10.24

Разработка - Механизмы платформы 1С

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

Часть 1: Работа с СКД (Схемами Компоновки Данных)

Что такое СКД?

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

Почему важно освоить СКД?

  • Упрощение разработки отчётов: СКД позволяет создавать отчёты с минимальным программированием.
  • Гибкость настройки: Пользователь может самостоятельно настраивать отборы, сортировки и группировки.
  • Повышение производительности: Правильно настроенные отчёты работают быстрее и не перегружают систему.

Основные компоненты СКД

  1. Источники данных: Это объекты, из которых СКД получает данные. Источниками могут быть:

    • Справочники
    • Документы
    • Регистры
    • Запросы
  2. Настройки компоновки:

    • Параметры: Переменные, используемые в отчёте (например, даты начала и окончания периода).
    • Отборы: Условия фильтрации данных.
    • Группировки: Правила объединения данных по определённым полям.
    • Вычисляемые поля: Поля, значения которых вычисляются на основании других данных.
  3. Схема компоновки: Определяет структуру и внешний вид отчёта.

Создание простого отчёта с помощью СКД

Шаг 1: Создание источника данных

Предположим, у нас есть документ "Продажи" с табличной частью "Товары", содержащей поля:

  • Товар (ссылка на справочник "Номенклатура")
  • Количество (число)
  • Цена (число)
  • ДатаПродажи (дата)

Создаём запрос для выборки данных:

ВЫБРАТЬ
    Товары.Товар КАК Товар,
    Товары.Количество КАК Количество,
    Товары.Цена КАК Цена,
    Продажи.Дата КАК ДатаПродажи
ИЗ
    Документ.Продажи КАК Продажи
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Продажи.Товары КАК Товары
        ПО Продажи.Ссылка = Товары.СсылкаДокумента
ГДЕ
    Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца

Шаг 2: Настройка параметров и отборов

  • Параметры:

    • ДатаНачала (Дата)
    • ДатаКонца (Дата)
  • Отборы:

    • ДатаПродажи ≥ ДатаНачала
    • ДатаПродажи ≤ ДатаКонца

Шаг 3: Настройка группировок и полей

  • Группировка по Товару
  • Поля вывода:
    • Товар
    • Количество
    • Цена
    • ДатаПродажи

Шаг 4: Настройка схемы компоновки

  • Добавляем таблицу для вывода данных.
  • Настраиваем заголовки и форматирование колонок.

Шаг 5: Вывод отчёта

Используем следующий код для формирования и вывода отчёта:

Процедура СформироватьОтчет(Команда)
    // Создание объекта компоновки данных
    Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
    
    // Загрузка схемы компоновки из макета
    СхемаКомпоновки = ПолучитьОбщийМакет("ОтчетПоПродажам");
    Компоновщик.Загрузить(СхемаКомпоновки);
    
    // Настройка параметров
    Настройки = Компоновщик.Настройки;
    Настройки.Параметры.Вставить("ДатаНачала", НачалоДня(ТекущаяДата() - 30));
    Настройки.Параметры.Вставить("ДатаКонца", КонецДня(ТекущаяДата()));
    
    // Формирование отчета
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных(Компоновщик);
    Результат = ПроцессорКомпоновки.Сформировать();
    
    // Вывод отчета
    ТабДокумент = Новый ТабличныйДокумент;
    Вывод = Новый ВыводКомпоновкиДанных(ТабДокумент);
    Результат.Вывести(Вывод);
    
    // Отображение отчета
    ОткрытьФорму("ТабличныйДокумент", ТабДокумент);
КонецПроцедуры

Дополнительные возможности СКД

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

 

Часть 2: Работа с регистрами накопления

Что такое регистры накопления?

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

Основные понятия

  • Измерения: Поля, по которым регистрируется аналитика (например, Товар, Склад).
  • Ресурсы: Поля, в которых хранятся количественные или суммовые данные (например, Количество, Сумма).
  • Движения: Записи в регистре, отражающие изменения ресурсов.

Создание регистра накопления

Пример: Регистр "ОстаткиТоваров"

  • Измерения:

    • Товар (ссылка на справочник "Номенклатура")
    • Склад (ссылка на справочник "Склады")
  • Ресурсы:

    • Количество (число)

Работа с движениями регистра

Добавление движения при проведении документа

 

Процедура ПриПроведении()
    Для каждого Строка Из Товары Цикл
        Движение = Движения.ОстаткиТоваров.Добавить();
        Движение.Период = Дата;
        Движение.Товар = Строка.Товар;
        Движение.Склад = Склад;
        Движение.Количество = Строка.Количество;
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход; // Или Расход
    КонецЦикла;
КонецПроцедуры

Получение остатков и оборотов

Запрос остатков на определенную дату

ВЫБРАТЬ
    Остатки.Товар,
    Остатки.Склад,
    Остатки.КоличествоОстаток КАК КоличествоНаСкладе
ИЗ
    РегистрНакопления.ОстаткиТоваров.Остатки(&ДатаОстатков, ) КАК Остатки

ДатаОстатков — параметр типа "Дата", на которую необходимо получить остатки.

 

Совместное использование СКД и регистров накопления

Пример отчёта по остаткам товаров на складах

Шаг 1: Создание запроса

ВЫБРАТЬ
    Остатки.Товар КАК Товар,
    Товар.Наименование КАК НаименованиеТовара,
    Остатки.Склад КАК Склад,
    Склад.Наименование КАК НаименованиеСклада,
    Остатки.КоличествоОстаток КАК Количество
ИЗ
    РегистрНакопления.ОстаткиТоваров.Остатки(&ДатаОстатков, ) КАК Остатки
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товар
        ПО Остатки.Товар = Товар.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склад
        ПО Остатки.Склад = Склад.Ссылка

Шаг 2: Настройка параметров и отборов

  • Параметры:

    • ДатаОстатков (Дата)
  • Отборы:

    • По Товару или Складу (при необходимости)

Шаг 3: Настройка группировок и полей

  • Группировка по Товару и Складам
  • Поля вывода:
    • НаименованиеТовара
    • НаименованиеСклада
    • Количество

Шаг 4: Настройка схемы компоновки

  • Добавляем таблицу для вывода данных.
  • Настраиваем форматирование.

Шаг 5: Вывод отчёта

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

Оптимизация работы с СКД и регистрами накопления

Рекомендации по оптимизации

  1. Используйте виртуальные таблицы регистров: Это позволяет получать остатки и обороты без сложных запросов.

  2. Минимизируйте количество соединений: Лишние JOIN могут замедлить запрос.

  3. Используйте индексы: Ускоряют выборку по часто используемым полям.

  4. Профилируйте запросы: Инструменты 1С позволяют анализировать производительность запросов.

  5. Избегайте вложенных запросов: По возможности заменяйте их на JOIN.

 

Заключение

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

программирование СКД в 1С Регистр накопления 1С справочники Оптимизация запросов Перемещение товаров Учёт оборудования Учёт остатков 1С документы Проведение документов Контроль остатков Вычисляемые поля Группировка данных 1С регистры сведений Транзакции 1С Управляемые формы Блокировки данных Учёт

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159346    872    399    

861

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

23.06.2024    7416    bayselonarrend    20    

154

Перенос данных 1C Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    11215    dsdred    44    

130

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    10799    23    John_d    25    

124

Механизмы платформы 1С Программист Бесплатно (free)

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

06.10.2023    23750    SeiOkami    48    

135

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    14723    YA_418728146    7    

166

Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    25513    SeiOkami    31    

113

Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Мало кто знает, что поле "Глобального поиска" в 1С можно доработать. Добавить свои варианты поиска, кнопочки в результатах и даже целые пользовательские меню.

27.03.2023    8576    SeiOkami    10    

143
Отзывы
1. strelec13 21 04.10.24 10:37 Сейчас в теме
Когда лайк с плюсом, это очевидная польза от темы, а когда тот кто ставит лайк с минусом без комментария это минус для него самого, потому что для начинающих программистов минус без комментария не очевиден в чем была ошибка или недостаток темы. Поэтому минус без комментария моветон для лентяев пояснить ошибку или недостаток темы и неуважение к автору темы, чтобы автор понимал недостатки темы или оспорить неправоту "знатоков", поставивших минус.
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. strelec13 21 04.10.24 10:37 Сейчас в теме
Когда лайк с плюсом, это очевидная польза от темы, а когда тот кто ставит лайк с минусом без комментария это минус для него самого, потому что для начинающих программистов минус без комментария не очевиден в чем была ошибка или недостаток темы. Поэтому минус без комментария моветон для лентяев пояснить ошибку или недостаток темы и неуважение к автору темы, чтобы автор понимал недостатки темы или оспорить неправоту "знатоков", поставивших минус.
2. Vudix 2 15.10.24 14:45 Сейчас в теме
(1) Мне так приятно, чувак!
Спасибо, что возвращаешь мне веру нашу среду разработки!
Побольше бы таких, даже если как я глупых и ошибающихся, дружелюбие - это всегда только плюс же.
3. user2086667 18.10.24 06:35 Сейчас в теме
Сам можно сказать джун, но поставил минус, потому что статья была написана явно без должной подготовки. Ощущение, что текст писала нейросеть, а редакция человека если и была, то минимально.

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

7. Заявлена тема СКД и регистр накопления. Где упоминания ролей для скд?
и т.д.

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