СКД. Аналог ЕстьNull(А, Б) для связей наборов данных #771410


#0 by dimaldinho
В СКД связываются два набора данных "левым соединением" (источник связи - приемник связи). В таблице-приемнике есть поле, пусть Номенклатура, которое на некоторых записях остается пустое (Null, если было бы левое соединение в запросе). Этот Null нехорошо себя ведет в настройках отчета: 1. невозможно сделать отбор по Номенклатура = Null 2. невозможно сделать группировки Номенклатура - Детальные записи (просто исчезают строки с ненайденной Номенклатурой) Если бы у СКД была бы функция, аналогичная ЕстьNull, можно было бы преобразовать Null к пустой ссылке, например. Как решать проблемы 1., 2. для связей наборов в СКД?
#1 by КМ155
[сли бы у СКД была бы функция, аналогичная ЕстьNull] а вынести во временную табличку и обработать языком запросов не позволяют условия задачи ?
#2 by dimaldinho
в СКД формируются наборы данных, потом связываются, потом выводятся в коллекцию значений, потом запросом null заменяется на пустую ссылку, потом коллекция подсовывается внешним набором в СКД? как-то перебор)
#3 by КМ155
свою функция + общий модуль + расчетные поля СКД ?
#4 by Карупян
выбирай через естьnull
#5 by Карупян
в запросе
#6 by aleks_default
а если не через ж*опу гланды вырезать, а непосредственно в запросе заменить isNull(Номенклатура,Значение(Справочник.Номенклатура.пустаяСсылка))
#7 by romix
Я тоже столкнулся - интересно, как правильно.
#8 by КМ155
а если через ЗначениеЗаполнено - Возвращает Истина, если значение отлично от значения данного типа по умолчанию, отлично от значения NULL, отлично от пустой ссылки, отлично от значения Неопределено. Для логических значений осуществляется проверка на значение NULL. Для строк осуществляется проверка на отсутствие не пробельных символов
#9 by ShoGUN
+1, должно работать...
#10 by MiamiVice
Может сработает если сделать вычисляемое поле. Что-то вроде ВЫБОР КОГДА Номенклатура ЕСТЬ NULL и НЕ ПолеИсточника ЕСТЬ NULL ТОГДА Значение(Справочник.Номенклатура.ПустаяСсылка) ИНАЧЕ Номенклатура КОНЕЦ Где Номенклатура поле из таблицы приемника, а "ПолеИсточника" какое-то поле из таблицы источника. И уже по этому вычисляемому полю строить отборы и группировки.
#11 by dimaldinho
Господа, которые пишут про запросы, не читают условия из : нет никаких запросов, есть НаборыДанных в СКД. И связь этих наборов данных. Запросов нет. , - пробую, пока не выходит
#12 by aleks_default
господа, которые пишут такие посты, 1. невозможно сделать отбор по Номенклатура = Null В СКД есть отбор по "Заполнено" и "не заполнено" 2. невозможно сделать группировки Номенклатура - Детальные записи (просто исчезают строки с ненайденной Номенклатурой) Вот как здесь можно что-то понять? У меня обычно ничего не исчезает просто выводится пустое значение в группировке
#13 by dimaldinho
>> В СКД есть отбор по "Заполнено" и "не заполнено" Вот что видно пользователю. Никаких отборов по "Заполнено" и "не заполнено" нет.
#14 by aleks_default
платформу обновите
#15 by dimaldinho
>> невозможно сделать группировки Номенклатура - Детальные записи Делаем в настройках СКД одну группировку детальные записи, получаем результат: Делаем 2 группировки ДетальныеЗаписи - Номенклатура, ожидаем увидеть: Карандаш      Склад 1 Видим в реальности: Карандаш
#16 by aleks_default
хрень какая-то все я домой ушел
#17 by singlych
Заполнено-Не заполнено ищи в виде сравнения, а не в значении отбора.
#18 by Карупян
А если тип поля указать?
#19 by AneJIbcuH
ГДЕ-то В типовом отчете видел такую штуку, при связи наборов, где, например, отсутствует у второго какое-то поле, просто Создать вычисляемое поле, в "Путь к данным" написать точно также наименование (Как поле набора данных), Например, Номенклатура. А В выражении использовать ЕСТЬNULL(Номенклатура,..)
#20 by dimaldinho
>> Заполнено-Не заполнено ищи в виде сравнения, а не в значении отбора Нашел, но не помогает. Незаполненные значения в отчете без отбора выводятся, с отбором "= не заполнено" отчет полностью пустой. >> просто Создать вычисляемое поле В СКД не работает отбор по значению вычисляемого поля, если его применять ко всему отчету.
#21 by dimaldinho
Итого на данный момент. В плоском отчете без отбора Склад1 Карандаш В отчете с группировкой по номенклатуре исчезает строка "Склад3 <Пусто>" В отчете с отбором по Номенклатура не заполнено вообще пусто. Отбор по вычисляемому полю не применяется ко всему отчету.
#22 by FIXXXL
наборы данных что из себя представляют? не проще логику отчета подшаманить?
#23 by dimaldinho
это совсем крайняя мера, но как суперзапасной вариант - остается
#24 by FIXXXL
а возможно твои два набора навесить слева на справочник номенклатуры? по аналогии "что б в отчет попадала номенклатура без движений вообще"
#25 by aleks_default
Какие поля в наборах? Как настроены связи, по каким полям? Лучше переделать, сделать все одним запросом.
#26 by dimaldinho
задача в другом. задача "отобразить строки, у которых одно поле из "правого" набора данных пусто. можно отобразить с отбором, можно отобразить в группировке" я сильно упрощенно опишу суть, все имена изменены, чтобы не замутить суть: есть набор данных Основной, есть набор данных Вспомогательный, они соединяются по полю одному полю Склад. Во втором наборе есть поле Номенклатура. В отчете важно видеть группировку по Номенклатуре и очень важно видеть когда эта Номенклатура не подсоединилась соединением (т.е. null) Прикладная часть задачи решается плоским отчетом с сортировкой по Номенклатуре (наверху будет незаполненная) или переписыванием отчета с заменой соединения наборов на один запрос с соединением таблиц. Остается техническая загадка: возможно ли делать работающие группировки и работающие отборы по полю из правого набора данных СКД, в значениях которого может попадаться null.
#27 by aleks_default
галка "Обязательная" в связях наборов стоит?
#28 by dimaldinho
да
#29 by aleks_default
"правого набора данных СКД, в значениях которого может попадаться null". null не может быть в одном из наборов(если это так то тебе уже написали как от этого избавится). В данном случае, я считаю, изначально неверно выбран тип набора данных. Тут должно быть объединение.
#30 by dimaldinho
ты не так прочитал. в наборе данных не может быть нулл, конечно, имелось ввиду, что в правом наборе может быть не найдено подходящей условию строки
#31 by dimaldinho
сделал модельный отчет, можно поэкспериментировать, кому интересно
#32 by dimaldinho
#33 by dimaldinho
#34 by FIXXXL
вот сюда если справочникНоменклатура прикрутить и прописать обработку НУЛЛ для количественных полей, то по идее не должны пустые строки лезть
#35 by dimaldinho
ну ёлки. я как раз хочу видеть пустые строки. см. скрин. проблема как раз в том, что пустые строки исчезают
#36 by FIXXXL
с пустой номенклатурой боюсь не увидишь а вот с количеством 0 вполне себе
#37 by Defender aka LINN
Не взлетит. Делай иначе
#38 by Лефмихалыч
> В таблице-приемнике есть поле, пусть Номенклатура, которое на некоторых записях остается пустое Сделай так, чтобы этого не было. Ты приемник явно запросом формируешь, вот в этом запросе ECТЬNULL и используй
#39 by dimaldinho
ты не так прочитал. в наборе данных не может быть нулл, конечно, имелось ввиду, что в правом наборе может быть не найдено подходящей условию строки. вот приемник: ВЫБРАТЬ
#40 by Лефмихалыч
короче, в СКД соединения только левые и внутренние. Прими это, живи с этим, действуй, исходя из этого.
#41 by FIXXXL
ну так сделай, чтобы в приемнике были все строки не хочешь 0, напиши "ПустаяНоменклатура" или через ЗНАЧЕНИЕ есть у тебя полный список того, что пропадает? вот с ним соединяй и обрабатывай НУЛЛвариант как тебе надо
#42 by catena
А если в приемнике действительно соединить со справочником номенклатуры и обработать замену NULL, связь по справочнику.
#43 by dimaldinho
, БИНГО! только надо было в приемнике выбрать таблицу всех возможных СКЛАДОВ, к ней левым соединением присоединить сам приемник и там заменить ЕстьNull(Номенклатура, ПустаяСсылка). После этого группировка заработала
#44 by dimaldinho
все-таки это немножко частный случай решения, но гуд. почти всегда можно такой трюк провернуть
#45 by catena
Чем больше объектов связи, тем сложнее. Например, если связь не по складу, а склад+номенклатура - брать кросс-соединение?
#46 by dimaldinho
согласен, усложняется
#47 by aleks_default
Вот интересно какую информацию показывает данная конструкция? Что на "Склад3" есть пустая номенклатура? Наверное очень важная информация?
#48 by dimaldinho
я ж не могу весь отчет выложить. там еще миллион колонок, служащих миллиону целей. миллион первая цель увидеть, что у склада3 пустая номенклатура
#49 by dimaldinho
Представь, что в зависимости от многих параметров складу должна быть назначена "любимая номенклатура". И нам нужно проверять, правильно ли она назначена, и особенно зорко следить за неназначенными. Основной набор данных невозможно создать запросом, можно только подсунуть в СКД набор данных Объект. Более того, уже существует процедура, которую менять нельзя, и которая возвращает ровно нужный набор инфы о параметрах: Склад Параметр1 Параметр2... Параметр100 Во вспомогательном наборе легко запросом сформировать таблицу Склад - ЛюбимаяНоменклатура, далее нужна таблица для проверки Склад Параметр1 Параметр2... Параметр100 ЛюбимаяНоменклатура с возможностью сгруппировать по Номенклатуре или отобрать по незаполненной
#50 by dimaldinho
P.S. Оговорился, не процедура, а функция возвращает нужную таблицу значений Склад Параметр1 Параметр2... Параметр100
#51 by kittystark
в одном запросе к декартову произведению справочников склады, номенклатура сделай левое соединение регистра остатков (и/или продаж) это самое первое, что можно сделать, хотя есть еще другие варианты
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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