Обнаружено дублирование ключевых значений в колонках ссылка #801120


#0 by skela1c
УТ 11.3 обработка "Подбор товаров в документ продажи" динамический список "список номенклатура" добавил реквизит "Организация". Теперь получается что у меня в динамическом списке есть две записи с одинаковым элементом номенклатуры. Есть ли варианты обойти эту ситуацию используя динамический список?
#1 by craxx
скорее всего просто запрос в соединении с другой таблицы выдал 2 записи с одинаковой ссылкой. так бывает
#2 by skela1c
так и есть
#3 by craxx
Запрос оттуда приведите сюда
#4 by SSSSS_AAAAA
Есть. Переписать запрос так, чтобы исключить дублирование.
#5 by skela1c
ВЫБОР КОГДА СправочникНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор) ТОГДА     ВЫБОР         КОГДА СправочникНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))             ТОГДА ИСТИНА         КОГДА СправочникНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор)) И ЕСТЬNULL(Ложь, ЛОЖЬ) И Не ЕСТЬNULL(Ложь, ЛОЖЬ)         КОГДА СправочникНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))             ТОГДА ИСТИНА         КОГДА СправочникНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор)) И ЕСТЬNULL(Ложь, ЛОЖЬ) И НЕ ЕСТЬNULL(Ложь, ЛОЖЬ)     КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес) И ЦеныНоменклатуры.Номенклатура.ВесИспользовать         И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЧислитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель,0) <> 0         ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель / (ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель) / (ЦеныНоменклатуры.Номенклатура.ВесЧислитель / ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель) КАК ЧИСЛО(20,10))     КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем) И ЦеныНоменклатуры.Номенклатура.ОбъемИспользовать         И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель,0) <> 0         ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель / (ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель) / (ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель / ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель) КАК ЧИСЛО(20,10))     КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь) И ЦеныНоменклатуры.Номенклатура.ПлощадьИспользовать         И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель,0) <> 0         ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель / (ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель) / (ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель) КАК ЧИСЛО(20,10))     КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина) И ЦеныНоменклатуры.Номенклатура.ДлинаИспользовать         И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Числитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЧислитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЗнаменатель,0) <> 0     КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес) И ЦеныНоменклатуры.Номенклатура.ВесИспользовать         И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЧислитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель,0) <> 0         ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель / (ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель) / (ЦеныНоменклатуры.Номенклатура.ВесЧислитель / ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель) КАК ЧИСЛО(20,10))     КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем) И ЦеныНоменклатуры.Номенклатура.ОбъемИспользовать         И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель,0) <> 0         ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель / (ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель) / (ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель / ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель) КАК ЧИСЛО(20,10))     КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь) И ЦеныНоменклатуры.Номенклатура.ПлощадьИспользовать         И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель,0) <> 0         ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель / (ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель) / (ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель) КАК ЧИСЛО(20,10))     КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина) И ЦеныНоменклатуры.Номенклатура.ДлинаИспользовать         И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Числитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЧислитель,0) <> 0 И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЗнаменатель,0) <> 0 ИЗ               ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(             ,     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(             ,     (1 В         (ВЫБРАТЬ ПЕРВЫЕ 1             1         ИЗ Фишка в том, что мне нужно видеть на какой организации находится номенклатура, то есть по-любому будет две записи
#6 by skela1c
как- то некрасиво получилось (
#7 by aleks_default
Ну ты красавчек! Не мог последнее предложение в поместить? Пришлось весь запрос просмотреть
#8 by aleks_default
Основную таблицу отключи
#9 by skela1c
спасибо, а почему программа перестала ругаться?
#10 by aleks_default
Потому что перестала отслеживать уникальность ссылки справочника, который был назначен основной таблицей. Но это еше не все сюрпризы.
#11 by aleks_default
Кстати я бы не стал пихать остатки в основной запрос. Лучше сделать на форме отдельную таблицу с остатками по выбранной позиции. Смотри как в типовых сделано.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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