Имя: Пароль:
1C
 
Хранение таблицы в ХранилищеЗначений
,
0 t_vladimir
 
20.06.05
13:47
Задача такова:
Определенный отчет периодически надо сохранять в виде таблицы им сформированной. При этом архивная копия должна иметь автонумерацию и содержать в себе нек-рые реквизиты отчета. Ну и есс-но должен вестись журнал таких архивов.
Сделано следующее:
1. Создан Отчет, имеющий в форме реквизит ПолеТабличногоДокумента, в которое попадает результат отчета.
2. Создан ДокументАрхивОтчета, имеющий реквизит ХранилищеОтчета, в котором предпологается хранить полученный отчет.

В отчете прописаны алгоритм сохранения архива:

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

вроде проходит без ругани.

Там же создан алгоритм просмотра содержимого архива:

ДокСсылка = Документы.АрхивОтчета.НайтиПоНомеру(НомерАрхива);
Документ = ДокСсылка.ПолучитьОбъект();
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
ТабДок = Документ.ХранилищеОтчета.Получить();

на это  выдается сообщение "Ошибка формата потока"
Помогите пожалуйста разобраться.
1 vvv29
 
20.06.05
13:51
Сервак 2х головый?
А зачем так изгаляться?
2 t_vladimir
 
20.06.05
13:55
(1)
пока все на локалке делаю
а как еще сделать архив отчетов с автонумерацией и возможностью поиска по реквизитам?
3 vvv29
 
20.06.05
13:58
(2)А зачем делать такой архив?
4 t_vladimir
 
20.06.05
14:03
(3) ТЗ такое :)
ну ведут они бумажный журнал таких отчетов
причем на каждом подпись руководителя
в 7.7 я реализовывал это как папку файлов с хитрыми именами, которые открывались из архивных документов
в 8.0 вроде появилась возможность хранить эти таблицы прямо в БД
тока чего то не фурычит :(
5 Евгений
 
20.06.05
14:45
//ТабДок = Документ.ХранилищеОтчета.Получить();
табДок.Вывести(Документ.ХранилищеОтчета.Получить());

Кстати, не проверял, но, по идее, все это должно работать и со ссылкой. Получать объект не надо.
И я бы сделал на базе спавочника, хотя сие - на любителя.
6 t_vladimir
 
20.06.05
15:00
(5)
не работает :(
с тем же сообщением о потоке
такое впечатление, что проблемма с преобразованием данных из Хранилища к табличному типу
вот только как это обойти пока не найду не в форуме не в ИТС
справочник не подойдет, т.к. используется единый нумератор с другими типами документов
похоже, что  опять придется таблицы внешними файлами хранить :(
7 vvv29
 
20.06.05
15:07
Имхо проблема в мозгах тех кто составлял ТЗ, отчет можно и потом получить, в любой момент за любой период, если нет, то нужно руки править, и правами разобраться тоже можно.
8 Asmody
 
20.06.05
15:15
вот такой код работает:
Процедура СохранитьВХранилищеНажатие(Элемент)
   ТабДок=Новый ТабличныйДокумент;    
   ТабДок.Вывести(ЭлементыФормы.ПолеТабличногоДокумента1);
   Хранилище=Новый ХранилищеЗначения(ТабДок);
   Записать();
КонецПроцедуры

Процедура ВосстановитьИзХранилищаНажатие(Элемент)
   ТабДок=Хранилище.Получить();
   Если ТабДок<>Неопределено Тогда
       ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ТабДок);
   КонецЕсли;
КонецПроцедуры

Хранилище - реквизит (справочника в моем случае)
9 Евгений
 
20.06.05
15:18
Извини. Не внимательно посмотрел. Код записи тоже надо поменять
Документ = Документы.АрхивОтчета.СоздатьДокумент();
....
таб=Новый ТабличныйДокумент();
таб.Вывести(ЭлементыФормы.ПолеТабличногоДокумента);
ХранилищеТаблицы = Новый ХранилищеЗначения(таб);
Документ.ХранилищеОтчета = ХранилищеТаблицы;
Документ.Записать();
10 t_vladimir
 
20.06.05
15:31
(9) заработала!
спасибо!
теперь  посижу подумаю почему сам не допер :)
11 t_vladimir
 
20.06.05
15:31
(8) тож спасибо :)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший