Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Вопрос по нюансам в СКД (http://forums.kuban.ru/f1040/vopros_po_nyuansam_v_skd-7665784.html)

vovan519 13.04.2016 10:40

Вопрос по нюансам в СКД
 
Хочу получить документы реализация без СФ
Написал запрос в СКД

ВЫБРАТЬ РАЗРЕШЕННЫЕ
РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваровУслуг
ПОМЕСТИТЬ Выборка
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И РеализацияТоваровУслуг.Проведен
;

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

Работает. Выдает необходимые данные. Но медленно (секунд 10). Подумал уменьшить период для СФ. Написал следующий запрос

ВЫБРАТЬ РАЗРЕШЕННЫЕ
РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваровУслуг
ПОМЕСТИТЬ Выборка
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И РеализацияТоваровУслуг.Проведен
{ГДЕ
РеализацияТоваровУслуг.Организация.*,
РеализацияТоваровУслуг.Контрагент.*,
РеализацияТоваровУслуг.ДоговорКонтрагента.***
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СчетФактураВыданныйДокументыОснования.Ссылка КАК СчетФактураВыданный,
СчетФактураВыданныйДокументыОснования.ДокументОснование КАК ДокументОснование
ПОМЕСТИТЬ Выборка1
ИЗ
Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
ГДЕ
СчетФактураВыданныйДокументыОснования.Ссылка.Дата МЕЖДУ &НачалоПериодаСФ И &КонецПериодаСФ
{ГДЕ
СчетФактураВыданныйДокументыОснования.Ссылка.Организация.*,
СчетФактураВыданныйДокументыОснования.Ссылка.Контрагент.*,
СчетФактураВыданныйДокументыОснования.Ссылка.ДоговорКонтрагента.***
;

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

Работает быстро, но выдает все документы реализация (и без СФ и с СФ)
Вставил этот запрос в консоль. Выдает то что надо. Что поправить в СКД, может какой-то нюанс не учел?

roma n 13.04.2016 17:12

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

vovan519 13.04.2016 17:24

Спасибо за совет.
Но все таки хочу разобраться с СКД. Может какую галку нужно поставить. Ведь лучше один раз выяснить нюанс, чем все жизнь делать через опу.

roma n 13.04.2016 17:36

(2) для начала посмотри какой запрос реально выполняется.

Как вариант - затребованные в результат поля содержатся в одном источнике, в связи с чем умный оптимизатор может сделать вывод о ненужности соединения.

DeiMos 14.04.2016 02:43

База файловая или SQL?

vovan519 14.04.2016 09:46

База файловая

vovan519 18.04.2016 13:28

вверх


Текущее время: 22:04. Часовой пояс GMT +3.