Динамический список
|
|
nclockworker | Дата: Воскресенье, 04.04.2021, 17:49 | Сообщение # 1 |
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
| Код {ВнешняяОбработка.ирОбщий.МодульОбъекта(21941)}: Поле объекта не обнаружено (Наименование) ЗначениеЯчейки = ТабличноеПоле.ТекущиеДанные[ИмяКолонки];
Как воспроизвести. Открываем инструмент Динамический Список, выбираем РегистрСведений.КлючиАналитикиУчетаНоменклатуры, затем команда "Изменить" (через независимый редактор объекта БД строки), в открывшейся форме выбираем реквизит "КлючАналитики", щелкаем по значению 2 раза, чтобы изменить, затем жмем три точки, чтобы выбрать другую ссылку. Открывается форма выбора динамического списка. Становимся мышкой на ячейку любой строки поля Наименование, жмем Ctrl+Q.
|
|
| |
tormozit | Дата: Воскресенье, 04.04.2021, 19:02 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6451
Репутация: 168
Статус: Оффлайн
| Непонятно, из какой таблицы БД выполняется выбор строки через инструмент "Динамический список". Желательно показать картинку. Не смог воспроизвести.
|
|
| |
nclockworker | Дата: Воскресенье, 04.04.2021, 20:06 | Сообщение # 3 |
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
| Записал видео
|
|
| |
tormozit | Дата: Воскресенье, 04.04.2021, 20:54 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6451
Репутация: 168
Статус: Оффлайн
| У меня такого справочника нет. На других мне не удалось воспроизвести ошибку. Покажи через отладчик или исследователь (ИР) значения свойств объектов 1. ТабличноеПоле.ТекущиеДанные 2. Коллекция - Форма.ЭлементыФормы.ДинамическийСписок.Значение.Колонки
|
|
| |
nclockworker | Дата: Воскресенье, 04.04.2021, 21:04 | Сообщение # 5 |
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
|
|
|
| |
tormozit | Дата: Воскресенье, 04.04.2021, 21:22 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 6451
Репутация: 168
Статус: Оффлайн
| Не могу понять что выводится в колонку "Наименование". Похоже что колонка списка "Ссылка" туда выводится. 1. Если нажать "Сбросить" в командной панели списка, то проблема воспроизводится? 2. Покажи колонки таблицы значений полученной запросом из этой таблицы БД. 3. Покажи в отладчике значения свойств ЭлементыФормы.ДинамическийСписок.ТекущиеДанные
|
|
| |
nclockworker | Дата: Воскресенье, 04.04.2021, 21:45 | Сообщение # 7 |
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
| 1. Воспроизводится 2.
|
|
| |
tormozit | Дата: Воскресенье, 04.04.2021, 23:26 | Сообщение # 8 |
Генералиссимус
Группа: Администраторы
Сообщений: 6451
Репутация: 168
Статус: Оффлайн
| Найди в модуле ирОбщий строку
Код // Сюда попадает например элемент отбора от критерия отбора
вставь после нее строку
Код ОписаниеОшибки = ОписаниеОшибки(); // Для отладки
поставь точку останова на следующей за ней строке и перевыбери эту таблицу БД в форме "Динамический список". При остановке в переменной ОписаниеОшибки смотри описание ошибки.
Еще желательно показать коллекцию ЭлементыФормы.ДинамическийСписок.Значение.Отбор
|
|
| |
tormozit | Дата: Воскресенье, 04.04.2021, 23:40 | Сообщение # 9 |
Генералиссимус
Группа: Администраторы
Сообщений: 6451
Репутация: 168
Статус: Оффлайн
| Вообще наверное там ошибки не возникает. Судя по твоим картинкам колонка списка, отображающая наименование, корректно выполняет основную функцию. Но почему то в коллекции колонок списка у нее пустое имя и как следствие в объекте ТекущиеДанные нет соответствующего ей свойства. Я такого еще не встречал. Вероятно работает какая то ошибка платформы
|
|
| |
nclockworker | Дата: Понедельник, 05.04.2021, 06:00 | Сообщение # 10 |
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
| Я отладчиком прошелся по коду, где колонки добавляются. Вначале функции ДинамическийСписок имеет всего 3 колонки, уже к концу функции "подтягиваются" остальные, но за исключением колонки "Наименование". В результате в самой таблице колонка была добавлена, а в динамическом списке её нет...
|
|
| |
tormozit | Дата: Понедельник, 05.04.2021, 22:27 | Сообщение # 11 |
Генералиссимус
Группа: Администраторы
Сообщений: 6451
Репутация: 168
Статус: Оффлайн
| Во всех известных мне ситуациях ЭлементыФормы.ДинамическийСписок.Значение.Отбор содержит элемент с именем "Наименование" для справочника с наименованием. В твоем случае он присутствует? Если да, то при выполнении строки
Код КолонкиСписка.Добавить(ЭлементОтбора.Имя, ЭлементОтбора.Имя <> ПеревестиСтроку("Ссылка") И ЭлементОтбора.Имя <> ПеревестиСтроку("ЭтоГруппа"));
Должна возникать ошибка. Хотелось узнать ее полный текст.
|
|
| |
nclockworker | Дата: Вторник, 06.04.2021, 06:08 | Сообщение # 12 |
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
| До той строки кода даже не доходит, т.к. код Колонка = КолонкиТП.Найти(ЭлементОтбора.Имя); возвращает найденную колонку и уже в следующей строке переменная Колонка не равна Неопределено.
|
|
| |
tormozit | Дата: Вторник, 06.04.2021, 07:47 | Сообщение # 13 |
Генералиссимус
Группа: Администраторы
Сообщений: 6451
Репутация: 168
Статус: Оффлайн
| Попробуй заменить код Код Для Каждого ЭлементОтбора Из ОсновнойЭУ.Значение.Отбор Цикл Колонка = КолонкиТП.Найти(ЭлементОтбора.Имя); Если Колонка = Неопределено Тогда // Антибаг 8.2.15 http://partners.v8.1c.ru/forum/thread.jsp?id=1002521#1002521 Если Ложь Или Найти(ЭлементОтбора.Имя, "ВидСубконтоДт") = 1 Или Найти(ЭлементОтбора.Имя, "ВидСубконтоКт") = 1 Тогда Продолжить; КонецЕсли; Если КолонкиСписка <> Неопределено Тогда Попытка КолонкиСписка.Добавить(ЭлементОтбора.Имя, ЭлементОтбора.Имя <> ПеревестиСтроку("Ссылка") И ЭлементОтбора.Имя <> ПеревестиСтроку("ЭтоГруппа")); Исключение // Сюда попадает например элемент отбора от критерия отбора ОписаниеОшибки = ОписаниеОшибки(); // Для отладки Продолжить; КонецПопытки; КонецЕсли; Колонка = КолонкиТП.Добавить(); КонецЕсли;
на
Код Для Каждого ЭлементОтбора Из ОсновнойЭУ.Значение.Отбор Цикл // Антибаг 8.2.15 http://partners.v8.1c.ru/forum/thread.jsp?id=1002521#1002521 Если Ложь Или Найти(ЭлементОтбора.Имя, "ВидСубконтоДт") = 1 Или Найти(ЭлементОтбора.Имя, "ВидСубконтоКт") = 1 Тогда Продолжить; КонецЕсли; Если КолонкиСписка <> Неопределено Тогда АвтоудалениеКолонки = ЭлементОтбора.Имя <> ПеревестиСтроку("Ссылка") И ЭлементОтбора.Имя <> ПеревестиСтроку("ЭтоГруппа"); Попытка КолонкиСписка.Добавить(ЭлементОтбора.Имя, АвтоудалениеКолонки); Исключение // Сюда попадает например элемент отбора от критерия отбора ОписаниеОшибки = ОписаниеОшибки(); // Для отладки Продолжить; КонецПопытки; КонецЕсли; КолонкаТП = КолонкиТП.Найти(ЭлементОтбора.Имя); Если КолонкаТП = Неопределено Тогда КолонкаТП = КолонкиТП.Добавить(); КонецЕсли;
|
|
| |
nclockworker | Дата: Вторник, 06.04.2021, 19:12 | Сообщение # 14 |
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
| Заменил, пришлось перезапускать целиком клиентское приложение, видимо кэширует обработку. Начало происходить что-то непонятное, причем не в форме выбора ДС, а в самом ДС:
Код {ВнешняяОбработка.ирОбщий.МодульОбъекта(21075)}: Поле объекта не обнаружено (СтатьяКалькуляции) Если ДанныеСтроки[КлючИЗначение.Ключ] <> Элемент.ТекущиеДанные[КлючИЗначение.Ключ] Тогда
Причем любопытно то, что в редакторе строки регистра сведений пропали поля и осталось только одно поле "Склад", я изменил его тип на справочник "СправочникСсылка.КлючиАналитикиУчетаНоменклатуры" и открыл точно также как и раньше через форму выбора ДС, и там ошибка с "Наименованием" - ушла.
Сообщение отредактировал nclockworker - Вторник, 06.04.2021, 19:32 |
|
| |
tormozit | Дата: Вторник, 06.04.2021, 19:49 | Сообщение # 15 |
Генералиссимус
Группа: Администраторы
Сообщений: 6451
Репутация: 168
Статус: Оффлайн
| Ну в целом значит ошибка исправилась. https://www.hostedredmine.com/issues/924969 Для обхода новой ошибки присвой переменной "АвтоудалениеКолонки" постоянно Ложь
Код АвтоудалениеКолонки = Ложь;
|
|
| |