Выбор операции через форму выбора (ОбработкаПолученияФормы)

Модуль менеджера

Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)

Если ВидФормы <> "ФормаДокумента"

И ВидФормы <> "ФормаОбъекта" Тогда

Возврат;

КонецЕсли;

ВидОперации = Неопределено;

Если Параметры.Свойство("Ключ") И ЗначениеЗаполнено(Параметры.Ключ) Тогда

ВидОперации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.Ключ, "ВидОперации");

КонецЕсли;

// Если документ копируется, то вид операции получаем из копируемого документа.

Если НЕ ЗначениеЗаполнено(ВидОперации) Тогда

Если Параметры.Свойство("ЗначениеКопирования")

И ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда

ВидОперации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(

Параметры.ЗначениеКопирования, "ВидОперации");

КонецЕсли;

КонецЕсли;

Если НЕ ЗначениеЗаполнено(ВидОперации) Тогда

Если Параметры.Свойство("ЗначенияЗаполнения")

И ТипЗнч(Параметры.ЗначенияЗаполнения) = Тип("Структура") Тогда

Если Параметры.ЗначенияЗаполнения.Свойство("ВидОперации") Тогда

ВидОперации = Параметры.ЗначенияЗаполнения.ВидОперации;

КонецЕсли;

КонецЕсли;

КонецЕсли;

СтандартнаяОбработка = Ложь;

Если ВидОперации = Неопределено Тогда

ВыбраннаяФорма = "ФормаВыбораВидаОперации";

Иначе

ВыбраннаяФорма = "ФормаДокумента";

КонецЕсли;

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

Форма выбора операций

- Команда ОткрытьДокумент

Модульформы выбора

////////////////////////////////////////////////////////////////////////////////

// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ

&НаСервере

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

Если Параметры.Ключ.Пустая() Тогда

ПодготовитьФормуНаСервере();

КонецЕсли;

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

&НаСервере

Процедура ПриЧтенииНаСервере(ТекущийОбъект)

ПодготовитьФормуНаСервере();

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

////////////////////////////////////////////////////////////////////////////////

// ОБРАБОТЧИКИ КОМАНД ФОРМЫ

&НаКлиенте

Процедура ОткрытьДокумент(Команда)

СтрокаТаблицы = Элементы.СписокВидовОпераций.ТекущиеДанные;

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

ОткрытьДокументВида(СтрокаТаблицы.Значение);

КонецЕсли;

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

////////////////////////////////////////////////////////////////////////////////

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

&НаСервере

Процедура ПодготовитьФормуНаСервере()

ЗначениеКопирования = Параметры.ЗначениеКопирования;

ЗначенияЗаполнения = Параметры.ЗначенияЗаполнения;

Основание = Параметры.Основание;

Параметры.ЗначениеКопирования = Неопределено;

Параметры.ЗначенияЗаполнения = Неопределено;

Параметры.Основание = Неопределено;

ФормыДокумента = Новый ФиксированноеСоответствие(

Документы.РеализацияТоваровУслуг.ПолучитьСоответствиеВидовОперацийФормам());

ВидыОпераций = ПолучитьСписокВидовОпераций();

Для Каждого ВидОперации Из ВидыОпераций Цикл

НоваяОперация = СписокВидовОпераций.Добавить();

ЗаполнитьЗначенияСвойств(НоваяОперация, ВидОперации);

КонецЦикла;

Если ЗначениеЗаполнено(Объект.ВидОперации) Тогда

ВыделенныйЭлементСписка = СписокВидовОпераций.НайтиПоЗначению(Объект.ВидОперации);

Если ВыделенныйЭлементСписка <> Неопределено Тогда

Элементы.СписокВидовОпераций.ТекущаяСтрока = ВыделенныйЭлементСписка.ПолучитьИдентификатор();

КонецЕсли;

КонецЕсли;

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

&НаСервереБезКонтекста

Функция ПолучитьСписокВидовОпераций()

СписокВидовОпераций = Новый СписокЗначений;

ВсеВидыОпераций = Перечисления.ВидыОперацийЗаявкаНаЗакупку;

Для каждого ЗначПеречисления Из Метаданные.Перечисления.ВидыОперацийЗаявкаНаЗакупку.ЗначенияПеречисления Цикл

СписокВидовОпераций.Добавить(ЗначПеречисления.Имя, ЗначПеречисления.Синоним);

КонецЦикла;

Возврат СписокВидовОпераций;

КонецФункции

&НаКлиенте

Процедура СписокВидовОперацийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СтрокаТаблицы = СписокВидовОпераций.НайтиПоИдентификатору(ВыбраннаяСтрока);

ОткрытьДокументВида(СтрокаТаблицы.Значение);

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

&НаКлиенте

Процедура ОткрытьДокументВида(ВыбранныйВидОперации)

ЗначенияЗаполнения.Вставить("ВидОперации", ВыбранныйВидОперации);

СтруктураПараметров = Новый Структура;

СтруктураПараметров.Вставить("Ключ", Параметры.Ключ);

СтруктураПараметров.Вставить("ЗначениеКопирования", ЗначениеКопирования);

СтруктураПараметров.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);

СтруктураПараметров.Вставить("Основание", Основание);

Модифицированность = Ложь;

Закрыть();

ОткрытьФорму("Документ.ЗаявкаНаЗакупку.Форма.ФормаДокумента", СтруктураПараметров, ВладелецФормы);

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

Форма документа

- ПриСозданииНаСервере

// при создании нового

Если НЕ ЗначениеЗаполнено(Объект.ВидОперации) Тогда

Если Параметры.Свойство("ЗначенияЗаполнения") И ТипЗнч(Параметры.ЗначенияЗаполнения) = Тип("Структура") Тогда

Если Параметры.ЗначенияЗаполнения.Свойство("ВидОперации") Тогда

Если ЗначениеЗаполнено( Параметры.ЗначенияЗаполнения.ВидОперации) Тогда

ИмяПеречисления = Метаданные.Перечисления.рг_ВидыОперацииПеремещениеОСУпр.ЗначенияПеречисления.Найти(Параметры.ЗначенияЗаполнения.ВидОперации).Имя;

Объект.ВидОперации = Перечисления.рг_ВидыОперацииПеремещениеОСУпр[ИмяПеречисления];

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЕсли;