Как из одной формы внешней обработки открыть другую форму этой же обработки и при закрытии вернуть результат?
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Пробовал так:
Пробовал на сервере из объекта получить форму- интерактивные операции запрещены...
Как сделать (уже замучился)?
&НаКлиенте
Процедура ВыбратьПериод(Команда)
ПараметрыВыбора = Новый Структура("НачалоПериода,КонецПериода", Отчет.ДатаНачала, Отчет.ДатаОкончания);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
ОткрытьФорму("ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения); //ОШИБКА: НЕИЗВЕСТНОЕ ИМЯ ФОРМЫ
КонецПроцедуры
ПоказатьПробовал на сервере из объекта получить форму- интерактивные операции запрещены...
Как сделать (уже замучился)?
По теме из базы знаний
- Передача реквизитов объекта из основной формы в дополнительную и обратно на управляемых формах
- Как быстро развернуть автоматическую линию проверки своего решения на 1С, затратив 8 часов и получив выигрыш в 1 человеко/месяц
- Мастер-класс SonarQube. В омут с головой
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
- Интегрируй это
Найденные решения
(1) IvanAlekseev,
имя формы явно некорректное,
там должно быть что-то вроде
ОткрытьФорму("ВыборСтандартногоПериода", Пар
имя формы явно некорректное,
там должно быть что-то вроде
ОткрытьФорму("ВнешняяОбработка.ИмяОбработки.Форма.ВыборСтандартногоПериода", Пар
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) IvanAlekseev,
имя формы явно некорректное,
там должно быть что-то вроде
ОткрытьФорму("ВыборСтандартногоПериода", Пар
имя формы явно некорректное,
там должно быть что-то вроде
ОткрытьФорму("ВнешняяОбработка.ИмяОбработки.Форма.ВыборСтандартногоПериода", Пар
(2) + (3), так можно делать только для подключенных внешних обработок:
СП:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)
...
При этом внешний отчет или обработка должны быть предварительно зарегистрированы в системе с помощью метода Подключить или Подключить соответственно.
СП:
Так что нужен какой-то реквизит объекта конфигурации и обработка становится неуниверсальной.
СП:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)
...
При этом внешний отчет или обработка должны быть предварительно зарегистрированы в системе с помощью метода Подключить или Подключить соответственно.
СП:
Подключить(<Путь>, <Имя>, <БезопасныйРежим>)
Параметры:
<Путь> (обязательный)
Тип: Строка.
Ссылка на реквизит объекта конфигурации, который содержит данные внешней обработки.
Параметры:
<Путь> (обязательный)
Тип: Строка.
Ссылка на реквизит объекта конфигурации, который содержит данные внешней обработки.
Так что нужен какой-то реквизит объекта конфигурации и обработка становится неуниверсальной.
(4) IvanAlekseev, что-то я не догоняю. Все там должно работать.
Я метод подключить использовал только тогда, когда программно из файла обработку открывал в базе. А когда ты ее открываешь через файл-открыть, она уже подключена должна быть.
Можешь свою обработку сюда выложить ?
Я метод подключить использовал только тогда, когда программно из файла обработку открывал в базе. А когда ты ее открываешь через файл-открыть, она уже подключена должна быть.
Можешь свою обработку сюда выложить ?
(1) IvanAlekseev,
Форма1
Форма2
Форма1
&НаКлиенте
Процедура ПросмотретьТаблицуИсключений(Команда)
ОткрытьФорму("Обработка.АнализРезультатаОбменаДанных.Форма.ФормаТаблицыИсключений", Новый Структура("АдресТаблицыИсключений", ВыгрузитьТаблицуИсключенийВХранилище()), ЭтотОбъект,,,,
Новый ОписаниеОповещения("ПросмотретьТаблицуИсключенийЗавершение", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ПросмотретьТаблицуИсключенийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЭтоАдресВременногоХранилища(Результат) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось получить измененную таблицу изменений.",,,,, УникальныйИдентификатор);
Возврат;
КонецЕсли;
ВыгрузитьТаблицуИсключенийСХранилища(Результат);
КонецПроцедуры // ПросмотретьТаблицуИсключенийЗавершение
ПоказатьФорма2
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЭтоАдресВременногоХранилища(Параметры.АдресТаблицыИсключений) Тогда
ВыгрузитьТаблицуИсключенийСХранилища(Параметры.АдресТаблицыИсключений);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьСИзменениями(Команда)
Закрыть(ВыгрузитьТаблицуИсключенийВХранилище());
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьБезИзменений(Команда)
Закрыть();
КонецПроцедуры
Показать
Данный код работает в моей обработке
По кнопке отрываете нужную Вам форму(с параметрами)
Затем в модуле втрой формы
потом в той же (второй форме)
создаете кнопку для возврата результата
После этого в модуле первой формы создаете Процедуру "ОбработкаОповещения"
По кнопке отрываете нужную Вам форму(с параметрами)
&НаКлиенте
Процедура ПроверитьТЧ(Команда)
ПараметрыНовойФормы = Новый Структура;
ПараметрыНовойФормы.Вставить("Масс", Масс);
ОткрытьФорму("ВнешняяОбработка.Обработка.Форма.Форма2",ПараметрыНовойФормы);
КонецПроцедуры
ПоказатьЗатем в модуле втрой формы
НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
Если ТипЗнч(Параметры.Масс)=Тип("Массив") тогда
Для Каждого Элемент из Параметры.Масс Цикл
НоваяСтрока=Объект.НоменклатураСравнение.Добавить();
НоваяСтрока.Сравнение=Элемент;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показатьпотом в той же (второй форме)
создаете кнопку для возврата результата
&НаКлиенте
Процедура Перенести(Команда)
НазваниеСобытия = "ПеренестиНоменклатуру";
ИмяСобытия = НазваниеСобытия;
ПараметрВызова = ПеренестиНаСервере();
ФормаИсточник = "ВнешняяОбработка.АнализПрайсаПоставщика.Форма.Форма";
Оповестить(ИмяСобытия,ПараметрВызова,ФормаИсточник);
Закрыть();
КонецПроцедуры
&НаСервере
Функция ПеренестиНаСервере()
Массив=Новый Массив;
для каждого стр из Объект.НоменклатураСравнение цикл
Массив.Добавить(стр.Номенклатура);
КонецЦикла;
Возврат Массив;
КонецФункции
ПоказатьПосле этого в модуле первой формы создаете Процедуру "ОбработкаОповещения"
НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
НазваниеСобытия = "ПеренестиНоменклатуру";
Если ИмяСобытия = НазваниеСобытия Тогда
ОповещениеНаСервере(Параметр);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОповещениеНаСервере(параметр)
колво = Параметр.Количество();
i = 0;
Для каждого стр из объект.Товары цикл
если НЕ ЗначениеЗаполнено(стр.Номенклатура) Тогда
Если i = Колво Тогда
Прервать;
Иначе
Стр.номенклатура= Справочники.Номенклатура.НайтиПоНаименованию(Параметр.Получить(i));
i = i + 1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(6) ong1990, у меня практически такой же код отрабатывает с ошибкой:
Ошибка:
&НаКлиенте
Процедура ВыбратьПериод(Команда)
ПараметрыВыбора = Новый Структура("НачалоПериода,КонецПериода", Отчет.ДатаНачала, Отчет.ДатаОкончания);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
ОткрытьФорму("ВнешняяОбработка.ТотальнаяСверкаДвиженийДокументов.Форма.ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения);
КонецПроцедуры
Ошибка:
{Форма.ФормаОтчета.Форма(1204)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("ВнешняяОбработка.ТотальнаяСверкаДвиженийДокументов.Форма.ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения);
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ТотальнаяСверкаДвиженийДокументов.Форма.ВыборСтандартногоПериода"
ОткрытьФорму("ВнешняяОбработка.ТотальнаяСверкаДвиженийДокументов.Форма.ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения);
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ТотальнаяСверкаДвиженийДокументов.Форма.ВыборСтандартногоПериода"
(8) IvanAlekseev,
тут даже по ошибке видно,
у тебя внешний отчет, а имя формы ты пихаешь как внешняяобработка !!!
Ты пользуйся контекстной подсказкой-то, оно помогает без ошибок заполнять такие реквизиты
Форма.ФормаОтчета.Форма(1204)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("ВнешняяОбработка.Тотал
ОткрытьФорму("ВнешняяОбработка.Тотал
тут даже по ошибке видно,
у тебя внешний отчет, а имя формы ты пихаешь как внешняяобработка !!!
Ты пользуйся контекстной подсказкой-то, оно помогает без ошибок заполнять такие реквизиты
Форма1
Форма2
Код рабочий...Можно поглядеть в УНФ, Документ ЧекККМ
&НаКлиенте
Процедура ИзменитьКоличествоСПомощьюКалькулятора(Команда)
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ИзменитьКоличествоСПомощьюКалькулятораЗавершение", ЭтаФорма);
СтруктураПараметров = Новый Структура("Услуга, Количество, Цена, Сумма, ПроцентСкидкиНаценки",
ТекущиеДанные.Услуга,
ТекущиеДанные.Количество,
ТекущиеДанные.Цена,
ТекущиеДанные.Сумма,
ТекущиеДанные.ПроцентСкидкиНаценки);
ОткрытьФорму("ВнешняяОбработка.АРМ_Сервис.Форма.ФормаВводаКоличества", СтруктураПараметров,,,,,Оповещение);
Иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не выбрана строка!";
Сообщение.Поле = "Объект.Услуги";
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
ПоказатьФорма2
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КоличествоСимволовПослеЗапятой = 3;
Услуга = Параметры.Услуга;
Количество = Параметры.Количество;
Цена = Параметры.Цена;
Сумма = Параметры.Сумма;
ПроцентСкидкиНаценки = Параметры.ПроцентСкидкиНаценки;
// Установка сочетания клавиш
Для Сч = 0 По 9 Цикл
Элементы["Кнопка"+Сч].СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша["Num"+Сч]);
КонецЦикла;
Элементы.РазделительДробнойЧасти.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.NumDecimal);
Элементы.Сбросить.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.BackSpace);
КонецПроцедуры
// Процедура - обработчик команды ОК формы.
//
&НаКлиенте
Процедура ОК(Команда)
ПараметрыЗакрытия = Новый Структура("Количество", Количество);
Закрыть(ПараметрыЗакрытия);
КонецПроцедуры
ПоказатьКод рабочий...Можно поглядеть в УНФ, Документ ЧекККМ
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот