|
Подключение внешней обработки без формы (Управляемые формы) | ☑ | ||
---|---|---|---|---|
0
Wefast
25.06.15
✎
11:40
|
Сделал обработку. Создал форму. Поле в сыбором документа и кнопку. Все работает. Подключил ее к документу и там появилась кнопка. Все ок.
Но как мне весь этот код с модуля формы перенести в модуль объекта. И чтобы при вызове обработки из документа она фоном отрабатывала и выдавала только сообщение, ну и обновляла открытый документ или закрывала его. Вот код модуля объекта: Функция СведенияОВнешнейОбработке() Экспорт ИмяОтчета = ЭтотОбъект.Метаданные().Имя; Синоним = ЭтотОбъект.Метаданные().Синоним; Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОтчета); ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");//может быть – ПечатнаяФорма, ЗаполнениеОбъекта (для вн.обработки), ДополнительныйОтчет, СозданиеСвязанныхОбъектов… ПараметрыРегистрации.Вставить("Наименование", Синоним); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); ПараметрыРегистрации.Вставить("Информация", "Отчет "+Синоним); //так будет выглядеть описание вн.отчета для пользователя //Сведения.Вставить("ВерсияБСП", "1.2.1.4"); // ЕСЛИ это печатная форма //МассивНазначений = Новый Массив; //МассивНазначений.Добавить("Документ.<НаименованиеДокумента>); //ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); // Создадим пустую таблицу команд и колонки в ней Команды = Новый ТаблицаЗначений; // Как будет выглядеть описание печатной формы для пользователя Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); // Имя нашего макета, что бы могли отличить вызванную команду в обработке печати Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); // Тут задается, как должна вызваться команда обработки // Возможные варианты: // - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система // - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки // - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); // Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); // Для печатной формы должен содержать строку ПечатьMXL Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); НоваяКоманда = Команды.Добавить(); НоваяКоманда.Представление = Синоним; НоваяКоманда.Идентификатор = "ЗаменаАналогами"; НоваяКоманда.Использование = "ОткрытиеФормы"; // Для ВПФ "ВызовСерверногоМетода НоваяКоманда.ПоказыватьОповещение = Ложь; НоваяКоманда.Модификатор = ""; //Если ВПФ "ПечатьMXL" ПараметрыРегистрации.Вставить("Команды", Команды); Возврат ПараметрыРегистрации; КонецФункции Вот модуль формы: &НаСервере Процедура ВыполнитьНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказНаПроизводствоМатериалыИУслуги.Ссылка, | ЗаказНаПроизводствоМатериалыИУслуги.НомерСтроки, | ЗаказНаПроизводствоМатериалыИУслуги.Этап, | ЗаказНаПроизводствоМатериалыИУслуги.Склад, | ЗаказНаПроизводствоМатериалыИУслуги.СтатьяКалькуляции, | ВЫБОР | КОГДА ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.Аналог, ""йцу"") = ""йцу"" | ТОГДА ЗаказНаПроизводствоМатериалыИУслуги.ИспользуетсяАвтовыбор | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ИспользуетсяАвтовыбор, | ЗаказНаПроизводствоМатериалыИУслуги.СведенияАвтовыбора, | ЗаказНаПроизводствоМатериалыИУслуги.ПрименениеМатериала, | ЗаказНаПроизводствоМатериалыИУслуги.ПроизводитсяВПроцессе, | ЗаказНаПроизводствоМатериалыИУслуги.СпецификацияПолуфабриката, | ЗаказНаПроизводствоМатериалыИУслуги.ВариантОбеспечения, | ЗаказНаПроизводствоМатериалыИУслуги.ДатаПотребности, | ЗаказНаПроизводствоМатериалыИУслуги.ЗаказатьНаСклад, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязи, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиПродукция, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиЭтапы, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиСпецификация, | ЗаказНаПроизводствоМатериалыИУслуги.Запланировать, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерий, | ЗаказНаПроизводствоМатериалыИУслуги.УказыватьСерии, | ЗаказНаПроизводствоМатериалыИУслуги.Серия, | ЗаказНаПроизводствоМатериалыИУслуги.КодСтроки, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерийОтправитель, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерийПолучатель, | ЗаказНаПроизводствоМатериалыИУслуги.Подразделение, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиЭтапыСтрока, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.Аналог, ЗаказНаПроизводствоМатериалыИУслуги.Номенклатура) КАК Номенклатура, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.ХарактеристикаАналога, ЗаказНаПроизводствоМатериалыИУслуги.Характеристика) КАК Характеристика, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.УпаковкаАналога, ЗаказНаПроизводствоМатериалыИУслуги.Упаковка) КАК Упаковка, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.КоличествоАналога, ЗаказНаПроизводствоМатериалыИУслуги.Количество) КАК Количество, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.КоличествоУпаковокАналога, ЗаказНаПроизводствоМатериалыИУслуги.КоличествоУпаковок) КАК КоличествоУпаковок, | АналогиВПроизводствеСрезПоследних.Аналог |ПОМЕСТИТЬ ВТ_врем |ИЗ | Документ.ЗаказНаПроизводство.МатериалыИУслуги КАК ЗаказНаПроизводствоМатериалыИУслуги | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналогиВПроизводстве.СрезПоследних(&дата, ) КАК АналогиВПроизводствеСрезПоследних | ПО ЗаказНаПроизводствоМатериалыИУслуги.Номенклатура = АналогиВПроизводствеСрезПоследних.Материал |ГДЕ | ЗаказНаПроизводствоМатериалыИУслуги.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_врем.КлючСвязиПродукция, | МИНИМУМ(ВТ_врем.ИспользуетсяАвтовыбор) КАК ИспользуетсяАвтовыбор |ПОМЕСТИТЬ ВТ_врем2 |ИЗ | ВТ_врем КАК ВТ_врем | |СГРУППИРОВАТЬ ПО | ВТ_врем.КлючСвязиПродукция |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_врем.Ссылка, | ВТ_врем.НомерСтроки, | ВТ_врем.Этап, | ВТ_врем.Склад, | ВТ_врем.СтатьяКалькуляции, | ВТ_врем.ИспользуетсяАвтовыбор, | ВТ_врем.СведенияАвтовыбора, | ВТ_врем.ПрименениеМатериала, | ВТ_врем.ПроизводитсяВПроцессе, | ВТ_врем.СпецификацияПолуфабриката, | ВТ_врем.ВариантОбеспечения, | ВТ_врем.ДатаПотребности, | ВТ_врем.ЗаказатьНаСклад, | ВТ_врем.КлючСвязи, | ВТ_врем.КлючСвязиПродукция, | ВТ_врем.КлючСвязиЭтапы, | ВТ_врем.КлючСвязиСпецификация, | ВТ_врем.Запланировать, | ВТ_врем.СтатусУказанияСерий, | ВТ_врем.УказыватьСерии, | ВТ_врем.Серия, | ВТ_врем.КодСтроки, | ВТ_врем.СтатусУказанияСерийОтправитель, | ВТ_врем.СтатусУказанияСерийПолучатель, | ВТ_врем.Подразделение, | ВТ_врем.КлючСвязиЭтапыСтрока, | ВТ_врем.Номенклатура, | ВТ_врем.Характеристика, | ВТ_врем.Упаковка, | ВТ_врем.Количество, | ВТ_врем.КоличествоУпаковок, | ВТ_врем.Аналог |ИЗ | ВТ_врем КАК ВТ_врем |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗаказНаПроизводствоПродукция.Ссылка, | ЗаказНаПроизводствоПродукция.НомерСтроки, | ЗаказНаПроизводствоПродукция.Номенклатура, | ЗаказНаПроизводствоПродукция.Характеристика, | ЗаказНаПроизводствоПродукция.Упаковка, | ЗаказНаПроизводствоПродукция.КоличествоУпаковок, | ЗаказНаПроизводствоПродукция.Количество, | ЗаказНаПроизводствоПродукция.Спецификация, | ЗаказНаПроизводствоПродукция.ДатаПотребности, | ЗаказНаПроизводствоПродукция.НачатьНеРанее, | ЗаказНаПроизводствоПродукция.РазмещениеВыпуска, | ЗаказНаПроизводствоПродукция.Склад, | ЗаказНаПроизводствоПродукция.Подразделение, | ЗаказНаПроизводствоПродукция.Назначение, | ЗаказНаПроизводствоПродукция.ИзмененияЗапрещены, | ЗаказНаПроизводствоПродукция.КодСтроки, | ЗаказНаПроизводствоПродукция.КлючСвязи, | ЗаказНаПроизводствоПродукция.КлючСвязиМатериалыИУслуги, | ЗаказНаПроизводствоПродукция.КлючСвязиПродукция, | ЗаказНаПроизводствоПродукция.ОптимальноеКоличествоПередачиМеждуЭтапами, | ВЫБОР | КОГДА ВТ_врем2.ИспользуетсяАвтовыбор = ЛОЖЬ | ТОГДА 1 | ИНАЧЕ ЗаказНаПроизводствоПродукция.СостояниеСпецификации | КОНЕЦ КАК СостояниеСпецификации, | ЗаказНаПроизводствоПродукция.ЕстьСоответствиеСтандартнойСпецификации, | ЗаказНаПроизводствоПродукция.ГрафикРассчитан |ИЗ | Документ.ЗаказНаПроизводство.Продукция КАК ЗаказНаПроизводствоПродукция | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_врем2 КАК ВТ_врем2 | ПО ЗаказНаПроизводствоПродукция.КлючСвязи = ВТ_врем2.КлючСвязиПродукция |ГДЕ | ЗаказНаПроизводствоПродукция.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("дата", ТекущаяДата()); Запрос.УстановитьПараметр("Ссылка",Объект.СсылкаНаОбъкт); ПакетыЗапросов = Запрос.ВыполнитьПакет(); Результат1 = ПакетыЗапросов[2].Выгрузить(); //Таб значений МатериалыИУслуги заменнная аналогами где можно Результат2 = ПакетыЗапросов[3].Выгрузить(); //таб значений Продукция с имзенением СостояниеСпецификации если у этой продукции изменена спецификация Док = Объект.СсылкаНаОбъкт.ПолучитьОбъект(); ТабЧастьИсходнаяЯ = Док.МатериалыИУслуги.Выгрузить(); ТЧПродукция = Док.Продукция.Выгрузить(); Док.МатериалыИУслуги.Очистить(); Док.МатериалыИУслуги.Загрузить(Результат1); Док.Продукция.Очистить(); Док.Продукция.Загрузить(Результат2); Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); КонецПроцедуры &НаКлиенте Процедура Вып(Команда) ВыполнитьНаСервере(); КонецПроцедуры |
|||
1
Wefast
25.06.15
✎
13:52
|
Оказалось все куда проще. Поставил не Открытие формы а ВызовСерверногоМетода и кинул все в модуль объекта
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |