Работа с реквизитами регистров в языке запросов 1С:Предприятие 8

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

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

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

Описание

Архитектура регистров в 1С

Любой регистр в 1С представляет собой таблицу в базе данных. С точки зрения языка запросов, регистр — это источник данных (таблица), имеющий строго определенный набор полей:

  • Измерения (Dimensions), поля, по которым происходит группировка и индексация (например, Номенклатура, Склад, Контрагент). В запросе к ним обращаются напрямую: Регистр.Номенклатура.
  • Ресурсы (Resources) — числовые поля, подлежащие агрегации (суммированию): Количество, Сумма, Стоимость. В запросах часто используются с функциями агрегации: СУММА(Регистр.Количество).
  • Реквизиты (Attributes) — дополнительные информационные поля, не участвующие в первичном ключе и не суммируемые (например, НомерГТД, СрокГодности, ХарактеристикаНоменклатуры для регистров сведений).
  • Системные поля — Период, НомерСтроки, Активность (для регистров накопления), ВидДвижения (Приход/Расход), Регистратор, НомерСтроки.

Особенности обращения к реквизитам в запросе

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

Для доступа к реквизитам регистров накопления/бухгалтерии используются:

  1. Виртуальные таблицы (Остатки, Обороты, БалансИОбороты) — реквизиты недоступны.
  2. Физическая таблица движений (РегистрНакопления.Имя.Движения или просто РегистрНакопления.Имя при выборке движений), реквизиты доступны для чтения.
  3. Связи (JOIN) с регистрами сведений или справочниками для получения дополнительных атрибутов.

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

Чтение реквизитов регистра сведений (прямой доступ)

ВЫБРАТЬ
 ЦеныНоменклатурыСрезПоследних.Номенклатура,
 ЦеныНоменклатурыСрезПоследних.Характеристика,
 ЦеныНоменклатурыСрезПоследних.Цена,
 ЦеныНоменклатурыСрезПоследних.Валюта, // Реквизит
 ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения // Реквизит
ИЗ
 РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних

Чтение реквизитов регистра накопления (через таблицу движений)

ВЫБРАТЬ
 ТоварыНаСкладах.Период,
 ТоварыНаСкладах.Регистратор,
 ТоварыНаСкладах.Номенклатура,
 ТоварыНаСкладах.Склад,
 ТоварыНаСкладах.Количество, // Ресурс
 ТоварыНаСкладах.НомерГТД, // Реквизит (доступен в движениях!)
 ТоварыНаСкладах.СрокГодности // Реквизит
ИЗ
 РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
 ТоварыНаСкладах.Период МЕЖДУ &НачалоПериода И &КонецПериода

Получение реквизитов через LEFT JOIN (для виртуальных таблиц)

Если нужно получить реквизит (например, НомерГТД) в отчете по остаткам (виртуальная таблица), где его нет:

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

Контакты для обращений

По техническим вопросам работы с языком запросов 1С, оптимизации выборок по регистрам и ошибкам доступа к реквизитам:

  • Техническая поддержка 1С (линия 1С:ITS): Для клиентов с активным соглашением ИТС.
  • Партнерская сеть 1С: Ваш сервирующий партнер (франчайзи) — первый эшелон поддержки.
  • Сообщество разработчиков: Форум forum.1c.ru, Инфостарт infostart.ru.

Официальный сайт

Основной портал документации и обновлений:

  • Сайт фирмы 1С: https://1c.ru
  • Портал ИТС (Информационно-технологическое сопровождение): https://its.1c.ru (требует авторизации) — здесь находится полный синтаксис-помощник и методические документы по регистрам.
  • Документация по языку запросов: Раздел «Синтаксис языка запросов» -> «Источники данных» -> «Регистры».

Горячая линия

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

###-###-#### (бесплатно по России)

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

Номера телефонов

  • Головной офис (Москва): +7 (495) -88-90-90
  • Санкт-Петербург: +7 (812) -80-48-48
  • Техподдержка партнеров (только для сертифицированных партнеров): Доступна в личном кабинете партнера на portal.1c.ru

