Имя: Пароль:
1C
1С v8
Строку ТаблицыЗначений выгрузить в структуру. можно?
0 Shved_72
 
15.04.13
18:43
ТаблицаЗначений[0].Выгрузить (Структура)

ПС часто запросы выдают одну строку, а таблица значений на клиента не передается. хочу красиво
1 exwill
 
15.04.13
18:45
(0) Ну разве что, ЗаполнитьЗначенияСвойств тебе поможет.
2 Fragster
 
гуру
15.04.13
18:46
заполнитьЗначенияСвойств, обход колонок... использовать первую строку как структуру...
3 Shved_72
 
15.04.13
18:50
в чистую структуру не проканало...
тестю дальше
4 Fragster
 
гуру
15.04.13
18:54
(3) что мешает сразу использовать как структуру? надо добавлять значения?
5 Shved_72
 
15.04.13
18:59
(4) а как результат запрос конвертнуть в структуру?
одной строкой желательно и универсально для 15464 разных запросов возвращающих одной строку
6 Fragster
 
гуру
15.04.13
19:08
Для каждого Колонка Из ТЗ.Колонки Цикл
 Структура.Вставить(Колонка.Имя, ТЗ[0][Колонка.Имя]);
КонецЦикла


Но почему не использовать сразу строку?
7 Shved_72
 
15.04.13
19:15
с обходом по колонкам получилось

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

но хотелось бы короче
8 Shved_72
 
15.04.13
19:16
(6) какую строку? строку ТЗ. она не возвращается на клиента
9 Любопытная
 
15.04.13
19:19
А зачем таблица значений на клиенте?
10 exwill
 
15.04.13
19:22
(7) ЗаполнитьЗначенияСвойств же.
11 Shved_72
 
15.04.13
19:22
на клиенте хочу нечто, через что можно обращаться как "нечто.Свойство". Пока для нечто нашел только Структуру которая есть на сервере и тонком клиенте
12 Shved_72
 
15.04.13
19:23
(10) непонял. колонки собрать через ЗаполнитьЗначенияСвойств ?
13 exwill
 
15.04.13
19:23
+(10) вроде, короче не получится
14 Лефмихалыч
 
15.04.13
19:26
(0) какая половая религия мешает общую функцию сделать, которая на вход получает строку и коллекцию колонок (или например саму таблицу и опциональный номер строки по умолчанию равный нулю), а возвращает структуру со значениями?
15 Лефмихалыч
 
15.04.13
19:26
(12) не поможет тебе это. Точнее поможет, но от цикла по колонкам не избавит
16 Shved_72
 
15.04.13
19:28
(14) для этого и делаю, но наделся на чудо типо
Запрос.Выполнить().Выгрузить().Выгрузить(Структура)
17 Поросенок Петр
 
15.04.13
19:53
Вообще есть доля истины в словах автора. В УФ частенько приходится отправлять данные строки в безконтекстный серверный метод и постоянно собирать поля в кучу (структуру) подзоипало. Могли бы что-нибудь и придумать.
18 Лефмихалыч
 
15.04.13
19:58
(17) может когда-то и придумают. В конце концов ведь ЗначениеЗаполнено() была не всегда
19 Defender aka LINN
 
15.04.13
20:09
(17) Говорят, в 1С можно всякие штуки-дрюки писать, которые, типа, функциями называются.
20 Поросенок Петр
 
15.04.13
20:13
(19) Все функции типа "ОбщегоНазнчения", которые приходится включать в _каждую_ конфигурацию, это суть костыли к платформе.
21 Поросенок Петр
 
15.04.13
20:14
+(20) Указанный в (18) "ЗначениеЗаполнено" есть прекрасный к тому пример.
22 Defender aka LINN
 
15.04.13
20:16
(20) Лично мне такая функция нигде не впилась за все время работы, ни в единой конфигурации, не говоря уж о том, чтобы ее везде пихать.
23 Поросенок Петр
 
15.04.13
20:37
(22) Уверен что тебе (как и любому другому) 15-20% функций уже существующих в 1С никуда не впились (ну и 1-5 % про которые даже не знаешь). Это не значит, что они лишние.
24 hhhh
 
15.04.13
22:48
(23) а у автора в (7) разве не набор костылей? Сначала он сливает имена колонок в строку через запятую, потом эту же строку разбивает опять на имена. И потом в завершение применяет супертормозную функцию ЗаполнитьЗначенияСвойств.


Хотя в (6) ему привели решение в 3 строчки, которое будет работать гораздо быстрее.
25 Shved_72
 
16.04.13
04:16
(6), (24) спасибо
чото сразу невкурил,конечно так еще красивше

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