Как сохранить/восстановить значения из табличной части формы
По теме из базы знаний
- Всякие полезности
- Механизм хранения реквизитов в хранилище значений информационной базы
- Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)
- Перезапуск обработки или отчета с сохранением введенных данных (Обычные формы) !
- Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП
Найденные решения
&НаСервере
Процедура СохранитьНастройки()
КлючНастроек = "ОтчетВасиПупкина";
Настройки = Новый Соответствие;
Настройки.Вставить("ТЧКоторуюХотетьСохранить", Отчет.ТЧКоторуюХотетьСохранить.Выгрузить());
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОтчетВасиПупкина", КлючНастроек, Настройки);
КонецПроцедуры
&НаСервере
Процедура ВосстановитьНастройки()
КлючНастроек = "ОтчетВасиПупкина";
ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОтчетВасиПупкина", КлючНастроек);
Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
Отчет.ТЧКоторуюХотетьСохранить.Загрузить(ЗначениеНастроек.Получить("ТЧКоторуюХотетьСохранить"));
КонецЕсли;
КонецПроцедуры
Показать
Batman; mrKHrom; tgr123; YulaySuyundukov; Iren_; user1636219; tatoshka0403; maksa2005; AlexKoso; continental; CnupT; Somebody1; surr; Elf77; yushka; malev; Areal; magdeevik; NotGear; shetill; info1ctart; yulok; Arenk; houpl; AndrewKop; namazi74; Nikos; YNik; MaiorovYury; olo_lo4; ixijixi; cezarj; Zachem_mne_nik; Programmer-1C; limonen; AndKovalchuk; Johney20; vat-74; Razved4ik; AtPups000; Dicc; Demic; owson; viktor_and_ko; Nordvip;
+45
–
Ответить
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вопрос поставлен крайне невнятно.
У формы не может быть никакой табличной части.
У формы может быть реквизит - таблица значений, а НА форме может быть табличное поле.
Табличная часть может быть у самой обработки.
Учитывая, что по тексту вопроса непонятно что же на самом деле расположено на форме и с какими данными связано, а также каким образом производится первое заполнение (ведь колонки могут создаваться и программно) - определённый ответ дать невозможно.
У формы не может быть никакой табличной части.
У формы может быть реквизит - таблица значений, а НА форме может быть табличное поле.
Табличная часть может быть у самой обработки.
Учитывая, что по тексту вопроса непонятно что же на самом деле расположено на форме и с какими данными связано, а также каким образом производится первое заполнение (ведь колонки могут создаваться и программно) - определённый ответ дать невозможно.
&НаСервере
Процедура СохранитьНастройки()
КлючНастроек = "ОтчетВасиПупкина";
Настройки = Новый Соответствие;
Настройки.Вставить("ТЧКоторуюХотетьСохранить", Отчет.ТЧКоторуюХотетьСохранить.Выгрузить());
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОтчетВасиПупкина", КлючНастроек, Настройки);
КонецПроцедуры
&НаСервере
Процедура ВосстановитьНастройки()
КлючНастроек = "ОтчетВасиПупкина";
ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОтчетВасиПупкина", КлючНастроек);
Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
Отчет.ТЧКоторуюХотетьСохранить.Загрузить(ЗначениеНастроек.Получить("ТЧКоторуюХотетьСохранить"));
КонецЕсли;
КонецПроцедуры
Показать
Batman; mrKHrom; tgr123; YulaySuyundukov; Iren_; user1636219; tatoshka0403; maksa2005; AlexKoso; continental; CnupT; Somebody1; surr; Elf77; yushka; malev; Areal; magdeevik; NotGear; shetill; info1ctart; yulok; Arenk; houpl; AndrewKop; namazi74; Nikos; YNik; MaiorovYury; olo_lo4; ixijixi; cezarj; Zachem_mne_nik; Programmer-1C; limonen; AndKovalchuk; Johney20; vat-74; Razved4ik; AtPups000; Dicc; Demic; owson; viktor_and_ko; Nordvip;
+45
–
Ответить
6
(4) и (15) Разобрался. Чтобы сохранить настройку для всех пользователей нужно в пятый параметр(ИмяПользователя) процедуры ОбщегоНазначения.ХранилищеОбщихНастроекСохранить передать какую-либо строку и при загрузке настройки использовать её же. Например:
и
КлючНастроек = "ОтчетВасиПупкина";
Настройки = Новый Соответствие;
Настройки.Вставить("ТЧКоторуюХотетьСохранить", Отчет.ТЧКоторуюХотетьСохранить.Выгрузить());
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОтчетВасиПупкина", КлючНастроек, Настройки, , КлючНастроек);
и
КлючНастроек = "ОтчетВасиПупкина";
ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОтчетВасиПупкина", КлючНастроек, , , КлючНастроек);
Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
Отчет.ТЧКоторуюХотетьСохранить.Загрузить(ЗначениеНастроек.Получить("ТЧКоторуюХотетьСохранить"));
КонецЕсли;
Я бы загуглил типовые механизмы, например в универсальном отчете (для конфы упп или ут), там в регистр настройки засыпаются.... И собственно весь механизм есть: положить в настройки, взять из настроек, остается только использовать
Вопрос действительно сформулирован не точно.
Если нет каких-то противопоказаний, то лучше использовать стандартные платформенные механизмы.
У управляемых форм есть свойства: АвтоматическоеСохранениеДанныхВНастройках, СохранениеДанныхВНастройках. Ну и на закладке "Реквизиты" формы есть колонка "Сохранение". Обработчики событий есть, в общем все что нужно. С некоторых пор и настройки динамических списков сохраняются.
У обычных форм есть свойства: "Сохранять значения", "Сохраняемые значения", "ВосстанавливатьЗначенияПриОткрытии". Действия формы и обработчики событий тоже есть.
Если нет каких-то противопоказаний, то лучше использовать стандартные платформенные механизмы.
У управляемых форм есть свойства: АвтоматическоеСохранениеДанныхВНастройках, СохранениеДанныхВНастройках. Ну и на закладке "Реквизиты" формы есть колонка "Сохранение". Обработчики событий есть, в общем все что нужно. С некоторых пор и настройки динамических списков сохраняются.
У обычных форм есть свойства: "Сохранять значения", "Сохраняемые значения", "ВосстанавливатьЗначенияПриОткрытии". Действия формы и обработчики событий тоже есть.
Можно через "ЗначениеВФайл", с привязкой к каталогу на данном компе "Мои доки" например, а при открытии "ЗначениеИзФайла"
Если ТаблицаЗаданийОбщая.Количество() > 0 Тогда
WshShell = Новый COMОбъект("Wscript.Shell");
WshFolder = WshShell.SpecialFolders.Item("MyDocuments");
ПолноеИмяФайла = WshFolder + "\AutoSaveWorks1C.sel";
ВыбранныйФайл = Новый Файл(ПолноеИмяФайла);
Если Не ВыбранныйФайл.Существует() Тогда
НовыйДокумент = Новый ТекстовыйДокумент;
НовыйДокумент.Записать(ПолноеИмяФайла,"windows-1251");
КонецЕсли;
ДанныеДляСохранения = ТаблицаЗаданийОбщая.Выгрузить();
ЗначениеВФайл(ПолноеИмяФайла, ДанныеДляСохранения);
КонецЕсли;
Показать
У себя сделал через использование пары функций "ЗначениеВСтрокуВнутр" и "ЗначениеИзСтрокиВнутр". Табличное поле выгружаем в Таблицу значений.
Получаем строку и записываем в реквизит Строка неограниченной длины. Где будет этот реквизит в справочнике или в регистре сведений это уже на выбор.
В отличие от Хранилища значений две строки можно сравнивать! Если отличаются сохраняем, если нет, то ничего не делаем.
Получаем строку и записываем в реквизит Строка неограниченной длины. Где будет этот реквизит в справочнике или в регистре сведений это уже на выбор.
В отличие от Хранилища значений две строки можно сравнивать! Если отличаются сохраняем, если нет, то ничего не делаем.
При сохранении надо в разрезе пользователей данные хранить.
Т.е.. зашел пупкин с любого компа ему его данные заполненные в прошлый раз загрузились, зашла маня ее последние, и т..д.
Поэтому когда формируется КлючНастроек он должен быть составным ИМЯ_ОБРАБОТКИ + ИМЯ_ПОЛЬЗОВАТЕЛЯ.
Т.е.. зашел пупкин с любого компа ему его данные заполненные в прошлый раз загрузились, зашла маня ее последние, и т..д.
Поэтому когда формируется КлючНастроек он должен быть составным ИМЯ_ОБРАБОТКИ + ИМЯ_ПОЛЬЗОВАТЕЛЯ.
Как вариант использовать методы формы. Так кода меньше.
Сохраняем и восстанавливаем табличную часть обработки "товары"
Сохраняем и восстанавливаем табличную часть обработки "товары"
&НаСервере
Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
Настройки.Вставить("Товары",Объект.Товары.Выгрузить());
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
// попытка нужна для первого входа, пока значения "товары" в сохраненных настройках нет
Попытка
Объект.Товары.Загрузить(Настройки.Получить("Товары"));
Исключение
КонецПопытки
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
//нужно взвести флаг модификации данных при изменении в табличном поле
СохраняемыеВНастройкахДанныеМодифицированы = Истина;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот