helpf.pro
Регистрация

v8: Дерево значений в табличном поле документа

KondoR
20.10.2012 09:13Прочитано: 11997
Доброе утро!
Для документа программно создал дерево значений:

Код 1C v 8.х
 
Функция СоздатьДеревоЗначений() Экспорт
ДеревоДанных = Новый ДеревоЗначений;
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Число"));
КЧ = Новый КвалификаторыЧисла(10,0);
ОписаниеЧисло = Новый ОписаниеТипов(МассивТипов,КЧ);
ДеревоДанных.Колонки.Добавить("Узел", ОписаниеЧисло);
ДеревоДанных.Колонки.Добавить("Количество", ОписаниеЧисло);
Возврат ДеревоДанных;
КонецФункции


На форме разместил табличное поле установил тип "ДеревоЗначений", привязал это табличное поле к созданному программно дерево значений, и сделал обработки событий.

Код 1C v 8.х
 
Процедура ИнициализацияДерева()
Дерево = СоздатьДеревоЗначений();
тпДерево = Дерево.Скопировать();
ЭлементыФормы.тпДерево.СоздатьКолонки();
ЭлементыФормы.тпДерево.ОбновитьСтроки();
КонецПроцедуры


Процедура ПриОткрытии()
ИнициализацияДерева();
Если тчДерево.Количество()>0 Тогда
тпДерево = тчДерево.ВыгрузитьКолонки();
КонецЕсли;
КонецПроцедуры


Процедура тпДеревоПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель)
ЭлементыФормы.тпДерево.ТекущийРодитель = ЭлементыФормы.тпДерево.ТекущаяСтрока;
КонецПроцедуры



Теперь возник вопрос, каким образом можно сохранить введенные значения в табличном поле, в самом документе.
Дело в том что когда документ закрываешь а потом открываешь, табличное поле пустое! Понимаю что в данном случае это естественно, ведь я не назначил ни каких реквизитов для таб. поля. Но для документа нет возможности создать реквизит с типом "ДеревоЗначений".
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
20.10.2012 14:38Ответ № 1
(0) KondoR,
Дерево значений или Таблица значений - это не сохраняемый в базе данных объект. Но иногда возникает необходимость сохранить ТЗ или ДЗ между сеансами работы. Можно воспользоваться функцией ЗначениеВФайл() (сохраняет любое сериализуемое значение в файл).
Чтоб сохранить несколько ТЗ или ДЗ в хранилищезначения необходимо добавить их в массив.
Код 1C v 8.х
 перем хранилище;
Процедура ВыгрузитьНажатие(Элемент)
пер=ЭлементыФормы.ТабличноеПоле1.Значение.Скопировать();
масив = Новый Массив;
масив.Добавить(пер);
хранилище = Новый ХранилищеЗначения(масив,Новый СжатиеДанных(9));
КонецПроцедуры
Процедура ЗагрузитьНажатие(Элемент)
если хранилище<>Неопределено тогда
зна = хранилище.Получить();
ЭлементыФормы.ТабличноеПоле2.Значение = зна[0];
ЭлементыФормы.ТабличноеПоле2.СоздатьКолонки();
иначе
сообщить("ХранилищеЗначения не заполнено");
КонецЕсли;
КонецПроцедуры

Не рекомендуется хранить в реквизитах типа ХранилищеЗначения ссылки на другие объекты базы данных.
В системе не поддерживается ссылочная целостность по объектам, сохраненным в базе данных в полях типа ХранилищеЗначения. Это означает, что при попытке удаления, например, элементов справочников система не контролирует ссылки на эти элементы, сохраненные в ХранилищеЗначения.
Изменено 20.10.12 14:40:03
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.