|
Открыть форму выбора и сохранить выбранное значение для дальнейшего использования. | ☑ | ||
---|---|---|---|---|
0
Nzzzz
20.10.20
✎
10:08
|
Всем добрый день!
По нажатию кнопки - должна открываться форма выбора. Пишу так: ФормаВыбора = ПланыСчетов.Хозрасчетный.ПолучитьФормуВыбора(); ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально(); Ошибка: Интерактивные операции недоступны Пишу так: ФормаОснования = ПолучитьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора"); ВыбранноеЗначение = ФормаОснования.Открыть(); Ошибка: Обращение к процедуре объекта как к функции (Открыть) ВыбранноеЗначение = ФормаОснования.Открыть(); Как открыть форму выбора и сохранить выбранное значение для дальнейшего использования? |
|||
1
acht
20.10.20
✎
10:16
|
||||
2
Nzzzz
20.10.20
✎
10:22
|
(1) Да что эти курсы?!
Лучшие курсы - это практика! |
|||
3
Nzzzz
20.10.20
✎
10:26
|
Кто нибудь подскажет?
По нажатию кнопки Внешней обработки, должна открываться форма выбора плана счетов, далее я там выбираю значение и оно должно в реквизит обработки записаться на форме. |
|||
4
acht
20.10.20
✎
10:27
|
(2) Ну тогда напомню, что к просветлению ведет лишь практика в одиночестве.
|
|||
5
Nzzzz
20.10.20
✎
10:31
|
(4) Так я два варианта использовал. Что не так?
|
|||
6
Nzzzz
20.10.20
✎
10:35
|
Раз всё так легко, то почему никто не подскажет?
Жалко? |
|||
7
alkorolev
20.10.20
✎
11:05
|
(0) толстый клиент?
|
|||
8
alkorolev
20.10.20
✎
11:07
|
(3) зачем это выводить на кнопку, если без какого-либо кода это можно всё сделать из поля на форме?
|
|||
9
fisher
20.10.20
✎
11:07
|
(0)
|
|||
10
fisher
20.10.20
✎
11:08
|
(0) Дрогнула рука :) Куда сохранить, в реквизит? А зачем для этого программно открывать форму выбора?
|
|||
11
fisher
20.10.20
✎
11:09
|
(8) +1, прослоупочил
|
|||
12
Nzzzz
20.10.20
✎
11:10
|
(8) Нельзя, обработка внешняя, но заполняет ТЧ документа на форме
|
|||
13
Nzzzz
20.10.20
✎
11:13
|
(10) Напишите как по другому?
|
|||
14
Nzzzz
20.10.20
✎
11:15
|
Вот рабочий код:
&НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт ФормаВыбора = ПолучитьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора"); ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально(); Для каждого ТекущаяСтрока из ВладелецФормы.Объект.Товары Цикл Если ВыбранноеЗначение <> Неопределено Тогда ТекущаяСтрока.СчетУчета = ВыбранноеЗначение ; КонецЕсли; КонецЦикла ; КонецПроцедуры Но сообщение всё равно выдает, о том что в данном режиме запрещена модальность. Но функционал который был нужен - работает. |
|||
15
SleepyHead
гуру
20.10.20
✎
11:17
|
(0) Ты хоть скажи, с какой ты планеты (зачеркнуто) ОФ/УФ.
По контексту ОФ, но вдруг.. |
|||
16
Nzzzz
20.10.20
✎
11:17
|
А как можно сделать, чтобы эта ошибка не выскакивала?
"Использование модальных окон в данном режиме запрещено!" |
|||
17
Nzzzz
20.10.20
✎
11:17
|
(15) УФ
|
|||
18
SleepyHead
гуру
20.10.20
✎
11:21
|
(17) гугли "1с УФ открыть форму выбора"
|
|||
19
SleepyHead
гуру
20.10.20
✎
11:21
|
||||
20
Nzzzz
20.10.20
✎
11:28
|
В интернете пишут нужно сделать по новому через ОписаниеОповещения нужно открывать
Но там блин параметры эти, фиг знает что добавлять.. |
|||
21
alkorolev
20.10.20
✎
11:28
|
(14) ОткрытьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора", , ЭтаФорма);
ну и на форме источника в событии ОбработкаОповещения обрабатывай колбэк |
|||
22
Nzzzz
20.10.20
✎
11:29
|
(21) Как обрабатывать, если всё типовое?
|
|||
23
alkorolev
20.10.20
✎
11:30
|
(22) внешняя обработка же? на форме внешней обработки в событии ОбработкаОповещения ты получишь выбранное значение
|
|||
24
alkorolev
20.10.20
✎
11:34
|
(21) тьфу ты! событие "ОбработкаВыбора" у формы.
Лови https://yadi.sk/d/es2IPMx9_xHhlA |
|||
25
fisher
20.10.20
✎
11:40
|
Попробуй так:
&НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт ПараметрыВыбора = Новый Структура("ЗакрыватьПриВыборе, ЗакрыватьПриЗакрытииВладельца, Истина, Истина); ФормаВыбора = ОткрытьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора", ПараметрыВыбора, ЭтотОбъект); КонецПроцедуры Это сработает, если в форме выбора для списка на форме у тебя установлен признак "РежимВыбора". Тогда когда в форме будет даблклик, в форму владельца (обработку) тебе прилетит событие формы ОбработкаВыбора() с выбранным значением. |
|||
26
Nzzzz
20.10.20
✎
11:42
|
(24) Спасибо, ошибка пропала, но теперь не работает.
У меня вот этот код по заполнению тч был в процедуре "ВыполнитьКоманду". Я перенес, сделал как у Вас в обработке выбора - не работает. |
|||
27
Nzzzz
20.10.20
✎
11:43
|
(25) Прилетает выбранное значение.Но как теперь ТЧ то заполнить? Куда писать код для заполнения тЧ?
|
|||
28
acht
20.10.20
✎
11:44
|
(27) А ты вообще мальчик или девочка?
https://dropmefiles.com.ua/en/i/1894ea678da89602948e674a85fbfe09/a5288683f3e12832db656bfd95d05fdb |
|||
29
Nzzzz
20.10.20
✎
11:44
|
(27) Было бы хорошо, если бы процедура обработки выбора была функцией и вернула в процедуру "ВыполнитьКоманду" выбранное значение.
|
|||
30
Nzzzz
20.10.20
✎
11:45
|
(28) Аккаунт на двоих.
|
|||
31
alkorolev
20.10.20
✎
11:48
|
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт Оповещение = Новый ОписаниеОповещения("ВыполнитьКомандуЗавершение", ЭтотОбъект); ОткрытьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора", , , , , , Оповещение); КонецПроцедуры &НаКлиенте Процедура ВыполнитьКомандуЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = Неопределено Тогда Возврат; КонецЕсли; Для каждого ТекущаяСтрока из ВладелецФормы.Объект.Товары Цикл ТекущаяСтрока.СчетУчета = Результат; КонецЦикла ; КонецПроцедуры |
|||
32
fisher
20.10.20
✎
11:50
|
(27) Это вроде очевидно - код писать в обработчике выбора (или оттуда вызывать)
(29) Добро пожаловать в асинхронное выполнение кода. В 18 релизе что-то такое завезли, как ты хочешь, но конкретно для обработки выбора и там вряд ли получится. |
|||
33
Nzzzz
20.10.20
✎
11:51
|
(31) Сработало! Спасибо добрый человек:)
|
|||
34
Nzzzz
20.10.20
✎
11:51
|
Спасибо всем, кто помогал!!!
|
|||
35
fisher
20.10.20
✎
11:54
|
В 18 релизе насыпали ключевых слов и стало возможно ждать ожидания завершения асинхронного кода в том же месте, откуда он стартовал. Плюс насыпали куче стандартных функций возможность работать через "обещания" (т.е. и для них писать линейный асинхронный код). Вероятно, можно там и ОткрытьФорму извернуться. Опыта пока нет.
|
|||
36
Ёпрст
20.10.20
✎
14:35
|
(35) на сколько я понял, в тоже место не возвращается.. лень всё читать было, там опять что-то своё накодили..
|
|||
37
Kassern
20.10.20
✎
15:46
|
(33) А что мешало посмотреть, как это работает в типовой конфе, да в той же бухгалтерии? Зачем вы пытались использовать модальный режим? В управляемых формах его практически не используют, в конфигураторе вообще может быть запрет на модальный режим. Вы могли просто открыть форму выбора, в данной форме после закрытия использовать команду ОповеститьОВыборе(результат). В форме источнике использовать событие обработка выбора и там уже обрабатывать полученный результат. Без всяких там доп оповещений.
пример: &НаКлиенте Процедура ЗагрузитьИзВнешнегоФайла(Команда) ПараметрыФормы = Новый Структура(); ПараметрыФормы.Вставить("ЗагружатьЦены", Ложь); ПараметрыФормы.Вставить("ЗагружатьСуммы", Ложь); ПараметрыФормы.Вставить("ЦенаВключаетНДС", Ложь); ПараметрыФормы.Вставить("ВернутьМногооборотнуюТару", Ложь); ПараметрыФормы.Вставить("СопоставлятьПоНоменклатуреПоставщиков", Ложь); ПараметрыФормы.Вставить("ЗагружатьГТД", Ложь); ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый Массив); ПараметрыФормы.Вставить("ИмяТЧ", "Товар"); ПараметрыФормы.Вставить("ЗагружатьСкидки", Ложь); ОткрытьФорму( "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора) Если ИсточникВыбора.ИмяФормы = "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма" Тогда ПолучитьЗагруженныеТоварыИзХранилища(РезультатВыбора); КонецЕсли; Если Окно <> Неопределено Тогда Окно.Активизировать(); КонецЕсли; КонецПроцедуры |
|||
38
fisher
20.10.20
✎
16:45
|
(36) Почему не возвращается? Пример из Зазеркалья:
&НаКлиенте Асинх Функция СкопироватьФайл(ИсхФайл, ЦелФайл) Об = КопироватьФайлАсинх(ИсхФайл, ЦелФайл); Ждать Об; Сообщить("Скопирован файл: " + ЦелФайл); КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |