Вход | Регистрация


Преобразование массива структур в Таблицу значений

Преобразование массива структур в Таблицу значений
Я
   iznvi
 
08.10.18 - 12:28
Ребят,появилась проблема,задача состоит в том чтобы Таблицу значений перевести с Клиента на сервере,делаю это через массив структур(Нашел в интернете функции,приложу их в теме) вроде бы делаю все правильно,но все равно выдает ошибку *Ошибка отображения типов:
Отсутствует отображение для типа 'КомандаФормы'*
Так вот "Выберите:" реквизит формы

Код внешней обработки :
&НаКлиенте    
Функция ПреобразоватьТаблицуЗначенийВМассив(тзДанные,мсДанные) 
    
    мсДанные = Новый Массив;
        
    // Запишем в массив

    Для Каждого СтрокаТЗ Из тзДанные Цикл
        
        стСтрокаТаблицы = Новый Структура;
        Для Каждого ИмяКолонки Из тзДанные.Колонки Цикл
            стСтрокаТаблицы.Вставить(ИмяКолонки.Имя, СтрокаТЗ[ИмяКолонки.Имя]);
        КонецЦикла;
        
        мсДанные.Добавить(стСтрокаТаблицы);
        
    КонецЦикла;
    
    Возврат мсДанные;
    
КонецФункции

&НаСервере
Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) 
    
    тзДанные = Новый ТаблицаЗначений;
    
    Для Каждого ЭлементМассива Из мсДанные Цикл
        // Рисуем колонки для таблицы

        //Если тзДанные.Колонки.Количество() = 0 Тогда

            Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
                тзДанные.Колонки.Добавить("Отдел",,"Отдел");
                тзДанные.Колонки.Добавить("Сотрудник",,"Фамилия сотрудника");
                тзДанные.Колонки.Добавить("Оклад",,"Оклад");
            КонецЦикла;
        //КонецЕсли;

        
        // Добавляем данные в таблицу

        НоваяСтрока = тзДанные.Добавить();
        Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
            //НоваяСтрока[ЗначениеСтруктуры.Ключ] = ЗначениеСтруктуры.Значение;

            НоваяСтрока.Отдел="Отдел 1";
            НоваяСтрока.Сотрудник="Иванов";
            НоваяСтрока.Оклад=5600;

        КонецЦикла;
    КонецЦикла;
    
    Возврат тзДанные;
    
КонецФункции


&НаСервере
Процедура СКлиентаНаСервере(Команда,Массив,Список,МсДанные)
    Если Выберите = "Массив" Тогда
        
        Массив.Добавить("ПередачаМассива");
    Для Каждого Строки из Массив Цикл
        Сообщить(Строки);
    КонецЦикла;
    
ИначеЕсли Выберите = "СписокЗначений" Тогда
    
    Список.Добавить("ПередачаСписка");
    Для Каждого ЭлементСписка из Список Цикл
        Сообщить(ЭлементСписка);    
    КонецЦикла;
    
    ИначеЕсли Выберите="ТаблицаЗначений" Тогда  
        Для Каждого Колонки из МсДанные Цикл
            Сообщить(Колонки);
        КонецЦикла;
        
    КонецЕсли;
 
 
   VladZ
 
1 - 08.10.18 - 12:31
Есть готовое решение. Почему его не используешь?
   Ник080808
 
2 - 08.10.18 - 12:32
(1) в бсп?
   hhhh
 
3 - 08.10.18 - 12:33
(0) сделай просто реквизит формы ТаблицаЗначений. Это и есть массив структур

чтобы его перевести в ТЗ делаешь ТвойРеквизит.Выгрузить(); получаешь таблицу значений.
   VladZ
 
4 - 08.10.18 - 12:35
(2) Да.
   Ник080808
 
5 - 08.10.18 - 12:37
(4) а какая версия? я в пятницу облазил в поисках не нашел. знаю есть из тз в массив, а обратно не видел(
   Cyberhawk
 
6 - 08.10.18 - 12:38
(4) Гонишь
   arsik
 
7 - 08.10.18 - 12:42
Можно же через значениеВСтроку или сейчас такое не используется?
   Cyberhawk
 
8 - 08.10.18 - 12:44
(7) Используется. *овнокодерами.
   VladZ
 
9 - 08.10.18 - 12:45
(6) Не могу пока проверить - база занята.
Возможно гоню. :)

Можно здесь взять готовые:
http://catalog.mista.ru/public/240022/
   iznvi
 
10 - 08.10.18 - 12:54
(3) Получается что Создаю реквизит формы называю его ТабЗнч и &НаКлиенте
Функция ПредачаТаблицыЗначений()
         
        ТабЗнч.Колонки.Добавить("Отдел",,"Отдел");
        ТабЗнч.Колонки.Добавить("Сотрудник",,"Фамилия сотрудника");
        ТабЗнч.Колонки.Добавить("Оклад",,"Оклад");
        
        ТабЗнч.Отдел="Отдел 1";
        ТабЗнч.Сотрудник="Иванов";
        ТабЗнч.Оклад=5600;

        
    КонецФункции


&НаСервере
Процедура СКлиентаНаСервере(Команда,Массив,Список)
    Если Выберите = "Массив" Тогда
        
        Массив.Добавить("ПередачаМассива");
    Для Каждого Строки из Массив Цикл
        Сообщить(Строки);
    КонецЦикла;
    
ИначеЕсли Выберите = "СписокЗначений" Тогда
    
    Список.Добавить("ПередачаСписка");
    Для Каждого ЭлементСписка из Список Цикл
        Сообщить(ЭлементСписка);    
    КонецЦикла;
    
    ИначеЕсли Выберите="ТаблицаЗначений" Тогда  
        ТабЗнч.Выгрузить();        
    КонецЕсли;



Всеравно летит ошибка
 
 Рекламное место пустует
   iznvi
 
11 - 08.10.18 - 12:54
(3) Если не понятно,скажи,заредактю:)
   Йохохо
 
12 - 08.10.18 - 13:14
кажется КомандаФормы не хочет в ТЗ
   iznvi
 
13 - 08.10.18 - 13:17
(12) ?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует