![]() |
|
Передать параметр период из формы в модуль объекта в запрос. | ☑ | ||
---|---|---|---|---|
0
lirt82
20.07.22
✎
11:15
|
Есть внешняя обработка у нее есть форма, на форме выбор периода, пользователь открывает обработку выбирает период, закрывает форму, опять открывает период выбранный период сохраняется. Дальше встроили эту обработку в базу настроили расписание выполнения, осталась проблема как передать выбранный и сохраненный в настройках период с формы обработки в модуль объекта этой обработки в процедуру где запрос с параметром период.
код формы обработки ///////////////////////////////////////// &НаКлиенте Процедура ВыбратьПериод(Команда) ПараметрыВыбора = Новый Структура("НачалоПериода,КонецПериода", Объект.НачалоПериода, Объект.КонецПериода); ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект); ОткрытьФорму("ОбщаяФорма.ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения); КонецПроцедуры &НаКлиенте Процедура ВыбратьПериодЗавершение(РезультатВыбора, ДопПараметры) Экспорт Если РезультатВыбора = Неопределено Тогда Возврат; КонецЕсли; ЗаполнитьЗначенияСвойств(Объект, РезультатВыбора, "НачалоПериода,КонецПериода"); КонецПроцедуры &НаСервере Процедура СохранитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено) Настройки = Новый Структура; Для Каждого Элем ИЗ Элементы Цикл Если ТипЗнч(Элем) = Тип("ПолеФормы") Тогда Если Объект.Свойство(Элем.Имя) Тогда Настройки.Вставить(Элем.Имя, Объект[Элем.Имя]); Иначе Настройки.Вставить(Элем.Имя, ЭтаФорма[Элем.Имя]); КонецЕсли; КонецЕсли; КонецЦикла; //если пользователя не указать (значение Неопределено), // то настройки будут сохранены для ТЕКУЩЕГО пользователя ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки,, Пользователь); КонецПроцедуры &НаСервере Процедура ВосстановитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено) СтруктураНастроек = Неопределено; Попытка СтруктураНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта,КлючНастроек, ,Пользователь); // если настроек нет, то будет возвращено значение "Неопределено" Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Если СтруктураНастроек <> Неопределено Тогда Для Каждого Настройка Из СтруктураНастроек Цикл Если Объект.Свойство(Настройка.Ключ) Тогда Объект[Настройка.Ключ] = Настройка.Значение; Иначе ЭтаФорма[Настройка.Ключ] = Настройка.Значение; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры &НаСервере Процедура УдалитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено) //Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); ХранилищеОбщихНастроек.Удалить(КлючОбъекта, КлючНастроек, Пользователь); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Настройки " + КлючОбъекта + " для " + Пользователь + " удалены."; Сообщение.Сообщить(); КонецПроцедуры модуль объекта этой обработки //////////////////////////////////// Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.0.0.0"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(); ПараметрыРегистрации.БезопасныйРежим = Ложь; ПараметрыРегистрации.Версия = "1.0"; НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = "Обработать документы"; НоваяКоманда.Идентификатор = НоваяКоманда.Представление; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); Возврат ПараметрыРегистрации; КонецФункции Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды = Неопределено) Экспорт Если ИдентификаторКоманды = "Обработать документы" Тогда ОбработатьДоки(); КонецЕсли; КонецФункции &НаСервере Процедура ОбработатьДоки() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗакрытиеМесяца.Ссылка КАК ДокЗакрытия |ИЗ | Документ.ЗакрытиеМесяца КАК ЗакрытиеМесяца |ГДЕ | НЕ ЗакрытиеМесяца.ПометкаУдаления | И ЗакрытиеМесяца.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | |УПОРЯДОЧИТЬ ПО | ЗакрытиеМесяца.Дата"; Запрос.УстановитьПараметр("ДатаНачала", ЭтотОбъект.НачалоПериода); //как передать сохраненное значение периода из формы Запрос.УстановитьПараметр("ДатаОкончания", ЭтотОбъект.КонецПериода); //как передать сохраненное значение периода из формы РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Попытка ДокОбъект = ВыборкаДетальныеЗаписи.ДокЗакрытия.ПолучитьОбъект(); ДокОбъект.Записать(РежимЗаписиДокумента.Проведение); Исключение ТекстОшибки = ОписаниеОшибки(); ЗаписьЖурналаРегистрации("Обработка документов ""Закрытие месяца"" (регл. задание)", УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки); КонецПопытки; КонецЦикла; КонецПроцедуры |
|||
1
lirt82
20.07.22
✎
11:56
|
(0) проблема решена, после выбора периода пользователем в доп свойства доков устанавливается признак, и в запросе это признак считывается:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |