Имя: Пароль:
1C
1С v8
массив в ячейку таблицы
0 Barmalei
 
10.10.13
09:01
Всем привет
вроде бы не сложная задачка, но за полчаса решения не нашел..

имеем список значений на форме, в списке у нас сотрудники (на выбор)
имеем таблицу на той же форме, надо сохранить в ячейку таблицы  наш список сотрудников (точнее ссылки на них для последующей работы со ссылками)

решение "в лоб"  не прошло

МассивСотрудников=ЭтаФорма.СписокСотрудников.ВыгрузитьЗначения();
Объект.Таблица[0].Колонка1=МассивСотрудников;  
  
Колонка1 -  тип строка неограниченная и многострочная.
Казалось бы все ок, на первом шаге у нас и правда массив ссылок, а на втором строка со словом "массив" и все.  Такое ощущение у Колонки1 не хватает какого то параметра для хранения массивов. Что же ему еще надо.

зы
ЗначениеИзСтрокиВнутр и ЗначениеВСтрокуВнутр держу на готове, но думаю получится без них. Опять же хранилище в таблицу не вывести.
1 Рэйв
 
10.10.13
09:07
Напиши в ячейке "Мой массив сотрудников", а сам массив помести в расшифровку. С ней и работай.
2 Славен
 
10.10.13
09:07
СпиокЗначений суй
3 Бледно Золотистый
 
10.10.13
09:07
(0) Тип колонки почему не массив?
4 Бледно Золотистый
 
10.10.13
09:12
(3) Таблица на сколько я понимаю хранит не сам массив, а ссылку на него, при изменении массива, меняется и содержимое таблицы.
5 Barmalei
 
10.10.13
09:34
(4)  Ну да.. массив то временный и далее чистится. А хотелось этот набор ссылок хранить в реквизите таблицы навсегда.
попробовал совсем в лоб
Объект.Таблица[0].Колонка1=ЭтаФорма.СписокСотрудников;
выгружает наименования сотрудников через запятую.. то бишь не ссылки. Можно конечно и так оставить, одна проблемка будет с однофамильцами :) когда искать по наименованию
6 dsdred
 
10.10.13
09:37
5 а колонку эту списком с типом справочник сотрудников сделать не надо случаем?
7 Barmalei
 
10.10.13
09:45
(6) так он же больше 1 ссылки не запомнит тогда ?
8 dsdred
 
10.10.13
09:49
(7) Как это?
Колонка1 - СписокЗначений с типом Справочник.Сотрудников


Объект.Таблица[0].Колонка1.ЗагрузитьЗначения(МассивЗначений)
как то так...
9 alexmobile
 
10.10.13
09:55
(8)реквизиту объекта нельзя поставить тип СписокЗначений.
(7)Можно использовать тип ХранилищеЗначения, но 1с не рекомендует там хранить ссылки - "Важно! В системе не поддерживается ссылочная целостность по объектам, сохраненным в базе данных в полях типа ХранилищеЗначения. Это означает, что при попытке удаления, например, элементов справочников система не контролирует ссылки на эти элементы, сохраненные в ХранилищеЗначения.
"
10 Barmalei
 
10.10.13
10:01
(9) вот и я удивился как это.
у меня 2 варианта пока есть..  
1) ЗначениеИзСтрокиВнутр и ЗначениеВСтрокуВнутр  но тут тоже проблемы с поддержкой ссылок.. всякие пометки на удаление не зафиксируются.
2) Табличка на форме с 2 колонками.. в первой будет № строки основной таблицы, а во второй ссылка на сотрудника. Плюс тут есть - ссылка будет прямой и удалить сотрудника на шару не выйдет :)
11 Бледно Золотистый
 
10.10.13
10:02
Объект.Таблица[0].Колонка1=ЭтаФорма.СписокСотрудников.ВыгрузитьЗначения();
Делай так, тип только у колонки массив установи.
12 alexmobile
 
10.10.13
10:15
Или как вариант создай еще одну дополнительную табличную часть у объекта, там храни этот список. С основной табличной частью свяжи ключем. При выводе на форму в нужную ячейку сгружай реквизит дополнительной табличной части.
13 Barmalei
 
10.10.13
10:58
(11) это в 8.3 можно задавать реквизиту табличной части тип?
У меня дает: строку, ссылку и прочие ненужности.

Программно задал ограничение типу, но это не то..
ЭтаФорма.Элементы.ТаблицаСотрудники.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);

(12) угу.. это и был мой план Б ) так я еще в 7.7 выходил из положения, выходит в 8.2 легче не стало.