Здравствуйте, уважаемые форумчане!

Нужна ваша помощь, направьте в нужное русло.
Необходимо сделать заполнение одной из форм статистической отчетности в документе на УФ. Решил сделать через ПолеТабличногоДокумента. Наглядно, красиво. Однако как сохранять значения (при записи документа) и как восстанавливать не разобрался. Гугл не помог.
Подробнее. Имеем документ, в котором есть ПолеТабличногоДокумента (в нем, собственно, табличный документ). При нажатии кнопки Заполнить в определенные области ПолеТабличногоДокумента подставляются значения. Задача: при проведении документа сохранить табличный документ с заполненными областями и при открытии этого документа получить всю эту красоту уже заполненную.
Пробовал сохранить все это в ХранилищеЗначений, но увы, сохраняется не заполненный табличный документ (оно и понятно).
Данная мысль навеяна регламентированной отчетностью ЗУП 2.5, в котрой можно сохранить несколько вариантов одного и того же отчета (например, 4ФСС), все с разными значениями внутри, и при открытии не заполнять его заново, а получать уже заполненный/сохраненный вариант.
Научите, очень прошу.

http://www.picshare.ru/view/8410499/
http://www.picshare.ru/view/8410817/
---
В вашем случае, наверное, так:

```1c
    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)

    ПолеТабличногоДокументаСтраница1 = ТекущийОбъект.Хранилище.Получить();

    КонецПроцедуры
```
---
Структура = Новый Структура;
Структура.Вставить("ТабДок1", ТабДок1);
Структура.Вставить("ТабДок2", ТабДок2);

ТекущийОбъект.ХЗ = Новый ХранилищеЗначения(Структура);
---
Пробовал сохранить все это в ХранилищеЗначений, но увы, сохраняется не заполненный табличный документ (оно и понятно).
Собственно непонятно, табличный документ прекрасно сохраняется в хранилищезначения
---
Создаем документ, нажимаем заполнить. Значения подставляются в нужные области табличного документа. Записываем документ.

&НаСервере
Процедура ПередЗаписьюНаСервере()

    ДанныйОбъект = РеквизитФормыВЗначение("Объект");
    ДанныйОбъект.Хранилище = Новый ХранилищеЗначения(ПолеТабличногоДокументаСтраница1);
    ЗначениеВРеквизитФормы(ДанныйОбъект,"Объект");
    Записать();

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ДанныйОбъект = РеквизитФормыВЗначение("Объект");
    Хранилище = ДанныйОбъект.Хранилище.Получить();
    ПолеТабличногоДокументаСтраница1.Вывести(Хранилище);

КонецПроцедуры

При открытии Хранилище имеет тип ТабличныйДокумент.
Но ПолеТабличногоДокументаСтраница1 так и остается пустой (как при создании нового документа). Хотя, возможно, он и в хранилище записывается пустым, не знаю как проверить.
---
процедуру ПередЗаписьюНаСервере руками писал? Не назначил обработчиком, если бы назначил, то увидел бы, что в параметрах есть ТекущийОбъект, и не нужны извращения с РеквизитФормыВЗначение. Тоже самое в ПриЧтенииНаСервере, вместо ПриСозданииНаСервере
---
Да, руками. Подскажите, как правильно?
---
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

 ТекущийОбъект.ХЗ = Новый ХранилищеЗначения(5);

КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

 Знач = ТекущийОбъект.ХЗ.Получить();

КонецПроцедуры
---
нажать лупу в соответствующем событии формы
---
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

ТекущийОбъект.Хранилище = Новый ХранилищеЗначения(ПолеТабличногоДокументаСтраница1);

КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

Значен = ТекущийОбъект.Хранилище.Получить();

КонецПроцедуры

Хорошо. Подскажите, как теперь вывести табличный документ из хранилища, вместо пустого?
---
присвоить его реквизиту формы
---
Необходимо это делать при открытии.
Я не понимаю, объясните, пожалуйста :)
---
зачем при открытии? Делай в той же процедуре, в которой читаешь из хранилища
---
В вашем случае, наверное, так:

```1c
    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)

    ПолеТабличногоДокументаСтраница1 = ТекущийОбъект.Хранилище.Получить();

    КонецПроцедуры
```
---
Так и написано, но все равно пустой табличный документ.
---
значит, опять что-то не так делаешь
---
Вот так заполняю области:

Результат = Запрос.Выполнить().Выгрузить();

 //Заполнение страниц
 //Заполняем Страницу 1
 ПолеТабличногоДокументаСтраница1.Области.Организация.Значение = Объект.Организация;

 ПолеТабличногоДокументаСтраница1.Области.Адрес.Значение = Объект.Организация.Адрес;
 ПолеТабличногоДокументаСтраница1.Области.Год.Значение = Прав(Год(Объект.Период),2);

Значения появляются, записываю документ.
При открытии эти области снова пустые.
---
Попробовал на новом документе - при открытии табличный документ вообще не подгружается, белое поле...
---
Проверяю функцией Сообщить() в ПередЗаписьюНаСервере, не попадаю в эту процедуру при сохранении документа.
---
не назначил ее обработчиком события
---
Да-да, тупил...
---
2 дня на двух форумах))
---
На самом деле тема была еще от марта 2017, потом перестало быть нужным, и вот снова понадобилось :)
---
Все работает
---
Получилось!
Извините, тупил.
Спасибо огромное!
---
Можно еще вопрос, относящийся к теме?
У меня 10 страниц, 10 реквизитов формы.
Я помещаю в хранилище первую страницу.
Чтобы поместить остальные 9 - необходимо создать 9 реквизитов документа с типом Хранилище? Или можно поместить все страницы в одно хранилище?
---
пихай в одно
---
Да, тяжко мне пришлось :)

(25) а как потом извлекать постранично? Каким-то индексом? Или просто:

 ПолеТабличногоДокументаСтраница1 = ТекущийОбъект.Хранилище.Получить();
 ПолеТабличногоДокументаСтраница2 = ТекущийОбъект.Хранилище.Получить();
---
в структуру/соответствие положи все табдоки или в массив или в другую коллекцию, как тебе удобнее
---
Хорошо, буду пробовать. Спасибо!
---
Структура = Новый Структура;
Структура.Вставить("ТабДок1", ТабДок1);
Структура.Вставить("ТабДок2", ТабДок2);

ТекущийОбъект.ХЗ = Новый ХранилищеЗначения(Структура);