Как сохранить список значений в документе 1с

Обновлено: 07.07.2024

Хотел написать много красивых и умных слов, но вместо этого решил перейти сразу к делу. По пунктам и коротко:

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

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

3. Реализация: Реализация способа сохранения состоит из сохраняемого реквизита управляемой формы типа СписокЗначений с именем "СохраняемыеСвойстваОбъекта" и двух процедур: 1) для Сохранения/Восстановления значений и 2) редактирования списка сохраняемых реквизитов. Указанные процедуры вызываются из обработок стандартных событий формы "ПриСохраненииДанныхВНастройкахНаСервере" и "ПриЗагрузкеДанныхИзНастроекНаСервере" (для Сохранения/Восстановления) и произвольнымобразом для регулирования списка настроек (я добавил команду для командной панели формы).

4. Конкретно инструкция:

а) Создаем для управляемой формы реквизит типа СписокЗначений с названием (в моем примере): "СохраняемыеСвойстваОбъекта".

б) Создаем кнопку с процедурой или команду для вызова процедуры "РедактироватьСписокСохраняемыхРеквизитов". В примере это команда формы "РедактироватьСохраняемыеРеквизиты". Размещаем кнопочку для вызова на форме или (как в примере) вызов команды из меню.

в) Инициируем стандартные обработчики событий формы "ПриСохраненииДанныхВНастройкахНаСервере" и "ПриЗагрузкеДанныхИзНастроекНаСервере"

пример

г) После всего вышеизложенного в модуль формы добавляем 2 процедуры: "РедактироватьСписокСохраняемыхРеквизитов" и "ОбработатьСохраняемыеРеквизитыОбъекта" и настраиваем вызов процедуры " ОбработатьСохраняемыеРеквизитыОбъекта" из стандартных обработчиков, а процедуры "РедактироватьСписокСохраняемыхРеквизитов" из специальной команды/процедуры связанной с элементом управления или пунктом меню формы. В качестве аргумента СохраняемыйСписокРеквизитФормы передается название списка значений с сохраняемыми настройками (в примере это "СохраняемыеСвойстваОбъекта", в общем случае - как назовете реквизит формы, так и передаете при вызове)

д) собственно пример текста модуля с командами и процедурами:

Ну вот собственно и почти все. Осталось сказать несколько слов о некрасивой Попытке и о тестировании метода. Не случайно в текст метода была введена Попытка и не случайно стоит коммент о том, что она нужна только для web клиентов. По ходу тестов под разными клиентами я убедился в полной работоспособности метода для управляемых форм на толстых и тонкуих клиентах, а вот с web пришлось попотеть. Дело в том, что процедура перебирает все элементы формы для поиска данных, но шутка в том, что web клиент не отрисовывает все элементы формы с полным набором свойств в том числе и со свойством Имя. Такая вот фитча (или баг:) у меня наблюдалась в IE. Побеждать то, что обусловлено скорее даже не платформой, а способностями браузеров я не стал, хотя теоретически можно было бы разложить форму на винтики в серверной процедуре и передать web клиенту списком только нужные реквизиты. Это, конечно, избавило бы код от Попытки , но, думаю, не добавило бы в итоге ни простоты ни красоты. Так что я смирился, а Вы как хотите - используйте, дописывайте, переписывайте, критикуйте, ругайте, предлагайте что-то лучшее и т.д. В комментах. )

У управляемой формы реквизиты заведенные как реквизиты формы, при закрытии и открытии ее заново могут сохраняться и восстанавливаться, достаточно только поставить напротив галочку сохранять и в свойствах формы выбрать "АвтоматическоеСохранениеДанныхВНастройках" - Использовать.



Подробнее в этой статье Как сохранять и восстанавливать значения реквизитов на форме? и там же пример для обычных форм.

А что же делать с реквизитами, которые выступают в роли реквизитов объектов ?

у них такой настройки нет нет - напишем:

Открыв обработку и заполним поля закрываем ее, при следующем открытии все поля заполнены из сохраненных настроек:


Разместил: all4cf  Версии: | 8.2 УП | 8.3 |  Дата: 13.01.2016   Прочитано: 55402

Распечатать

Похожие FAQ

Как заполнить табличную часть формы программно?  6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С  42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools  50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Google maps : вывод точек на карту и режим панорамы  7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора База 1С при запуске уходит в дамп и вылетает  1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Посмотреть все результаты поиска похожих

Еще в этой же категории

Как обновить динамический список или реквизит на форме клиента?  19
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Как установить параметр динамического списка?  14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Список НЕ модальных методов в 1С  4
Найдено в интернете но говорят что с диска ИТС. Табличная часть

Как в Управляемом Приложении настроить автосохранение значений полей формы?
Заходим в свойства формы и для значения АвтоматическоеСохранениеДанныхВНастройках устанавливаем значение "Использовать":

Затем переходим к реквизитам формы и устанавливаем флажки напротив реквизитов, которые необходимо сохранять:

Разместил: E_Migachev  Версии: | 8.x | 8.2 УП |  Дата: 18.04.2010   Прочитано: 62532

Распечатать

Похожие FAQ

Как заполнить табличную часть формы программно?  6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С  42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps  20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C: Enterprise Development Tools  50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем 1С Предприятие что это?  11
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Посмотреть все результаты поиска похожих

Еще в этой же категории

Как обновить динамический список или реквизит на форме клиента?  19
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список

Как на управляемой форме разместить список регистра сведений с отбором?  18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка?  14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма

Программное создание таблицы значений с условным оформлением  12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора

Заполнение списка значений в элементе поле выбора на форме  10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Как сохранить Значения элементов при закрытии формы и восстановить их при открытии формы?

Это можно сделать через СохранитьЗначения(), ВосстановитьЗначение():
Код 1C v 8.х

Но у этого способа, одно НО - Сохраненые значения будут доступны только на там компьютере, на котором их сохранили!

А чтобы эти значения были доступны с любого компьютера, их нужно хранить в базе, например в константах с типом Хранилище значения:
Перебирая все элементы формы, выбрать только поля ввода и записать их значения в структуру.
Потом структуры записываем в константу:
Код 1C v 8.х

Как сохранять и восстанавливать значения реквизитов на форме?

Разместил: E_Migachev  Версии: | 8.x | 8.2 УП |  Дата: 06.07.2010   Прочитано: 29269

Распечатать

Похожие FAQ

Как заполнить табличную часть формы программно?  6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной  18
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С  42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps  20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server  20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П Посмотреть все результаты поиска похожих

Еще в этой же категории

Как обновить динамический список или реквизит на форме клиента?  19
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список

Как на управляемой форме разместить список регистра сведений с отбором?  18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка?  14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма

Программное создание таблицы значений с условным оформлением  12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора

Заполнение списка значений в элементе поле выбора на форме  10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Читайте также: