А как можно реализовать отображение характеристик номенклатуры в списке?
У каждой номенклатуры может быть несколько характеристик.. Вот думаю, что нужно отображать в списке каждую характеристику одного и того-же товара новой строкой... Как быть?
Хочу так:
Помогите пожалуйста дополнить мой код:
ВЫБРАТЬ РАЗЛИЧНЫЕ
СпрНоменклатура.Ссылка КАК Ссылка,
СпрНоменклатура.Код КАК Код,
СпрНоменклатура.Наименование КАК Наименование,
СпрНоменклатура.Артикул КАК Артикул,
СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
СпрНоменклатура.Родитель,
ВЫБОР
КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
КОНЕЦ КАК ИндексКартинки,
ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остаток,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних_Розн.Цена, 0) КАК ЦенаРозн,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних_Закуп.Цена, 0) КАК ЦенаЗакуп
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ЦенаЗакупочная) КАК ЦеныНоменклатурыСрезПоследних_Закуп
ПО (ЦеныНоменклатурыСрезПоследних_Закуп.Номенклатура = СпрНоменклатура.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ЦенаРозничная) КАК ЦеныНоменклатурыСрезПоследних_Розн
ПО (ЦеныНоменклатурыСрезПоследних_Розн.Номенклатура = СпрНоменклатура.Ссылка)
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ
(СпрНоменклатура.Ссылка В
(ВЫБРАТЬ
Сегменты.Номенклатура
ИЗ
РегистрСведений.НоменклатураСегмента КАК Сегменты
ГДЕ
Сегменты.Сегмент = &СегментНоменклатуры))}
И попутный вопрос, код вроде верный, но почему пишет ошибку - "Обнаружено дублирование ключевых значений в колонке ссылка"?? в "Дополнительно" - "Выборка записей" стоит галка "Без повторяющихся"...
Bulzavr @ Вчера, 20:36 необходимо зарегистрироваться для просмотра ссылки
,
"Без повторяющихся" означает отсутствие записей с одинаковыми значениями по всем полям. Вам же надо обеспечить уникальность записей по полю "ссылка".
А как это сделать? Что в коде не так?
Bulzavr @ Сегодня, 10:04 необходимо зарегистрироваться для просмотра ссылки
,
Не так то что , данный запрос может вам задвоить строки и у вас одинаковая ссылка может встречаться в двух строках - пример: один и тот же товар есть на разных складах - вот вам и две строки, соответственно "дублирование ключевого значения".
Такое сообщение возникает когда в динамическом списке установлена основная таблица - если её убрать то сообщения не будет, но тогда вам ручками надо будет реализовать все стандартные кнопки командной панели: Создать, Изменить, Копировать и т.д.
Что-то какая-то грусть прям.. Больше нет вариантов? И насколько это сообразно?
Bulzavr @ Сегодня, 11:23 необходимо зарегистрироваться для просмотра ссылки
,
Насколько знаю нет, может кто-то что-то предложит другое. Я когда-то писал свои обработчики в такой ситуации, не то чтобы аж очень много кода и что-то сложное, но жаба душит учитывая то, что знаешь что кнопки стандартные и могли бы без этого обойтись
Цитата(Bernet @ 06.09.17, 10:06) необходимо зарегистрироваться для просмотра ссылки
данный запрос может вам задвоить строки и у вас одинаковая ссылка может встречаться в двух строках - пример: один и тот же товар есть на разных складах - вот вам и две строки, соответственно "дублирование ключевого значения".
Это откуда такой вывод - ?
sava1 @ Сегодня, 11:48 необходимо зарегистрироваться для просмотра ссылки
,
Вывод оттуда, что у человека в запросе левым соединением к справочнику Номенклатура подсоединяются остатки, связь только по номенклатуре, соответственно если есть товар на нескольких складах - столько строк и получим.
То что выдаст такое сообщение - проверено на практике, если эта динамический список откуда потом мы хотим открывать/создавать/копировать элементы основной таблицы, то ключевое поле должно быть без дубля. Т.е. если в списке будет две строки он матюкнется что есть две строки и нифига в динамический список не выведет. В виду этого, я убирал основную таблицу и реализовывал Создание/Изменение/Копирование нужных мне элементов
Цитата(Bernet @ 06.09.17, 11:54) необходимо зарегистрироваться для просмотра ссылки
столько строк и получим.
Компоновщик хрен Вам отдаст кроме номенклатуры и остатка
sava1 @ Сегодня, 11:57 необходимо зарегистрироваться для просмотра ссылки
,
Пардон, не увидел что Склад в выборку не попадает.
Но сути не меняет: раз выдает такое сообщение значит есть две строки с одинаковой ссылкой, а в таком случае либо делать так чтобы эта ссылка была одна, либо так как писал я - реализовывать командную панель самостоятельно
Так как решить-то? Чесслово не понимаю, почему сделали так, как есть изначально.. Ведь неудобно же!
У меня например есть на складе 10 карандашей. 5 синих и 5 красных. Как в списке номенклатуры смотреть остаток, если отображаетс "карандаш: 10шт"? Прайс смотреть не вариант каждый раз. Нужно видеть оставшиеся цвета в списке номенклатуры..
Как вообще люди живут с этим?
Цитата(Bulzavr @ 06.09.17, 18:03) необходимо зарегистрироваться для просмотра ссылки
Как вообще люди живут с этим?
Используют характеристики. Как правило в типовых торговых конфигурациях есть функционал который позволяет видеть остатки по характеристикам, в подборе, или отдельном поле, при нажатии на номенклатуру.
Я использую характеристики и у меня голая типовая УТ11, в которой не видно характеристик в списке номенклатуры ни в каких окнах. Чтобы посмотреть остаток по характеристикам, приходится формировать прайс-лист! Или я чурка?
Я понимаю, что один и тот же товар с разными характеристиками будет давать одинаковые ссылки. Но ведь должен же быть способ решения этой проблемы? Может не динамический список, а статичный сделать?
Сделал динамический список справочника характеристик. Почти получилось.. Стал отображать и характеристики и владельца. Помогите вот с чем:
1. Отображается далеко не вся номенклатура. Только часть. Если лазить по иерархии, то натыкаюсь на ошибку:
{ОбщийМодуль.ОбщегоНазначения.Модуль(94)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(3, 2)}: Поле не найдено "Родитель"
<<?>>Родитель КАК Родитель
2. Как сгруппировать таким образом, чтобы Наименование характеристики было вложено во владельца одной строкой?
ВЫБРАТЬ
СправочникХарактеристикиНоменклатуры.Ссылка,
СправочникХарактеристикиНоменклатуры.ПометкаУдаления,
СправочникХарактеристикиНоменклатуры.Владелец КАК Родитель,
СправочникХарактеристикиНоменклатуры.Наименование КАК НаименованиеХарактеристики,
СправочникХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ДопРеквизитыХарактеристики,
СправочникХарактеристикиНоменклатуры.Предопределенный,
СправочникХарактеристикиНоменклатуры.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанныхХарактеристики,
ВариантыКомплектацииНоменклатуры.Ссылка КАК СоставНабора,
ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остаток,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних_Розн.Цена, 0) КАК ЦенаРозн,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних_Закуп.Цена, 0) КАК ЦенаЗакуп
ИЗ
Справочник.ХарактеристикиНоменклатуры КАК СправочникХарактеристикиНоменклатуры
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
ПО (ВариантыКомплектацииНоменклатуры.Владелец = &Владелец)
И (ВариантыКомплектацииНоменклатуры.Владелец.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор))
И (ВариантыКомплектацииНоменклатуры.Характеристика = СправочникХарактеристикиНоменклатуры.Ссылка)}
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
ПО (ТоварыНаСкладахОстатки.Номенклатура = СправочникХарактеристикиНоменклатуры.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ЦенаРозничная) КАК ЦеныНоменклатурыСрезПоследних_Розн
ПО (ЦеныНоменклатурыСрезПоследних_Розн.Номенклатура = СправочникХарактеристикиНоменклатуры.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ЦенаЗакупочная) КАК ЦеныНоменклатурыСрезПоследних_Закуп
ПО (ЦеныНоменклатурыСрезПоследних_Закуп.Номенклатура = СправочникХарактеристикиНоменклатуры.Ссылка)
Может это как раз из-за отсутствия характеристик у некоторой номенклатуры?
Цитата(Bulzavr @ 07.09.17, 14:17) необходимо зарегистрироваться для просмотра ссылки
2. Как сгруппировать таким образом, чтобы Наименование характеристики было вложено во владельца одной строкой?
Никак, в запросе этого сделать нельзя
А как же тогда сделать, как на изображении в первом посте?
В динамическом списке никак.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.