![]() |
![]() |
|
Параметр в СКД | ☑ | ||
---|---|---|---|---|
0
zametatel
06.06.16
✎
14:07
|
Проблема в следующем. Создаю внешний отчет с помощью СКД по продажам в разрезе групп товаров (эти группы в справочнике Шаблон..., связанный со справочником Номенклатура). Во вложенном запросе прописываю условие к справочнику Номенклатура следующим образом:
ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ ШаблонОтчетаПоОтгрузкамДляУМК.Группа ИЗ Справочник.ШаблонОтчетаПоОтгрузкамДляУМК КАК ШаблонОтчетаПоОтгрузкамДляУМК ГДЕ ШаблонОтчетаПоОтгрузкамДляУМК.Ссылка = &Ссылка) И далее на вкладке Связи внутренним соединяю Продажи с этим Шаблоном с условием ШаблонОтчетаПоОтгрузкамДляУМК.Ссылка = &Ссылка Отчет выводит правильно, но только если выбрать определенный элемент спр.Шаблон в пользовательском режиме. А мне нужен отчет по всем элементам. На галочку "Доступен список значений" ругается несовместимостью типов. |
|||
1
Fragster
гуру
06.06.16
✎
14:19
|
я бы копал в сторону "произвльная иерархия СКД" и убрал бы такое условие из запроса вообще.
|
|||
2
azernot
06.06.16
✎
14:20
|
Самое простое, и без особой переделки - убрать соединение на вкладке "Связи"
в условиях прописать так: Номенклатура.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ ШаблонОтчетаПоОтгрузкамДляУМК.Группа ИЗ Справочник.ШаблонОтчетаПоОтгрузкамДляУМК КАК ШаблонОтчетаПоОтгрузкамДляУМК ГДЕ ШаблонОтчетаПоОтгрузкамДляУМК.Ссылка = &Ссылка) ИЛИ &Ссылка = Значение(Справочник.Шаблон.ПустаяСсылка) Понятно, что "Шаблон" - это идентификатор справочника в конфигураторе. Но вообще, если у тебя "Продажи" - это регистр, правильнее перенести условия в параметры виртуальной таблицы. Опубликуй полный текст запроса в СКД, попробуем посмотреть. |
|||
3
zametatel
06.06.16
✎
14:23
|
ВЫБРАТЬ
Номенклатура.Ссылка, Номенклатура.Бренд КАК Бренд ПОМЕСТИТЬ спрНоменклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ ШаблонОтчетаПоОтгрузкамДляУМК.Группа ИЗ Справочник.ШаблонОтчетаПоОтгрузкамДляУМК КАК ШаблонОтчетаПоОтгрузкамДляУМК ГДЕ ШаблонОтчетаПоОтгрузкамДляУМК.Ссылка = &Ссылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Регистратор, Продажи.Номенклатура, СУММА(Продажи.Стоимость) КАК Стоимость, Продажи.Контрагент ПОМЕСТИТЬ Продажи ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Период МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО Продажи.Регистратор, Продажи.Номенклатура, Продажи.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиСебестоимость.Регистратор, ПродажиСебестоимость.Номенклатура, СУММА(ПродажиСебестоимость.Количество) КАК Количество, СУММА(ПродажиСебестоимость.Стоимость) КАК Себестоимость ПОМЕСТИТЬ СебестоимостьПродаж ИЗ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость ГДЕ ПродажиСебестоимость.Период МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО ПродажиСебестоимость.Номенклатура, ПродажиСебестоимость.Регистратор ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Стоимость, ЕСТЬNULL(СебестоимостьПродаж.Себестоимость, "-") КАК Себестоимость, Контрагенты.Регион, ВЫБОР КОГДА &ТоварВыбор ТОГДА спрНоменклатура.Ссылка ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КОНЕЦ КАК Товар, ВЫБОР КОГДА спрНоменклатура.Бренд <> ЗНАЧЕНИЕ(Справочник.Бренд.ПустаяСсылка) ТОГДА спрНоменклатура.Бренд ИНАЧЕ &Прочие КОНЕЦ КАК Бренд, ШаблонОтчетаПоОтгрузкамДляУМК.Группа КАК ГруппаТоваров ИЗ Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО Продажи.Контрагент = Контрагенты.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ СебестоимостьПродаж КАК СебестоимостьПродаж ПО Продажи.Регистратор = СебестоимостьПродаж.Регистратор И Продажи.Номенклатура = СебестоимостьПродаж.Номенклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ спрНоменклатура КАК спрНоменклатура ПО Продажи.Номенклатура = спрНоменклатура.Ссылка ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ШаблонОтчетаПоОтгрузкамДляУМК КАК ШаблонОтчетаПоОтгрузкамДляУМК ПО (ШаблонОтчетаПоОтгрузкамДляУМК.Ссылка = &Ссылка) |
|||
4
zametatel
06.06.16
✎
14:24
|
(1) ммм...Новичок я. Что подразумевается под произвольной иерархией?
|
|||
5
zametatel
06.06.16
✎
14:29
|
(2) не работает
|
|||
6
azernot
06.06.16
✎
14:32
|
ВЫБРАТЬ
Номенклатура.Ссылка, Номенклатура.Бренд КАК Бренд ПОМЕСТИТЬ спрНоменклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ ШаблонОтчетаПоОтгрузкамДляУМК.Группа ИЗ Справочник.ШаблонОтчетаПоОтгрузкамДляУМК КАК ШаблонОтчетаПоОтгрузкамДляУМК ГДЕ ШаблонОтчетаПоОтгрузкамДляУМК.Ссылка = &Ссылка) ИЛИ &Ссылка = Значение(Справочник.Шаблон.ПустаяСсылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Регистратор, Продажи.Номенклатура, СУММА(Продажи.Стоимость) КАК Стоимость, Продажи.Контрагент ПОМЕСТИТЬ Продажи ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Период МЕЖДУ &ДатаНачала И &ДатаОкончания И Продажи.Номенклатура в (Выбрать спрНоменклатура.Ссылка из спрНоменклатура) СГРУППИРОВАТЬ ПО Продажи.Регистратор, Продажи.Номенклатура, Продажи.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиСебестоимость.Регистратор, ПродажиСебестоимость.Номенклатура, СУММА(ПродажиСебестоимость.Количество) КАК Количество, СУММА(ПродажиСебестоимость.Стоимость) КАК Себестоимость ПОМЕСТИТЬ СебестоимостьПродаж ИЗ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость ГДЕ ПродажиСебестоимость.Период МЕЖДУ &ДатаНачала И &ДатаОкончания И ПродажиСебестоимость.Номенклатура в (Выбрать спрНоменклатура.Ссылка из спрНоменклатура) СГРУППИРОВАТЬ ПО ПродажиСебестоимость.Номенклатура, ПродажиСебестоимость.Регистратор ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Стоимость, ЕСТЬNULL(СебестоимостьПродаж.Себестоимость, 0) КАК Себестоимость, Контрагенты.Регион, ВЫБОР КОГДА &ТоварВыбор ТОГДА спрНоменклатура.Ссылка ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КОНЕЦ КАК Товар, ВЫБОР КОГДА спрНоменклатура.Бренд <> ЗНАЧЕНИЕ(Справочник.Бренд.ПустаяСсылка) ТОГДА спрНоменклатура.Бренд ИНАЧЕ &Прочие КОНЕЦ КАК Бренд, ШаблонОтчетаПоОтгрузкамДляУМК.Группа КАК ГруппаТоваров ИЗ Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО Продажи.Контрагент = Контрагенты.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ СебестоимостьПродаж КАК СебестоимостьПродаж ПО Продажи.Регистратор = СебестоимостьПродаж.Регистратор И Продажи.Номенклатура = СебестоимостьПродаж.Номенклатура Не сказать, что запрос хороший.. Насколько оправдано использование реальных таблиц регистров, а не виртуальных типа "Обороты"... Но попробуй вот так. |
|||
7
zametatel
06.06.16
✎
14:38
|
(6) не хочет...
Возможно, (1) прав. Надо поразбираться с произвольной иерархией |
|||
8
azernot
06.06.16
✎
14:40
|
(7) "Не хочет" - очень неинформативное сообщение.
Не хочет - нужно заставить. Что конкретно получается, если выполнить запрос из (6)? В прпааметрах СКД для параметра "Ссылка" ууказан тип "Справочник.Шаблон"? |
|||
9
zametatel
06.06.16
✎
14:43
|
(8) стоит
|
|||
10
zametatel
06.06.16
✎
14:43
|
"Не хочет" - отчет пустой
|
|||
11
azernot
06.06.16
✎
14:45
|
(10) В самом отчёте, если нажать кнопку выбора в "параметрах" сразу проваливается в форму списка справочника "Шаблоны"? Или сначала даёт выбор типа "Поле компоновки данных"?
|
|||
12
azernot
06.06.16
✎
14:48
|
(10) если отчёт пустой, значит параметр "Ссылка" у тебя и не элемент справочника Шаблоны, и не пустая ссылка справочника Шаблоны.. а что-то другое, например Неопределено, или ещё какая фигня.
(это я тактично обхожу другие проблемы типа отсутствия записей в Продажах за выбранный период) |
|||
13
zametatel
06.06.16
✎
14:49
|
(11)Дает выбор. Но насколько я понимаю, это в Настройках скд решается. При попытке добавить список значений в запрос (6), ругается все тем же "Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов." |
|||
14
azernot
06.06.16
✎
14:51
|
При попытке добавить список значений в запрос (6), ругается все тем же "Неверные параметры в операции сравнения
А зачем ты пытаешься задать список значений? Ты хочешь шаблоны списком задавать? |
|||
15
azernot
06.06.16
✎
14:52
|
(13) Даёт выбор чего? Список шаблонов? Тип поля?
Слушай, ты или отвечаешь подробно, или решаешь свои проблемы сам. Я не буду вытягивать из тебя ответы клещами. |
|||
16
zametatel
06.06.16
✎
14:56
|
(14)Я хочу, чтобы у меня выводились данные по всем элементам справочника Шаблон, а не по тому элементу, который выберет пользователь. В этом и есть суть проблемы.
(15) В самом отчете для параметра Ссылка дает на выбор справочник Шаблон или Поле компоновки данных |
|||
17
azernot
06.06.16
✎
14:59
|
(16) Мы и решаем твою проблему. Если пользователь выберет шаблон - отчёт сформируется по группе номенклатуры шаблона, если не выберет - по всей номенклатуре.
(15) А попробуй выбрать "Справочник.Шаблон", и потом не выбирать сам элемент. Отчёт должен сформироваться по всей номенклатуре. |
|||
18
zametatel
06.06.16
✎
15:03
|
(17) нет, не формирует. В справочнике Шаблон нет самой номенклатуры, есть Элементы, которые по реквизиту Группа соответствуют группам верхнего уровня из справочника Номенклатура
|
|||
19
Fragster
гуру
06.06.16
✎
15:04
|
самое простое - поменять параметр на отбор или сделать параметр необязательным
|
|||
20
zametatel
06.06.16
✎
15:05
|
(19) Тогда каким образом будет связана Номенклатура из Продаж с Группой товаров из справочника Шаблон?
|
|||
21
Fragster
гуру
06.06.16
✎
15:06
|
{ГДЕ
ШаблонОтчетаПоОтгрузкамДляУМК.Ссылка = &Ссылка} |
|||
22
Fragster
гуру
06.06.16
✎
15:06
|
и галку с параметра снимай
|
|||
23
zametatel
06.06.16
✎
15:08
|
(22) Был такой вариант. Не формирует отчет
|
|||
24
Fragster
гуру
06.06.16
✎
15:10
|
тогда (1)
|
|||
25
azernot
06.06.16
✎
15:21
|
Зайдём с другой стороны, вообще без параметров. Но при этом шаблон доступен в отборах.
Понятно, что решение не очень красивое, в текущем варианте работает только на 8-ми уровнях иерархии в справочнике Номенклатура, и не учитывает возможность пересечения иерархии в справочнике шаблонов... ВЫБРАТЬ СпрНоменклатура.Ссылка, СпрНоменклатура.Артикул КАК Бренд, ШаблонОтчетаПоОтгрузкамДляУМК.Группа КАК Группа ПОМЕСТИТЬ спрНоменклатура ИЗ Справочник.Номенклатура КАК СпрНоменклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ШаблонОтчетаПоОтгрузкамДляУМК КАК ШаблонОтчетаПоОтгрузкамДляУМК ПО (ВЫБОР КОГДА СпрНоменклатура.Родитель = ШаблонОтчетаПоОтгрузкамДляУМК.Группа ТОГДА ИСТИНА КОГДА СпрНоменклатура.Родитель.Родитель = ШаблонОтчетаПоОтгрузкамДляУМК.Группа ТОГДА ИСТИНА КОГДА СпрНоменклатура.Родитель.Родитель.Родитель = ШаблонОтчетаПоОтгрузкамДляУМК.Группа ТОГДА ИСТИНА КОГДА СпрНоменклатура.Родитель.Родитель.Родитель.Родитель = ШаблонОтчетаПоОтгрузкамДляУМК.Группа ТОГДА ИСТИНА КОГДА СпрНоменклатура.Родитель.Родитель.Родитель.Родитель.Родитель = ШаблонОтчетаПоОтгрузкамДляУМК.Группа ТОГДА ИСТИНА КОГДА СпрНоменклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = ШаблонОтчетаПоОтгрузкамДляУМК.Группа ТОГДА ИСТИНА КОГДА СпрНоменклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = ШаблонОтчетаПоОтгрузкамДляУМК.Группа ТОГДА ИСТИНА КОГДА СпрНоменклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = ШаблонОтчетаПоОтгрузкамДляУМК.Группа ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ) {ГДЕ ШаблонОтчетаПоОтгрузкамДляУМК.Ссылка.* КАК Шаблон} /////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Регистратор, Продажи.Номенклатура, СУММА(Продажи.Стоимость) КАК Стоимость, Продажи.Контрагент ПОМЕСТИТЬ Продажи ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Период МЕЖДУ &ДатаНачала И &ДатаОкончания И Продажи.Номенклатура в (Выбрать спрНоменклатура.Ссылка из спрНоменклатура) СГРУППИРОВАТЬ ПО Продажи.Регистратор, Продажи.Номенклатура, Продажи.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиСебестоимость.Регистратор, ПродажиСебестоимость.Номенклатура, СУММА(ПродажиСебестоимость.Количество) КАК Количество, СУММА(ПродажиСебестоимость.Стоимость) КАК Себестоимость ПОМЕСТИТЬ СебестоимостьПродаж ИЗ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость ГДЕ ПродажиСебестоимость.Период МЕЖДУ &ДатаНачала И &ДатаОкончания И ПродажиСебестоимость.Номенклатура в (Выбрать спрНоменклатура.Ссылка из спрНоменклатура) СГРУППИРОВАТЬ ПО ПродажиСебестоимость.Номенклатура, ПродажиСебестоимость.Регистратор ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Стоимость, ЕСТЬNULL(СебестоимостьПродаж.Себестоимость, 0) КАК Себестоимость, Контрагенты.Регион, ВЫБОР КОГДА &ТоварВыбор ТОГДА спрНоменклатура.Ссылка ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КОНЕЦ КАК Товар, ВЫБОР КОГДА спрНоменклатура.Бренд <> ЗНАЧЕНИЕ(Справочник.Бренд.ПустаяСсылка) ТОГДА спрНоменклатура.Бренд ИНАЧЕ &Прочие КОНЕЦ КАК Бренд, спрНоменклатура.Группа КАК ГруппаТоваров ИЗ Продажи КАК Продажи Внутреннее СОЕДИНЕНИЕ спрНоменклатура КАК спрНоменклатура ПО Продажи.Номенклатура = спрНоменклатура.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО Продажи.Контрагент = Контрагенты.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ СебестоимостьПродаж КАК СебестоимостьПродаж ПО Продажи.Регистратор = СебестоимостьПродаж.Регистратор И Продажи.Номенклатура = СебестоимостьПродаж.Номенклатура |
|||
26
zametatel
06.06.16
✎
17:10
|
(25) попробую такой вариант, спасибо. Но проблема еще в том, что мне нужны данные из Шаблона тоже выводить. Соответственно, привязывать их к номенклатуре продаж. Т.е. у меня отчет строится таким образом:
- Регион - ГруппаТоваров(спр.Шаблон) - Бренд - Товар |
|||
27
zametatel
06.06.16
✎
17:15
|
а все промежуточные подгруппы между элементом спрШаблон, соответствующим одному из верхних уровней групп Номенклатуры, и самим элементом Номенклатуры мне не нужны
|
|||
28
azernot
06.06.16
✎
17:16
|
(26) Я это понял, поэтому в (25) есть поле "Группа", которое как раз и получается из справочника "шаблоны".
|
|||
29
azernot
06.06.16
✎
17:17
|
(27) Расчёт на то, что в "шаблонах" не встречается ситуация, когда одна группа находится в другой. В этом случае, данные начнут задваиваться.
|
|||
30
zametatel
06.06.16
✎
17:20
|
(29) вроде нет. Сейчас буду пробовать
|
|||
31
zametatel
07.06.16
✎
09:18
|
(25) все получилось!! Спасибо!!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |