Версия для печати темы (https://pro1c.org.ua/index.php?s=051a51c4acc0ccc3ccb4b8df367924a7&showtopic=44445)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ ВыбранныйЭлемент = ФормаВыбора.Открыть() - почему не работает?

Автор: Gigi 01.03.18, 14:17

Всем привет!
Хочу задать вопрос по быстрому и получить тоже так же ...
Никто не подскажет почему указанный ниже фрагмент не работает.
Дело в том, нужно выбрать значение в форме выбора программно. Но при этом что бы открытие формы выбора было не модально. Потому что раздражает то что в таком режиме у окна нет режима свернуть и развернуть окно, а есть только крестик - выйти.
Вот фрагмент

ФормаВыбора=ПолучитьФорму("Справочник.Справочник1.ФормаВыбора",,ЭтаФорма);
ОбъектСсылка = ФормаВыбора.ОткрытьМодально(); // Так проходить без проблем
//ОбъектСсылка = ФормаВыбора.Открыть();  // А так выпердриваеться ... НИКАК НЕ ХОЧЕТ ....
Если ОбъектСсылка <> Неопределено Тогда
ФормаОбъектаСсылки = ПолучитьФорму("Справочник.Справочник1.ФормаОбъекта", новый Структура("Ключ", ОбъектСсылка));
Предупреждение(ФормаОбъектаСсылки.Объект.Наименование);
КонецЕсли;

Короче нужно то что указано в коде, только что бы форма выбора открывалась Не модально, а как обычно.
Если можно просто подкорректируйте под эту цель.
Буду признателен!

Автор: podcast 01.03.18, 14:46

Gigi @ Сегодня, 14:17 * ,
Попробуйте указывать владельца правильно.

ОткрытьФорму("Справочник.Справочник1.ФормаВыбора",,ОбъектСсылка);
Если ОбъектСсылка <> Неопределено Тогда
ФормаОбъектаСсылки = ПолучитьФорму("Справочник.Справочник1.ФормаОбъекта", новый Структура("Ключ", ОбъектСсылка));
Предупреждение(ФормаОбъектаСсылки.Объект.Наименование);
КонецЕсли;

Автор: Fynjy 01.03.18, 15:50

Зачем такие извраты?

ОткрытьЗначение(ОбъектСсылка)

Автор: Gigi 01.03.18, 16:07

Цитата(podcast @ 01.03.18, 14:46) *
Попробуйте указывать владельца правильно.

Цитата(Fynjy @ 01.03.18, 15:50) *
Зачем такие извраты?

Ну ладно ... но в таком случае как определить выбранное из списка формы выбора значение?
Ведь по такой схеме:
ОбъектСсылка = ФормаВыбора.ОткрытьМодально();

"ОбъектСсылка" это выбранное из списка значение. Что и устраивает... просто нужно не модальное открытие.
А таким образом:
ОткрытьФорму("Справочник.Справочник1.ФормаВыбора",,ОбъектСсылка);
Если ОбъектСсылка <> Неопределено Тогда .....

или таким
ОткрытьЗначение(ОбъектСсылка)

Как получить то самое значение переменной "ОбъектСсылка"?
Форму то открыть можно, а выбранное значение как получить?
как в таком сказанном уже стиле:
ОбъектСсылка = ФормаВыбора.ОткрытьМодально();

Просто без модального режима открытия

Автор: Petre 01.03.18, 16:56

Gigi @ Today, 16:07 * ,
Из кода вообще не понятно, что вы хотите сделать (после того, как выбрали значение).
Разница между методами ОткрытьМодально и Открыть в том, что последний ничего не возвращает.

Автор: Gigi 01.03.18, 17:07

Цитата(Petre @ 01.03.18, 16:56) *
Из кода вообще не понятно, что вы хотите сделать (после того, как выбрали значение).
Разница между методами ОткрытьМодально и Открыть в том, что последний ничего не возвращает.

Не важно что хочу... главное ОТКРЫТЬ ФОРМУ ВЫБОРА НЕ МОДАЛЬНО и ПОЛУЧИТЬ ССЫЛКУ ВЫБРАННОГО ОБЪЕКТА.
Вот и все что нужно!
Но в том то и все дело, что команда ОткрытьМодально() это функция. Очень удобная.
С ее помощью можно одним махом открыть форму выбора и запеременить ссылку выбранного объекта.
Просто САМОЕ ОТКРЫТИЕ НУЖНО НЕ МОДАЛЬНОЕ! Вот и все.
А команда Открыть() позволяет открыть не модально, но за то это процедура. И в таком случае как получить выбранную ссылку?
Короче .. Капец smile.gifsmile.gif
Главное даже по этой ерунде

Автор: Petre 01.03.18, 17:28

Gigi @ Today, 17:07 * ,
Все зависит от конкретики.
Если полученную ссылку необходимо поместить в элемент формы, достаточно указать данный элемент как владельца в ПолучитьФорму и больше ничего не делать.
Если полученная ссылка не помещается в элемент формы, а лишь используется программно для х.з. каких целей, то, как вариант, в ПолучитьФорму как владелец указывается ЭтаФорма (как у вас в первом сообщении), и этой же форме-владельце в процедуре события ОбработкаВыбора получаем выбранное значение из параметра ЗначениеВыбора и делаем с ним что необходимо.

Автор: logist 01.03.18, 21:23

Цитата(Gigi @ 01.03.18, 17:07) *
Не важно что хочу...

Я бы на этом закрыл тему, реально надоело уже такое обращение.

Автор: Gigi 02.03.18, 14:02

Petre @ Вчера, 17:28 * ,
Короче объясняю вкрадце
Есть кнопка на форме.
При нажатии на эту кнопку нужно:
Первое - Нужно что бы происходило то что обычно происходит при выборе реквизита Ссылка... ничего кроме .... т.е. появилась форма выбора БЕЗ МОДАЛЬНОГО РЕЖИМА.
Второе - Получить ссылку выбранного в переменную.
Третье - по этой ссылке сделать кое какие записи на сервере.
Вот собственно и все.
Так что пожалуйста если не трудно пример кода для указанных пунктов. Буду благодарен
Просто все это уже было не однократно сделано в таком стиле, о котором выше уже говорил:

ФормаВыбора=ПолучитьФорму("Справочник.Справочник1.ФормаВыбора",,ЭтаФорма);
ОбъектСсылка = ФормаВыбора.ОткрытьМодально(); // Так проходить без проблем
//ОбъектСсылка = ФормаВыбора.Открыть();  // А так выпердриваеться ... НИКАК НЕ ХОЧЕТ ....
Если ОбъектСсылка <> Неопределено Тогда
ФормаОбъектаСсылки = ПолучитьФорму("Справочник.Справочник1.ФормаОбъекта", новый Структура("Ключ", ОбъектСсылка));
Сообщить(ФормаОбъектаСсылки.Объект.Наименование);
ЗаписьПоСсылке(ОбъектСсылка);
КонецЕсли;

Не устраивает только режим МОДАЛЬНОГО ОТКРЫТИЯ. Вот и все
Так что кодовый пример указанных целей если не трудно
Буду весьма признателен!

Автор: Petre 02.03.18, 15:39

Gigi @ Today, 14:02 * ,

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

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
    Если ЗначениеВыбора <> Неопределено Тогда
        Сообщить(ЗначениеВыбора.Наименование);
    КонецЕсли;
КонецПроцедуры

где
- МояКнопкаНажатие - обработчик события "Нажатие" кнопки, которая нажимается;
- ОбработкаВыбора - обработчик события "ОбработкаВыбора" формы, где располагается кнопка.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua