0. dsdred 1217 29.07.19 09:30 Сейчас в теме

БСП: Дополнительные отчеты и обработки - одна обработка, несколько форм

Как в одной дополнительной обработке разместить несколько форм с типом команды "ОткрытиеФормы"?

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. A_Max 17 29.07.19 13:53 Сейчас в теме
Первым в голову пришёл именно второй вариант с формой маршрутизатором, ничего крамольного в нём не вижу.
fvadim; eden_gmail; ltfriend; +3 Ответить
2. dsdred 1217 29.07.19 13:57 Сейчас в теме
(1)Ну не знаю, мне как то не по душе ))
3. A_Max 17 29.07.19 15:12 Сейчас в теме
(2) До того как появилась возможность переопределения форм (ОбработкаПолученияФормы) в типовых конфигурациях повсеместно использовалось для документов.
4. KazanKokos 8 30.07.19 09:38 Сейчас в теме
помню форму sbis - отчетности для УТ11.2 построенную на формах вроде по такому же алгоритму. Помню был гимор. Сам считаю что стиль это как нотация - привыкаешь к стилю типовых 1Сок и не паришься не выдумываешь всякую фигню :)
5. ltfriend 401 30.07.19 10:31 Сейчас в теме
Именно второй вариант первый и приходит на ум, вместо того, чтобы лезть и менять код БСП. Что в нём извращённого? Только я использовал бы тип команды "Вызов клиентского метода". Тогда в модуле основной формы достаточно одной процедуры вместо двух ("ПриСозданииНаСервере" и "ПриОткрытии").
Создаётся пустая форма без всяких реквизитов и параметров и в модуле этой формы прописывается код:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
    НазваниеФормы = ПолучитьФормуПоИндентификатору(ИдентификаторКоманды);
    ОткрытьФорму(НазваниеФормы);
КонецПроцедуры
SlavaKron; A_Max; +2 Ответить
6. dsdred 1217 30.07.19 13:03 Сейчас в теме
(5)мне честно говорю не очень нравится ))

Я сделал
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
		
	НазваниеФормы = ПолучитьФормуПоИндентификатору(Параметры.ИдентификаторКоманды);	

	//Если нужны еще параметры дописываем тут
	ПараметрыОбработки = Новый Структура("ИдентификаторКоманды, ДополнительнаяОбработкаСсылка, ИмяФормы, КлючСессии");
	ПараметрыОбработки.ИдентификаторКоманды          = Параметры.ИдентификаторКоманды;
	ПараметрыОбработки.ДополнительнаяОбработкаСсылка = Параметры.ДополнительнаяОбработкаСсылка;
	ПараметрыОбработки.ИмяФормы   = Параметры.ИмяФормы;
	ПараметрыОбработки.КлючСессии = Параметры.КлючСессии;
		
КонецПроцедуры
Показать
и
ОткрытьФорму(НазваниеФормы, ПараметрыОбработки,ВладелецФормы);


Чтобы полностью имитировать Процедура ВыполнитьОткрытиеФормыОбработки

Процедура ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, Форма, ОбъектыНазначения) Экспорт
	ПараметрыОбработки = Новый Структура("ИдентификаторКоманды, ДополнительнаяОбработкаСсылка, ИмяФормы, КлючСессии");
	ПараметрыОбработки.ИдентификаторКоманды          = ВыполняемаяКоманда.Идентификатор;
	ПараметрыОбработки.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка;
	ПараметрыОбработки.ИмяФормы                      = ?(Форма = Неопределено, Неопределено, Форма.ИмяФормы);
	ПараметрыОбработки.КлючСессии = ВыполняемаяКоманда.Ссылка.УникальныйИдентификатор();

//...

	ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОбработки, Форма);

//...
Показать


Но еще раз повторюсь, решение мне не нравится. Но это сугубо мое ощущение.
7. Cyberhawk 113 24.09.19 16:38 Сейчас в теме
Если вместо "Закрыть" взводить отказ, то заметного глазу мелькания формы распределения быть не должно
8. dsdred 1217 24.09.19 21:34 Сейчас в теме
(7)Согласен, можно так:
//Закрываем форму "ФормаРаспределения"
//Закрыть();
Отказ = Истина;
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Ведущий программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 130 000 руб. до 200 000 руб.
Полный день

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день

Программист 1C
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день