|
Преобразование массива структур в Таблицу значений | ☑ | ||
---|---|---|---|---|
0
iznvi
08.10.18
✎
12:28
|
Ребят,появилась проблема,задача состоит в том чтобы Таблицу значений перевести с Клиента на сервере,делаю это через массив структур(Нашел в интернете функции,приложу их в теме) вроде бы делаю все правильно,но все равно выдает ошибку *Ошибка отображения типов:
Отсутствует отображение для типа 'КомандаФормы'* Так вот "Выберите:" реквизит формы Код внешней обработки : &НаКлиенте Функция ПреобразоватьТаблицуЗначенийВМассив(тзДанные,мсДанные) мсДанные = Новый Массив; // Запишем в массив Для Каждого СтрокаТЗ Из тзДанные Цикл стСтрокаТаблицы = Новый Структура; Для Каждого ИмяКолонки Из тзДанные.Колонки Цикл стСтрокаТаблицы.Вставить(ИмяКолонки.Имя, СтрокаТЗ[ИмяКолонки.Имя]); КонецЦикла; мсДанные.Добавить(стСтрокаТаблицы); КонецЦикла; Возврат мсДанные; КонецФункции &НаСервере Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) тзДанные = Новый ТаблицаЗначений; Для Каждого ЭлементМассива Из мсДанные Цикл // Рисуем колонки для таблицы //Если тзДанные.Колонки.Количество() = 0 Тогда Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл тзДанные.Колонки.Добавить("Отдел",,"Отдел"); тзДанные.Колонки.Добавить("Сотрудник",,"Фамилия сотрудника"); тзДанные.Колонки.Добавить("Оклад",,"Оклад"); КонецЦикла; //КонецЕсли; // Добавляем данные в таблицу НоваяСтрока = тзДанные.Добавить(); Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл //НоваяСтрока[ЗначениеСтруктуры.Ключ] = ЗначениеСтруктуры.Значение; НоваяСтрока.Отдел="Отдел 1"; НоваяСтрока.Сотрудник="Иванов"; НоваяСтрока.Оклад=5600; КонецЦикла; КонецЦикла; Возврат тзДанные; КонецФункции &НаСервере Процедура СКлиентаНаСервере(Команда,Массив,Список,МсДанные) Если Выберите = "Массив" Тогда Массив.Добавить("ПередачаМассива"); Для Каждого Строки из Массив Цикл Сообщить(Строки); КонецЦикла; ИначеЕсли Выберите = "СписокЗначений" Тогда Список.Добавить("ПередачаСписка"); Для Каждого ЭлементСписка из Список Цикл Сообщить(ЭлементСписка); КонецЦикла; ИначеЕсли Выберите="ТаблицаЗначений" Тогда Для Каждого Колонки из МсДанные Цикл Сообщить(Колонки); КонецЦикла; КонецЕсли; |
|||
1
VladZ
08.10.18
✎
12:31
|
Есть готовое решение. Почему его не используешь?
|
|||
2
Ник080808
08.10.18
✎
12:32
|
(1) в бсп?
|
|||
3
hhhh
08.10.18
✎
12:33
|
(0) сделай просто реквизит формы ТаблицаЗначений. Это и есть массив структур
чтобы его перевести в ТЗ делаешь ТвойРеквизит.Выгрузить(); получаешь таблицу значений. |
|||
4
VladZ
08.10.18
✎
12:35
|
(2) Да.
|
|||
5
Ник080808
08.10.18
✎
12:37
|
(4) а какая версия? я в пятницу облазил в поисках не нашел. знаю есть из тз в массив, а обратно не видел(
|
|||
6
Cyberhawk
08.10.18
✎
12:38
|
(4) Гонишь
|
|||
7
arsik
гуру
08.10.18
✎
12:42
|
Можно же через значениеВСтроку или сейчас такое не используется?
|
|||
8
Cyberhawk
08.10.18
✎
12:44
|
(7) Используется. *овнокодерами.
|
|||
9
VladZ
08.10.18
✎
12:45
|
(6) Не могу пока проверить - база занята.
Возможно гоню. :) Можно здесь взять готовые: http://catalog.mista.ru/public/240022/ |
|||
10
iznvi
08.10.18
✎
12:54
|
(3) Получается что Создаю реквизит формы называю его ТабЗнч и &НаКлиенте
Функция ПредачаТаблицыЗначений() ТабЗнч.Колонки.Добавить("Отдел",,"Отдел"); ТабЗнч.Колонки.Добавить("Сотрудник",,"Фамилия сотрудника"); ТабЗнч.Колонки.Добавить("Оклад",,"Оклад"); ТабЗнч.Отдел="Отдел 1"; ТабЗнч.Сотрудник="Иванов"; ТабЗнч.Оклад=5600; КонецФункции &НаСервере Процедура СКлиентаНаСервере(Команда,Массив,Список) Если Выберите = "Массив" Тогда Массив.Добавить("ПередачаМассива"); Для Каждого Строки из Массив Цикл Сообщить(Строки); КонецЦикла; ИначеЕсли Выберите = "СписокЗначений" Тогда Список.Добавить("ПередачаСписка"); Для Каждого ЭлементСписка из Список Цикл Сообщить(ЭлементСписка); КонецЦикла; ИначеЕсли Выберите="ТаблицаЗначений" Тогда ТабЗнч.Выгрузить(); КонецЕсли; Всеравно летит ошибка |
|||
11
iznvi
08.10.18
✎
12:54
|
(3) Если не понятно,скажи,заредактю:)
|
|||
12
Йохохо
08.10.18
✎
13:14
|
кажется КомандаФормы не хочет в ТЗ
|
|||
13
iznvi
08.10.18
✎
13:17
|
(12) ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |