|
Вопрос по механике работы динамического списка | ☑ | ||
---|---|---|---|---|
0
ssalikoff
31.12.20
✎
07:14
|
Имеется динамический список, в настройках которого указана основная таблица и вид ключа Авто.
Модифицирую запрос, делаю левое соединение к основной таблице. В присоединяемой таблице гарантированно содержатся уникальные значения для поля, по которому выполняется соединение, соответственно, не должно быть дублей и после соединения. И их действительно нет (вижу в консоли запросов). Однако, при открытии формы, содержащей динамический список, получаю сообщение «обнаружено дублирование ключевых значений в колонках Документ ...» Да, теоретически дубли возможны, но их точно нет в результате запроса. Случайно нашёл обходной путь: присоединяемую таблицу обернул во вложенный запрос, и уже вложенный запрос соединяю с основной таблицей. Теперь всё работает как надо. Вопрос: почему? Что за хрень? В обоих случаях запрос возвращает одно и то же, однако без обёртки во вложенный запрос форма с ДС не работает. Может ли кто-нибудь объяснить механизм работы ДС? |
|||
1
Cyberhawk
31.12.20
✎
09:15
|
"В обоих случаях запрос возвращает одно и то же" // Смотри фактический запрос через ТЖ
|
|||
2
TormozIT
гуру
31.12.20
✎
10:26
|
выполни на сервере в точке останова ирОбщий.ОтЛкс(ТаблицаФормыСДинамическимСписом) - получишь снимок реальной схемы и настройки компоновки. Потом на клиенте сможешь их открыть в консоли компоновки данных (ИР).
|
|||
3
vde69
31.12.20
✎
10:29
|
такая хрень точно будет если ключевые поля имеют составной тип
|
|||
4
ssalikoff
31.12.20
✎
10:43
|
(3) Да, ключевые поля действительно имеют составной тип.
А почему именно так будет? |
|||
5
ssalikoff
31.12.20
✎
11:34
|
(2) Скачал и установил ИР, в конце серверной процедуры ПриСозданииНаСервере «поймал» для отладки таблицу формы, открыл в консоли компоновки. В консоли всё выполняется, макет заполняется, всё как надо. Но на форме всё та же ошибка "обнаружено дублирование ключевых значений..." Как ещё можно использовать консоль компоновки для поиска причины поведения системы?
|
|||
6
Вафель
31.12.20
✎
13:24
|
но их точно нет в результате запроса - вот тут не правда
|
|||
7
Вафель
31.12.20
✎
13:24
|
может параметры не те устаналиваешь
|
|||
8
vde69
31.12.20
✎
13:29
|
(4) по тому, что любое условие по составному полю это дополнительный (которого ты не видишь) джойн к метаданным, и именно этот джойн после промежуточного выполнения дает дубли (еще до твоего основного джойна)
можно использовать явное приведение типов "выразить как", но это то же не хорошо. Учитывая особенности кусочного чтения из базы в динамических списках самый правильный вариант это одно основная таблици и к ней джойним вложенные... |
|||
9
acht
31.12.20
✎
13:30
|
(5) ПриСозданииНаСервере - это слишком рано, динамический список еще и не думал применять твои изыски. Сделай кнопку, наступи на ошибку и смотри по нажатию, что у тебя там есть.
|
|||
10
ssalikoff
31.12.20
✎
18:50
|
Спасибо всем откликнувшимся. Как это обычно бывает, косяк в моей невнимательности. Дело в том, что после использования конструктора запроса в настройке динамического списка, самопроизвольно меняется основная таблица. Я этого сразу не заметил, так что дело не в запросе вообще, а поведении конструктора запроса.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |