Запрос в динамическом списке обработки

1. Тильчик 16.12.16 08:00 Сейчас в теме
Всем привет. такая ситуация- есть обработка "Регистрация изменений обмена данными". Когда встаешь на один из элементов метаданных выдается сообщение "Обнаружено дублирование ключевых значений в колонке "Ссылка.Объект"". Посмотрел запрос, который формируется в динамическом списке форму этой обработке, действительно есть одинаковые ссылки но с разными счетчиками сообщений. Вопрос: Что теперь с этим делать?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ImHunter 315 16.12.16 09:14 Сейчас в теме
Поискать другую обработку регистрации.
Или как-то дописать текущую. Как - не могу сказать. Свежие версии не смотрел, пользуюсь древней.
+
3. Тильчик 20.12.16 10:27 Сейчас в теме
так эта обработка штатная, и обновляется вместе с конфигурацией.
+
4. ImHunter 315 20.12.16 11:04 Сейчас в теме
(3) Ну так если не работает, то хоть какая она разштатная будет, все равно она на чем-то глючит. Значит нужно пробовать другие.
Нисколь не навязываю этот путь:) Но я бы так пошел. Хотя бы для того, чтобы убедиться, что есть работающие варианты, а не что-то на самом деле кривое в данных.
+
5. Тильчик 20.12.16 12:32 Сейчас в теме
может косяк какой в данных - сделал ее внешней обработкой, изменил условие - получилось вот такое : см.скрин
Прикрепленные файлы:
+
6. ImHunter 315 20.12.16 12:42 Сейчас в теме
Тут ведь уже что-то другое. Не дубли.
Ну зарегана битая ссылка... Вроде ничего криминального не должно быть. Понятно, что она просто не выгрузится в обмене, т.к. выгружать нечего. Но ничего от этого поломаться не должно.
+
7. Тильчик 20.12.16 12:51 Сейчас в теме
нет, дело в ней,
Запрос ДО
	СписокСсылок.ТекстЗапроса = "
		|ВЫБРАТЬ
		|	ТаблицаИзменений.Ссылка         КАК Ссылка,
		|	ТаблицаИзменений.НомерСообщения КАК НомерСообщения,
		|	ВЫБОР 
		|		КОГДА ТаблицаИзменений.НомерСообщения ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ
		|	КОНЕЦ КАК НеВыгружалось,
		|
		|	ОсновнаяТаблица.Ссылка КАК СсылкаОбъекта
		|ИЗ
		|	" + ИмяТаблицы + " КАК ОсновнаяТаблица
		|Правое СОЕДИНЕНИЕ
		|	" + ИмяТаблицы + ".Изменения КАК ТаблицаИзменений
		|ПО
		|	ОсновнаяТаблица.Ссылка = ТаблицаИзменений.Ссылка
		|ГДЕ
		|	ТаблицаИзменений.Узел = &ВыбранныйУзел
		|";
Показать

поставил условие без NULL
	СписокСсылок.ТекстЗапроса = "
		|ВЫБРАТЬ
		|	ТаблицаИзменений.Ссылка         КАК Ссылка,
		|	ТаблицаИзменений.НомерСообщения КАК НомерСообщения,
		|	ВЫБОР 
		|		КОГДА ТаблицаИзменений.НомерСообщения ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ
		|	КОНЕЦ КАК НеВыгружалось,
		|
		|	ОсновнаяТаблица.Ссылка КАК СсылкаОбъекта
		|ИЗ
		|	" + ИмяТаблицы + " КАК ОсновнаяТаблица
		|Правое СОЕДИНЕНИЕ
		|	" + ИмяТаблицы + ".Изменения КАК ТаблицаИзменений
		|ПО
		|	ОсновнаяТаблица.Ссылка = ТаблицаИзменений.Ссылка
		|ГДЕ
		|	ТаблицаИзменений.Узел = &ВыбранныйУзел И не ОсновнаяТаблица.Ссылка  is null
		|";
Показать


Заработало. Как теперь эти ссылку удалить? И откуда они вообще берутся?
+
8. ImHunter 315 20.12.16 13:29 Сейчас в теме
Был зареган в обмене какой-то элемент справочника. Потом его удалили. Но в таблице обмена запись с его ссылкой осталась.
Для удаления должна быть какая-то команда в форме. В моей, по-крайней мере, есть такое.Но опять же, ты эту битую ссылку скрыл запросом.
+
9. Тильчик 20.12.16 14:18 Сейчас в теме
вот какая команда? я бы ее вызывал и удалял битые ссылки перед формированием запроса. Как удалить битую ссылку из узла?
+
10. ImHunter 315 20.12.16 14:56 Сейчас в теме
Вижу у тебя подменю Отменить регистрацию. Вот ее использовать нужно.
Тут две непонятки.
У тебя битые сейчас не видны ведь? Для команды не будет данных, что удалять.
И, похоже, я ошибся. Точечно отменить регистрацию для битой ссылки нельзя, т.к. в этом случае нужно будет использовать метод ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, ЗначенияСписка.Значение), где вторым параметром нужно передать объект. А его уже нет. Поэтому для битых ссылок нужно зарегистрировать УдалениеОбъекта методом ПланыОбмена.ЗарегистрироватьИзменения(...). Это и логично. Получатели тоже должны знать, что какой-то объект удален. Но тоже странно. При авто-регистрации это должно было автоматически произойти. И скорее всего это и произошло.

Поэтому вернемся на момент чуть раньше. Ну видишь ты битые ссылки. И в чем криминал?
+
11. Тильчик 20.12.16 15:27 Сейчас в теме
При штатном запросе битые ссылки не видны. Список не выводится, выходит ошибка из сабжа. Увидел их только в консоле запросов и переделал запрос. Из-за них и возникает ошибка, потому чт значение Ссылкаобъект должно быть уникально а NULLов несколько
+
12. ImHunter 315 20.12.16 15:35 Сейчас в теме
Совсем "в лоб" если:) То можно в запросе дописать РАЗЛИЧНЫЕ
+
13. Тильчик 20.12.16 15:37 Сейчас в теме
количество не будет сходится в списке с итогом по метаданным в дереве
+
14. ImHunter 315 20.12.16 15:57 Сейчас в теме
Тогда для дин списка попробовать назначить основной таблицей - таблицу изменений. Хз, правда, к чему это приведет:) И получится ли вообще.
Открыл стандартную обработку. Там как раз ниже запроса идет присвоение.
+
15. Тильчик 21.12.16 07:40 Сейчас в теме
Нашли того, кто битые ссылки сделал. Сейчас прогоню ТИИ проблема должна исчезнуть
+
16. ImHunter 315 21.12.16 08:29 Сейчас в теме
Не факт. Вряд ли что-то в обменах затронется. Хотя, это интересно. Пиши!
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот