1с сохранить значения реквизита в обработке

 0 

   

Распечатать

1С 8.3 : Реквизит ~ Как сохранять и восстанавливать значения Объектов и Реквизитов на форме УП?

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

 

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


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

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

Код 1C v 8.3

 &НаСервере
Процедура ВосстановитьНастройки()
КлючОбъекта = "ЗагрузкаИЗPDF_All4CF.ru";
КлючНастроек = "ЗагрузкаИЗPDF_All4CF.ru";
ОписаниеНастроек = "ЗагрузкаИЗPDF_All4CF.ru";
ИмяПользователя = "";

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

Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
Объект.Склад = ЗначениеНастроек.Получить("Склад");
Объект.Организация = ЗначениеНастроек.Получить("Организация");
Объект.ПутьКPDF2TXT = ЗначениеНастроек.Получить("ПутьКPDF2TXT");
Объект.ПутьКPDF = ЗначениеНастроек.Получить("ПутьКPDF");
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВосстановитьНастройки();
КонецПроцедуры

&НаСервере
Процедура СохранитьНастройки()  
КлючОбъекта = "ЗагрузкаИЗPDF_All4CF.ru";
КлючНастроек = "ЗагрузкаИЗPDF_All4CF.ru";
ОписаниеНастроек = "ЗагрузкаИЗPDF_All4CF.ru";
ИмяПользователя = "";

Настройки = Новый Соответствие;
Настройки.Вставить("ПутьКPDF2TXT", Объект.ПутьКPDF2TXT);
Настройки.Вставить("ПутьКPDF", Объект.ПутьКPDF);
Настройки.Вставить("Склад", Объект.Склад);
Настройки.Вставить("Организация", Объект.Организация);

ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя);
КонецПроцедуры  

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
 СохранитьНастройки();
КонецПроцедуры

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

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

Сохранение значений реквизитов управляемых форм

После этого на форме появятся стандартные кнопки Сохранить параметры и  Восстановить параметры (возможно, они будут скрыты под кнопкой Еще).

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

Рассмотрим эту процедуру на примере формы с двумя табличными частями: ТипыЦен и ГруппыНоменклатуры. В каждой табличной части по одной колонке.

Для сохранения значений табличной части управляемой формы нам потребуется создать процедуру для события формы ПриСохраненииДанныхВНастройкахНаСервере. Как следует из названия, это событие возникает при сохранении значений реквизитов формы. И тут то мы и сможем добавить к реквизитам нашу табличную часть, предварительно преобразованную в массив.

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

//Создаем массивы из табличных частей
МассивГрупп=новый массив;
Для каждого Строка из Объект.Группы Цикл
МассивГрупп.Добавить(Строка.Группа);
КонецЦикла;

МассивЦен=новый массив;
Для каждого Строка из Объект.ТипыЦен Цикл
МассивЦен.Добавить(Строка.ТипЦены);
КонецЦикла;

//Добавляем полученные массивы в сохраняемые настройки с соответствующими именами
Настройки.Вставить(«Группа», МассивГрупп);
Настройки.Вставить(«ТипыЦен», МассивЦен);

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

Теперь осталось восстановить табличные части из массивов при загрузке настроек управляемой формы. Для этого нам потребуется процедура для события ПриЗагрузкеДанныхИзНастроекНаСервере.

Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)

//Очищаем табличные части, чтобы избежать дублей
Объект.Группы.Очистить();
Объект.ТипыЦен.Очистить();

//Получаем массивы из настроек по тому имени, по которому сохраняли и заносим в табличные части
Для каждого Строка из Настройки.Получить(«Группа») Цикл
НС=Объект.Группы.Добавить();
НС.Группа=Строка;
КонецЦикла;

Для каждого Строка из Настройки.Получить(«ТипыЦен») Цикл
НС=Объект.ТипыЦен.Добавить();
НС.ТипЦены=Строка;
КонецЦикла;

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

В этой статье разберем, как работать с сохранением данных на форме в 1С 8.3.

Сохраняемые данные формы 1С

У любой управляемой формы можно настроить сохранение данных реквизитов формы. Это значит, что форма сохранит данные введенные в поля, которые соответствуют реквизитам, при закрытии формы, а при последующем открытии формы информация в этих полях восстановятся автоматически.

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

Форма обработки 1С

Это поля Контрагент и Цена.

Для того, чтобы на управляемой форме данные из соответствующих реквизитов сохранялись, необходимо выполнить следующие действия.

Первое. У свойства формы  «Автоматическое сохранение данных в настройках» установить значение «Использовать».

 Свойство управляемой формы 1С Автоматическое сохранение данных в настройках

Второе. После того, как будет установлено значение в свойство, которое упоминали выше, у реквизитов формы появится колонка «Сохранение». Именно в этой колонке и нужно поставить флажки рядом с теми реквизитами, значения которых мы хотим сохранять при закрытии формы.

Свойство Сохранить реквизитов управляемой формы 1С

После этих действий, данные у отмеченных реквизитов будут сохраняться.

Хранилище настроек в 1С

Вышеприведенный способ позволяет сохранять последние данные, с которыми работали на форме. Но, могут возникнуть ситуации, когда нужно будет сохранять какую-то произвольную комбинацию значений реквизитов, а потом восстановить её. Если рассматривать ситуацию выше, то это может быть комбинация контрагента и цены: для одного контрагента одна цена, для другого другая и т.д.

Для того, чтобы такая возможность имелась, необходимо в свойстве «Хранилище данных настроек» управляемой формы установить значение «Использовать список».

Свойство управляемой формы Хранилище данных настроек

А потом, у нужных реквизитов формы следует установить флаг у свойства «Сохраняемые данные».

Свойство Сохраняемые данные реквизита управляемой формы

После таких изменений, у формы в группе Ещё появятся команды «Сохранить параметры» и «Восстановить параметры».

Команды управляемой формы Сохранить параметры и Восстановить параметры

Теперь мы можем сохранить любую комбинацию реквизитов Контрагент – Цена.

Команда управляемой формы Сохранить параметры
Команда управляемой формы Сохранить параметры

И можем восстановить нужную комбинацию в любой момент работы с формой, а не только при открытии.

Команда управляемой формы Восстановить параметры
Команда управляемой формы Восстановить параметры

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

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

Заходим в свойства формы и для значения АвтоматическоеСохранениеДанныхВНастройках устанавливаем значение «Использовать»:

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

Код 1C v 8.х

 // Сохранение и восстановление настроек формы 
      
Процедура ПриОткрытии()
// Восстанавливаем сохраненные значения реквизитов
Значение = ВосстановитьЗначение("Обработка_Кодировка");
Если ЗначениеЗаполнено(Значение) Тогда
Кодировка = Значение;
Иначе
Кодировка = 2;
КонецЕсли;

Значение = ВосстановитьЗначение("Обработка_КаталогИмпорта");
Если Значение <> Неопределено Тогда
КаталогИмпорта = Значение;
КонецЕсли;
КонецПроцедуры

Код 1C v 8.х


Виртуальный 1С помощник

 Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
      
// Сохраним значения указанные в реквизитах
СохранитьЗначение("Обработка_Кодировка", Кодировка);
СохранитьЗначение("Обработка_КаталогИмпорта", КаталогИмпорта);
КонецПроцедуры

Информация взята с сайта http://helpf.pro

Подпишитесь на нашу рассылку новостей

Хотите узнать больше по этому вопросу?

Подпишитесь на нашу рассылку новостей

Подписаться

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

Предложить статью

Сохранить значения реквизитов обработки

Я
   SupC

01.09.08 — 13:54

Добрый день.У формы обработки есть такое свойство как «Сохранять значения», в поле сохраняемые значения есть возможность указать реквизиты, которые необходимо созранять. Как  можно программно инициировать сохранение реквизитов? Подскажите, кто сталкивался, плиз.

  

Партнерская программа EFSOL Oblako

   SupC

1 — 01.09.08 — 14:02

Обычно  это действие вызывается интерактивно…. а как это сделать программно??

   SupC

2 — 01.09.08 — 14:02

Есть кто нибудь????

   asp

3 — 01.09.08 — 14:06

Глобальный контекст

СохранитьЗначение (SaveValue)

Синтаксис:

СохранитьЗначение(<Имя>, <Значение>)

Параметры:

<Имя> (обязательный)

Тип: Строка. Имя, с которым сохраняется значение, используется для идентификации сохраняемых значений.

<Значение> (обязательный)

Тип: Произвольный. Сохраняемое значение.

Описание:

Сохраняет значение для использования не только в текущем, но и в последующих сеансах работы с программой. Значение хранится индивидуально для каждой пары информационная база — пользователь. Например, можно сохранять значения по умолчанию, используемые данным пользователем.

Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.

Пример:

СохранитьЗначение(«СрокИсполненияЗаказа», СрокИсполнения);

СохранитьЗначение(«СкладПоУмолчанию», МестоХранения);

   SupC

4 — 01.09.08 — 14:17

(3) Спасибо =)

   AdApter

5 — 23.09.08 — 10:42

Это конечно здорово, но перебирать несколько десятков реквизитов, думать о типах и пр. — не айс. Есть способ сохранить программно все реквизиты? Например в форме в конфигураторе все такие реквизиты и так выделяются в отдельную закладку «реквизиты». Нет там лишних контролов, рамок, надписей и пр. Как получить ссылку на эту коллекцию и сохранить все разом?

   AdApter

6 — 23.09.08 — 11:05

up

   AdApter

7 — 23.09.08 — 11:11

up2

   Mitriy

8 — 23.09.08 — 11:13

(5) создаешь структуру, обходишь реквизиты через метаданные и заполняешь ее, потом сохраняешь, при открытии обработки получаешь структуру (ВосстановитьЗначение) и заполняешь реквизиты.

   AdApter

9 — 23.09.08 — 11:22

не очень понял. Если структуру заполнять руками через обход метаданных, то зачем она вообще нужна? просто тогда каждый реквизит сохряняй и все. А если ты знаешь как получить готовую структуру в которой лежат только нужные реквизиты, то угости кодом

   MRAK

10 — 23.09.08 — 11:24

(9) обходишь метаданные…

для каждого … из …

   Rovan

11 — 23.09.08 — 11:57

(0) http://www.itland.ru/events/detail.php?ID=1088

В 1С 8.1



Реализован метод глобального контекста СохранитьНастройкиПользователя(), позволяющий сохранять пользовательские настройки в процессе работы, не дожидаясь завершения приложения.

   AdApter

12 — 23.09.08 — 14:11

Примечание:
Важно учитывать, что настройки форм формируются при закрытии формы. Поэтому, для незакрытых окон метод не будет сохранять новые варианты настроек.

попробовал — не прокатило

  

AdApter

13 — 23.09.08 — 14:45

это видимо другие настройки. Типа расположения панелей и пр. лабуда

TurboConf — расширение возможностей Конфигуратора 1С

Чтобы сохранить значения реквизитов внешней обработки нужно использовать КомпоновщикНастроекКомпоновкиДанных.

Создаем в обработке реквизит КомпоновщикНастроекКомпоновкиДанных

В форму обработки вставляем следующий код (Листинг):

#область СохранениеНастроек


&НаСервере
Процедура СохранитьДанныеВНастройках()
Настройки = Новый Соответствие;
ЗаполнитьНастройкиПриСохраненииНаСервере(Настройки);
ХранилищеНастроекДанныхФорм.Сохранить(ЭтаФорма.ИмяФормы,, Настройки);
КонецПроцедуры


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

Если Настройки = Неопределено Тогда
Настройки = Новый Соответствие;
КонецЕсли;

//Сюда вставляем значения реквизитов которые нужно сохранить
//Настройки.Вставить(«», );
//Настройки.Вставить(«», );
//Настройки.Вставить(«», );


//Так сохраняем табличные части
//ТЗт = Новый ТаблицаЗначений;
//ТЗт.Колонки.Добавить(«»);
//ТЗт.Колонки.Добавить(«»);


//Для Каждого СТР ИЗ  Цикл
// НовСтр = ТЗт.Добавить();    
// НовСтр. = СТР.;
// НовСтр. = СТР.;
//КонецЦикла;
//Настройки.Вставить(«ТЗ», ТЗт);

ЗаписьXML = Новый ЗаписьXML();                              
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьНачалоЭлемента(«Отборы»);

СериализоватьОтбор(Объект.Компоновщик.Настройки.Отбор.Элементы, ЗаписьXML);

ЗаписьXML.ЗаписатьКонецЭлемента();
ХранилищеНастроек = ЗаписьXML.Закрыть();

Настройки.Вставить(«Отбор», ХранилищеНастроек);

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


&НаСервере
Процедура  ВосстановитьНастройки(Настройки)
Если ТипЗнч(Настройки) = Тип(«Соответствие») Тогда
//Данной конструкцией востанавливаем реквизиты
//Если Настройки.Получить(«СтатьиЗатрат») <> Неопределено Тогда
//
// СтатьиЗатрат = Настройки.Получить(«СтатьиЗатрат»);
//
//КонецЕсли;

//Этой конструкцией востанавливаем значения табличных частей
//Если Настройки.Получить(«СтатьиЗатрат») <> Неопределено Тогда
//
// Тч.Загрузить(Настройки.Получить(«СтатьиЗатрат»));
//
//КонецЕсли;

КонецЕсли;
КонецПроцедуры


&НаСервере
Процедура  СериализоватьОтбор(пОтбор, ЗаписьXML) Экспорт 

Для Каждого цЭлементОтбора Из пОтбор Цикл

СериализаторXDTO.ЗаписатьXML(ЗаписьXML, цЭлементОтбора);

КонецЦикла;

КонецПроцедуры // СериализоватьОтбор()


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Настройки = ХранилищеНастроекДанныхФорм.Загрузить(ЭтаФорма.ИмяФормы);
ВосстановитьНастройки(Настройки);
КонецПроцедуры


&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
СохранитьДанныеВНастройках();
КонецПроцедуры


#КонецОбласти

Учебный курс: Подготовка на 1С:Специалист по платформе 1С:Предприятие 8.3

Решение задач по управляемым формам – тема № 12:
Как при помощи программного кода организовать сохранение настроек обработки

В платформе существуют штатные механизмы сохранения данных формы. Но не всю информацию, размещенную на форме, можно сохранить при помощи этих механизмов. Иногда приходится разрабатывать программный код со своей логикой сохранения значений.

На аттестации может встретиться подобная задача:

В конфигурации создана обработка ВыгрузкаТоваров. В ней добавлена табличная часть Товары с одним реквизитом Номенклатура.

При закрытии формы обработки необходимо обеспечить сохранение в базе строк, введенных в табличную часть Товары. При открытии формы обработки необходимо восстанавливать сохраненные строки.

В каркасной конфигурации создадим обработку ВыгрузкаТоваров. В окне редактирования обработки на закладке Данные создадим табличную часть Товары с реквизитом Номенклатура (тип – СправочникСсылка.Номенклатура):

Структура обработки «ВыгрузкаТоваров»

Рисунок 1 – Структура обработки «ВыгрузкаТоваров»

Как выбрать оптимальный способ сохранения настроек обработки

Рассмотрим, какими способами можно сохранить настройки обработки.

В свойствах формы обработки установим значение свойства СохранениеДанныхВНастройках в значение «Использовать список». Таким образом включается штатный механизм сохранения данных формы:

Свойство формы обработки «Сохранение данных в настройках»

Рисунок 2 – Свойство формы обработки «Сохранение данных в настройках»

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

Сохранение значений реквизитов формы

Рисунок 3 – Сохранение значений реквизитов формы

Но табличную часть Товары сохранить при помощи такого механизма нельзя, галочки напротив нее не выставляются. Значит, штатный механизм в данном случае использовать не получится, придется создавать свой механизм сохранения данных.

Требуется выбрать, какой именно механизм использовать для сохранения настроек.

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии закрыты

Понравилась статья? Поделить с друзьями:
  • 1с дополнительные реквизиты в конфигураторе
  • Ярмарка выходного дня в митино часы работы
  • 2 я звенигородская улица 13с41 бизнес центр
  • 1с дополнительные реквизиты в свой документ
  • Ярмарка на братиславской замок часы работы