|
8.3. УФ. Нарвался на ошибку, не понимаю причины. | ☑ | ||
---|---|---|---|---|
0
Target1025
22.04.22
✎
15:16
|
Делаем полеВвода1 тип СправочникСсылка.Сотрудники:
https://ibb.co/Q6GnMf6 Делаем событие ПолеВвода1ПриИзменении: https://ibb.co/cTq1b0x Автоматически сгенерировался код модуля Формы: https://ibb.co/zPGkYcw Из предприятия, при выборе сотрудника все крашится с такой ошибкой: Ошибка отображения типов: Отсутствует отображение для типа 'ЭлементСпискаЗначений' {ВнешняяОбработка.АктИнвентаризацииНаличных.Форма.Форма.Форма(60)}: ПолеВвода1ПриИзмененииНаСервере(); {Справочник.Сотрудники.Форма.ФормаСписка.Форма(521)}: ОповеститьОВыборе(СписокЗначений[0]); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'valList': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/logform}valList по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'value': форма: Элемент имя: {http://v8.1c.ru/8.1/data/core}value по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ЭлементСпискаЗначений' Эм, не могу понять, что сделано не так? |
|||
1
lubitelxml
22.04.22
✎
15:22
|
"СписокЗначений[0]" - что за значение в отладчике, какой тип? Ты передаешь что-то не то
|
|||
2
Лирик
22.04.22
✎
15:32
|
(0) У тебя форма выбора сотрудника возвращает не СправочникСсылку, а элемент списка значений. Посмотри как в существующих документах реализован выбор сотрудников и сделай аналогично.
|
|||
3
Target1025
22.04.22
✎
15:35
|
(1) Это значение возвращает Справочник.Сотрудники.ФормаСписка в коде СписокВыборЗначения:
&НаКлиенте Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если ТипЗнч(Значение) = Тип("Массив") Тогда СписокЗначений = Значение; Иначе СписокЗначений = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Значение); КонецЕсли; Если СписокЗначений.Количество() > 0 Тогда Если Элементы.Список.МножественныйВыбор Тогда ОбновитьСписокПодобранных(СписокЗначений); Если СписокЗначений.Количество() > 1 Тогда Закрыть(); КонецЕсли; Иначе Если СписокПодобранных.НайтиПоЗначению(СписокЗначений[0]) = Неопределено Тогда ОповеститьОВыборе(СписокЗначений[0]); // <---- тут Иначе Закрыть(); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Возвращает оно тип значения "СправочникСсылка.Сотрудники". |
|||
4
Жан Пердежон
22.04.22
✎
15:40
|
(3) это тебе так хочется, там тип значения другой
|
|||
5
Жан Пердежон
22.04.22
✎
15:47
|
>> Отсутствует отображение для типа 'ЭлементСпискаЗначений'
тебе даже текст ошибки об этом явно говорит |
|||
6
Target1025
22.04.22
✎
16:13
|
(0)(1)(2)(4)
В общем, удивительный глюк проги, который слабо объясним. Итак, где был прикол? &НаКлиенте Процедура ПриОткрытии(Отказ) СЗ = Новый СписокЗначений; СЗ.Добавить("приказ"); СЗ.Добавить("постановление"); СЗ.Добавить("распоряжение"); СписокВыбора = Элементы.ПолеВвода7.СписокВыбора; СписокВыбора.Очистить(); Для Каждого Значение Из СЗ Цикл СписокВыбора.Добавить(Значение); КонецЦикла; КонецПроцедуры Процедура заполняет список выбора у полеВвода7, что есть строка, в момент открытия. Заполняло таким вот образом. Открывалось без вопросов, работало без вопросов. Но начали сыпаться другие поля ввода, справочников сотрудники, что отражено в (0). Как оно так портило форму, непонятно, но проблема была решена тем, что список выбора был забит прямо в ПолеВвода7: https://ibb.co/rbfxbrm |
|||
7
hhhh
22.04.22
✎
16:39
|
объяснили же
Для Каждого ЭлементСЗ Из СЗ Цикл СписокВыбора.Добавить(ЭлементСЗ.Значение); КонецЦикла; |
|||
8
Target1025
22.04.22
✎
16:53
|
(7) "объяснили же"
Нет. Мне объясняли, что ошибка тут: {ВнешняяОбработка.АктИнвентаризацииНаличных.Форма.Форма.Форма(60)}: ПолеВвода1ПриИзмененииНаСервере(); Справочник.Сотрудники.Форма.ФормаСписка.Форма(521)}: ОповеститьОВыборе(СписокЗначений[0]); Но ошибка была вообще в другом месте, в другом поле ввода данных, не связанных с вышеупомянутым ПолеВвода1. Западло в том, что форму портило ПолеВвода7, строка, при этом сам список ПолеВвода7 на форме работал перфектно. Ситуация выглядит так, что это ошибка платформы. Надо бы в баги отписать. |
|||
9
Жан Пердежон
22.04.22
✎
16:55
|
(6) что действительно слабо объяснимо так это зачем давать мудацкие имена переменным/реквизитам/элементам формы
ПолеВвода1, ПолеВвода2..., переменная "СписокЗначений" (когда в ней хранишь массив...)? |
|||
10
1Сергей
22.04.22
✎
17:13
|
СписокЗначений зарезервированное слово
|
|||
11
Target1025
22.04.22
✎
17:52
|
(9) "о действительно слабо объяснимо так это зачем давать мудацкие имена переменным/реквизитам/элементам формы" Очень просто объяснимо. Отчет переделывается на УФ с двойки, с ОФ. В такой ситуации переименывывать себе поля - стрелять самому себе прямо в ногу.
"переменная "СписокЗначений" (когда в ней хранишь массив...)?" - в переменной СЗ, хранился СписокЗначений. Массивов там ни одного не было. (10) Используется СЗ, СЗ - не СписокЗначений. |
|||
12
lubitelxml
22.04.22
✎
17:55
|
(11) "ОповеститьОВыборе(СписокЗначений[0]); " - где здесь СЗ?
(11) "переименывывать себе поля - стрелять самому себе прямо в ногу. " - "давать мудацкие имена переменным/реквизитам/элементам формы ПолеВвода1, ПолеВвода2..., переменная "СписокЗначений"" - это сразу выстрел в голову |
|||
13
Target1025
23.04.22
✎
03:41
|
(12) Это код из "справочник.Сотрудники". В списке значений лежит ссылка на элемент справочника. Это стандартный механизм передачи данных из формы выбора справочника "Сотрудники" туда, откуда его попросили.
"давать мудацкие имена" - да, я не спорю. Поэтому в _моих_ обработках все именуется предельно четко. Просто данный отчет переделывался на УФ с ОФ с двойки на тройку, и если я, кроме цирка с УФ еще буду бизнес-логику отчета ломать, то я тупо потрачу в 3 раза больше времени. |
|||
14
hhhh
23.04.22
✎
04:35
|
(13) надо СписокЗначений[0].Значение
потому что СписокЗначений[0] это элемент списка значений, у него есть поля Пометка, Значение, Представление. и СписокЗначений[0].Значение - это и будет как раз ссылка на элемент справочника. |
|||
15
Жан Пердежон
23.04.22
✎
06:57
|
(13) а теперь открой синтакс-помощник и почитай что такое список значений и как с ним работать (за 3 года уже можно сделать)
|
|||
16
Target1025
23.04.22
✎
11:33
|
(14)(15) штож вы трудние такие! =) То, на что вы мне указываете - это родной код 1с из справочника Сотрудники, форма списка. Вот полный текст модуля:
&НаКлиенте Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если ТипЗнч(Значение) = Тип("Массив") Тогда СписокЗначений = Значение; Иначе СписокЗначений = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Значение); КонецЕсли; Если СписокЗначений.Количество() > 0 Тогда Если Элементы.Список.МножественныйВыбор Тогда ОбновитьСписокПодобранных(СписокЗначений); Если СписокЗначений.Количество() > 1 Тогда Закрыть(); КонецЕсли; Иначе Если СписокПодобранных.НайтиПоЗначению(СписокЗначений[0]) = Неопределено Тогда ОповеститьОВыборе(СписокЗначений[0]); Иначе Закрыть(); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Я фик знает, зачем 1с вкидывает в переменную СписокЗначений значение типа "Массив", но это их трудности. В моем случае, "стреляло" не в этом месте. "Стреляло" на моей форме, в совсем другом поле ввода данных, типа "строка" с выбором из списка значений. |
|||
17
lubitelxml
23.04.22
✎
15:48
|
(16)
Если ТипЗнч(Значение) = Тип("Массив") Тогда СписокЗначений = Значение; Иначе СписокЗначений = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Значение); КонецЕсли; Ты сам проверяешь - если это Массив. |
|||
18
Target1025
24.04.22
✎
01:00
|
(17) Сцуко! ЭТО РОДНОЙ КОД 1Са! Уже 4й раз пишу! Открой бухию, форма списка справочника сотрудники, строка 510, ты увидишь этот код. ;-))))))))))
|
|||
19
hhhh
24.04.22
✎
16:39
|
(18) а в ОбновитьСписокПодобранных что?
|
|||
20
Мимохожий Однако
24.04.22
✎
17:59
|
Давно пора почитать про отладчик и посмотреть, какие значения попадают в параметры процедур
|
|||
21
nicxxx
24.04.22
✎
20:38
|
(9) Ну какое тебе дело до того, как человек называет переменные? Он просит помощи с конкретной проблемой, а не приходит и говорит "поучите меня жить пожалуйста". Если сказать по существу нечего, зачем вообще отвечаешь? Скучно?
|
|||
22
DrZombi
гуру
24.04.22
✎
21:47
|
(16) Ну и ладно... Картинки недоступны, это еще мелкий глюк.
Вот когда у тебя Запрос 1С не отрабатывает на сервере SQL с невнятной ошибкой... Вот это глюк :) |
|||
23
Жан Пердежон
27.04.22
✎
12:33
|
(18) (21) на конкретную проблему ему ещё в (1) указали (и это помимо текста самой ошибки)
А судя по (6) ТС так и не понял в чем ошибка |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |