Исходная ситуация. Открываю список заказов. Вижу ошибку. Либо сразу, либо после пролистывания списка.
Для решения, нам нужно:
- Понять, какой запрос выполняется, для вывода данных в динамический список.
- Найти поле, которое дублируется при выполнении запроса.
- Найти таблицу из за которой происходит дубль.
- Поправить данные.
Нужно запустить конфигурацию в режиме отладки. Далее необходимо найти форму, в которой возникает проблема.
Для этого можно использовать несколько способов.
Можно нажать правой кнопкой мыши на заголовок формы - нажать открыть в конфигураторе - сразу откроется необходимая форма (у вас может не быть такой кнопки).
Если её нет, можно открыть ссылку и посмотреть название объекта, с которым мы работаем и вручную найти его в конфигураторе, далее найти необходимую форму - можно по слову "список". Может быть несколько подходящих. В таком случае можно поставить точку останова на каждой.
Далее нужно поставить точку останова в конец процедуры "ПриСозданииНаСервере". Так как текст запроса в динамическом списке может меняться программно. Мы ожидаем, что в дальнейшем текст запроса не будет меняться.
Мы нашли текст запроса, который выполняется при заходе в динамический список.
Теперь нам нужно открыть этот запрос в консоли запросов, вставить туда запрос, повторить параметры, аналогично параметрам динамического списка. Оставляем только ключевые поля. Корректируем запрос так, чтобы получить для каждого набора ключевых полей их количество. Нам нужно найти неуникальное значение/значения. У меня получился вот такой запрос и результат к нему.
То есть дублируется заказ покупателя "Демо: Заказ покупателя 000000001 от 20.08.2009 16:01:15".
Теперь нужно понять проблему дублирования. Возможно это левое соединение с каким-нибудь регистром.
Для того, чтобы понять, какая таблица может являться проблемной, можно убирать левые соединения и выполнять запрос до тех пор, пока мы не увидим, что набор ключевых полей выводится в единственном экземпляре. Для удобства я сделаю условие на вывод только проблемного заказа.
Выяснилось, что при удалении соединения с регистром сведений "аи_СломатьДинамическийСписок" данные перестали дублироваться. Видимо дело в нем. Заходим в регистр, видим, что правда есть 2 записи по нашему заказу.
После удаления одной из записей - список заказов открывается.
Пример, который я показал, я создал на конфигурации "Демонстрационная конфигурация "Библиотека стандартных подсистем", редакция 3.1 (3.1.5.180)". На платформе "1С:Предприятие 8.3 (8.3.20.1674)".
OneDebugger - инструмент отладки кода в 1С:8.3
Консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке.