Имя: Пароль:
1C
1С v8
Ошибка передачи данных между клиентом и сервером. Но я ничего не передаю...
,
0 Ученик дилетанта
 
19.09.19
20:15
Добрый вечер!

Вот такой код:

&НаКлиенте
Процедура ТабличнаяЧасть1ОдинПриИзменении(Элемент)
    
СделатьКрасиво(ЗначениеАктивнойЯчейки,НомерТекСтроки,ИмяКолонки)

КонецПроцедуры

&НаСервере
Процедура СделатьКрасиво(ЗначениеАктивнойЯчейки,Строка,Колонка)
    
    ТекТаблица = Объект.Таблица.Выгрузить(,"Один,Два,Три,Четыре,Пять,Шесть,Семь,Восемь,Девять");
    Сч = 0;
    СвязьНомеровИИменКолонок = новый Структура;
    Для Каждого Колонка Из ТекТаблица.Колонки Цикл
        СвязьНомеровИИменКолонок.Вставить(Колонка.Имя,Сч);
        Сч = Сч+1;
    КонецЦикла;
    ТекОбъект = РеквизитФормыВЗначение("Объект");
    ТекОбъект.Таблица[0].ЦветЯчейкиОдин = Перечисления.ЦветаЯчеек.Красный;
    ЗначениеВРеквизитФормы(ТекОбъект,"Объект");     
    
КонецПроцедуры

Вызывает такую ошибку:

{Документ.ЧудесныйДокумент.Форма.ФормаДокумента.Форма(48)}: Ошибка при вызове метода контекста (СделатьКрасиво)
    СделатьКрасиво(ЗначениеАктивнойЯчейки,НомерТекСтроки,ИмяКолонки);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'КолонкаТаблицыЗначений'


Я не могу понять где тут происходит передача КолонкаТаблицыЗначений. В качестве параметров процедуры передаю число, строку и ссылку на перечисление. Назад вообще ничего не возвращаю. подскажите, люди добрые...

Подозреваю вот эту строку:

ЗначениеВРеквизитФормы(ТекОбъект,"Объект")

но как без нее отобразить изменения в тЧ объекта не знаю.
1 Dzenn
 
гуру
19.09.19
20:29
В чём задача заключается? Кажется, ты очень усложняешь. Может, использовать простое условное форматирование?
2 lodger
 
19.09.19
20:34
"В качестве параметров процедуры передаю число, строку и ссылку на перечисление."

не равно

"СделатьКрасиво(ЗначениеАктивнойЯчейки,НомерТекСтроки,ИмяКолонки)"
3 lodger
 
19.09.19
20:35
ставь точку на вызове и посмотри каждый параметр. один из них будет "ЭлементКоллекции..тырыпыры", а их передавать нельзя.
4 Ученик дилетанта
 
19.09.19
20:35
(1) А я и использую условное форматирование. Мне надо многократно обойти таблицу, проверяя различные параметры, перед тем как выставить значение реквизитов, связанных с условным форматированием, для этого удобно использовать ТаблицуЗначений, а она доступна только на сервере.
5 Ученик дилетанта
 
19.09.19
20:36
(2) Не совсем понял, что вы имеете в виду. Что я передаю не ссылку на перечисление, а элемент перечисления?
6 Ученик дилетанта
 
19.09.19
20:38
(2) ТипЗнч, вызванный для передаваемых параметров, возвращает "строка", "число", "ИмяПеречисления".
7 Ученик дилетанта
 
19.09.19
20:39
Опять же какая разница, что я передаю с клиента на сервер? Этот тип доступен на клиенте, значит на сервере тем более доступен. Ошибка должна возникать при обратной передаче. А где она эта передаче? в этом изначальный вопрос.
8 lodger
 
19.09.19
20:46
(7) доступен там и сям, а для передачи не сериализуется.
9 Ученик дилетанта
 
19.09.19
20:50
https://ibb.co/bNYfN5N Проверил на табло, типы такие, как я говорил...
10 H A D G E H O G s
 
19.09.19
21:05
Процедура СделатьКрасиво(ЗначениеАктивнойЯчейки,Строка,Колонка)

Заменить на
Процедура СделатьКрасиво(ЗначениеАктивнойЯчейки,Строка,Знач Колонка)
11 H A D G E H O G s
 
19.09.19
21:06
Для Каждого Колонка Из ТекТаблица.Колонки Цикл


переменной "Колонка" присваивается значение типа КолонкаТаблицыЗначений, которое пытается вернуться на клиент
12 Ученик дилетанта
 
19.09.19
21:14
(11) Спасибо! Действительно проблема в совпадении имени переменной итератора цикла и параметра процедуры!
13 Ученик дилетанта
 
19.09.19
21:15
(10) Достаточно было поменть в итераторе "Колонка" на "ТекКолонка"
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.