1С 8.2 Управляемое приложение. Сохранение реквизитов объектов формы.

09.12.12

Разработка - Работа с интерфейсом

1С 8.2 Управляемое приложение. Сохранение реквизитов объектов формы.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
infostart2012-template.epf
.epf 10,86Kb
75
75 Скачать (1 SM) Купить за 1 850 руб.

 

 

Совсем недавно передо мной встала задача, сделать внешнюю обработку в УТ11, которая как известно работает полностью на управляемых формах. Какое же было мое удивление, когда я обнаружил, что у управляемой формы реквизиты заведенные как реквизиты формы, при закрытии и открытии ее заново могут сохраняться и восстанавливаться, точно так же как это было в 8.1, достаточно только поставить напротив галочку сохраненять и в свойствах формы выбрать "АвтоматическоеСохранениеДанныхВНастройках"  - Использовать. А что же делать с реквизитами, которые выступают в роли реквизитов объектов ? Погуглив и так ничего толком не найдя, я приступил к экспериментам. Делюсь полученнными результатами.

Поскольку в платформе (8.2.16.362) механизим сохранения реквизитов объектов так и не был найден, осталось только одно - это програмное сохранение настроек при закрытии обработки и программное восстановление при открытии.

 

За основу примера была взята обработка с конкурса БиТа  отсюда Результаты конкурса для участников INFOSTART EVENT 2012 от Первого Бита. за что им кстати огромное спасибо.

К обработке, для наглядности, я еще добавил 2 реквизита. Реквизит1 - тип строка и Реквизит2 -тип "Произвольный", чтобы было еще что-то, кроме "таблицы значений".

Итак, обо всем по порядку:

I. Было создано две процедуры:

 

1.

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

КлючНастроек = "Обработка.ЗадачаПоУТ_11_шаблон";
Настройки = Новый Соответствие;

Настройки.Вставить("ТаблицаЗначений", Объект.Свойства.Выгрузить());

Настройки.Вставить("Реквизит1", Объект.Реквизит1);
Настройки.Вставить("Реквизит2", Объект.Реквизит2);

ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Обработка.ЗадачаПоУТ_11_шаблон", КлючНастроек, Настройки);

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

и

2.

 

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

КлючНастроек = "Обработка.ЗадачаПоУТ_11_шаблон";

ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("Обработка.ЗадачаПоУТ_11_шаблон", КлючНастроек);

Если
ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда

ЗначениеИзНастройки = ЗначениеНастроек.Получить("ТаблицаЗначений");

Объект.Реквизит1 = ЗначениеНастроек.Получить("Реквизит1");
Объект.Реквизит2 = ЗначениеНастроек.Получить("Реквизит2");

Объект.Свойства.Загрузить(ЗначениеИзНастройки);

КонецЕсли;

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


II. Затем эти процедуры были прописаны в соответствующих процедурах, выполняющихся при открытии и закрытии формы

 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ВосстановитьНастройки();

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



&НаКлиенте
Процедура ПриЗакрытии()

СохранитьНастройки()

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

 

Если же по каким то причинам планируется использовать не типовую или не основанную на БСП конфигурацию,  то можно заменить текст процедур ВосстановитьНастройки() и СохранитьНастройки() так :

 

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

КлючОбъекта = "Обработка.ЗадачаПоУТ_11_шаблон";
КлючНастроек = "Обработка.ЗадачаПоУТ_11_шаблон";
ОписаниеНастроек = "Обработка.ЗадачаПоУТ_11_шаблон";
Значение ="";
ИмяПользователя = "";

//ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("Обработка.ЗадачаПоУТ_11_шаблон", КлючНастроек);
ЗначениеНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, КлючНастроек, ОписаниеНастроек, ИмяПользователя);

Если
ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда

ЗначениеИзНастройки = ЗначениеНастроек.Получить("ТаблицаЗначений");

Объект.Реквизит1 = ЗначениеНастроек.Получить("Реквизит1");
Объект.Реквизит2 = ЗначениеНастроек.Получить("Реквизит2");

Объект.Свойства.Загрузить(ЗначениеИзНастройки);

КонецЕсли;

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



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

КлючОбъекта = "Обработка.ЗадачаПоУТ_11_шаблон";
КлючНастроек = "Обработка.ЗадачаПоУТ_11_шаблон";
ОписаниеНастроек = "Обработка.ЗадачаПоУТ_11_шаблон";
Значение ="";
ИмяПользователя = "";

Настройки = Новый Соответствие;

Настройки.Вставить("ТаблицаЗначений", Объект.Свойства.Выгрузить());

Настройки.Вставить("Реквизит1", Объект.Реквизит1);
Настройки.Вставить("Реквизит2", Объект.Реквизит2);

//ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Обработка.ЗадачаПоУТ_11_шаблон", КлючНастроек, Настройки);
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя);

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

 

Как это все работает, можно посмотреть скачав приложенную к статье обработку.

 

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55626    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63944    45    60    

83

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    19937    28    6    

44

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    23467    mrXoxot    44    

130

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    12016    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    18358    1228    elcoan    53    

125

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    12886    167    acces969    31    

126

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    7981    kalyaka    6    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. director04 3661 09.07.13 09:34 Сейчас в теме
Спасибо, что не пришлось долго искать.
Хотя, даже странно, почему обошлось без злопыхателей по поводу велосипеда.... ))))

Еще раз спасибо автору.
2. nagimo 11 22.07.14 13:17 Сейчас в теме
Платформа уже 8.3.4, а проблема все та же. Спасибо за статью, очень пригодилась.
3. shamahn 1 03.12.14 20:01 Сейчас в теме
&НаСервере
Процедура ЗагрузитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию)
	ЭтотОб = РеквизитФормыВЗначение("Объект");
	Настройки = ЭтотОб.ЗагрузитьНастройки(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию);
	
	Объект.Свойства.Загрузить(Настройки);
КонецПроцедуры

{Форма.Форма.Форма(6)}: Поле объекта не обнаружено (Свойства)
Объект.Свойства.Загрузить(Настройки);


1С:Предприятие 8.3 (8.3.5.1248)
Что-то изменилось в платформе? Не проблема, конечно пробежаться по реквизитам и записать их, но реквизит свойства, почему-то, отсутствует. Что-то изменилось в платформе?
4. abc2000 83 03.12.14 22:34 Сейчас в теме
8.3.5.1248 все работает.
Кусок приведенного Вами, выше кода в публикации отсутствует, и по данному приведенному отрывку получить полное представление почему вываливается ошибка не представляется, по крайней мере мне, возможным.
5. abc2000 83 03.12.14 22:36 Сейчас в теме
Да и самое главное, где в публикации написано про
РеквизитФормыВЗначение("Объект");
?
P.S. Советую не изобретать ничего, а скачать прикрепленную обработку и убедиться самому, что все работает. Если что то, вдруг не сработает будем разбираться вместе. :)
Светлый ум; +1 Ответить
6. shamahn 1 05.12.14 00:04 Сейчас в теме
P.S. Советую не изобретать ничего, а скачать прикрепленную обработку и убедиться самому, что все работает.

Я не спорю, скорее всего и работает. Но у меня задача немного другая, а Ваш текст пробовал адаптировать про свои задачи. Скачать не могу, - не хватает местных денег. Да оно и не особо надо :)
и по данному приведенному отрывку получить полное представление почему вываливается ошибка не представляется

Ошибка в модуле формы в серверной процедуре при обращении к свойству "свойства" объекта "объект" :) Все ясно. Все исходные данные такие же как и в Вашем примере, но, видимо, "свойств" у меня в "объекте" нету.

Я просто только начал управляемые формы грызть. До этого как-то не надо было... А сейчас столько нового и интересного оказывается.
Спасибо за помощь
7. abc2000 83 05.12.14 03:52 Сейчас в теме
Свойства это название визуального элемента табличной части на форме, в котором выбираются свойства номенклатуры. Если его нет то будет ошибка конечно же.
8. shamahn 1 05.12.14 10:06 Сейчас в теме
(7) А! О! Точно! Спасибо, мил человек :) Теперь совсем разобрался
9. koar 27.01.15 12:37 Сейчас в теме
Спасибо, очень помогло!
10. chmv 13.01.16 10:21 Сейчас в теме
11. sommid 11.05.16 15:06 Сейчас в теме
а сохранение таблицы, у которой в качестве реквизита тоже есть таблица, кто-нить делал?
12. msokolan 17.05.16 13:34 Сейчас в теме
Спасибо. Тоже столкнулся с такой проблемой, решил прогаммно, но сомневался может чего не заметил и есть секрет.
13. djerry 29.10.17 12:07 Сейчас в теме
Маленькое уточнение:
&НаКлиенте
Процедура ПриЗакрытии()
СохранитьНастройки()
КонецПроцедуры

должно быть в процедуре ПередЗакрытием
17. Merkalov 12 01.12.19 11:40 Сейчас в теме
14. vis_tmp 32 19.08.19 14:17 Сейчас в теме
Работает ли для пользователя с неполными правами?
15. abc2000 83 19.08.19 18:01 Сейчас в теме
С "не полными" это понятие растяжимое. Вообще-то должно.
16. Merkalov 12 01.12.19 11:25 Сейчас в теме
Спасибо.
Только переменная "Значение" нигде не используется, нормальная среда разработки бы выругалась...
18. Amax 08.03.23 10:40 Сейчас в теме
Ошибка в модуле формы в серверной процедуре при обращении к свойству "свойства" объекта "объект" :) Все ясно. Все исходные данные такие же как и в Вашем примере, но, видимо, "свойств" у меня в "объекте" нету.

Что делать если нет этого "свойства" ?
Оставьте свое сообщение