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