Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Открыть форму выбора и сохранить выбранное значение для дальнейшего использования.

Открыть форму выбора и сохранить выбранное значение для дальнейшего использования.
Я
   Nzzzz
 
20.10.20 - 10:08
Всем добрый день!
По нажатию кнопки - должна открываться форма выбора.

Пишу так:
ФормаВыбора = ПланыСчетов.Хозрасчетный.ПолучитьФормуВыбора();
ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально();

Ошибка: Интерактивные операции недоступны

Пишу так:
ФормаОснования = ПолучитьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора");
ВыбранноеЗначение = ФормаОснования.Открыть();

Ошибка:
Обращение к процедуре объекта как к функции (Открыть)
ВыбранноеЗначение = ФормаОснования.Открыть();
Как открыть форму выбора и сохранить выбранное значение для дальнейшего использования?
   acht
 
1 - 20.10.20 - 10:16
   Nzzzz
 
2 - 20.10.20 - 10:22
(1) Да что эти курсы?!
Лучшие курсы - это практика!
   Nzzzz
 
3 - 20.10.20 - 10:26
Кто нибудь подскажет?
По нажатию кнопки Внешней обработки, должна открываться форма выбора плана счетов, далее я там выбираю значение и оно должно в реквизит обработки записаться на форме.
   acht
 
4 - 20.10.20 - 10:27
(2) Ну тогда напомню, что к просветлению ведет лишь практика в одиночестве.
   Nzzzz
 
5 - 20.10.20 - 10:31
(4) Так я два варианта использовал. Что не так?
   Nzzzz
 
6 - 20.10.20 - 10:35
Раз всё так легко, то почему никто не подскажет?
Жалко?
   alkorolev
 
7 - 20.10.20 - 11:05
(0) толстый клиент?
   alkorolev
 
8 - 20.10.20 - 11:07
(3) зачем это выводить на кнопку, если без какого-либо кода это можно всё сделать из поля на форме?
   fisher
 
9 - 20.10.20 - 11:07
(0)
   fisher
 
10 - 20.10.20 - 11:08
(0) Дрогнула рука :) Куда сохранить, в реквизит? А зачем для этого программно открывать форму выбора?
   fisher
 
11 - 20.10.20 - 11:09
(8) +1, прослоупочил
   Nzzzz
 
12 - 20.10.20 - 11:10
(8) Нельзя, обработка внешняя, но заполняет ТЧ документа на форме
   Nzzzz
 
13 - 20.10.20 - 11:13
(10) Напишите как по другому?
   Nzzzz
 
14 - 20.10.20 - 11:15
Вот рабочий код:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    ФормаВыбора = ПолучитьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора");
    ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально();
    Для каждого  ТекущаяСтрока из ВладелецФормы.Объект.Товары Цикл       
        Если ВыбранноеЗначение <> Неопределено Тогда 
            ТекущаяСтрока.СчетУчета = ВыбранноеЗначение ;
        КонецЕсли; 
    КонецЦикла ;    
КонецПроцедуры

Но сообщение всё равно выдает, о том что в данном режиме запрещена модальность. Но функционал который был нужен - работает.
   SleepyHead
 
15 - 20.10.20 - 11:17
(0) Ты хоть скажи, с какой ты планеты (зачеркнуто) ОФ/УФ.

По контексту ОФ, но вдруг..
   Nzzzz
 
16 - 20.10.20 - 11:17
А как можно сделать, чтобы эта ошибка не выскакивала?
"Использование модальных окон в данном режиме запрещено!"
   Nzzzz
 
17 - 20.10.20 - 11:17
(15) УФ
   SleepyHead
 
18 - 20.10.20 - 11:21
(17) гугли "1с УФ открыть форму выбора"
   SleepyHead
 
19 - 20.10.20 - 11:21
http://catalog.mista.ru/1c/articles/1233756/

вот несколько примеров
   Nzzzz
 
20 - 20.10.20 - 11:28
В интернете пишут нужно сделать по новому через ОписаниеОповещения нужно открывать
Но там блин параметры эти, фиг знает что добавлять..
   alkorolev
 
21 - 20.10.20 - 11:28
(14) ОткрытьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора", , ЭтаФорма);
ну и на форме источника в событии ОбработкаОповещения обрабатывай колбэк
   Nzzzz
 
22 - 20.10.20 - 11:29
(21) Как обрабатывать, если всё типовое?
   alkorolev
 
23 - 20.10.20 - 11:30
(22) внешняя обработка же? на форме внешней обработки в событии ОбработкаОповещения ты получишь выбранное значение
   alkorolev
 
24 - 20.10.20 - 11:34
(21) тьфу ты! событие "ОбработкаВыбора" у формы.
Лови https://yadi.sk/d/es2IPMx9_xHhlA
   fisher
 
25 - 20.10.20 - 11:40
Попробуй так:

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

Это сработает, если в форме выбора для списка на форме у тебя установлен признак "РежимВыбора".
Тогда когда в форме будет даблклик, в форму владельца (обработку) тебе прилетит событие формы ОбработкаВыбора() с выбранным значением.
   Nzzzz
 
26 - 20.10.20 - 11:42
(24) Спасибо, ошибка пропала, но теперь не работает.
У меня вот этот код по заполнению тч был в процедуре "ВыполнитьКоманду".
Я перенес, сделал как у Вас в обработке выбора - не работает.
   Nzzzz
 
27 - 20.10.20 - 11:43
(25) Прилетает выбранное значение.Но как теперь ТЧ то заполнить? Куда писать код для заполнения тЧ?
   acht
 
28 - 20.10.20 - 11:44
   Nzzzz
 
29 - 20.10.20 - 11:44
(27) Было бы хорошо, если бы процедура обработки выбора была функцией и вернула в процедуру "ВыполнитьКоманду" выбранное значение.
   Nzzzz
 
30 - 20.10.20 - 11:45
(28) Аккаунт на двоих.
 
 Рекламное место пустует
   alkorolev
 
31 - 20.10.20 - 11:48
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    
    Оповещение = Новый ОписаниеОповещения("ВыполнитьКомандуЗавершение", ЭтотОбъект);
    ОткрытьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора", , , ,  , , Оповещение);
    
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьКомандуЗавершение(Результат, ДополнительныеПараметры) Экспорт 
    
    Если Результат = Неопределено Тогда 
        Возврат;
    КонецЕсли;
    
    Для каждого  ТекущаяСтрока из ВладелецФормы.Объект.Товары Цикл       
        ТекущаяСтрока.СчетУчета = Результат;
    КонецЦикла ;    
    
КонецПроцедуры
   fisher
 
32 - 20.10.20 - 11:50
(27) Это вроде очевидно - код писать в обработчике выбора (или оттуда вызывать)
(29) Добро пожаловать в асинхронное выполнение кода. В 18 релизе что-то такое завезли, как ты хочешь, но конкретно для обработки выбора и там вряд ли получится.
   Nzzzz
 
33 - 20.10.20 - 11:51
(31) Сработало! Спасибо добрый человек:)
   Nzzzz
 
34 - 20.10.20 - 11:51
Спасибо всем, кто помогал!!!
   fisher
 
35 - 20.10.20 - 11:54
В 18 релизе насыпали ключевых слов и стало возможно ждать ожидания завершения асинхронного кода в том же месте, откуда он стартовал. Плюс насыпали куче стандартных функций возможность работать через "обещания" (т.е. и для них писать линейный асинхронный код). Вероятно, можно там и ОткрытьФорму извернуться. Опыта пока нет.
   Ёпрст
 
36 - 20.10.20 - 14:35
(35) на сколько я понял, в тоже место не возвращается.. лень всё читать было, там опять что-то своё накодили..
   Kassern
 
37 - 20.10.20 - 15:46
(33) А что мешало посмотреть, как это работает в типовой конфе, да в той же бухгалтерии? Зачем вы пытались использовать модальный режим? В управляемых формах его практически не используют, в конфигураторе вообще может быть запрет на модальный режим. Вы могли просто открыть форму выбора, в данной форме после закрытия использовать команду ОповеститьОВыборе(результат). В форме источнике использовать событие обработка выбора и там уже обрабатывать полученный результат. Без всяких там  доп оповещений.
пример:
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
    ПараметрыФормы = Новый Структура();
    ПараметрыФормы.Вставить("ЗагружатьЦены", Ложь);
    ПараметрыФормы.Вставить("ЗагружатьСуммы", Ложь);
    ПараметрыФормы.Вставить("ЦенаВключаетНДС", Ложь);
    ПараметрыФормы.Вставить("ВернутьМногооборотнуюТару", Ложь);
    ПараметрыФормы.Вставить("СопоставлятьПоНоменклатуреПоставщиков", Ложь);
    ПараметрыФормы.Вставить("ЗагружатьГТД", Ложь);
    ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый Массив);
    ПараметрыФормы.Вставить("ИмяТЧ", "Товар");
    ПараметрыФормы.Вставить("ЗагружатьСкидки", Ложь);
    ОткрытьФорму(
    "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма",
    ПараметрыФормы,
    ЭтаФорма,
    УникальныйИдентификатор);    
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
    
    Если ИсточникВыбора.ИмяФормы = "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма" Тогда
        
        ПолучитьЗагруженныеТоварыИзХранилища(РезультатВыбора);
        
    КонецЕсли;    
    
    Если Окно <> Неопределено Тогда
        Окно.Активизировать();
    КонецЕсли;
    
КонецПроцедуры
   fisher
 
38 - 20.10.20 - 16:45
(36) Почему не возвращается? Пример из Зазеркалья:
&НаКлиенте
Асинх Функция СкопироватьФайл(ИсхФайл, ЦелФайл)
    Об = КопироватьФайлАсинх(ИсхФайл, ЦелФайл); 
    Ждать Об;
    Сообщить("Скопирован файл: " + ЦелФайл); 
КонецФункции


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.