Ошибка при анализе отключаемых полей в СКД
|
|
Elgrego | Дата: Среда, 01.02.2023, 13:53 | Сообщение # 1 |
Лейтенант
Группа: Проверенные
Сообщений: 57
Репутация: 59
Статус: Оффлайн
| Платформа: 8.3.21.1393 Режим БД: клиент-серверный Конфигурация. Название: Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.123.26) Конфигурация. Основной режим запуска: Управляемое приложение Конфигурация. Вариант встроенного языка: Русский Конфигурация. Режим управления блокировкой данных: Управляемый Конфигурация. Режим совместимости: Версия8_3_18 Конфигурация. Режим использования синхронных вызовов: Использовать Конфигурация. Версия БСП: 301 Конфигурация. Использовать обычные формы в управляемом приложении: Да Инструменты разработчика. Версия: Конфигурация 6.62.1 Инструменты разработчика. Инструмент: Прочее Инструменты разработчика. Перехват клавиатурного ввода: Да Инструменты разработчика. Объекты на сервере: Да Инструменты разработчика. Асинхронность запрещена: Нет Инструменты разработчика. Разрешены имитаторы: Да Клиент. Приложение: Управляемое приложение 64б Клиент. Проверка модальных вызовов: Да Клиент. Язык интерфейса конфигурации: ru Клиент. Язык интерфейса системы: ru Клиент. Отладка разрешена: Да Клиент. Постоянный кэш метаданных: Да Клиент. ОС: Microsoft Windows Server 2016 Standard 64-bit Русский Клиент. ОС от имени администратора: Нет Клиент. ОС Active code page: 866 Клиент. ОС выполнение BAT: Да Клиент. ОС пинг сервера: 0мс Сервер. ОС: Microsoft Windows Server 2012 R2 Standard 64-bit Русский Сервер. Процесс: 64б Сервер. Отладка: нет
При попытке выяснить причину недоступности поля в СКД вылетает ошибка: Значение не является значением объектного типа (Поле) {Обработка.ирКлсПолеТекстаПрограммы.Форма.КонструкторЗапроса.Форма(12255)}:ИмяДочернегоПоля = ирОбщий.ПоследнийФрагментЛкс("" + ДоступноеПоле.Поле); {Обработка.ирКонсольКомпоновокДанных.Форма.Форма.Форма(3441)}:НаборПолей = КонструкторЗапроса.ВлияющиеНаВыбранноеПолеПоляМетаданных("" + ПолеНабора.Поле, БылиОшибки); {Обработка.ирКонсольКомпоновокДанных.Форма.Форма.Форма(3406)}:ОткрытьАнализПравДоступа(РезультатВыбора.Значение);
Подозреваю, что ошибка возникает из-за того, что при разделении на фрагменты происходит преобразование имен полей к нижнему регистру, а сравнение идёт без преобразования. (см. скрин "ВероятнаяПричинаОшибки") В моём случае ошибка возникает из-за передачи в функцию НайтиДоступноеПоле вторым параметром вот такой строки: "ХозрасчетныйОстаткиИОбороты.Субконто2"
|
|
| |
tormozit | Дата: Среда, 01.02.2023, 19:29 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Ошибку подтверждаю https://www.hostedredmine.com/issues/957642
|
|
| |
tormozit | Дата: Среда, 01.02.2023, 19:58 | Сообщение # 3 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Исправлено в 6.62.2
|
|
| |
Elgrego | Дата: Четверг, 02.02.2023, 15:45 | Сообщение # 4 |
Лейтенант
Группа: Проверенные
Сообщений: 57
Репутация: 59
Статус: Оффлайн
| К сожалению, это еще не конец эпопеи... Как говорится, чем дальше в лес, тем толще партизаны.
После исправления этой ошибки в момент открытия отчета "Анализ прав доступа" возникает новая:
{Обработка.ирКлсПолеТекстаПрограммы.Форма.КонструкторЗапроса.Форма(1630)}: Таблица поля "ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Документ.СчетФактураВыданный).ДоговорКонтрагента" не найдена в списке выбранных Кстати, если работать в обычном интерфейсе (не такси), в режиме "формы в закладках", то это сообщение пропадает сразу же после его появления. Увидеть его возможно только в интерфейсе ТАКСИ.
Тем не менее, сам отчёт открывается. Вот как выглядят поля, которые были переданы из СКД:
Если нажать сформировать, то получаю еще одну ошибку:
Значение не является значением объектного типа (Заголовок) {Отчет.ирАнализПравДоступа.МодульОбъекта(429)}:СтрокаМД.Представление = ПолеТаблицыБД.Заголовок; {(1)}:Обработка.ВычислитьПрава(ПараметрыЗадания) {ОбщийМодуль.ирОбщий.Модуль(21112)}:Результат = Вычислить("Обработка." + ИмяМетодаОбработки + "(ПараметрыЗадания)"); {Отчет.ирАнализПравДоступа.Форма.ФормаОтчета.Форма(337)}:ирОбщий.ВыполнитьЗаданиеФормыЛкс("ВычислитьПрава", ПараметрыЗадания, ЭтаФорма, "Сформировать",, ЭлементыФормы.ДействияФормы.Кнопки.Сформировать, "СформироватьЗавершение",,, Истина);
Т.е. пока проанализировать причину с помощью ИР не удалось
Пытался анализировать алгоритм... Думаю, что пока не перейти на анализ полей через объект "СхемаЗапроса", а не пытаться их получить из строк, ошибок будет избежать крайне сложно. Но это чисто моя обывательская точка зрения. Сам относительно недавно стал дорабатывть типовые запросы через схему запроса. Оказалось сильно проще и надёжнее. Но, судя по всему, для изменения алгоритма труда придётся приложить немало
|
|
| |
tormozit | Дата: Четверг, 02.02.2023, 16:00 | Сообщение # 5 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Нужен полный текст запроса и файл DCF с отчетом
|
|
| |
Elgrego | Дата: Четверг, 02.02.2023, 16:06 | Сообщение # 6 |
Лейтенант
Группа: Проверенные
Сообщений: 57
Репутация: 59
Статус: Оффлайн
| Файл DCF приложил. Текст запроса не поместился. Прикрепил файл sel.
|
|
| |
tormozit | Дата: Четверг, 02.02.2023, 20:45 | Сообщение # 7 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Ошибки воспроизвел https://www.hostedredmine.com/issues/957694 https://www.hostedredmine.com/issues/957700
|
|
| |
tormozit | Дата: Воскресенье, 05.02.2023, 22:03 | Сообщение # 8 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Исправлено в 6.63
|
|
| |