обнаружено дублирование ключевых значений в колонках: "Ссылка"

1. TariK 03.09.20 10:38 Сейчас в теме
Добрый день! База самописная. Появляется иногда ошибка "обнаружено дублирование ключевых значений в колонках: "Ссылка". Пользователь начинает вводить параметр дата, первые две цифры (день, до точки) и вываливается ошибка. Сами исправляют как сказали, крестик наживают, форму закрывают, иногда из 1С выходят и заходят. Ошибка возникает когда вздумается, может за два часа два раза, может день не проявляться. Помогите понять откуда проблема.

ВЫБРАТЬ
	Упаковка.НомерПачки КАК НомерПачки,
	Упаковка.ЗаказХвосты КАК ЗаказХвосты,
	Упаковка.СтрНомерЗаказа КАК НомерЗаказа,
	Упаковка.ТолщинаЛиста КАК ТолщинаЛиста,
	Упаковка.Размер1 КАК Размер1,
	Упаковка.Размер2 КАК Размер2,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ЛФПоверхность
		ИНАЧЕ Упаковка.ФСФПоверхность
	КОНЕЦ КАК Поверхность,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ЛФСорт
		ИНАЧЕ Упаковка.ФСФСорт
	КОНЕЦ КАК Сорт,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
		ИНАЧЕ ""
	КОНЕЦ КАК Пленка,
	Упаковка.Ссылка КАК Ссылка,
	Упаковка.FSC КАК FSC,
	Упаковка.ОбъемЛиста КАК ОбъемЛиста,
	Упаковка.КоличествоЛистов КАК КоличествоЛистов,
	Упаковка.ОбъемПачки КАК ОбъемПачки,
	СкладПачкиОстатки.Склад КАК Склад
ИЗ
	РегистрНакопления.СкладПачки.Остатки(
			&Период,
			ВЫБОР
				КОГДА &Склад = НЕОПРЕДЕЛЕНО
					ТОГДА ИСТИНА
				ИНАЧЕ Склад = &Склад
			КОНЕЦ) КАК СкладПачкиОстатки
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.Упаковка КАК Упаковка
		ПО СкладПачкиОстатки.Пачка = Упаковка.Ссылка
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 03.09.20 10:48 Сейчас в теме
(1) предлагаю попробовать переименовать поле
Упаковка.Ссылка КАК УпаковкаСсылка,
4. alex-l19041 8 03.09.20 10:50 Сейчас в теме
(1)
Пользователь начинает вводить параметр дата, первые две цифры (день, до точки) и вываливается ошибка
- так это каждый раз ? Или
Появляется иногда ...
?
5. TariK 03.09.20 10:55 Сейчас в теме
(4) иногда, не часто. Чаще всего такой ошибки нет. Я могу предположить, что параллельно создается документ "Упаковка" другим пользователем и пока он не проведет его, ошибка не уходит.
14. andy_zhav 197 03.09.20 12:05 Сейчас в теме
(1) Если я правильно понял задачу, которая здесь реализована - В динамическом списке документа добавлена колонка со складом, на котором есть остаток упаковки. Проблема в том, что если остаток упаковки есть более чем на одном складе - будет дублирование ключевой ссылки. Вариантов решения 2.

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

СГРУППИРОВАТЬ ПО
    Упаковка.НомерПачки,
    Упаковка.ЗаказХвосты,
    Упаковка.СтрНомерЗаказа,
    Упаковка.ТолщинаЛиста,
    Упаковка.Размер1,
    Упаковка.Размер2,
    Упаковка.Ссылка,
    Упаковка.FSC,
    Упаковка.ОбъемЛиста,
    Упаковка.КоличествоЛистов,
    Упаковка.ОбъемПачки,
    ВЫБОР
        КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
            ТОГДА Упаковка.ЛФПоверхность
        ИНАЧЕ Упаковка.ФСФПоверхность
    КОНЕЦ,
    ВЫБОР
        КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
            ТОГДА Упаковка.ЛФСорт
        ИНАЧЕ Упаковка.ФСФСорт
    КОНЕЦ,
    ВЫБОР
        КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
            ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
        ИНАЧЕ ""
    КОНЕЦ

УПОРЯДОЧИТЬ ПО
    Ссылка УБЫВ
Показать


2. Сделать составной ключ динамического списка, в котором будет присутствовать ссылка и склад
ipoloskov; +1 Ответить
15. TariK 04.09.20 13:55 Сейчас в теме
(14)
ВЫБРАТЬ
Упаковка.НомерПачки КАК НомерПачки,
Упаковка.ЗаказХвосты КАК ЗаказХвосты,
Упаковка.СтрНомерЗаказа КАК НомерЗаказа,
Упаковка.ТолщинаЛиста КАК ТолщинаЛиста,
Упаковка.Размер1 КАК Размер1,
Упаковка.Размер2 КАК Размер2,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ КАК Поверхность,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ КАК Сорт,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ КАК Пленка,
Упаковка.Ссылка КАК Ссылка,
Упаковка.FSC КАК FSC,
Упаковка.ОбъемЛиста КАК ОбъемЛиста,
Упаковка.КоличествоЛистов КАК КоличествоЛистов,
Упаковка.ОбъемПачки КАК ОбъемПачки,
МАКСИМУМ(СкладПачкиОстатки.Склад) КАК Склад
ИЗ
Документ.Упаковка КАК Упаковка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СкладПачки.Остатки(
&Период,
ВЫБОР
КОГДА &Склад = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ Склад = &Склад
КОНЕЦ) КАК СкладПачкиОстатки
ПО (Упаковка.Ссылка = СкладПачкиОстатки.Пачка)

СГРУППИРОВАТЬ ПО
Упаковка.НомерПачки,
Упаковка.ЗаказХвосты,
Упаковка.СтрНомерЗаказа,
Упаковка.ТолщинаЛиста,
Упаковка.Размер1,
Упаковка.Размер2,
Упаковка.Ссылка,
Упаковка.FSC,
Упаковка.ОбъемЛиста,
Упаковка.КоличествоЛистов,
Упаковка.ОбъемПачки,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФПоверхность
ИНАЧЕ Упаковка.ФСФПоверхность
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ЛФСорт
ИНАЧЕ Упаковка.ФСФСорт
КОНЕЦ,
ВЫБОР
КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
ИНАЧЕ ""
КОНЕЦ

УПОРЯДОЧИТЬ ПО
Ссылка УБЫВ
Показать
Прикрепленные файлы:
16. TariK 04.09.20 14:19 Сейчас в теме
(14) когда исправил ошибку в скрине, появилась новая
Ошибка при выполнении запроса.
по причине:
Поле не найдено "Склад.Наименование"
17. andy_zhav 197 04.09.20 14:50 Сейчас в теме
(16) Возьмите свой запрос из динамического списка рабочий, сделайте группировку по всем полям, которые у вас есть в запросе, кроме склада. Склад добавьте в агрегируемые поля (нижняя таблица) и выберите из списка функцию Максимум для склада. Я для примера брал ваш запрос с группировками и изменил в нем строку со складом
18. TariK 04.09.20 15:01 Сейчас в теме
(17) сделал как сказали, ошибка
Ошибка при выполнении запроса.
по причине:
Поле не найдено "Склад.Наименование"
19. TariK 04.09.20 15:02 Сейчас в теме
(17)
Прикрепленные файлы:
21. andy_zhav 197 04.09.20 17:13 Сейчас в теме
(19) После такой группировки не исчезла ошибка? в консоли запрос отрабатывает?
22. TariK 04.09.20 21:16 Сейчас в теме
(21) ошибка не исчезла. в Консоле запросов все отлично отрабатывает, дубли не на хожу(( Чудеса
24. andy_zhav 197 07.09.20 09:29 Сейчас в теме
(22) А проверьте, какой ключ стоит у вас в настройках динамического списка? точно там ссылка?
20. TariK 04.09.20 15:25 Сейчас в теме
(17) на форме подбора, нажал "Еще"-"Изменить форму" и убрал колонку склад, как временное решение ошибка ушла.
3. SlavaKron 03.09.20 10:49 Сейчас в теме
Покажите структуру РН, Пачка - единственное измерение? Если документ Упаковка - основная таблица ДС, то логичнее сделать левое соединение от Упаковок к Остаткам.
alex-l19041; +1 Ответить
6. TariK 03.09.20 10:57 Сейчас в теме
(3)
Прикрепленные файлы:
7. TariK 03.09.20 10:59 Сейчас в теме
(3)
Прикрепленные файлы:
9. TariK 03.09.20 11:08 Сейчас в теме
(3) так ?
ВЫБРАТЬ
	Упаковка.НомерПачки КАК НомерПачки,
	Упаковка.ЗаказХвосты КАК ЗаказХвосты,
	Упаковка.СтрНомерЗаказа КАК НомерЗаказа,
	Упаковка.ТолщинаЛиста КАК ТолщинаЛиста,
	Упаковка.Размер1 КАК Размер1,
	Упаковка.Размер2 КАК Размер2,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ЛФПоверхность
		ИНАЧЕ Упаковка.ФСФПоверхность
	КОНЕЦ КАК Поверхность,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ЛФСорт
		ИНАЧЕ Упаковка.ФСФСорт
	КОНЕЦ КАК Сорт,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
		ИНАЧЕ ""
	КОНЕЦ КАК Пленка,
	Упаковка.Ссылка КАК Ссылка,
	Упаковка.FSC КАК FSC,
	Упаковка.ОбъемЛиста КАК ОбъемЛиста,
	Упаковка.КоличествоЛистов КАК КоличествоЛистов,
	Упаковка.ОбъемПачки КАК ОбъемПачки,
	СкладПачкиОстатки.Склад КАК Склад
ИЗ
	Документ.Упаковка КАК Упаковка
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СкладПачки.Остатки(
				&Период,
				ВЫБОР
					КОГДА &Склад = НЕОПРЕДЕЛЕНО
						ТОГДА ИСТИНА
					ИНАЧЕ Склад = &Склад
				КОНЕЦ) КАК СкладПачкиОстатки
		ПО (Упаковка.Ссылка = СкладПачкиОстатки.Пачка)

СГРУППИРОВАТЬ ПО
	Упаковка.НомерПачки,
	Упаковка.ЗаказХвосты,
	Упаковка.СтрНомерЗаказа,
	Упаковка.ТолщинаЛиста,
	Упаковка.Размер1,
	Упаковка.Размер2,
	Упаковка.Ссылка,
	Упаковка.FSC,
	Упаковка.ОбъемЛиста,
	Упаковка.КоличествоЛистов,
	Упаковка.ОбъемПачки,
	СкладПачкиОстатки.Склад,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ЛФПоверхность
		ИНАЧЕ Упаковка.ФСФПоверхность
	КОНЕЦ,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ЛФСорт
		ИНАЧЕ Упаковка.ФСФСорт
	КОНЕЦ,
	ВЫБОР
		КОГДА Упаковка.ВидФанеры = ЗНАЧЕНИЕ(Перечисление.ВидФанеры.ЛФ)
			ТОГДА Упаковка.ПленкаЛицо.Наименование + "/" + Упаковка.ПленкаЗад.Наименование
		ИНАЧЕ ""
	КОНЕЦ

УПОРЯДОЧИТЬ ПО
	Ссылка УБЫВ
Показать
10. SlavaKron 03.09.20 11:10 Сейчас в теме
(9) Проблему это не решит. Дубли останутся. Либо отказаться от колонки склад, либо делать ДС без основной таблицы.
11. TariK 03.09.20 11:14 Сейчас в теме
(10) проще от колонки Склад отказаться
8. SlavaKron 03.09.20 11:06 Сейчас в теме
Ошибка будет возникать, если не выбран параметр Склад, а также имеются остатки по разным складам в рамках одной пачки (Упаковки).
alex-l19041; +1 Ответить
12. TariK 03.09.20 11:46 Сейчас в теме
(8) самое интересное ща увидел, что под одним пользователем всегда эта ошибка возникает, под другим не появляется. Делаю одни и те же действия
13. TariK 03.09.20 12:00 Сейчас в теме
Чистка кэша не помогла
23. comptr 31 06.09.20 00:52 Сейчас в теме
Если очень нужны остатки по складам, лучше сделать так:
Во время события ПриАктивизацииСтроки ДС вызывать "ПодключитьОбработчикСобытия("ПоказатьОстатки", 0.2, Истина), а внутри ПоказатьОстатки брать текущую строку ДС и выводить остатки в отдельную таблицу, которую можно показывать по галочке на форме, заодно и получение остатков вызывать только если эта галочка установлена.
При открытии/закрытии формы состояние галочки сохранять в хранилище настроек.
25. slasher777 29.09.20 20:25 Сейчас в теме
В организации изначально не были правильно заполнены подразделения.
Создали всего три "проходных": Администрация, Бухгалтерия, Производство.
Должности тоже создавали через пень-колоду. Все наименования вида "Специалист /Администрация/", "Бухгалтер /Бухгалтерия/"
Сейчас принято решение привести структуру и должности в порядок. Можно ли это сделать без последствий создав правильные Подразделения, привязав к ним сотрудников и изменив наименования должностей на правильные?
Не повлечет ли это какие-либо последствия в формах строгой отчетности? Например в записях о приеме на работу, которые направлены в ПФР по 1С-Отчетности?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот