Установить значение реквизита при открытии формы

Рассмотрим такую задачу. Есть сложная форма, с большим количеством реквизитов. Для многих из них в конфигураторе установлено свойство ЗаполнятьИзДанныхЗаполнения. В результате при открытии этой формы для нового объекта ее реквизиты могут быть заполнены различными начальными значениями. Это зависит и от точки навигации, в которой расположена команда создания нового объекта, и от программного алгоритма, описанного в модуле самого объекта.

Теперь предположим, что в процессе выполнения некоторого программного кода требуется открыть эту форму. Но не «пустую», а так, чтобы ее реквизиты были заполнены теми значениями, которые должны получиться в результате работы всех алгоритмов, заложенных в форму.

Можно было бы получить программный объект формы и затем напрямую установить значения ее реквизитов. Но тогда в этом месте программного кода пришлось бы дублировать весь тот алгоритм, который отвечает за начальное заполнение формы. Это может быть трудоемко, и поддерживать такое решение сложно, т. к. при изменении этого алгоритма его придется менять не в одном месте, в модуле объекта, а синхронно еще в нескольких местах конфигурации. Нет никакой гарантии, что что-то не будет пропущено и что все такие изменения будут работать правильно.

Поэтому существует другой, более удобный и простой способ решения такой задачи.

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

Например, программно нужно открыть форму новой накладной точно так, как если бы она открывалась интерактивной командой из списка накладных, отобранного по поставщику и складу. Предположим, что в переменных СсылкаНаПоставщика и СсылкаНаСклад у нас имеются необходимые ссылки. Тогда можно использовать следующий код:

ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);
ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы); 

Данные заполнения можно передать в открываемую форму с помощью параметра ЗначенияЗаполнения. В этот параметр нужно передать те данные, которые передала бы туда платформа, если бы выполнялось аналогичное интерактивное действие.

В нашем случае платформа передала бы в данные заполнения ссылку на поставщика и ссылку на склад, по которым отобран список накладных. Поэтому мы в данные заполнения передаем структуру, содержащую два элемента: для реквизита Поставщик — ссылку на поставщика, а для реквизита Склад — ссылку на склад.

Может встретиться и более сложная ситуация, когда в программном коде необходимо полностью съимитировать интерактивные действия пользователя по созданию нового объекта, не открывая форму этого объекта.

В этом случае можно создать программно объект, а затем вызвать его метод Заполнить(). В этом случае платформа выполнит все те же действия и вызовет все те же события, которые она бы вызвала в случае интерактивного создания нового объекта. В метод Заполнить() в качестве параметра точно так же можно передать структуру, содержащую данные заполнения:

ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
ОбъектНакладной = Документы.Накладная.СоздатьДокумент();
ОбъектНакладной.Заполнить(ЭлементыОтбора);
// Действия, имитирующие интерактивный ввод данных пользователем
...
ОбъектНакладной.Дата = ТекущаяДатаСеанса();
...
ОбъектНакладной.Записать();

Добавить значение в реквизит при открытии формы программо

Я
   Aleks291086

12.05.16 — 11:52

Добрый день! Есть общая форма, кнопка на ней. Открываем форму нового документа при нажатии кнопки. Как добавить в открытую форму программно значений в реквизиты(тип строка)? Проводим вручную открытый документ.

Пока так сделал, но не добавляет Значение реквизита (Иванов):

&НаКлиенте

Процедура Иванов(Команда)

СсылкаНаЭлемент=»Иванов»;

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить(«Иванов», СсылкаНаЭлемент);

Форма=ОткрытьФорму(«Документ.РегестрацияСотрудниковПТО.Форма.ФормаДокумента», ПараметрыФормы);

КонецПроцедуры

  

Партнерская программа EFSOL Oblako

   Ёпрст

1 — 12.05.16 — 11:54

Форма.Иванов=»Вася»

   aleks_default

2 — 12.05.16 — 11:57

86 год

   Aleks291086

3 — 12.05.16 — 12:00

(1) Поле объекта не обнаружено (ФИО).

Реквизит, в который запихнуть значение — ФИО.

   lodger

4 — 12.05.16 — 12:01

(0) ну начали вы верно, параметр в форму отправился, а что форме с ним делать?

в форме документа ПриСозданииНаСервере надо разбирать входящие параметры и заполнять необходимые реквизиты.

   lodger

5 — 12.05.16 — 12:01

РегестрацияСотрудниковПТО через Е — эпик.

   Aleks291086

6 — 12.05.16 — 12:06

(5) Так надо, РегИстрацияСотрудниковПТО есть уже реквизит. Этот тренировочный. Отмазался)

   Nuobu

7 — 12.05.16 — 12:08

(6) В таких случаях нужно писать: РегИстрацияСотрудниковПТО11ТестовыйВторойИТакДалее.

   Nuobu

8 — 12.05.16 — 12:09

Форма=ОткрытьФорму(«Документ.РегестрацияСотрудниковПТО.Форма.ФормаДокумента», ПараметрыФормы);

Форма=ПолучитьФорму(«Документ.РегестрацияСотрудниковПТО.Форма.ФормаДокумента», ПараметрыФормы);

Форма.ФИО = «Иванов»;

Форма.Открыть()

   Aleks291086

9 — 12.05.16 — 12:17

(4) (8) А в форме самого документа принять параметр и заполнить реквизит как? (ПриСозданииНаСервере)

   lodger

10 — 12.05.16 — 12:52

(9) Как обычно.

Процедура ПриСозданииНаСервере()

Если Параметры.Свойство(«Иванов») Тогда

  ФИО = Параметры.Иванов;

КонецЕсли;

<остальной код>

КонецПроцедуры

где Иванов — имя переданного параметра.

ФИО — реквизит формы или объекта.

   Sabbath

11 — 12.05.16 — 13:10

(0) в ПриОткрытии переданные параметры уже не видны видны в ПриСозданииНаСервере

   Mort

12 — 12.05.16 — 13:23

Перебрали все возможные варианты г-кода.

И копание в форме, и заполнение реквизитов в при создании…

(0) ОбработкаЗаполнения кури. В модуле или в подписке.

   lodger

13 — 12.05.16 — 13:36

(12) http://v8.1c.ru/metod/faq2/answer.jsp?id=652

мило конечно, но как открыть и передать любой параметр через команду другой формы?

небольшая вытяжка из СП:

«<ДанныеЗаполнения>

Тип: Произвольный.

Значение, которое используется как основание для заполнения.

Если обработчик вызван при выполнении метода Заполнить, параметр равен параметру <ДанныеЗаполнения> метода Заполнить.

При обработке заполнения во время ввода на основании параметр имеет значение основания.

При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено. Если параметр <СтандартнаяОбработка> по окончании работы обработчика равен Истина (установлен по умолчанию), система автоматически произведет заполнение одноименными элементами структуры.»

   Aleks291086

14 — 12.05.16 — 13:56

В общей форме:

СсылкаНаЭлемент=»Иванов»;

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить(«ФИО», СсылкаНаЭлемент);

Форма=ОткрытьФорму(«Документ.РегестрацияСотрудниковПТО.Форма.ФормаДокумента», ПараметрыФормы);

В модуле формы документа при создании на сервере:

Если Параметры.Свойство(«ФИО») Тогда

  Объект.ФИО = Параметры.ФИО;  //Параметры.Свойство(«СсылкаНаЭлемент»);

КонецЕсли;

И не работает. Че не так?

   Ёпрст

15 — 12.05.16 — 14:06

(14) Отладчиком посмотри, че там хоть прилетело

   lodger

16 — 12.05.16 — 14:21

(14) «Форма=» убери.

   Aleks291086

17 — 12.05.16 — 14:29

(15) (16)

«Форма» убрал.

Отладчик молчит, ошибок нет

   Aleks291086

18 — 12.05.16 — 14:32

Не передает параметр

   lodger

19 — 12.05.16 — 14:33

(18) мистика

   Ёпрст

20 — 12.05.16 — 14:36

(18) в каком месте хоть смотришь То ?

   Aleks291086

21 — 12.05.16 — 14:50

(20) Точку останова ставлю на

Объект.ФИО = Параметры.ФИО;

пропускает

   Ёпрст

22 — 12.05.16 — 14:55

Параметры ?

очень интересно, это что у вас ?

   Ёпрст

23 — 12.05.16 — 14:58

Что там у вас в Параметры ?

в отладчике то хоть посмотрите

   Aleks291086

24 — 12.05.16 — 15:27

(23) Всмысле что у меня в Параметры?

   Aleks291086

25 — 12.05.16 — 15:40

А вообще никакие данные не добавляет ПриСозданииНаСервере(), даже любые тестовые

   hhhh

26 — 12.05.16 — 15:41

(24) закладку Параметры открой на форме, не тормози. Проверь есть там Иванов?

   Ёпрст

27 — 12.05.16 — 15:44

В присозданиинасервере вотуни точку останова и смотри, через shift+f9 чего сидит в Параметры.

   Aleks291086

28 — 12.05.16 — 16:02

(26) (27) В параметрах ФИО, тип строка. На точку останова не реагирует. Процедуру не видит. Даже ставлю Объект.ФИО=ПараметрыСеанса.ТекущийПользователь;

Не ставит ничего.

   Nuobu

29 — 12.05.16 — 16:04

(28) Если на точку останова не реагирует, то у Вас — сервер запущен без «-debug».

  

Aleks291086

30 — 12.05.16 — 16:11

Парни, сильно извиняюсь. Саму процедуру ПриСозданииНаСервере() не указал в свойствах формы. Все сработало. Спасибо!

Получить ( установить) значение реквизита управляемой формы.

Автор nataliya_vl, 07 сен 2016, 19:51

0 Пользователей и 1 гость просматривают эту тему.

1с 8.3. Управляемая форма,на ней реквизит «Дата» (поле ввода), на основе этой даты будет осуществляться отбор . Как установить в это поле значене текущей даты?  Как считать значение после изменения пользователем?
Объекта у реквизита нет, «Элемент» это поле ввода,там значение не видится.


Если к полю ввода привязывается не реквизит объекта, то надо создать реквизит самой формы.
в коде обращаться просто по имени (без «Объект.»).
текущую дату присвоить в ПриСозданииНаСервере()
    Реквизит = ТекущаяДата()

изменение «ловит» обработчик события ПриИзменении

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


при создании/открытии формы есть такие два события

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
здесь можно/нужно заполнять ссылочные/объектные реквизиты и простых типов

&НаКлиенте
Процедура ПриОткрытии(Отказ)
здесь можно заполнить реквизиты простых типов
или с помощью вызова серверной функции сложные реквизиты

при этом надо учесть, что если у вас в форме включено сохранение реквизитов,
то проверять и перезаполнять их надо уже в Процедура ПриОткрытии(Отказ)

поэтому для вашего варианта подойдет это


&НаКлиенте
Процедура ПриОткрытии(Отказ)

    //... какие-то предыдущие команды
    Дата = ТкущаяДата();

КонецПроцедуры

в этом случае, всегда, при открытии формы, у вас в поле будет текущая дата

если помогло нажмите: Спасибо!


Цитата: LexaK от 08 сен 2016, 09:53
&НаКлиенте
Процедура ПриОткрытии(Отказ)
здесь можно заполнить реквизиты простых типов
или с помощью вызова серверной функции сложные реквизиты

от сюда бегать на сервер крайне не желательно. Для этого есть
ПриСозданииНаСервере и ПриЧтенииНасервере (для новых объектов не вызывается)

Спасибо за Сказать спасибо


Спасибо, заполнился реквизит :)


Вывод результата запроса на форму УП в таблицу значений (аналог СоздатьКолонки() для УП) 2
при разработке на обычных формах было удобно выводить результат запроса используя метод СоздатьКолоки(): Процедура ПоискНажатие(Элемент)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ДокументоОборот.Этап,
| ДокументоОборот.Отдел,
| Докуме


Как обновить динамический список или реквизит на форме клиента? 25
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр


Как отобразить дерево значений на управляемой форме 0
Создадим новую внешнюю обработку. Добавляем управляемую форму и создаем обработчик ПриСозданииНаСервере(). Никаких реквизитов и элементов “вручную” не добавляем, будем делать это программно. НаСервере
Процедура ПриСозданииНаСервере(Отказ, Станда


Как передать таблицу значений с сервера на клиент? 5
Многие спрашиваю, как передать тз с сервера на клиент — ниже несколько вариантов как это можно реализовать: Через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр НаКлиенте
Процедура ПолучитьТаблицу НаСервер(Команд а)
ТЗВСтроке = ПолучитьТЗНаС


Комиссионная торговля 0
Добрый день. УТ11 (11.4.13.46) Наша организация принимает товар на комиссию. В отчете комитенту цена комитента — ставится последняя, а нужно по фактическому поступлению. Подскажите пожалуйста, может кто то сталкивался с подобной проблемой. Спасибо.


Посмотреть все результаты поиска похожих

В этой статье я приведу небольшой пример, который может возникнуть в реальной жизни, и который будет полезен начинающим программистам 1С, особенно тем, кто столкнулся с открытием одной управляемой формы из другой формы и передачей значений с формы на форму.

Рассмотрим следующую задачу: в табличной части некоторого документа есть реквизит «Пояснение» (тип строка), для удобства работы пользователей необходимо сделать так, чтобы при нажатии на кнопку «Лупа» поля ввода этого реквизита текущей строки табличной части, открывалась форма с многострочным полем ввода, где пользователь может ввести нужный ему текст. После нажатия на кнопку «Поместить» открывшейся формы вся информация из поля ввода должна быть передана в соответствующее поле текущей строки табличной части.

Для демонстрации решения, я использую учебную конфигурацию, где в табличной части документа «Поступление товаров и услуга» имеется реквизит «Пояснение» (строка (250)).

Реквизит табличной части документа

На форме документа у поля «Пояснение» таблицы формы в свойство «КнопкаОткрытия» установим значение «Да».

Свойство КнопкаОткрытия поля ввода

В результате у нас у соответствующего поля на форме появится кнопка Открыть.

Кнопка открыть на форме

Теперь создадим произвольную форму документа, которую назовем ФормаВводаПояснения.

Создание новой формы документа

У этой формы создадим реквизит управляемой формы «Ввод пояснения» (строка (250))

Создание реквизита новой формы документа

И поместим этот реквизит на форму в виде поля ввода. У поля ввода установим многострочный режим и уберем заголовок.

Свойства поля ввода формы

У командной панели формы снимем флаг «Автозаполнение»

Флаг автозаполение команды формы

Создадим команду формы «Поместить», которую разместим в командной панели формы в виде кнопки. И у этой кнопки установим флаг у свойства «Кнопка по умолчанию»

Свойство кнопка по умолчанию кнопки формы

Теперь займемся параметрами. Вполне возможно, что в нашем поле таблицы формы документа уже будет какая-то информация, поэтому её необходимо будет передать в форму ввода пояснения. Для этого на форме ввода пояснения создадим параметр ПриемникПояснения, в который, впоследствии, и будем передавать значение пояснения из формы документа.

Параметр управляемой формы

Теперь сделаем так, чтобы при открытии формы значение из этого параметра передавалось в реквизит «Ввод пояснения» из нашей формы.  Для этого у нашей формы ввода пояснения создадим событие при создании на сервере.

Событие управляемой формы ПриСозданииНаСервере

В этом обработчике напишем следующий код

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    ВводПояснения = Параметры.ПриемникПояснения;

КонецПроцедуры

Нам осталось отработать нажатие на кнопку «Поместить», для этого создадим обработчик соответствующей команды в клиентском контексте.

Создание обработчика команды формы

В этом обработчике мы будем закрывать форму, а в качестве параметра закрытия передадим реквизит формы.

&НаКлиенте
Процедура Поместить(Команда)

    Закрыть(ВводПояснения);

КонецПроцедуры

С этой формой мы закончили, перейдем к форме документа. На форме документа у поля Пояснения таблицы формы создадим обработчик события ПриОткрытии в клиентском контексте.

Создание обработчика события ПриОткрытии

Это событие возникает, когда пользователь нажимает на кнопку «Открыть» соответствующего поля.

В обработчике события, первым делом, в параметр СтандартнаяОбработка установим значение Ложь.  Тогда при нажатии на кнопку открытия, не будет срабатывать стандартная обработка платформы, которая срабатывает при нажатии на эту кнопку.

&НаКлиенте
Процедура СписокТоваровПояснениеОткрытие(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

КонецПроцедуры

Теперь в этой же процедуре нам нужно получить значение поля Пояснение текущей строки.

ТекущаяСтрока = Элементы.СписокТоваров.ТекущиеДанные;
ЗначениеПояснения = ТекущаяСтрока.Пояснение;

Это значение мы будем передавать в качестве параметра в форму ввода пояснения при её открытии. Для этого я создам структуру, где в качестве ключа будет название параметра из формы ввода пояснения (ПриемникПояснения), который мы создали в форме ввода пояснения, а в качестве значения структуры будет значение, которое мы только что получили.

ПараметрыВвода = Новый Структура("ПриемникПояснения",ЗначениеПояснения);

Открывать формы мы будем при помощи метода глобального контекста ОткрытьФорму, передадим в неё параметры ввода, а также установим, чтобы блокировалось окно владельца.

ОткрытьФорму("Документ.ПоступлениеТоваров.Форма.ФормаВводаПояснения",ПараметрыВвода,,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

Если мы на этом остановимся, то у нас форма ввода пояснения откроется, информация из формы документа там появится, но информация с формы пояснения не будет передана в форму документа, как мы планировали.  Для того, чтобы это произошло необходимо создать описание оповещения, в котором будет указан метод, который сработает после закрытия формы ввода описания. В конечном итоге у нас должен получиться следующий обработчик события нажатия на кнопку открытия.

&НаКлиенте
Процедура СписокТоваровПояснениеОткрытие(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    ТекущаяСтрока = Элементы.СписокТоваров.ТекущиеДанные;
    ЗначениеПояснения = ТекущаяСтрока.Пояснение;

    ПараметрыВвода = Новый Структура("ПриемникПояснения",ЗначениеПояснения);
    ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораПояснения",ЭтаФорма);

    ОткрытьФорму("Документ.ПоступлениеТоваров.Форма.ФормаВводаПояснения",ПараметрыВвода,,,,,ОписаниеОповещения,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

КонецПроцедуры

В описании оповещения мы указали процедуру ПослеВыбораПояснения. Нам необходимо создать такую процедуру в клиентском контексте, и сделать её экспортной.

&НаКлиенте
Процедура ПослеВыбораПояснения(Результат, ДопПараметры) Экспорт
    Если Результат = Неопределено Тогда
        Возврат;
    КонецЕсли;
    Элементы.СписокТоваров.ТекущиеДанные.Пояснение = Результат;
КонецПроцедуры

В этой процедуре, мы текущему значению поля Пояснение присваиваем результат закрытия формы ввода пояснения.

На этом наше программирование закончено. Работа выполнена.

Открытие формы ввода пояснения

Другие статьи про открытие управляемых форм:

Программное открытие управляемой формы выбора

Открытие управляемой формы по верх окон

Открытие обычной формы в управляемом приложении

Открытие формы на основании другого объекта

Открытие управляемой формы существующего объекта

Открытие управляемой формы с передачей параметров

Подробно вопросы передачи параметров, открытия форм рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомиться с разработкой управляемого приложения.

Книга «Основы разработки в 1С: Такси»

Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

  1. Без сложных технических терминов;
  2. Более 600 страниц практического материала;
  3. Каждый пример сопровождается рисунком (скриншот);
  4. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

Промо-код на скидку в 15% — 48PVXHeYu

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Книга «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Инициализация реквизитов при создании нового объекта

Один из методов упрощения работы пользователя — это заполнение реквизитов нового объекта (элемент справочник, документ) значениями по умолчанию. Реализовать заполнение реквизитов можно двумя способами:

  1. в обработчике события формы элемента — ПриСозданииНаСервере;
  2. в обработчике события объекта — ОбработкаЗаполнения.

Первый способ не рекомендуется использовать, но все-равно его рассмотрим. Создадим в модуле формы обработчик события ПриСозданииНаСервере. В обработчике проверим факт создания нового объекта, если объект новый, то произведем заполнение реквизитов.


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

// Если ссылка у объекта пустая, значит он еще не записан,
// а следовательно он является новым объектом.
ЭтоНовыйОбъект = Объект.Ссылка.Пустая();

// Если объект новый, то выполняем заполнение реквизитов.
Если ЭтоНовыйОбъект Тогда
Объект.Ответственный = Пользователи.ТекущийПользователь();
Объект.Комментарий = "Документ создан " + Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");
КонецЕсли;

КонецПроцедуры

Второй способ намного проще, т.к. он предусмотрен платформой и рекомендован к использованию. Создадим в модуле объекта обработчик события ОбработкаЗаполнения и напишем программный код по заполнению реквизитов объекта без каких-либо проверок, потому что данное событие возникает при интерактивном вводе нового объекта. Более подробное описание обработчика события см. в синтакс-помощнике.


Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ЭтотОбъект.Ответственный = Пользователи.ТекущийПользователь();
ЭтотОбъект.Комментарий = "Документ создан " + Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");

КонецПроцедуры

Пару слов из личного опыта: не стоит вешать тяжелые операции по инициализации реквизитов на события, которые вызываются при открытии объекта, так как они будут существенно увеличивать время открытия объекта. Предоставьте выполнение таких операций на выбор пользователю, создав команду формы.

Продолжаю небольшую серию статей про открытие обычных и управляемых форм различными способами, предыдущая статья была посвящена реализации подбора в управляемом приложении, а сегодня на очереди открытие формы с заполнением.

Открытие формы с заполнением (передача в параметре открываемой формы и реализация метода «ОбработкаЗаполнения()») выполняется одинаково в управляемом и обычном приложении (проверял на платформе 8.3.5.1146 — управляемое приложение и на платформе 8.2.18.102 — обычное приложение).

В том месте кода, откуда нужно сделать открытие и заполнение формы нужно добавить приблизительно такой код:

ПараметрыЗаполнения = Новый Структура;

ПараметрыЗаполнения.Вставить(«ТестРеквизит», «Тест строка»);

ПараметрыФормы = Новый Структура(«ЗначенияЗаполнения», ПараметрыЗаполнения);

фНовыйДокумент = ПолучитьФорму(«Документ.ТестДокумент.Форма.ФормаДокумента», ПараметрыФормы, ЭтаФорма);

фНовыйДокумент.Открыть();

В структуру «ПараметрыЗаполнения» записываются все нужные для заполнения данные, затем эта структура вставляется в другую структуру под названием «ПараметрыФормы».

Причем ключ, под которым структура «ПараметрыЗаполнения» вставляется в структуру «ПараметрыФормы», должен называться именно «ЗначенияЗаполнения» иначе, ничего не работать не будет.

Далее нужно реализовать событие модуля формы заполняемого объекта — «ОбработкаЗаполнения()». Я для этого использую следующую конструкцию, которая, на мой взгляд, изящно выглядит и позволяет избежать всех возможных ошибок (поправьте, если я ошибаюсь):

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

Если ТипЗнч(ДанныеЗаполнения) = Тип(«Структура») Тогда

ДанныеЗаполнения.Свойство(«ТестРеквизит», ТестРеквизит);

КонецЕсли;

КонецПроцедуры

Напомню, что метод структуры «Свойство()» проверяет наличие в структуре элементы с именем, указанным в первом параметре и записывает найденное значение во второй параметр — в данном случае это реквизит заполняемого объекта (если элемент с указанным именем в структуре не найден, то во второй параметр записывается «Неопределено»).

На этом все, надеюсь данная статья Вам помогла.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Загрузка…

Понравилась статья? Поделить с друзьями:
  • Транспортная компания кит южно сахалинск телефон
  • Установить значение реквизита табличной части 1с
  • Узнать реквизиты материнского капитала через пфр
  • Транспортная компания коровинское шоссе 35 стр 1
  • Уин что это такое в реквизитах оплаты госпошлины