Отключить оптимизациюпреобразование запроса в СКД #711023


#0 by ixilimuse
Всем доброго времени суток. Есть запрос. Запрос мегалитический)) В одном из подзапросов я намеренно создаю записи - "пустышки". В них присутствует только номер договора и ряд полей не влияющих на суммы. Именно к этим полям я цепляю данные другой подтаблицы. Я так делаю что бы не дублировались суммы прямого страхования из-за того что я цепляю к нему суммы исходящего перестрахования. Сразу скажу конфа - не типовая. И других вариантов - нет. Ибо реальной полноценной связки между прямым и исходом нет((( В общем, в консоли запрос отрабатывает идеально. Все сходится с любимым сотрудниками экселем. Стоит мне засунуть его в СКД - начинаются проблемы. Суммы увеличиваются в 8-9 раз, так как появляются дубли. Кароче СКД умная, и нейтрализует все мои пустышки. Я добрался до галочки "Игнорировать NULL", но и это хоть и изменило количество записей, дубли все равно остались. Уж очень хочет СКД прямое страхование сматчить с исходящим. В обход моих премудростей с пустышками и т.п. Может кто-то подскажет какие-то не банальные настройки СКД? Может есть возможность отключить преобразования и оптимизации? Я уж и с группировкой выводил, и детальные записи и отключал автозаполнение. Буду благодарен наводкам и советам))
#1 by Kyon8
Можно в СКД передать объект - таблицу значений, это в самом тяжелом случае. Также в консоли запросов посмотреть на преобразованный СКД запрос, попробовать ставить галочки "обязательное" для полей в ролях, преобразовать подзапрос во временную таблицу.
#2 by Kyon8
* в консоли СКД
#3 by Ymryn
честно признаюсь, не понял процентов 50 из описания, но есть подозрение, что поможет установка галочки "Обязательное", там же где ты поставил "Игнорировать NULL". В идеале это по всем полям, которые ты хочешь, чтобы железно разделялись.
#4 by agorbunov
Попробуй снять галку "Автозаполнение". А выбираемые поля и отборы установить явно через закладку "Компоновка данных" в конструкторе.
#5 by acsent
вместо соединения таблиц юзай объединение
#6 by ixilimuse
Над передачей объекта тоже думал. Но подозреваю не стоит того. Но как вариант. С галочками "Обязательное" попробовал. Результат тот - же. Увы. Но все равно спасибо. Да, с написанием есть немного. Ссори. Уже делал. Ничего не поменялось. На самом деле под "подзапросом" я имел ввиду как раз временную таблицу. Их у меня в запросе по меньшей мере 54 штуки. Создаются, уничтожаются, в процессе достижения конечного результата со всеми расчетами. А то что я имел ввиду про пустышки вот этот кусок. ... ВЫБРАТЬ     ДД.ДатаНачалаДействияСтраховойЗащиты КАК ДатаНачалаДействияСтраховойЗащиты,     0,     0,     0,     0,     0,     0,     NULL,     0,     Тип ... Собственно в этом месте создаются пустышки... А потом дальше по тексту я делаю так: Подтягиваю в таблицу исходящее перестрахование, при этом избегая дубляжей сумм по прямому. Пустышки пусть множатся - не жалко. Так как количество строк по прямому и исходу может быть разное, а четкой связи - нет. Собственно вот где-то на этом этапе СКД и накладывает свои руки на мои читтерские выдумки. В результате выборки через СКД - пустышек нет, а данные по исходу находятся в строках которые содержат данные по прямому страхованию. И как следствие где исхода больше чем прямого, я наблюдаю дублирование сумм по прямому. Походу придется пока временно создать "семерочный" отчетик, а потом будет время, полистаю умные книжки, может чего-то и наковыряю. Если найду решение - отпишусь. Если кто-то это сделает раньше меня - буду признателен :) Всем спасибо за отклик и попытку помочь)
#7 by agorbunov
Посмотри (допустим, консолью запросов СКД) какой результирующий запрос генерируется. Сразу будет понятно где копать. В некоторых местах, вроде твоего объединения, у меня СКД выкидывала лишние таблицы или дублирующиеся поля. Я решил это поместив все эти объединения в подзапрос, и вынеся настройки выбираемых полей в запрос верхнего уровня. Криво, но работает.
#8 by Kyon8
Наверное в данном случае как раз проще ТЗ передавать, изменений совсем немного нужно, см.
#9 by DS
Когда-то сталкивался с каким-то непонятным поведением СКД (подробнойтей не помню), которое решил заданием имен полей временных таблиц отличных от имен полей результирующих таблиц.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С