Использовать систему компоновки данных (СКД)

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

Терминология

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

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

Предупреждение!

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

Пример для реквизитов «Контрагенты» и «Партнеры»

Итак, у нас есть следующий запрос:

ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, РеализацияТоваровУслугТовары.Количество КАК Количество, РеализацияТоваровУслугТовары.СуммаСНДС КАК СуммаСНДС, РеализацияТоваровУслугТовары.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры ПОМЕСТИТЬ тзВнутр ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата, ДЕНЬ) И РеализацияТоваровУслугТовары.Ссылка.Проведен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Реализации.Ссылка.Организация КАК Организация, Реализации.Ссылка.Организация.ИНН КАК ИНН, Реализации.Ссылка.Номер КАК Номер, Реализации.Ссылка.Дата КАК Дата, Реализации.Ссылка.Контрагент КАК Контрагент, Реализации.Ссылка.Контрагент.ИНН КАК Контрагент_ИНН, СУММА(Реализации.Количество) КАК Количество, СУММА(Реализации.СуммаСНДС) КАК СуммаСНДС, СФ.Ссылка.Номер КАК Номер_СФ, СФ.Ссылка.Дата КАК Дата_СФ, СФ.Ссылка.ПредставлениеНомера КАК ПредставлениеНомера ИЗ тзВнутр КАК Реализации ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СФ ПО (Реализации.Ссылка = СФ.ДокументОснование) СГРУППИРОВАТЬ ПО Реализации.Ссылка, СФ.Ссылка, Реализации.Ссылка.Организация, Реализации.Ссылка.Организация.ИНН, Реализации.Ссылка.Номер, Реализации.Ссылка.Дата, Реализации.Ссылка.Контрагент, Реализации.Ссылка.Контрагент.ИНН, СФ.Ссылка.Номер, СФ.Ссылка.Дата, СФ.Ссылка.ПредставлениеНомера

Однако, в другой базе с другими функциональными опциями он не будет работать корректно, поэтому здесь воспользуемся конструкцией ЛЕВОЕ СОЕДИНЕНИЕ к справочнику «Контрагенты», необходимые реквизиты Контрагент, Контрагент_ИНН есть и получаем следующее:

ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО (Реализации.Ссылка.Партнер = Контрагенты.Партнер)

Таким образом получается следующий запрос:

ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, РеализацияТоваровУслугТовары.Количество КАК Количество, РеализацияТоваровУслугТовары.СуммаСНДС КАК СуммаСНДС, РеализацияТоваровУслугТовары.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры ПОМЕСТИТЬ тзВнутр ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата, ДЕНЬ) И РеализацияТоваровУслугТовары.Ссылка.Проведен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Реализации.Ссылка.Организация КАК Организация, Реализации.Ссылка.Организация.ИНН КАК ИНН, Реализации.Ссылка.Номер КАК Номер, Реализации.Ссылка.Дата КАК Дата, Контрагенты.Ссылка КАК Контрагент, Контрагенты.ИНН КАК Контрагент_ИНН, СУММА(Реализации.Количество) КАК Количество, СУММА(Реализации.СуммаСНДС) КАК СуммаСНДС, СФ.Ссылка.Номер КАК Номер_СФ, СФ.Ссылка.Дата КАК Дата_СФ, СФ.Ссылка.ПредставлениеНомера КАК ПредставлениеНомера ИЗ тзВнутр КАК Реализации ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СФ ПО (Реализации.Ссылка = СФ.ДокументОснование) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО (Реализации.Ссылка.Партнер = Контрагенты.Партнер) СГРУППИРОВАТЬ ПО Реализации.Ссылка, СФ.Ссылка, Реализации.Ссылка.Организация, Реализации.Ссылка.Организация.ИНН, Реализации.Ссылка.Номер, Реализации.Ссылка.Дата, СФ.Ссылка.Номер, СФ.Ссылка.Дата, СФ.Ссылка.ПредставлениеНомера, Контрагенты.Ссылка, Контрагенты.ИНН

Пример для реквизита «Организация»

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

ВЫБРАТЬ ХозрасчетныйОбороты.Счет КАК Счет, ХозрасчетныйОбороты.Субконто1 КАК Субконто1, ХозрасчетныйОбороты.Субконто2 КАК Субконто2, ХозрасчетныйОбороты.Субконто3 КАК Субконто3, ХозрасчетныйОбороты.КорСчет КАК КорСчет, ХозрасчетныйОбороты.Организация КАК Организация, ХозрасчетныйОбороты.Организация.ИНН КАК ОрганизацияИНН, ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт, ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты( НАЧАЛОПЕРИОДА(&Дата, месяц) , КОНЕЦПЕРИОДА(&Дата, месяц), , , , , , ) КАК ХозрасчетныйОбороты

переделываем в:

ВЫБРАТЬ ХозрасчетныйОбороты.Счет КАК Счет, ХозрасчетныйОбороты.Субконто1 КАК Субконто1, ХозрасчетныйОбороты.Субконто2 КАК Субконто2, ХозрасчетныйОбороты.Субконто3 КАК Субконто3, ХозрасчетныйОбороты.КорСчет КАК КорСчет, Организации.Ссылка КАК Организация, Организации.ИНН КАК ОрганизацияИНН, ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт, ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты( НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ), КОНЕЦПЕРИОДА(&Дата, МЕСЯЦ), , , , , , ) КАК ХозрасчетныйОбороты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации ПО (ХозрасчетныйОбороты.Организация = Организации.Ссылка)