Электронный адрес

  • Общие вопросы (продажи, маркетинг): info@1c.ru
  • Техподдержка (через ИТС): Заявки создаются внутри личного кабинета на its.1c.ru.
  • Сообщения об ошибках платформы (багрепорты): platform@1c.ru (требует точного описания воспроизведения).

Личный кабинет

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

  • Портал 1С:ИТС / Личный кабинет: https://its.1c.ru
  • Личный кабинет партнера: https://partner.1c.ru
  • Личный кабинет пользователя (для покупок курсов, сертификатов): https://login.1c.ru

Личный прием

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

  • Систему заявок на портале ИТС.
  • Сервирующего партнера (в офисе партнера возможен личный прием по договоренности).
  • Учебные центры 1С (по записям на курсы).

График приема (Режим работы поддержки)

Служба Режим работы (МСК)
Горячая линия 8-800 Пн-Пт: 09:00 – 18:00
Техподдержка ИТС (прием заявок) Круглосуточно (обработка Пн-Пт 09:00–18:00)
Офисы продаж (Москва/СПб) Пн-Пт: 10:00 – 19:00

Отделы (Структура поддержки разработки)

В контексте разработки на 1С, «отделы» — это функциональные зоны ответственности:

  • Отдел разработки платформы (1C R&D): Отвечает за ядро языка запросов, виртуальные таблицы, оптимизатор СУБД. Принимают багрепорты на platform@1c.ru.
  • Отдел методической поддержки (ИТС): Пишут документацию, статьи KB (Knowledge Base), примеры использования реквизитов в регистрах.
  • Центр сертификации и обучения: Проводят экзамены «1С:Профессионал», «1С:Специалист» по платформе (включая язык запросов).
  • Партнерская сеть (Франчайзи): Локальные отделы техподдержки и разработки у партнеров 1С.

Руководство (Ключевые фигуры платформы)

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

Отзывы (Мнения сообщества и лучшие практики)

Агрегация типичных отзывов и «болезненных точек» разработчиков при работе с реквизитами в регистрах:

Положительные аспекты

  • Мощь виртуальных таблиц: «Остатки/Обороты считаются мгновенно на миллионах записей без ручного JOIN’а движений».
  • Гибкость регистров сведений: «Идеальны для хранения срезов, истории цен, настроек — реквизиты доступны везде».
  • Синтаксис-помощник (Ctrl+Space): «Подсказка по реквизитам регистров работает отлично, ошибки компиляции ловятся на этапе написания».

Типичные проблемы и жалобы

  1. «Реквизиты пропадают в виртуальных таблицах», Самая частая ошибка новичков. Пытаются выбрать НомерГТД из Остатки. Решение: использовать движений или JOIN.
  2. «Медленные запросы к движениям с реквизитами» — Чтение физической таблицы движений (Регистр.Движения) с большим количеством реквизитов и без условий по измерениям вызывает полное сканирование таблицы (Full Scan). Решение: всегда фильтровать по Периоду и Измерениям.
  3. «Неочевидное поведение СрезПоследних для регистров сведений» — Если измерений нет или они не уникальны, возвращается произвольная строка. Требует понимания «Измерений среза».
  4. «Отсутствие индексов по реквизитам» — Нельзя создать индекс по реквизиту регистра накопления в конфигураторе. Поиск по реквизиту всегда медленный. Совет: выносите часто искомые атрибуты в Измерения или отдельный Регистр сведений.

Лучшие практики (Best Practices) от экспертов

  • Используйте виртуальные таблицы (Остатки, Обороты, БалансИОбороты) везде, где не нужны реквизиты движений. Это в 10-100 раз быстрее.
  • Для реквизитов в отчетах по остаткам используйте технику «Связывание через регистр сведений» (хранение атрибутов партии в отдельном регистре сведений с измерениями: Номенклатура, Склад, Партия/НомерГТД).
  • Избегайте SELECT * — явно перечисляйте поля. Это ускоряет передачу данных и делает код читаемым.
  • Проверяйте план запроса (Консоль запросов -> План запроса) на наличие «Full Scan» по таблицам движений.

Статья подготовлена на основе документации 1С:Предприятие 8 (Синтаксис-помощник) и практики разработки высоконагруженных систем. Актуально для платформы 8.3.20+.