Имя: Пароль:
1C
1С v8
СКД ошибка при выполнении отчета
, ,
0 vadimegorov
 
01.02.18
17:42
Доброго времени суток!

Имеем следующее: два набора данных Набор1 - это таблица значений, Набор2 - запрос. Левое соединение от набора2 к набору1 без всяких условий по общему полю. В результирующих данных имеем, кроме всего прочего, два реквизита "ЗаказПокупателя" и "ЗаказПоставщику". Всё работает отлично до тех пор пока я не пытаюсь вывести одновременно два любых дочерних поля из этих указанных реквизитов. Например, "ЗаказПокупателя.Отвественный" и "ЗаказПоставщику.ВидОперации". Вываливается ошибка: "Использование полей из не связанных наборов данных не допустимо". При этом есть реквизит "Номенклатура" и если использовать его дочернее поле (например, "Артикул") с любым из указанных - то всё нормально. Хелп, люди, что оно хочет от меня?
1 vadimegorov
 
01.02.18
17:48
Набор2(запрос)
ХарактеристикаНоменклатуры

Набор1(таблица)
ХарактеристикаНоменклатуры
ЗаказПокупателя
ЗаказПоставщику

Такой вывод отчета работает нормально:
ХарактеристикаНоменклатуры    ЗаказПокупателя   ЗаказПоставщику

Такой нет:
ХарактеристикаНоменклатуры ЗаказПоставщику.Отвественный ЗаказПокупателя.Номер
2 Defender aka LINN
 
01.02.18
19:36
(0) "Левое соединение от набора2 к набору1 без всяких условий" - это тебе кто сказал, что у тебя так?
3 Фрэнки
 
01.02.18
19:44
судя по тексту в пост 1 - там вообще никакого соединения не будет, т.к. все три выбираемых поля изнутри одного и того же Набор1 и пример, как минимум, неудачный. Т.к. заставляет думать, что Набор1 не работает сам по себе, а не в соединении с набор2

И в примере такого примитивного уровня вовсе не видно необходимости создания двух наборов, а не одного запроса в Набор1
4 vadimegorov
 
01.02.18
22:20
(3) Необходимость создания набора с запросом обусловлена тем, что нужно сделать отбор по свойствам и категориям характеристики номенклатуры. В наборе с таблицей это сделать средствами СКД нельзя. Поэтому требуется соединение с запросом.
5 vadimegorov
 
01.02.18
22:21
(2) Это мне сказала документация. Связь наборов данных осуществляется через левое внешнее соединение.
6 Фрэнки
 
01.02.18
22:22
(4) понятно. Я бы пробовал все эти "через точку" вставить полями запроса.
7 vadimegorov
 
01.02.18
22:26
(6) Это крайний и "костыльный" вариант. Количество реквизитов в документе довольно много. Сегодня юзерам может потребоваться одно поле, завтра другое, послезавтра в документ реквизиты добавятся - не переписывать же отчет сто раз ((
8 Фрэнки
 
01.02.18
22:34
(7) сам подход протести. хотя пишешь выше, что ссылки ЗаказПокупателя   ЗаказПоставщику - рабочие
9 vadimegorov
 
01.02.18
22:38
(8) методом научного тыка было выяснено следующее. Если в запрос добавить поле номенклатура и в таблицу добавить его, то   дочерние поля номенклатуры получается выводить в отчет с дочерними полями заказа покупателя. Если в одном из наборов поле номенклатуры отсутствует и попытаться вывести дочернее поле, то такая же ошибка возникает... Жесть какая-то. Получается надо лепить объединение полей заказа покупателя и заказа поставщика с запросом и потом соединяться к этому объединению таблицей.
10 Фрэнки
 
01.02.18
22:58
Похоже на то, как в обычном левом соединении для ЕСТЬNULL подкладывать приходится типизированную пустую ссылку.

з.ы. Не знаю только, понятна ли моя мысль
11 Franchiser
 
гуру
02.02.18
00:29
Поставь у поля Номенклатура флажок обязательное
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший