Есть внешняя обработка. В форме есть табличная часть.
Как сохранить значения введенные пользователем в данную ТЧ?
Чтобы при следующем открытии данной обработки ТЧ была заполнена.
---
```1c
    &НаСервере
    Процедура СохранитьНастройки()

    КлючНастроек = "ОтчетВасиПупкина";
    Настройки = Новый Соответствие;

    Настройки.Вставить("ТЧКоторуюХотетьСохранить", Отчет.ТЧКоторуюХотетьСохранить.Выгрузить());

    ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОтчетВасиПупкина", КлючНастроек, Настройки);

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

    &НаСервере
    Процедура ВосстановитьНастройки()

    КлючНастроек = "ОтчетВасиПупкина";
    ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОтчетВасиПупкина", КлючНастроек);
    Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
    Отчет.ТЧКоторуюХотетьСохранить.Загрузить(ЗначениеНастроек.Получить("ТЧКоторуюХотетьСохранить"));
    КонецЕсли;

    КонецПроцедуры
```
---
fromon, через свойство формы "сохранять значения", например...
---
Вопрос поставлен крайне невнятно.
У формы не может быть никакой табличной части.
У формы может быть реквизит - таблица значений, а НА форме может быть табличное поле.
Табличная часть может быть у самой обработки.
Учитывая, что по тексту вопроса непонятно что же на самом деле расположено на форме и с какими данными связано, а также каким образом производится первое заполнение (ведь колонки могут создаваться и программно) - определённый ответ дать невозможно.
---
```1c
    &НаСервере
    Процедура СохранитьНастройки()

    КлючНастроек = "ОтчетВасиПупкина";
    Настройки = Новый Соответствие;

    Настройки.Вставить("ТЧКоторуюХотетьСохранить", Отчет.ТЧКоторуюХотетьСохранить.Выгрузить());

    ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОтчетВасиПупкина", КлючНастроек, Настройки);

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

    &НаСервере
    Процедура ВосстановитьНастройки()

    КлючНастроек = "ОтчетВасиПупкина";
    ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОтчетВасиПупкина", КлючНастроек);
    Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
    Отчет.ТЧКоторуюХотетьСохранить.Загрузить(ЗначениеНастроек.Получить("ТЧКоторуюХотетьСохранить"));
    КонецЕсли;

    КонецПроцедуры
```
---
DmitriyMos,

Смешно конечно написал, в плане стиля повествования,
но спасибо за дельный совет. Воспользовался, вставив текст в обработчики при открытии и закрытии, все работает как надо!!!
---
Дмитрий, добрый день! У меня ровно такой же вопрос, как и в этой теме) Вы все подробно расписали, единственное, не совсем пойму, что должно быть в ключе настроек?? И "Отчет.ТЧКоторуюХотетьСохранить.Выгрузить()" - почему отчет??
---
какой же вы офигенный!))
---
Настройки сохраняемые через ОбщегоНазначения.ХранилищеОбщихНастроекСохранить сохраняются только для текущего пользователя.
---
и (15) Разобрался. Чтобы сохранить настройку для всех пользователей нужно в пятый параметр(ИмяПользователя) процедуры ОбщегоНазначения.ХранилищеОбщихНастроекСохранить передать какую-либо строку и при загрузке настройки использовать её же. Например:

```1c
    КлючНастроек = "ОтчетВасиПупкина";
    Настройки = Новый Соответствие;
    Настройки.Вставить("ТЧКоторуюХотетьСохранить", Отчет.ТЧКоторуюХотетьСохранить.Выгрузить());
    ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОтчетВасиПупкина", КлючНастроек, Настройки, , КлючНастроек);
```

и

```1c
    КлючНастроек = "ОтчетВасиПупкина";
    ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОтчетВасиПупкина", КлючНастроек, , , КлючНастроек);
    Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
    Отчет.ТЧКоторуюХотетьСохранить.Загрузить(ЗначениеНастроек.Получить("ТЧКоторуюХотетьСохранить"));
    КонецЕсли;
```
---
А как вы обходите вот это ограничение, интересно?) Или у вас у всех пользователей есть право АдминистрированиеДанных?
---
Я бы загуглил типовые механизмы, например в универсальном отчете (для конфы упп или ут), там в регистр настройки засыпаются.... И собственно весь механизм есть: положить в настройки, взять из настроек, остается только использовать
---
Вопрос действительно сформулирован не точно.
Если нет каких-то противопоказаний, то лучше использовать стандартные платформенные механизмы.
У управляемых форм есть свойства: АвтоматическоеСохранениеДанныхВНастройках, СохранениеДанныхВНастройках. Ну и на закладке "Реквизиты" формы есть колонка "Сохранение". Обработчики событий есть, в общем все что нужно. С некоторых пор и настройки динамических списков сохраняются.

У обычных форм есть свойства: "Сохранять значения", "Сохраняемые значения", "ВосстанавливатьЗначенияПриОткрытии". Действия формы и обработчики событий тоже есть.
---
Есть справочник сохраненные настройки, вот в них все и сохраняется. Только необходимо учесть что табличную часть можно хранить ввиде хранилища значений.
---
Можно через "ЗначениеВФайл", с привязкой к каталогу на данном компе "Мои доки" например, а при открытии "ЗначениеИзФайла"

```1c
    Если ТаблицаЗаданийОбщая.Количество() > 0 Тогда
    WshShell = Новый COMОбъект("Wscript.Shell");
    WshFolder = WshShell.SpecialFolders.Item("MyDocuments");

    ПолноеИмяФайла = WshFolder + "\AutoSaveWorks1C.sel";
    ВыбранныйФайл = Новый Файл(ПолноеИмяФайла);

    Если Не ВыбранныйФайл.Существует() Тогда
    НовыйДокумент = Новый ТекстовыйДокумент;
    НовыйДокумент.Записать(ПолноеИмяФайла,"windows-1251");
    КонецЕсли;

    ДанныеДляСохранения = ТаблицаЗаданийОбщая.Выгрузить();

    ЗначениеВФайл(ПолноеИмяФайла, ДанныеДляСохранения);

    КонецЕсли;
```
---
У себя сделал через использование пары функций "ЗначениеВСтрокуВнутр" и "ЗначениеИзСтрокиВнутр". Табличное поле выгружаем в Таблицу значений.
Получаем строку и записываем в реквизит Строка неограниченной длины. Где будет этот реквизит в справочнике или в регистре сведений это уже на выбор.
В отличие от Хранилища значений две строки можно сравнивать! Если отличаются сохраняем, если нет, то ничего не делаем.
---
При сохранении надо в разрезе пользователей данные хранить.
Т.е.. зашел пупкин с любого компа ему его данные заполненные в прошлый раз загрузились, зашла маня ее последние, и т..д.
Поэтому когда формируется КлючНастроек он должен быть составным ИМЯ_ОБРАБОТКИ + ИМЯ_ПОЛЬЗОВАТЕЛЯ.
---
Как вариант использовать методы формы. Так кода меньше.
Сохраняем и восстанавливаем табличную часть обработки "товары"

```1c
    &НаСервере
    Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
    Настройки.Вставить("Товары",Объект.Товары.Выгрузить());
    КонецПроцедуры

    &НаСервере
    Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
    // попытка нужна для первого входа, пока значения "товары" в сохраненных настройках нет
    Попытка
    Объект.Товары.Загрузить(Настройки.Получить("Товары"));
    Исключение
    КонецПопытки
    КонецПроцедуры

    &НаКлиенте
    Процедура ТоварыПриИзменении(Элемент)
    //нужно взвести флаг модификации данных при изменении в табличном поле
    СохраняемыеВНастройкахДанныеМодифицированы = Истина;
    КонецПроцедуры
```