Выбор операции через форму выбора (ОбработкаПолученияФормы)
Модуль менеджера
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ВидФормы <> "ФормаДокумента"
И ВидФормы <> "ФормаОбъекта" Тогда
Возврат;
КонецЕсли;
ВидОперации = Неопределено;
Если Параметры.Свойство("Ключ") И ЗначениеЗаполнено(Параметры.Ключ) Тогда
ВидОперации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.Ключ, "ВидОперации");
КонецЕсли;
// Если документ копируется, то вид операции получаем из копируемого документа.
Если НЕ ЗначениеЗаполнено(ВидОперации) Тогда
Если Параметры.Свойство("ЗначениеКопирования")
И ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
ВидОперации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Параметры.ЗначениеКопирования, "ВидОперации");
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ВидОперации) Тогда
Если Параметры.Свойство("ЗначенияЗаполнения")
И ТипЗнч(Параметры.ЗначенияЗаполнения) = Тип("Структура") Тогда
Если Параметры.ЗначенияЗаполнения.Свойство("ВидОперации") Тогда
ВидОперации = Параметры.ЗначенияЗаполнения.ВидОперации;
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Если ВидОперации = Неопределено Тогда
ВыбраннаяФорма = "ФормаВыбораВидаОперации";
Иначе
ВыбраннаяФорма = "ФормаДокумента";
КонецЕсли;
КонецПроцедуры
Форма выбора операций
- Команда ОткрытьДокумент
Модульформы выбора
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Ключ.Пустая() Тогда
ПодготовитьФормуНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ПодготовитьФормуНаСервере();
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОМАНД ФОРМЫ
&НаКлиенте
Процедура ОткрытьДокумент(Команда)
СтрокаТаблицы = Элементы.СписокВидовОпераций.ТекущиеДанные;
Если НЕ СтрокаТаблицы = Неопределено Тогда
ОткрытьДокументВида(СтрокаТаблицы.Значение);
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
&НаСервере
Процедура ПодготовитьФормуНаСервере()
ЗначениеКопирования = Параметры.ЗначениеКопирования;
ЗначенияЗаполнения = Параметры.ЗначенияЗаполнения;
Основание = Параметры.Основание;
Параметры.ЗначениеКопирования = Неопределено;
Параметры.ЗначенияЗаполнения = Неопределено;
Параметры.Основание = Неопределено;
ФормыДокумента = Новый ФиксированноеСоответствие(
Документы.РеализацияТоваровУслуг.ПолучитьСоответствиеВидовОперацийФормам());
ВидыОпераций = ПолучитьСписокВидовОпераций();
Для Каждого ВидОперации Из ВидыОпераций Цикл
НоваяОперация = СписокВидовОпераций.Добавить();
ЗаполнитьЗначенияСвойств(НоваяОперация, ВидОперации);
КонецЦикла;
Если ЗначениеЗаполнено(Объект.ВидОперации) Тогда
ВыделенныйЭлементСписка = СписокВидовОпераций.НайтиПоЗначению(Объект.ВидОперации);
Если ВыделенныйЭлементСписка <> Неопределено Тогда
Элементы.СписокВидовОпераций.ТекущаяСтрока = ВыделенныйЭлементСписка.ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСписокВидовОпераций()
СписокВидовОпераций = Новый СписокЗначений;
ВсеВидыОпераций = Перечисления.ВидыОперацийЗаявкаНаЗакупку;
Для каждого ЗначПеречисления Из Метаданные.Перечисления.ВидыОперацийЗаявкаНаЗакупку.ЗначенияПеречисления Цикл
СписокВидовОпераций.Добавить(ЗначПеречисления.Имя, ЗначПеречисления.Синоним);
КонецЦикла;
Возврат СписокВидовОпераций;
КонецФункции
&НаКлиенте
Процедура СписокВидовОперацийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтрокаТаблицы = СписокВидовОпераций.НайтиПоИдентификатору(ВыбраннаяСтрока);
ОткрытьДокументВида(СтрокаТаблицы.Значение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДокументВида(ВыбранныйВидОперации)
ЗначенияЗаполнения.Вставить("ВидОперации", ВыбранныйВидОперации);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Ключ", Параметры.Ключ);
СтруктураПараметров.Вставить("ЗначениеКопирования", ЗначениеКопирования);
СтруктураПараметров.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
СтруктураПараметров.Вставить("Основание", Основание);
Модифицированность = Ложь;
Закрыть();
ОткрытьФорму("Документ.ЗаявкаНаЗакупку.Форма.ФормаДокумента", СтруктураПараметров, ВладелецФормы);
КонецПроцедуры
Форма документа
- ПриСозданииНаСервере
// при создании нового
Если НЕ ЗначениеЗаполнено(Объект.ВидОперации) Тогда
Если Параметры.Свойство("ЗначенияЗаполнения") И ТипЗнч(Параметры.ЗначенияЗаполнения) = Тип("Структура") Тогда
Если Параметры.ЗначенияЗаполнения.Свойство("ВидОперации") Тогда
Если ЗначениеЗаполнено( Параметры.ЗначенияЗаполнения.ВидОперации) Тогда
ИмяПеречисления = Метаданные.Перечисления.рг_ВидыОперацииПеремещениеОСУпр.ЗначенияПеречисления.Найти(Параметры.ЗначенияЗаполнения.ВидОперации).Имя;
Объект.ВидОперации = Перечисления.рг_ВидыОперацииПеремещениеОСУпр[ИмяПеречисления];
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;