Содержание:
1. Что такое регистратор в 1С 8.3?
2. Отбор записей с конкретным типом регистратора в запросе
1. Что такое регистратор в 1С 8.3?
В данной статье будет рассмотрен принцип работы регистратора в 1С 8.3, в том числе поговори о том, как работать с ним в запросах, как правильно отбирать в запросе нужный тип регистратора.
Вначале дадим четкое определение понятию регистратора. Итак, регистратор – это некий документ, который создаёт записи в регистре сведений, точнее – документ, который владеет записями регистра.
Следующее понятие, которое также следует определить – запись. Это некоторый элемент в данных, которые находятся в регистре; поля с их значениями.
Последние, что нужно знать, чтобы перейти к основной теме – это регистры. Они бывают четырёх видов:
· регистр бухгалтерии – некий объект, в котором хранятся данные для бухгалтерского учёта. Благодаря этому объекту проводится аналитический учёт: многоуровневый и многомерный;
· регистр накопления – объект, в котором хранится информация о содержании материальных средств (деньги, продукция, материалы и так далее); с помощью этого объекта автоматизируются направления складского учёта, планирования и так далее.
· регистр расчёта – объект, в котором хранятся записи по видам расчёта и промежуточные данные, а также результаты расчетов;
· регистр сведений – объект, в котором хранятся различные данные, в виде резерва (валютные курсы, цены на предприятии и так далее).
2. Отбор записей с конкретным типом регистратора в запросе
Поставим задачу: пусть нужно выбрать конкретный тип регистратора, который будет использован в записях в регистре. Существует несколько решений, которые показаны на скриншоте ниже:
Рис. 1 Выбор конкретного типа регистратора
Итак, рассмотрим подробнее: первые 2 варианта – с использованием оператора «ССЫЛКА» или функции «ТИПЗНАЧЕНИЯ». Но с помощью «ВЫРАЗИТЬ» значение будет приведено лишь к одному из типов, как показано на скриншоте ниже:
Рис. 2 ВЫРАЗИТЬ для приведения значения к определенному типу регистратора
По сути, как видим, оператор не выполнит отбор. Чтобы отбор, всё же, выполнился, необходимо установить отбор в графе «ГДЕ».
Также не «отбрасывает» ненужные соединения, а только прибавляет отбор с фильтрацией по типу оператор «ССЫЛКА» (проверяем при помощи консоли, во вкладке просмотра плана запроса). В операторе «ВЫРАЗИТЬ» чётко видим, что поле имеет не составной тип, а лишь точную ссылку, так что ненужных соединений не будет. Но, в «ССЫЛКА» существует некоторая специфика, рассмотрим её на скриншоте ниже:
Рис. 3 Специфика оператора «ССЫЛКА»
Когда ставим вместо «ЦеноваяГруппа», как значение у параметра, ссылку некоторого справочника «Номенклатура», то выведется ошибка системы.
Если в качестве значения параметра ЦеноваяГруппа установить, например, ссылку на справочник «Номенклатура», система выдаст ошибку:
Рис. 4 Ошибка несовместимости с оператором ССЫЛКА
Дело в том, что когда происходит работа с некоторыми реквизитами, у которых составной тип данных, то возникнет точно такая же ошибка. Рассмотрим пример: пусть есть документ «РеализацияТоваровУслуг». Этот документ не является составным типом из реквизита «ДокументОснование» внутри документа с названием «Авансовый отчёт», выполняем запрос, из-за угла возникает ошибка, как на скриншоте ниже:
Рис. 5 Возникновение ошибки создания запроса
Также конструктор запросов не станет открываться (учтём, что «ТИПЗНАЧЕНИЯ» был указан верно).
Техническая поддержка из 1С объясняет это так: «Ошибка создания запроса происходит, когда в выражении, которое проверяем, тип не содержит ссылку на таблицу, которую проверяем».
Данную особенность обязательно нужно иметь ввиду при написании запросов, в которых содержатся регистраторы.
Специалист компании «Кодерлайн»
Айдар Фархутдинов