обнаружено дублирование ключевых значений в колонках: "Ссылка"
Добрый день! База самописная. Появляется иногда ошибка "обнаружено дублирование ключевых значений в колонках: "Ссылка". Пользователь начинает вводить параметр дата, первые две цифры (день, до точки) и вываливается ошибка. Сами исправляют как сказали, крестик наживают, форму закрывают, иногда из 1С выходят и заходят. Ошибка возникает когда вздумается, может за два часа два раза, может день не проявляться. Помогите понять откуда проблема.
ВЫБРАТЬ
Упаковка.НомерПачки КАК НомерПачки,
Упаковка.ЗаказХвосты КАК ЗаказХвосты,
Упаковка.СтрНомерЗаказа КАК НомерЗаказа,
Упаковка.ТолщинаЛиста КАК ТолщинаЛиста,
Упаковка.Размер1 КАК Размер1,
Упаковка.Размер2 КАК Размер2,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ КАК Поверхность,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ КАК Сорт,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ КАК Пленка,
Упаковка.Ссылка КАК Ссылка,
Упаковка.FSC КАК FSC,
Упаковка.ОбъемЛиста КАК ОбъемЛиста,
Упаковка.КоличествоЛистов КАК КоличествоЛистов,
Упаковка.ОбъемПачки КАК ОбъемПачки,
СкладПачкиОстатки.Склад КАК Склад
ИЗ
РегистрНакопления.СкладПачки.Остатки(
&Период,
ВЫБОР
КОГДА &Склад = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ Склад = &Склад
КОНЕЦ) КАК СкладПачкиОстатки
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Упаковка КАК Упаковка
ПО СкладПачкиОстатки.Пачка = Упаковка.Ссылка
ПоказатьПо теме из базы знаний
- Неполадки в работе функционала конфигурации "Бухгалтерия предприятия 3.0" после переноса данных из одной конфигурации в другую через XML
- Исправление ошибки "Обнаружено дублирование ключевых значений в колонках "Ссылка" в журнале Чеков ККМ. УТ 11
- Ошибка "Обнаружено дублирование ключевых значений в колонках "Ссылка".Отображение данных в списке невозможно"
- Устранение ошибки при реализации товаров, при попытке выбора "Номер ГТД": "Обнаружено дублирование ключевых значений"
- Алгоритм нахождения причины ошибки "Обнаружено дублирование ключевых значений в колонках:..." в динамическом списке
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Если я правильно понял задачу, которая здесь реализована - В динамическом списке документа добавлена колонка со складом, на котором есть остаток упаковки. Проблема в том, что если остаток упаковки есть более чем на одном складе - будет дублирование ключевой ссылки. Вариантов решения 2.
1. исключить возможное дублирование можно, если в запросе добавить группировку по всем полям документа, а по полю склад сделать агрегатную функцию Максимум или минимум. В этом случае дублирования не будет, но в случае когда остаток есть более чем на одном складе - будет показываться первый попавшийся.
2. Сделать составной ключ динамического списка, в котором будет присутствовать ссылка и склад
1. исключить возможное дублирование можно, если в запросе добавить группировку по всем полям документа, а по полю склад сделать агрегатную функцию Максимум или минимум. В этом случае дублирования не будет, но в случае когда остаток есть более чем на одном складе - будет показываться первый попавшийся.
ВЫБРАТЬ
Упаковка.НомерПачки КАК НомерПачки,
Упаковка.ЗаказХвосты КАК ЗаказХвосты,
Упаковка.СтрНомерЗаказа КАК НомерЗаказа,
Упаковка.ТолщинаЛиста КАК ТолщинаЛиста,
Упаковка.Размер1 КАК Размер1,
Упаковка.Размер2 КАК Размер2,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ КАК Поверхность,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ КАК Сорт,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ КАК Пленка,
Упаковка.Ссылка КАК Ссылка,
Упаковка.FSC КАК FSC,
Упаковка.ОбъемЛиста КАК ОбъемЛиста,
Упаковка.КоличествоЛистов КАК КоличествоЛистов,
Упаковка.ОбъемПачки КАК ОбъемПачки,
МАКСИМУМ(СкладПачкиОстатки.Склад) КАК Склад
ИЗ
Документ.Упаковка КАК Упаковка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СкладПачки.Остатки(
&Период,
ВЫБОР
КОГДА &Склад = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ Склад = &Склад
КОНЕЦ) КАК СкладПачкиОстатки
ПО (Упаковка.Ссылка = СкладПачкиОстатки.Пачка)
СГРУППИРОВАТЬ ПО
Упаковка.НомерПачки,
Упаковка.ЗаказХвосты,
Упаковка.СтрНомерЗаказа,
Упаковка.ТолщинаЛиста,
Упаковка.Размер1,
Упаковка.Размер2,
Упаковка.Ссылка,
Упаковка.FSC,
Упаковка.ОбъемЛиста,
Упаковка.КоличествоЛистов,
Упаковка.ОбъемПачки,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ
УПОРЯДОЧИТЬ ПО
Ссылка УБЫВ
Показать2. Сделать составной ключ динамического списка, в котором будет присутствовать ссылка и склад
(14)
ВЫБРАТЬ
Упаковка.НомерПачки КАК НомерПачки,
Упаковка.ЗаказХвосты КАК ЗаказХвосты,
Упаковка.СтрНомерЗаказа КАК НомерЗаказа,
Упаковка.ТолщинаЛиста КАК ТолщинаЛиста,
Упаковка.Размер1 КАК Размер1,
Упаковка.Размер2 КАК Размер2,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ КАК Поверхность,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ КАК Сорт,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ КАК Пленка,
Упаковка.Ссылка КАК Ссылка,
Упаковка.FSC КАК FSC,
Упаковка.ОбъемЛиста КАК ОбъемЛиста,
Упаковка.КоличествоЛистов КАК КоличествоЛистов,
Упаковка.ОбъемПачки КАК ОбъемПачки,
МАКСИМУМ(СкладПачкиОстатки.Склад) КАК Склад
ИЗ
Документ.Упаковка КАК Упаковка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СкладПачки.Остатки(
&Период,
ВЫБОР
КОГДА &Склад = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ Склад = &Склад
КОНЕЦ) КАК СкладПачкиОстатки
ПО (Упаковка.Ссылка = СкладПачкиОстатки.Пачка)
СГРУППИРОВАТЬ ПО
Упаковка.НомерПачки,
Упаковка.ЗаказХвосты,
Упаковка.СтрНомерЗаказа,
Упаковка.ТолщинаЛиста,
Упаковка.Размер1,
Упаковка.Размер2,
Упаковка.Ссылка,
Упаковка.FSC,
Упаковка.ОбъемЛиста,
Упаковка.КоличествоЛистов,
Упаковка.ОбъемПачки,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ
УПОРЯДОЧИТЬ ПО
Ссылка УБЫВ
ПоказатьУпаковка.НомерПачки КАК НомерПачки,
Упаковка.ЗаказХвосты КАК ЗаказХвосты,
Упаковка.СтрНомерЗаказа КАК НомерЗаказа,
Упаковка.ТолщинаЛиста КАК ТолщинаЛиста,
Упаковка.Размер1 КАК Размер1,
Упаковка.Размер2 КАК Размер2,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ КАК Поверхность,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ КАК Сорт,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ КАК Пленка,
Упаковка.Ссылка КАК Ссылка,
Упаковка.FSC КАК FSC,
Упаковка.ОбъемЛиста КАК ОбъемЛиста,
Упаковка.КоличествоЛистов КАК КоличествоЛистов,
Упаковка.ОбъемПачки КАК ОбъемПачки,
МАКСИМУМ(СкладПачкиОстатки.Склад) КАК Склад
ИЗ
Документ.Упаковка КАК Упаковка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СкладПачки.Остатки(
&Период,
ВЫБОР
КОГДА &Склад = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ Склад = &Склад
КОНЕЦ) КАК СкладПачкиОстатки
ПО (Упаковка.Ссылка = СкладПачкиОстатки.Пачка)
СГРУППИРОВАТЬ ПО
Упаковка.НомерПачки,
Упаковка.ЗаказХвосты,
Упаковка.СтрНомерЗаказа,
Упаковка.ТолщинаЛиста,
Упаковка.Размер1,
Упаковка.Размер2,
Упаковка.Ссылка,
Упаковка.FSC,
Упаковка.ОбъемЛиста,
Упаковка.КоличествоЛистов,
Упаковка.ОбъемПачки,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ
УПОРЯДОЧИТЬ ПО
Ссылка УБЫВ
Прикрепленные файлы:
(16) Возьмите свой запрос из динамического списка рабочий, сделайте группировку по всем полям, которые у вас есть в запросе, кроме склада. Склад добавьте в агрегируемые поля (нижняя таблица) и выберите из списка функцию Максимум для склада. Я для примера брал ваш запрос с группировками и изменил в нем строку со складом
(3) так ?
ВЫБРАТЬ
Упаковка.НомерПачки КАК НомерПачки,
Упаковка.ЗаказХвосты КАК ЗаказХвосты,
Упаковка.СтрНомерЗаказа КАК НомерЗаказа,
Упаковка.ТолщинаЛиста КАК ТолщинаЛиста,
Упаковка.Размер1 КАК Размер1,
Упаковка.Размер2 КАК Размер2,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ КАК Поверхность,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ КАК Сорт,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ КАК Пленка,
Упаковка.Ссылка КАК Ссылка,
Упаковка.FSC КАК FSC,
Упаковка.ОбъемЛиста КАК ОбъемЛиста,
Упаковка.КоличествоЛистов КАК КоличествоЛистов,
Упаковка.ОбъемПачки КАК ОбъемПачки,
СкладПачкиОстатки.Склад КАК Склад
ИЗ
Документ.Упаковка КАК Упаковка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СкладПачки.Остатки(
&Период,
ВЫБОР
КОГДА &Склад = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ Склад = &Склад
КОНЕЦ) КАК СкладПачкиОстатки
ПО (Упаковка.Ссылка = СкладПачкиОстатки.Пачка)
СГРУППИРОВАТЬ ПО
Упаковка.НомерПачки,
Упаковка.ЗаказХвосты,
Упаковка.СтрНомерЗаказа,
Упаковка.ТолщинаЛиста,
Упаковка.Размер1,
Упаковка.Размер2,
Упаковка.Ссылка,
Упаковка.FSC,
Упаковка.ОбъемЛиста,
Упаковка.КоличествоЛистов,
Упаковка.ОбъемПачки,
СкладПачкиОстатки.Склад,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ
УПОРЯДОЧИТЬ ПО
Ссылка УБЫВ
Показать
Если очень нужны остатки по складам, лучше сделать так:
Во время события ПриАктивизацииСтроки ДС вызывать "ПодключитьОбработчикСобытия("ПоказатьОстатки", 0.2, Истина), а внутри ПоказатьОстатки брать текущую строку ДС и выводить остатки в отдельную таблицу, которую можно показывать по галочке на форме, заодно и получение остатков вызывать только если эта галочка установлена.
При открытии/закрытии формы состояние галочки сохранять в хранилище настроек.
Во время события ПриАктивизацииСтроки ДС вызывать "ПодключитьОбработчикСобытия("ПоказатьОстатки", 0.2, Истина), а внутри ПоказатьОстатки брать текущую строку ДС и выводить остатки в отдельную таблицу, которую можно показывать по галочке на форме, заодно и получение остатков вызывать только если эта галочка установлена.
При открытии/закрытии формы состояние галочки сохранять в хранилище настроек.
В организации изначально не были правильно заполнены подразделения.
Создали всего три "проходных": Администрация, Бухгалтерия, Производство.
Должности тоже создавали через пень-колоду. Все наименования вида "Специалист /Администрация/", "Бухгалтер /Бухгалтерия/"
Сейчас принято решение привести структуру и должности в порядок. Можно ли это сделать без последствий создав правильные Подразделения, привязав к ним сотрудников и изменив наименования должностей на правильные?
Не повлечет ли это какие-либо последствия в формах строгой отчетности? Например в записях о приеме на работу, которые направлены в ПФР по 1С-Отчетности?
Создали всего три "проходных": Администрация, Бухгалтерия, Производство.
Должности тоже создавали через пень-колоду. Все наименования вида "Специалист /Администрация/", "Бухгалтер /Бухгалтерия/"
Сейчас принято решение привести структуру и должности в порядок. Можно ли это сделать без последствий создав правильные Подразделения, привязав к ним сотрудников и изменив наименования должностей на правильные?
Не повлечет ли это какие-либо последствия в формах строгой отчетности? Например в записях о приеме на работу, которые направлены в ПФР по 1С-Отчетности?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот