Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Модальность в "такси" или как сделать выбор из ДереваЗначений

Модальность в "такси" или как сделать выбор из ДереваЗначений
Я
   MasterShi
 
15.08.18 - 09:58
Дано: Иерархическая структура статей расходов, меняющаяся во времени. Реализована в виде периодического регистра сведений РегистрыСведений.СтатьиРасходов:
Измерения: Код, ЦФО
Ресурсы: Наименование,Родитель,Вкл
Выбор должен осуществляться из дерева значений, сформированного на указанную дату.
Пока можно было использовать модальные окна, всё решалось довольно просто: передаём дату отбора в общую модальную форму и назад получаем код статьи, если был выбор.
Как сделать, когда модальные формы запрещены?
Можно ли создать форму выбора из дерева значений прямо в РегистреСведений.СтатьиРасходов? В форме списка возможен только Динамический список...
 
 
   Остап Сулейманович
 
1 - 15.08.18 - 10:01
(0) Выбор из ДС ничем не отличается от прочих.
Так что (отвечая на вопрос) - можно. Делайте.
   Остап Сулейманович
 
2 - 15.08.18 - 10:04
+ (1) "Как сделать, когда модальные формы запрещены?"
Форму выбора открывать с фишкой "блокировать окно владельца" или "блокировать окно приложения". Это на ваш выбор.
После собственно выбора - оповещать окно владельца о выборе. Или заюзать оповещение о закрытии (см. Процедуру ОткрытьФорму). Это на ваш выбор.
Выбор в главной форме обрабатывать как обычно.
   MasterShi
 
3 - 15.08.18 - 10:27
(2) А как передать, что, собственно, выбрали.
   Вафель
 
4 - 15.08.18 - 10:27
(2) для этого есть оповещения
   MasterShi
 
5 - 15.08.18 - 14:54
(4) (2) Спасибо. Сатори получено :)
При открытии формы надо обязательно указать элемент-владелец.
   Fragster
 
6 - 15.08.18 - 16:40
Сделать вместо формы выбора отчет, формирующий нужную структуру на нужную дату, в нем в обработке расшифровки оповещать о выборе
   Fragster
 
7 - 15.08.18 - 16:41
ну и да, вариантОткрытияОкна = БлокироватьОкноВладельца
   MasterShi
 
8 - 16.08.18 - 08:18
(4) (2) Спасибо. Сатори получено :)
При открытии формы надо обязательно указать элемент-владелец.

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

А в форме документа в Обработке выбора в поле:
&НаКлиенте
Процедура РодительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    УстановкаДляОтбора=Новый Структура("ДатаВыборки",Объект.Дата);
    ФВыбора=ПолучитьФорму("ОбщаяФорма.ВыборСтатьиБД",УстановкаДляОтбора,Элемент);
    ФВыбора.Открыть();
КонецПроцедуры

&НаКлиенте
Процедура РодительОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Объект.СтатьяПредок=ВыбранноеЗначение.Код;
КонецПроцедуры

Так вот. Пока в ОповеститьОВыборе стоял возврат просто текста, всё было хорошо, но когда я поставил возврат структуры, то в поле, где происходит выбор, пишется просто "структура" и никаких тебе кодов статей, хотя должен быть код.
"доктор, что я делаю не так?"(с) анек
   Fragster
 
9 - 16.08.18 - 08:55
СтандартнаяОбработка
   MasterShi
 
10 - 16.08.18 - 09:01
(9) ???
 
 Рекламное место пустует
   Fragster
 
11 - 16.08.18 - 14:09
(10) что "???"
   MasterShi
 
12 - 16.08.18 - 15:37
(11) В каком месте от нее отказаться?
   Fragster
 
13 - 16.08.18 - 16:00
в обработке выбора
   FIXXXL
 
14 - 16.08.18 - 17:24
можно
Синтаксис:

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

и использовать РезультатЗакрытия

<ОписаниеОповещенияОЗакрытии> (необязательный)

Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана при закрытии формы со следующими параметрами:
<РезультатЗакрытия> - значение, переданное при вызове метода Закрыть открываемой формы,

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