Четверг, 09.05.2024, 01:42
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Проблемные ситуации » Ошибка при удалении с контролем ссылочности в 49.1 (моб.)
Ошибка при удалении с контролем ссылочности в 49.1 (моб.)
tinera2Дата: Понедельник, 08.02.2016, 13:47 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 5
Статус: Оффлайн
Открываю обработку для удаления с контролем ссылочности.
Перед открытием она открывает форму для выбора метаданных.
Если в этой форме отметить все - далее все нормально.
Если отмечаю группу планы обмена - падает с описанной ошибкой.

Описание ошибки:
{ВнешняяОбработка.ирУдалениеОбъектовСКонтролемСсылок.МодульОбъекта(882)}: Ошибка при вызове метода контекста (Выполнить)
ТаблицаОбъектов = Запрос.Выполнить().Выгрузить();
по причине:
{(4, 64)}: Поле не найдено "ТЗ.Ссылка.Предопределенный"
Представление(ТЗ.Ссылка) КАК Представление, ЕСТЬNULL(ТЗ.Ссылка.<<?>>Предопределенный, Ложь) КАК Предопределенный,

Подробное описание приложил.
Прикрепления: __.docx (197.6 Kb)


Сообщение отредактировал tinera2 - Понедельник, 08.02.2016, 14:10
 
tormozitДата: Понедельник, 08.02.2016, 14:01 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6195
Репутация: 159
Статус: Оффлайн
Спасибо за подробное описание. Нужна еще одна деталь. Остановись в отладчике по этой ошибке с показом стека и коллекции ТаблицаОбъектов.
 
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
Генералиссимус
Группа: Администраторы
Сообщений: 6195
Репутация: 159
Статус: Оффлайн
Приношу извинения. Спутал эту ошибку с другой и потому так много информации затребовал. Действительно здесь причина в отсутствии типов с полем Предопределенное.

Исправить самостоятельно можно вставкой перед ошибочной строкой встроенного языка
   
Код
Попытка
        Запрос.НайтиПараметры();
    Исключение
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "ТЗ.Ссылка.Предопределенный", "Ложь");
    КонецПопытки;
 
smerchДата: Пятница, 19.02.2016, 16:23 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 14
Статус: Оффлайн
ИМХО. Свертка таблицы запросом плохая практика.

Лучше так (вместо блока с запросом):

   
Код
// свертка таблицы
    Колонки = ""; Для каждого Колонка Из ТаблицаОбъектов.Колонки Цикл Колонки = Колонки + Колонка.Имя + "," КонецЦикла;
    ТаблицаОбъектов.Свернуть(Колонки);
    
    ТаблицаОбъектов = ТаблицаОбъектов.Скопировать(, "Разрешен, Удаляется, НеудаляемыхСсылок, Ссылок, Метаданные, Ссылка");
    ТаблицаОбъектов.Колонки.Добавить("ПометкаУдаления", Новый ОписаниеТипов("Булево"));
    ТаблицаОбъектов.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    ТаблицаОбъектов.Колонки.Добавить("Предопределенный", Новый ОписаниеТипов("Булево"));
    ТаблицаОбъектов.Колонки.Добавить("ИндексКартинки", Новый ОписаниеТипов("Число"));
    
    Для каждого Строка Из ТаблицаОбъектов Цикл
        Свойства = Новый Структура("ПометкаУдаления, Предопределенный", Ложь, Ложь);
        ЗаполнитьЗначенияСвойств(Свойства, Строка.Ссылка); ЗаполнитьЗначенияСвойств(Строка, Свойства);
        Строка.ИндексКартинки = Не Свойства.ПометкаУдаления;
        Строка.Представление = Строка(Строка.Ссылка);
    КонецЦикла;
Прикрепления: patch.diff (5.5 Kb)


Сообщение отредактировал smerch - Пятница, 19.02.2016, 16:49
 
tormozitДата: Пятница, 19.02.2016, 16:40 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 6195
Репутация: 159
Статус: Оффлайн
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
Генералиссимус
Группа: Администраторы
Сообщений: 6195
Репутация: 159
Статус: Оффлайн
Да, состав таблицы объектов может быть произвольным.
 
tormozitДата: Суббота, 20.02.2016, 10:24 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 6195
Репутация: 159
Статус: Оффлайн
(0) Исправлено в 3.50
 
Форум » Основной » Проблемные ситуации » Ошибка при удалении с контролем ссылочности в 49.1 (моб.)
  • Страница 1 из 1
  • 1
Поиск: