Запрос в динамическом списке обработки
Всем привет. такая ситуация- есть обработка "Регистрация изменений обмена данными". Когда встаешь на один из элементов метаданных выдается сообщение "Обнаружено дублирование ключевых значений в колонке "Ссылка.Объект"". Посмотрел запрос, который формируется в динамическом списке форму этой обработке, действительно есть одинаковые ссылки но с разными счетчиками сообщений. Вопрос: Что теперь с этим делать?
По теме из базы знаний
- Поиск в динамическом списке (по части строки): попытка оптимизации
- Полезности при работе с динамическими списками
- Полнотекстовый поиск в 1С. №1 Грабли в динамических списках
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Как передать Таблицу Значений в Динамический Список?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Ну так если не работает, то хоть какая она разштатная будет, все равно она на чем-то глючит. Значит нужно пробовать другие.
Нисколь не навязываю этот путь:) Но я бы так пошел. Хотя бы для того, чтобы убедиться, что есть работающие варианты, а не что-то на самом деле кривое в данных.
Нисколь не навязываю этот путь:) Но я бы так пошел. Хотя бы для того, чтобы убедиться, что есть работающие варианты, а не что-то на самом деле кривое в данных.
Тут ведь уже что-то другое. Не дубли.
Ну зарегана битая ссылка... Вроде ничего криминального не должно быть. Понятно, что она просто не выгрузится в обмене, т.к. выгружать нечего. Но ничего от этого поломаться не должно.
Ну зарегана битая ссылка... Вроде ничего криминального не должно быть. Понятно, что она просто не выгрузится в обмене, т.к. выгружать нечего. Но ничего от этого поломаться не должно.
нет, дело в ней,
Запрос ДО
поставил условие без NULL
Заработало. Как теперь эти ссылку удалить? И откуда они вообще берутся?
Запрос ДО
СписокСсылок.ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаИзменений.Ссылка КАК Ссылка,
| ТаблицаИзменений.НомерСообщения КАК НомерСообщения,
| ВЫБОР
| КОГДА ТаблицаИзменений.НомерСообщения ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НеВыгружалось,
|
| ОсновнаяТаблица.Ссылка КАК СсылкаОбъекта
|ИЗ
| " + ИмяТаблицы + " КАК ОсновнаяТаблица
|Правое СОЕДИНЕНИЕ
| " + ИмяТаблицы + ".Изменения КАК ТаблицаИзменений
|ПО
| ОсновнаяТаблица.Ссылка = ТаблицаИзменений.Ссылка
|ГДЕ
| ТаблицаИзменений.Узел = &ВыбранныйУзел
|";
Показатьпоставил условие без NULL
СписокСсылок.ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаИзменений.Ссылка КАК Ссылка,
| ТаблицаИзменений.НомерСообщения КАК НомерСообщения,
| ВЫБОР
| КОГДА ТаблицаИзменений.НомерСообщения ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НеВыгружалось,
|
| ОсновнаяТаблица.Ссылка КАК СсылкаОбъекта
|ИЗ
| " + ИмяТаблицы + " КАК ОсновнаяТаблица
|Правое СОЕДИНЕНИЕ
| " + ИмяТаблицы + ".Изменения КАК ТаблицаИзменений
|ПО
| ОсновнаяТаблица.Ссылка = ТаблицаИзменений.Ссылка
|ГДЕ
| ТаблицаИзменений.Узел = &ВыбранныйУзел И не ОсновнаяТаблица.Ссылка is null
|";
ПоказатьЗаработало. Как теперь эти ссылку удалить? И откуда они вообще берутся?
Был зареган в обмене какой-то элемент справочника. Потом его удалили. Но в таблице обмена запись с его ссылкой осталась.
Для удаления должна быть какая-то команда в форме. В моей, по-крайней мере, есть такое.Но опять же, ты эту битую ссылку скрыл запросом.
Для удаления должна быть какая-то команда в форме. В моей, по-крайней мере, есть такое.Но опять же, ты эту битую ссылку скрыл запросом.
Вижу у тебя подменю Отменить регистрацию. Вот ее использовать нужно.
Тут две непонятки.
У тебя битые сейчас не видны ведь? Для команды не будет данных, что удалять.
И, похоже, я ошибся. Точечно отменить регистрацию для битой ссылки нельзя, т.к. в этом случае нужно будет использовать метод ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, ЗначенияСписка.Значение), где вторым параметром нужно передать объект. А его уже нет. Поэтому для битых ссылок нужно зарегистрировать УдалениеОбъекта методом ПланыОбмена.ЗарегистрироватьИзменения(...). Это и логично. Получатели тоже должны знать, что какой-то объект удален. Но тоже странно. При авто-регистрации это должно было автоматически произойти. И скорее всего это и произошло.
Поэтому вернемся на момент чуть раньше. Ну видишь ты битые ссылки. И в чем криминал?
Тут две непонятки.
У тебя битые сейчас не видны ведь? Для команды не будет данных, что удалять.
И, похоже, я ошибся. Точечно отменить регистрацию для битой ссылки нельзя, т.к. в этом случае нужно будет использовать метод ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, ЗначенияСписка.Значение), где вторым параметром нужно передать объект. А его уже нет. Поэтому для битых ссылок нужно зарегистрировать УдалениеОбъекта методом ПланыОбмена.ЗарегистрироватьИзменения(...). Это и логично. Получатели тоже должны знать, что какой-то объект удален. Но тоже странно. При авто-регистрации это должно было автоматически произойти. И скорее всего это и произошло.
Поэтому вернемся на момент чуть раньше. Ну видишь ты битые ссылки. И в чем криминал?
При штатном запросе битые ссылки не видны. Список не выводится, выходит ошибка из сабжа. Увидел их только в консоле запросов и переделал запрос. Из-за них и возникает ошибка, потому чт значение Ссылкаобъект должно быть уникально а NULLов несколько
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот