программирование (управляемые формы): заполнение другого объекта, перед созданием текущего
Ребят, с управляемыми формами опыт есть, но не большой, подскажите как сделать, пожалуйста, пишу свой документ, если документ новый нужно, что бы перед созданием документа, создавался справочник, который является реквизитом, данного документа. в форме документа, пишу такой код:
происходит следующее:
1. перед открытием формы документа открывается форма нового справочника, о чем я сразу не догадался, т.к. форма была спрятана под формой документа
2. после записи справочника, реквизит в форме документа не обновляется, чего я желаю
подскажите, кто знает, как сделать правильно, процедура ПриОткрытии вызывается "при открытии формы, ДО ЕЁ ПОКАЗА", следовательно мыслю, что нужно использовать другую, подскажите
&НаСервере
Функция ЭтоНовый()
Возврат Параметры.Ключ.Пустая();
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЭтоНовый() Тогда
//Для каждого нового документа создается элемент справочника первичный документ, сразу при создании документа открываю форму
мПараметры = Новый Структура;
мПараметры.Вставить("Ключ", Объект.ПервичныйДокумент);
Объект.ПервичныйДокумент = ОткрытьФорму("Справочник.ПервичныеДокументы.Форма.ФормаЭлемента", , Элементы.ПервичныйДокумент, , ПолучитьОкна()[0], , , РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецЕсли;
КонецПроцедуры
Показатьпроисходит следующее:
1. перед открытием формы документа открывается форма нового справочника, о чем я сразу не догадался, т.к. форма была спрятана под формой документа
2. после записи справочника, реквизит в форме документа не обновляется, чего я желаю
подскажите, кто знает, как сделать правильно, процедура ПриОткрытии вызывается "при открытии формы, ДО ЕЁ ПОКАЗА", следовательно мыслю, что нужно использовать другую, подскажите
По теме из базы знаний
- Под капотом управляемых форм
- Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы
- Шаблон MVC для управляемого интерфейса
- Поздравление с Новым Годом! (Управляемые формы, авто год)
- Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"
Найденные решения
в общем сделал, примерно как рекомендовали в (4)
в форме документа:
в форме справочника:
в принципе, работает как я и хотел, всем спасибо за участие
в форме документа:
&НаСервере
Функция ЭтоНовый()
Возврат Параметры.Ключ.Пустая();
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЭтоНовый() Тогда
ПодключитьОбработчикОжидания("СоздатьПервичныйДокументДляЭтойПроверки", 0.1, Истина)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПервичныйДокументДляЭтойПроверки()
//Для каждого нового документа создается элемент справочника первичный документ, сразу при создании документа открываю форму
ОткрытьФорму("Справочник.ПервичныеДокументы.Форма.ФормаЭлемента", , ЭтаФорма, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПолеПервичныйДокументСозданнымСправочником(Справочник)
Объект.ПервичныйДокумент = Справочник;
КонецПроцедуры
Показатьв форме справочника:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Если ТипЗнч(ВладелецФормы) = Тип("УправляемаяФорма") Тогда
ВладелецФормы.ЗаполнитьПолеПервичныйДокументСозданнымСправочником(Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
в принципе, работает как я и хотел, всем спасибо за участие
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
У реквизита есть свойство, "проверять заполнение".
Есть способ, пройти предложенным путем, но он неправильный:
При открытии подключаем обработчик ожидания, через пару секунд после открытия он запускает создание справочника, владельцем формы создания будет форма документа, в форме справочника после записи можно вызвать экспортную процедуру из формы документа (через владельца формы), либо выполнить метод Оповестить(). Если использовать Оповестить, то в форме документа в событии ОбработкаОповещения ловим создание элемента справочника, и пишем в реквизит. Но повторюсь еще раз, так не делают.
как проверять его заполнение
У реквизита есть свойство, "проверять заполнение".
Есть способ, пройти предложенным путем, но он неправильный:
При открытии подключаем обработчик ожидания, через пару секунд после открытия он запускает создание справочника, владельцем формы создания будет форма документа, в форме справочника после записи можно вызвать экспортную процедуру из формы документа (через владельца формы), либо выполнить метод Оповестить(). Если использовать Оповестить, то в форме документа в событии ОбработкаОповещения ловим создание элемента справочника, и пишем в реквизит. Но повторюсь еще раз, так не делают.
в общем сделал, примерно как рекомендовали в (4)
в форме документа:
в форме справочника:
в принципе, работает как я и хотел, всем спасибо за участие
в форме документа:
&НаСервере
Функция ЭтоНовый()
Возврат Параметры.Ключ.Пустая();
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЭтоНовый() Тогда
ПодключитьОбработчикОжидания("СоздатьПервичныйДокументДляЭтойПроверки", 0.1, Истина)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПервичныйДокументДляЭтойПроверки()
//Для каждого нового документа создается элемент справочника первичный документ, сразу при создании документа открываю форму
ОткрытьФорму("Справочник.ПервичныеДокументы.Форма.ФормаЭлемента", , ЭтаФорма, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПолеПервичныйДокументСозданнымСправочником(Справочник)
Объект.ПервичныйДокумент = Справочник;
КонецПроцедуры
Показатьв форме справочника:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Если ТипЗнч(ВладелецФормы) = Тип("УправляемаяФорма") Тогда
ВладелецФормы.ЗаполнитьПолеПервичныйДокументСозданнымСправочником(Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
в принципе, работает как я и хотел, всем спасибо за участие
(9) проблема в том, что такая кнопка есть, когда нажимаешь выбор на поле ввода, там есть зеленый плюсик, который и создает справочник, вот эту процедуру и хочу сделать более интерактивной, чтобы пользователю не нужно было нажимать кнопки, а только забивать данные
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот