Имя: Пароль:
1C
1C 7.7
v7: Красиво перекинуть СЗ в ТЗ, как?
0 Злопчинский
 
27.11.19
22:50
допустим, есть СЗ, надо перегнать в ТЗ.
вопрос: как это сделать быстро и красиво?

1.
ТЗ = СоздатьОбъект("ТаблицаЗначений");
СЗ.Выгрузить(ТЗ);
- получится ТЗ с ОДНОЙ колонкой, со значениями СЗ, а хочется чтобы было 2 колонки (значение,представление)
как сделать?

2. можно тупо пройтись по СЗ циклом, извлекать значение и представление и построчно добавлять в ТЗ. как-то некузяво...

3. можно сделать по п.1, потом циклом по СЗ извлечь из строки с номером N представление и запихивать построчно в ТЗ. как-то некузяво...

4. можно сделать по п.1, потом из СЗ циклом достать представления в отдельную рабТЗ построчно, и потом рабТЗ выгрузить в ТЗ во второую колонку. тоже как-то извращенно...

Может есть какие-то секретные фокусы/фичи?
Ёпрст, приди...!?
1 Злопчинский
 
27.11.19
22:51
.. а потом еще хочется например сели СЗ с пометками - то в ТЗ три колонки соответственно
но хотя бы (0) повеселее как-то...
2 Лефмихалыч
 
27.11.19
22:52
еще можно просто этого всего не делать, а для получения значения и представления лезть в СЗ, а для получения всего остального - в ТЗ и синхронизячить их там по номеру, а там по номеру строки
3 Лефмихалыч
 
27.11.19
22:53
один хрен этот код больше ни кто, кроме тебя смотреть не будет, так что можно включать барбару стрэйзанд до щелчка
4 kubik_live
 
27.11.19
22:54
п.2 дешево и сердито. Зачем корячиться?
5 Лефмихалыч
 
27.11.19
22:56
(4) хочется красоты, а восьмерка в руки нейдёт, по этому приходится к клюшкам крылушки мастерить
6 hhhh
 
27.11.19
23:04
(5) если бы это была восьмерка, то понятно, что пофиг как делать, что-то слепить и ладно, зачем корячиться, если никому это не нужно. Вот семерка - это да, она требует красоты.
7 Злопчинский
 
27.11.19
23:32
(5) а шо, в 8-ке сабж красиво решается? как?
8 Ёпрст
 
27.11.19
23:46
(7) там есть заполнитьзначениясвойств
9 Ёпрст
 
27.11.19
23:47
и будет тип того
(не моё)


Функция СЗ_В_ТЗ(СЗ)
    тз = Новый ТаблицаЗначений;
    тз.Колонки.Добавить("Значение");
    тз.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    тз.Колонки.Добавить("Пометка", Новый ОписаниеТипов("Булево"));
    тз.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка"));
    
    Для Каждого ЭлементСЗ из СЗ Цикл
        ЗаполнитьЗначенияСвойств(тз.Добавить(), ЭлементСЗ)
    КонецЦикла;
    
    Возврат тз;
КонецФункции
10 vcv
 
28.11.19
07:33
Странно. Восемь ответов и ни кто еще не предложил взять ЗначениеВСтрокуВнутр от списка значений и преобразовать для ЗначениеИзСтрокиВнутр для ТЗ. :)
11 АНДР
 
28.11.19
07:42
(10) Подход изящный, код - нет.
12 Лефмихалыч
 
28.11.19
08:42
еще можно поставить 1С++, унаследовать класс от списка значений и добавить нужных колонок.
Гогнище получится со встроенным пропеллером
13 Slypower
 
28.11.19
09:05
Для 1с7.7 так же писали функцию заполнитьзначениясвойств(). Можно ее использовать для задачи (0)
14 Злопчинский
 
28.11.19
10:45
(9) это тот же вариант что в п.2
(13) тот же вариант что п.2 в обертке.
.
короче нет ничего хорошего.
15 HawkEye
 
28.11.19
11:29
(10) я смотрел как-то, там все равно все упрется в цикл...
(0) перебором...
16 trad
 
28.11.19
11:32
(14) сам то подумай. Любой вариант - это п.2 только в разных обертках
17 Индиго
 
28.11.19
11:32
(0)Можно просто с самого начала использовать ТЗ с колонками "Значение" и "Представление" вместо СЗ
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.