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