Имя: Пароль:
1C
1С v8
Добавление цен в справочник "Номенклатура"
0 reforket
 
29.05.17
17:25
Редактирую форму списка номенклатуры.
Добавил в динамический список "ТоварыНаСкладахОстатки", все работает как надо.
По аналогии добавляю "ЦеныНомеклатурыСрезПоследних" и при открытии справочника "Номенклатура" выпадает ошибка:
"Обнаружено дублирование ключевых значений в колонке ссылка".

Как правильно добавить цены в справочник "Номенклатура"?

Код:
ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Ссылка,
    СпрНоменклатура.Код КАК Код,
    СпрНоменклатура.Наименование КАК Наименование,
    СпрНоменклатура.Артикул КАК Артикул,
    СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
    СпрНоменклатура.Родитель,
    ВЫБОР
        КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
            ТОГДА 4 + ВЫБОР
                    КОГДА СпрНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                        ТОГДА 0
                    ИНАЧЕ 2
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА СпрНоменклатура.ПометкаУдаления
                    ТОГДА 1
                ИНАЧЕ 0
            КОНЕЦ + ВЫБОР
                КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                    ТОГДА 0
                ИНАЧЕ 2
            КОНЕЦ
    КОНЕЦ КАК ИндексКартинки,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остаток,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КОтгрузкеОстаток, 0) КАК Резерв,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) - ЕСТЬNULL(ТоварыНаСкладахОстатки.КОтгрузкеОстаток, 0) КАК Доступно,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка)
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ
    (СпрНоменклатура.Ссылка В
            (ВЫБРАТЬ
                Сегменты.Номенклатура
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Сегмент = &СегментНоменклатуры))}
1 программистище
 
29.05.17
17:30
обязательный выбор вида цены и валюты
2 aleks_default
 
29.05.17
17:31
У тебя в регистре цен есть еще измерения кроме номенклатуры, то есть срез последних по номенклатуре может вернуть несколько записей.
3 программистище
 
29.05.17
17:31
хотя извиняюсь только вид цены, скорее всего такое измерение
4 aleks_default
 
29.05.17
17:32
А при соединении с основной таблицей происходит дублирование ссылки что есть плохо для динамического списка.
5 reforket
 
29.05.17
17:41
Я не программист. Понимаю, что возникает ошибка. Но ваше описание этой ошибки не поможет мне её устранить...
Как можно обработать ошибку?
6 Ц_У
 
29.05.17
17:43
(5) Геодезист?
7 reforket
 
29.05.17
17:44
Да хоть геодезист, какое это имеет значение.
8 Ц_У
 
29.05.17
17:46
(7) тут - огромное
9 aleks_default
 
29.05.17
17:52
(7)Тогда слова "Измерение" и "СрезПоследних" вам ни о чем не говорят, что затрудняет наше дальнейшее общение.