Как из одной формы внешней обработки открыть другую форму этой же обработки и при закрытии вернуть результат?

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. IvanAlekseev 77 04.06.15 13:24 Сейчас в теме
Пробовал так:
&НаКлиенте
Процедура ВыбратьПериод(Команда)
	
	ПараметрыВыбора = Новый Структура("НачалоПериода,КонецПериода", Отчет.ДатаНачала, Отчет.ДатаОкончания);
	ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
	
	ОткрытьФорму("ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения); //ОШИБКА: НЕИЗВЕСТНОЕ ИМЯ ФОРМЫ

КонецПроцедуры
Показать


Пробовал на сервере из объекта получить форму- интерактивные операции запрещены...

Как сделать (уже замучился)?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
2. Boneman 298 04.06.15 13:28 Сейчас в теме
(1) IvanAlekseev,
ОткрытьФорму("ВыборСтандартногоПериода", Пар

имя формы явно некорректное,
там должно быть что-то вроде
ОткрытьФорму("ВнешняяОбработка.ИмяОбработки.Форма.ВыборСтандартногоПериода", Пар
serko8547; О.Ж; AnderWonder; KirinaAS; zoikins; adhocprog; MrBukas; i.c.h; bobah_; alevnev; +10 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 04.06.15 13:28 Сейчас в теме
(1) IvanAlekseev,
ОткрытьФорму("ВыборСтандартногоПериода", Пар

имя формы явно некорректное,
там должно быть что-то вроде
ОткрытьФорму("ВнешняяОбработка.ИмяОбработки.Форма.ВыборСтандартногоПериода", Пар
serko8547; О.Ж; AnderWonder; KirinaAS; zoikins; adhocprog; MrBukas; i.c.h; bobah_; alevnev; +10 Ответить
4. IvanAlekseev 77 04.06.15 14:02 Сейчас в теме
(2) + (3), так можно делать только для подключенных внешних обработок:

СП:

ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)
...
При этом внешний отчет или обработка должны быть предварительно зарегистрированы в системе с помощью метода Подключить или Подключить соответственно.


СП:
Подключить(<Путь>, <Имя>, <БезопасныйРежим>)
Параметры:

<Путь> (обязательный)
Тип: Строка.
Ссылка на реквизит объекта конфигурации, который содержит данные внешней обработки.


Так что нужен какой-то реквизит объекта конфигурации и обработка становится неуниверсальной.
5. dj_serega 392 04.06.15 14:07 Сейчас в теме
(4) IvanAlekseev,
обработка становится неуниверсальной.

А в (1) про универсальность ни слова ;)
Попросил же пример вызова ОписаниеОповещения() я и выложил рабочий код ;)
7. Boneman 298 04.06.15 14:18 Сейчас в теме
(4) IvanAlekseev, что-то я не догоняю. Все там должно работать.
Я метод подключить использовал только тогда, когда программно из файла обработку открывал в базе. А когда ты ее открываешь через файл-открыть, она уже подключена должна быть.
Можешь свою обработку сюда выложить ?
3. dj_serega 392 04.06.15 13:29 Сейчас в теме
(1) IvanAlekseev,
Форма1
&НаКлиенте
Процедура ПросмотретьТаблицуИсключений(Команда)
	
	ОткрытьФорму("Обработка.АнализРезультатаОбменаДанных.Форма.ФормаТаблицыИсключений", Новый Структура("АдресТаблицыИсключений", ВыгрузитьТаблицуИсключенийВХранилище()), ЭтотОбъект,,,,
					Новый ОписаниеОповещения("ПросмотретьТаблицуИсключенийЗавершение", ЭтотОбъект));
	
КонецПроцедуры

&НаКлиенте
Процедура ПросмотретьТаблицуИсключенийЗавершение(Результат, ДополнительныеПараметры) Экспорт 
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если Не ЭтоАдресВременногоХранилища(Результат) Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось получить измененную таблицу изменений.",,,,, УникальныйИдентификатор);
		Возврат;
	КонецЕсли;
	
	ВыгрузитьТаблицуИсключенийСХранилища(Результат);
	
КонецПроцедуры // ПросмотретьТаблицуИсключенийЗавершение
Показать

Форма2
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если ЭтоАдресВременногоХранилища(Параметры.АдресТаблицыИсключений) Тогда
		
		ВыгрузитьТаблицуИсключенийСХранилища(Параметры.АдресТаблицыИсключений);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьСИзменениями(Команда)
	
	Закрыть(ВыгрузитьТаблицуИсключенийВХранилище());
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьБезИзменений(Команда)
	
	Закрыть();
	
КонецПроцедуры
Показать
6. ong1990 3 04.06.15 14:15 Сейчас в теме
Данный код работает в моей обработке

По кнопке отрываете нужную Вам форму(с параметрами)
&НаКлиенте
Процедура ПроверитьТЧ(Команда)
	
	ПараметрыНовойФормы =  Новый Структура;
	ПараметрыНовойФормы.Вставить("Масс", Масс);
	ОткрытьФорму("ВнешняяОбработка.Обработка.Форма.Форма2",ПараметрыНовойФормы);
	
КонецПроцедуры
Показать

Затем в модуле втрой формы
НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;	
			
	Если ТипЗнч(Параметры.Масс)=Тип("Массив") тогда
	Для Каждого  Элемент из Параметры.Масс Цикл
		НоваяСтрока=Объект.НоменклатураСравнение.Добавить();
	НоваяСтрока.Сравнение=Элемент;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать

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

&НаСервере
Функция  ПеренестиНаСервере()
Массив=Новый Массив;
для каждого стр из Объект.НоменклатураСравнение цикл
	          Массив.Добавить(стр.Номенклатура);

		  КонецЦикла;
Возврат Массив; 
КонецФункции 
Показать

После этого в модуле первой формы создаете Процедуру "ОбработкаОповещения"
НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	НазваниеСобытия = "ПеренестиНоменклатуру";
	Если ИмяСобытия = НазваниеСобытия Тогда
		ОповещениеНаСервере(Параметр);
	КонецЕсли;
	
	
КонецПроцедуры

&НаСервере
Процедура ОповещениеНаСервере(параметр)	
	    
	колво = Параметр.Количество();    
	i = 0;
	Для каждого стр из объект.Товары цикл
		если НЕ ЗначениеЗаполнено(стр.Номенклатура) Тогда 
			Если i = Колво Тогда
				Прервать;
			Иначе
				Стр.номенклатура= Справочники.Номенклатура.НайтиПоНаименованию(Параметр.Получить(i));
				i = i + 1;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла; 
	
КонецПроцедуры
Показать
mdbm; user824466; +2 Ответить
8. IvanAlekseev 77 04.06.15 14:22 Сейчас в теме
(6) ong1990, у меня практически такой же код отрабатывает с ошибкой:

&НаКлиенте
Процедура ВыбратьПериод(Команда)
    
   ПараметрыВыбора = Новый Структура("НачалоПериода,КонецПериода", Отчет.ДатаНачала, Отчет.ДатаОкончания);
	ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
	ОткрытьФорму("ВнешняяОбработка.ТотальнаяСверкаДвиженийДокументов.Форма.ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения);

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


Ошибка:
{Форма.ФормаОтчета.Форма(1204)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("ВнешняяОбработка.ТотальнаяСверкаДвиженийДокументов.Форма.ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения);
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ТотальнаяСверкаДвиженийДокументов.Форма.ВыборСтандартногоПериода"
9. dj_serega 392 04.06.15 14:23 Сейчас в теме
(8) IvanAlekseev, А форма с таким именем точно естЬ? :)
11. IvanAlekseev 77 04.06.15 14:24 Сейчас в теме
(9) dj_serega, на диске есть, а в 1с она не зарегистрирована. И надо избежать регистрации: это делает форму неуниверсальной.
13. Boneman 298 04.06.15 14:27 Сейчас в теме
(11) IvanAlekseev,
что ты уперся в регистрацию !
Проблема не в ней, а в неправильно имени формы.
Напиши "ВнешнийОтчет.ИмяОтчета.Форма.ИмяФормы"

или выкладывай сюда, быстрее самому сделать, чем обьяснять
IvanAlekseev; +1 Ответить
12. Boneman 298 04.06.15 14:25 Сейчас в теме
(8) IvanAlekseev,
Форма.ФормаОтчета.Форма(1204)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("ВнешняяОбработка.Тотал


тут даже по ошибке видно,
у тебя внешний отчет, а имя формы ты пихаешь как внешняяобработка !!!

Ты пользуйся контекстной подсказкой-то, оно помогает без ошибок заполнять такие реквизиты
10. IvanAlekseev 77 04.06.15 14:23 Сейчас в теме
14. IvanAlekseev 77 04.06.15 14:33 Сейчас в теме
Робя, я лошара! Я для внешнего отчета писал "ВнешняяОбработка" :)

Boneman, лови бакс за истязание твоего мозга :)
16. dj_serega 392 04.06.15 14:35 Сейчас в теме
(14) IvanAlekseev, Нужно срочно разработать функционал для нескольких правильных ответов :)
15. JBoy 2 04.06.15 14:34 Сейчас в теме
Форма1
&НаКлиенте
Процедура ИзменитьКоличествоСПомощьюКалькулятора(Команда)
	
	ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		Оповещение = Новый ОписаниеОповещения("ИзменитьКоличествоСПомощьюКалькулятораЗавершение", ЭтаФорма);
		
		СтруктураПараметров = Новый Структура("Услуга, Количество, Цена, Сумма, ПроцентСкидкиНаценки", 
			ТекущиеДанные.Услуга, 
			ТекущиеДанные.Количество, 
			ТекущиеДанные.Цена,
			ТекущиеДанные.Сумма,
			ТекущиеДанные.ПроцентСкидкиНаценки);
			
		ОткрытьФорму("ВнешняяОбработка.АРМ_Сервис.Форма.ФормаВводаКоличества", СтруктураПараметров,,,,,Оповещение);
	Иначе
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не выбрана строка!";
		Сообщение.Поле = "Объект.Услуги";
		Сообщение.Сообщить();
	КонецЕсли;
	
КонецПроцедуры
Показать

Форма2
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	КоличествоСимволовПослеЗапятой = 3;
	
	Услуга  = Параметры.Услуга;
	Количество = Параметры.Количество;
	Цена = Параметры.Цена;
	Сумма = Параметры.Сумма;
	ПроцентСкидкиНаценки = Параметры.ПроцентСкидкиНаценки;
	
	// Установка сочетания клавиш
	Для Сч = 0 По 9 Цикл
		Элементы["Кнопка"+Сч].СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша["Num"+Сч]);
	КонецЦикла;
	Элементы.РазделительДробнойЧасти.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.NumDecimal);
	Элементы.Сбросить.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.BackSpace);
	
КонецПроцедуры

// Процедура - обработчик команды ОК формы.
//
&НаКлиенте
Процедура ОК(Команда)
	
	ПараметрыЗакрытия = Новый Структура("Количество", Количество);
	Закрыть(ПараметрыЗакрытия);
	
КонецПроцедуры

Показать

Код рабочий...Можно поглядеть в УНФ, Документ ЧекККМ
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот