Ошибка при удалении с контролем ссылочности в 49.1 (моб.)
|
|
tinera2 | Дата: Понедельник, 08.02.2016, 13:47 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 5
Статус: Оффлайн
| Открываю обработку для удаления с контролем ссылочности. Перед открытием она открывает форму для выбора метаданных. Если в этой форме отметить все - далее все нормально. Если отмечаю группу планы обмена - падает с описанной ошибкой.
Описание ошибки: {ВнешняяОбработка.ирУдалениеОбъектовСКонтролемСсылок.МодульОбъекта(882)}: Ошибка при вызове метода контекста (Выполнить) ТаблицаОбъектов = Запрос.Выполнить().Выгрузить(); по причине: {(4, 64)}: Поле не найдено "ТЗ.Ссылка.Предопределенный" Представление(ТЗ.Ссылка) КАК Представление, ЕСТЬNULL(ТЗ.Ссылка.<<?>>Предопределенный, Ложь) КАК Предопределенный,
Подробное описание приложил.
Сообщение отредактировал tinera2 - Понедельник, 08.02.2016, 14:10 |
|
| |
tormozit | Дата: Понедельник, 08.02.2016, 14:01 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6396
Репутация: 165
Статус: Оффлайн
| Спасибо за подробное описание. Нужна еще одна деталь. Остановись в отладчике по этой ошибке с показом стека и коллекции ТаблицаОбъектов.
|
|
| |
tinera2 | Дата: Понедельник, 08.02.2016, 14:17 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 5
Статус: Оффлайн
| Заменил приложенный файл с описанием ошибки. Там в конце добавил стек вызовов. Добавлено (08.02.2016, 14:10) --------------------------------------------- Добавил таблицу объектов в описание Добавлено (08.02.2016, 14:17) --------------------------------------------- Видимо причина в плане обмена который не может иметь предопределеные элементы.
|
|
| |
tormozit | Дата: Понедельник, 08.02.2016, 15:17 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6396
Репутация: 165
Статус: Оффлайн
| Приношу извинения. Спутал эту ошибку с другой и потому так много информации затребовал. Действительно здесь причина в отсутствии типов с полем Предопределенное.
Исправить самостоятельно можно вставкой перед ошибочной строкой встроенного языка Код Попытка Запрос.НайтиПараметры(); Исключение Запрос.Текст = СтрЗаменить(Запрос.Текст, "ТЗ.Ссылка.Предопределенный", "Ложь"); КонецПопытки;
|
|
| |
smerch | Дата: Пятница, 19.02.2016, 16:23 | Сообщение # 5 |
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 14
Статус: Оффлайн
| ИМХО. Свертка таблицы запросом плохая практика.
Лучше так (вместо блока с запросом):
Код // свертка таблицы Колонки = ""; Для каждого Колонка Из ТаблицаОбъектов.Колонки Цикл Колонки = Колонки + Колонка.Имя + "," КонецЦикла; ТаблицаОбъектов.Свернуть(Колонки); ТаблицаОбъектов = ТаблицаОбъектов.Скопировать(, "Разрешен, Удаляется, НеудаляемыхСсылок, Ссылок, Метаданные, Ссылка"); ТаблицаОбъектов.Колонки.Добавить("ПометкаУдаления", Новый ОписаниеТипов("Булево")); ТаблицаОбъектов.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); ТаблицаОбъектов.Колонки.Добавить("Предопределенный", Новый ОписаниеТипов("Булево")); ТаблицаОбъектов.Колонки.Добавить("ИндексКартинки", Новый ОписаниеТипов("Число")); Для каждого Строка Из ТаблицаОбъектов Цикл Свойства = Новый Структура("ПометкаУдаления, Предопределенный", Ложь, Ложь); ЗаполнитьЗначенияСвойств(Свойства, Строка.Ссылка); ЗаполнитьЗначенияСвойств(Строка, Свойства); Строка.ИндексКартинки = Не Свойства.ПометкаУдаления; Строка.Представление = Строка(Строка.Ссылка); КонецЦикла;
Сообщение отредактировал smerch - Пятница, 19.02.2016, 16:49 |
|
| |
tormozit | Дата: Пятница, 19.02.2016, 16:40 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 6396
Репутация: 165
Статус: Оффлайн
| smerch, попробуй сравнить замер своего кода с текущим для списка объектов размером 600000. В твоем коде будет выполнено 600000 запросов к БД, а в текущем только 1!
|
|
| |
smerch | Дата: Пятница, 19.02.2016, 16:52 | Сообщение # 7 |
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 14
Статус: Оффлайн
| tormozit, замечание верное, согласен.
Однако, поскольку теперь платформа более не толерантна к обращению к несуществующим полям в запросе, приходится таких запросов избегать.
У меня встречный вопрос, состав таблицы объектов может быть произвольным? т.е. могут быть одновременно ссылки на документы, справочники, планы видов характеристик?
Сообщение отредактировал smerch - Пятница, 19.02.2016, 17:07 |
|
| |
tormozit | Дата: Пятница, 19.02.2016, 20:22 | Сообщение # 8 |
Генералиссимус
Группа: Администраторы
Сообщений: 6396
Репутация: 165
Статус: Оффлайн
| Да, состав таблицы объектов может быть произвольным.
|
|
| |
tormozit | Дата: Суббота, 20.02.2016, 10:24 | Сообщение # 9 |
Генералиссимус
Группа: Администраторы
Сообщений: 6396
Репутация: 165
Статус: Оффлайн
| (0) Исправлено в 3.50
|
|
| |