База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «пересечение ключей» в запросе 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 22 часа, 59 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
31 августа 2026 в 9:01 #38513
ВЫБРАТЬ
РеализацияТоваровУслуг.Ссылка КАК Документ,
РеализацияТоваровУслуг.Организация КАК Организация,
РеализацияТоваровУслугТовары.СуммаСНДС КАК СуммаПродажи,
РеализацияТоваровУслуг.Партнер КАК Клиент,
РеализацияТоваровУслуг.Подразделение КАК Подразделение,
РеализацияТоваровУслуг.Склад КАК Склад,
РеализацияТоваровУслуг.Соглашение КАК Соглашение,
РеализацияТоваровУслуг.Договор КАК Договор,
РеализацияТоваровУслуг.Менеджер КАК Менеджер,
0 КАК СуммаВозврата,
МЕСЯЦ(РеализацияТоваровУслуг.Дата) КАК Период,
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
РеализацияТоваровУслуг.Дата >= &НачалоПериода
И РеализацияТоваровУслуг.Дата <= &КонецПериода
И РеализацияТоваровУслуг.ПроведенОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ОтчетОРозничныхПродажах.Ссылка,
ОтчетОРозничныхПродажах.Организация,
ОтчетОРозничныхПродажахТовары.Сумма,
ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка),
ОтчетОРозничныхПродажах.Подразделение,
ОтчетОРозничныхПродажах.Склад,
ЗНАЧЕНИЕ(Справочник.СоглашенияСКлиентами.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка),
ОтчетОРозничныхПродажах.Ответственный,
0,
МЕСЯЦ(ОтчетОРозничныхПродажах.Дата),
ОтчетОРозничныхПродажахТовары.Номенклатура
ИЗ
Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
ПО ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажах.Ссылка
ГДЕ
ОтчетОРозничныхПродажах.Дата >= &НачалоПериода
И ОтчетОРозничныхПродажах.Дата <= &КонецПериода
И ОтчетОРозничныхПродажах.ПроведенОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВозвратТоваровОтКлиента.Ссылка,
ВозвратТоваровОтКлиента.Организация,
0,
ВозвратТоваровОтКлиента.Партнер,
ВозвратТоваровОтКлиента.Подразделение,
ВозвратТоваровОтКлиента.Склад,
ВозвратТоваровОтКлиента.Соглашение,
ВозвратТоваровОтКлиента.Договор,
ВозвратТоваровОтКлиента.Менеджер,
ВозвратТоваровОтКлиентаТовары.СуммаСНДС,
МЕСЯЦ(ВозвратТоваровОтКлиента.Дата),
ВозвратТоваровОтКлиентаТовары.Номенклатура
ИЗ
Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиентаТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтКлиента КАК ВозвратТоваровОтКлиента
ПО ВозвратТоваровОтКлиентаТовары.Ссылка = ВозвратТоваровОтКлиента.Ссылка
ГДЕ
ВозвратТоваровОтКлиента.Дата >= &НачалоПериода
И ВозвратТоваровОтКлиента.Дата <= &КонецПериода
И ВозвратТоваровОтКлиента.ПроведенОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ОтчетОРозничныхВозвратах.Ссылка,
ОтчетОРозничныхВозвратах.Организация,
0,
ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка),
ОтчетОРозничныхВозвратах.Подразделение,
ОтчетОРозничныхВозвратах.Склад,
ЗНАЧЕНИЕ(Справочник.СоглашенияСКлиентами.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка),
ОтчетОРозничныхВозвратах.Ответственный,
ОтчетОРозничныхВозвратахТовары.Сумма,
МЕСЯЦ(ОтчетОРозничныхВозвратах.Дата),
ОтчетОРозничныхВозвратахТовары.Номенклатура
ИЗ
Документ.ОтчетОРозничныхВозвратах.Товары КАК ОтчетОРозничныхВозвратахТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхВозвратах КАК ОтчетОРозничныхВозвратах
ПО ОтчетОРозничныхВозвратахТовары.Ссылка = ОтчетОРозничныхВозвратах.Ссылка
ГДЕ
ОтчетОРозничныхВозвратах.Дата >= &НачалоПериода
И ОтчетОРозничныхВозвратах.Дата <= &КонецПериода
И ОтчетОРозничныхВозвратах.Проведен -
31 августа 2026 в 9:01 #38514
В вашем запросе есть несколько потенциальных причин ошибки «пересечение ключей источника и приемника»:
1. В запросе используется объединение (ОБЪЕДИНИТЬ ВСЕ) нескольких выборок с одинаковыми именами колонок, в том числе колонок, которые могут быть ключевыми (например, Документ, Ссылка, Номенклатура и т.п.). Если в объединяемых выборках ключи не уникальны или пересекаются, то при дальнейшей агрегации или соединении может возникать ошибка.
2. В выборках из документов РеализацияТоваровУслуг, ОтчетОРозничныхПродажах, ВозвратТоваровОтКлиента, ОтчетОРозничныхВозвратах используются ссылки на документы и табличные части, при этом в разных выборках могут попадать одинаковые ссылки, что приводит к пересечению ключей.
3. В запросе отсутствует явное указание уникального ключа для итоговой выборки, что может приводить к конфликтам при использовании запроса в отчёте, особенно если потом вы делаете группировки или соединения по этим ключам.
—
Что делать:
— Добавьте в каждую выборку дополнительный признак источника данных, например, константу с уникальным значением, чтобы отличать записи из разных выборок. Например:
|ВЫБРАТЬ
| …,
| 1 КАК Источник
|ИЗ
| …
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| …,
| 2 КАК Источник
|ИЗ
| …
|И так далее.— Проверьте, что в каждой выборке ключевые поля (например, Документ, Номенклатура, Период) уникальны. Если нет, добавьте дополнительные поля для уникальности (например, НомерСтроки табличной части).
— Если в отчёте используется группировка, убедитесь, что группировка по ключам не приводит к конфликтам.
— Если запрос используется как источник данных для регистра накопления или другого объекта, проверьте, что структура ключей регистра не пересекается с ключами запроса.
— Для отладки можно выполнить каждую выборку отдельно, проверить уникальность ключей, а затем постепенно объединять.
—
Пример добавления признака источника:
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Документ,
| …,
| 1 КАК Источник
|ИЗ
| …
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| ОтчетОРозничныхПродажах.Ссылка,
| …,
| 2 КАК Источник
|ИЗ
| …
|…—
Если ошибка возникает при использовании этого запроса в отчёте, попробуйте также проверить настройки отчёта, особенно если используется компоновка данных — там могут быть ограничения по ключам.
—
Если нужно, могу помочь адаптировать запрос с учётом этих рекомендаций.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.