Понедельник, 19.11.2018, 21:08
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Проблемные ситуации » ИР 4.63р Ошибка при открытии набора записей регистра (Динамический список. Открыть строку.)
ИР 4.63р Ошибка при открытии набора записей регистра
smerchДата: Четверг, 16.08.2018, 13:51 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 19
Репутация: 10
Статус: Оффлайн
При попытке открыть строку (запись) произвольного регистра выводится сообщение об ошибке:

{ВнешняяОбработка.ирРедакторОбъектаБД.Форма.Форма.Форма(862)}: Поле объекта не обнаружено (Отбор)
        Для Каждого ЭлементОтбора Из Объект.Отбор Цикл

Данная ошибка возникает вследствие того, что функция ирОбщий.ЛиКлючЗаписиРегистраЛкс() анализирует не актуальное значение, а строчное представление типа. Соответственно, если используется локализация отличная от русской данная проверка будет работать не корректно.

Предлагаю реализовать функцию ЛиКлючЗаписиРегистраЛкс следующим образом:


Код
Функция ЛиКлючЗаписиРегистраЛкс(пОбъект) Экспорт

    ТипОбъекта = ПолучитьТипОбъектаЛкс(пОбъект);
    
    ЭтоКлючЗаписи = Новый Соответствие;

    Регистры = Новый Структура;
    Регистры.Вставить("РегистрНакопленияКлючЗаписи", Метаданные.РегистрыНакопления);
    Регистры.Вставить("РегистрБухгалтерииКлючЗаписи", Метаданные.РегистрыБухгалтерии);
    Регистры.Вставить("РегистрСведенийКлючЗаписи", Метаданные.РегистрыСведений);
    Регистры.Вставить("РегистрРасчетаКлючЗаписи", Метаданные.РегистрыРасчета);
    
    Для каждого Коллекция Из Регистры Цикл
        Для каждого Регистр Из Коллекция.Значение Цикл
            ЭтоКлючЗаписи.Вставить(Тип(Коллекция.Ключ + "." + Регистр.Имя), Истина);
        КонецЦикла;
    КонецЦикла;
    
    Возврат ЭтоКлючЗаписи[ТипОбъекта] = Истина;

КонецФункции // ЛиКлючЗаписиРегистраЛкс()
 
tormozitДата: Пятница, 17.08.2018, 07:26 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Какая командная строка у процесса клиентского приложения? Ее можно посмотреть например в диспетчере задач Windows 10 или утилите Process Explorer.
 
tormozitДата: Суббота, 18.08.2018, 22:16 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Спасибо. Повторил ошибку путем запуска клиента с ключом /Len.
Предложенное исправление будет слишком долго работать. Поэтому исправление будет более консервативным.
 
tormozitДата: Воскресенье, 19.08.2018, 21:05 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Исправлено для кода языка EN в 4.64
Если у тебя другой язык, укажи его код и название.
 
smerchДата: Понедельник, 20.08.2018, 09:45 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 19
Репутация: 10
Статус: Оффлайн
У меня используется код языка UK.

Позволю себе заметить, что соответствие типов для ключей записи как правило будет содержать несколько сотен записей. Формируется такое соответствие меньше секунды, поиск вообще мгновенный. При необходимости его запросто можно поместить в кеш.
 
tormozitДата: Воскресенье, 02.09.2018, 19:57 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
В 4.65 проблема решена для всех языков.
 
Форум » Основной » Проблемные ситуации » ИР 4.63р Ошибка при открытии набора записей регистра (Динамический список. Открыть строку.)
  • Страница 1 из 1
  • 1
Поиск: