Имя: Пароль:
1C
 
Как строку таблицыЗначений превратить в структуру?
0 Мисти
 
08.01.15
17:40
Строка содержит почти всё, что мне нужно, я ее хочу подсунуть в одну процедуру вместо структуры. Как ее преобразовать?
1 Фокусник
 
08.01.15
17:47
(0) можно попробовать прямо строку тз передать.
Преобразовать тоже не сложно: перебрать колонки ТЗ и в структуру добавить одноименные свойства :)
2 Мисти
 
08.01.15
17:49
Мне надо туда еще одно поле вставить, прежде чем передавать.
Перебрать колонки ТЗ?? А чтоб само как-нибудь?
3 Фокусник
 
08.01.15
17:54
(2) 4 строки кода всего :)
Создать новую структуру
Цикл по колонкам (2 строки)
Добавление нового свойства в структуру.
Можно сделать функцию в общем модуле и пользоваться потом, если потребуется...
4 oslokot
 
08.01.15
17:54
ТаблицаЗначений[0].Выгрузить(Структура)
5 mrDSide
 
08.01.15
17:55
// если совпадают имена колонок можно так:
Строка = Таблица[НомерСтроки0];
структура = Новый Структура();
Для каждого колонка Из Строка.Колонки Цикл
    структура.Вставить(колонка.Имя, Строка[колонка.Имя])
КонецЦикла;
структура.Вставить("ЕщеПоле", ЗначениеДляИнициализации)
6 Мисти
 
08.01.15
18:01
Спасибо, разжевали!
ТаблицаЗначений[0].Выгрузить(Структура) - а вот так-то - не бывает?
7 oslokot
 
08.01.15
18:03
(6) не знаю, попробуй)
8 Мисти
 
08.01.15
18:07
(7) Вот я так по-английски разговариваю - строю неведомые конструкции, но при этом помогаю руками, выражением лица и т.д., меня понимают. Жаль, что с 1С это не проходит.
9 oslokot
 
08.01.15
18:07
А вообще, если красиво, то ЗаполнитьЗначенияСвойств
10 Мимохожий Однако
 
08.01.15
18:12
(8)Что самое любопытное, можно говорить на любом языке. Всё равно поймут.
11 Мисти
 
08.01.15
18:37
Так вот!
СтруктураШапкиДокумента.Колонки - не работает, потому что СтруктураШапкиДокумента - это уже строка таблицы значений.
12 Мисти
 
08.01.15
18:40
СтруктураШапкиДокумента.Выгрузить(Структура) - тоже не работает
13 unregistered
 
08.01.15
18:45
В коде из (5) ошибка
вместо "Для каждого колонка Из Строка.Колонки Цикл"
должно быть "Для каждого колонка Из Таблица.Колонки Цикл"
14 Мисти
 
08.01.15
18:46
Да уж догадалась!
15 unregistered
 
08.01.15
18:51
Разницы особой нет, но я бы сделал как-то так:

// создание структуры
Структура = Новый Структура;
Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл
   Структура.Вставить(Колонка.Имя);
КонецЦикла;
Структура.Вставить("ЕщеОдинМойЭлементСтруктуры");
//заполнение структуры значениями из строк ТЗ
Для Каждого СтрокаТЗ Из ТаблицаЗначений Цикл
   ЗаполнитьЗначенияСвойств(Структура, СтрокаТЗ);
   Структура.Вставить("ЕщеОдинМойЭлементСтруктуры", ЗначениеЕщеОдногоМоегоЭлементаСтруктуры);
   МояМегаПроцедураИмениМеняЛюбимогоКудаЯпередаюСтруктуруВКачествеПараметра(Структура);
КонецЦикла;
16 Фокусник
 
08.01.15
19:04
(11) если сама ТЗ не доступна (например не передаётся в процедуру), а доступна только строка ТЗ, то ТЗ можно получить так: СтрокаТЗ.Владелец()