Вывод результата запроса на форму УП в таблицу значений (аналог СоздатьКолонки() для УП) 2
при разработке на обычных формах было удобно выводить результат запроса используя метод СоздатьКолоки(): Процедура ПоискНажатие(Элемент)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ДокументоОборот.Этап,
| ДокументоОборот.Отдел,
| Докуме
Как обновить динамический список или реквизит на форме клиента? 25
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр
Как отобразить дерево значений на управляемой форме 0
Создадим новую внешнюю обработку. Добавляем управляемую форму и создаем обработчик ПриСозданииНаСервере(). Никаких реквизитов и элементов “вручную” не добавляем, будем делать это программно. НаСервере
Процедура ПриСозданииНаСервере(Отказ, Станда
Как передать таблицу значений с сервера на клиент? 5
Многие спрашиваю, как передать тз с сервера на клиент — ниже несколько вариантов как это можно реализовать: Через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр НаКлиенте
Процедура ПолучитьТаблицу НаСервер(Команд а)
ТЗВСтроке = ПолучитьТЗНаС
Комиссионная торговля 0
Добрый день. УТ11 (11.4.13.46) Наша организация принимает товар на комиссию. В отчете комитенту цена комитента — ставится последняя, а нужно по фактическому поступлению. Подскажите пожалуйста, может кто то сталкивался с подобной проблемой. Спасибо.
Посмотреть все результаты поиска похожих
Рассмотрим такую задачу. Есть сложная форма, с большим количеством реквизитов. Для многих из них в конфигураторе установлено свойство ЗаполнятьИзДанныхЗаполнения. В результате при открытии этой формы для нового объекта ее реквизиты могут быть заполнены различными начальными значениями. Это зависит и от точки навигации, в которой расположена команда создания нового объекта, и от программного алгоритма, описанного в модуле самого объекта.
Теперь предположим, что в процессе выполнения некоторого программного кода требуется открыть эту форму. Но не «пустую», а так, чтобы ее реквизиты были заполнены теми значениями, которые должны получиться в результате работы всех алгоритмов, заложенных в форму.
Можно было бы получить программный объект формы и затем напрямую установить значения ее реквизитов. Но тогда в этом месте программного кода пришлось бы дублировать весь тот алгоритм, который отвечает за начальное заполнение формы. Это может быть трудоемко, и поддерживать такое решение сложно, т. к. при изменении этого алгоритма его придется менять не в одном месте, в модуле объекта, а синхронно еще в нескольких местах конфигурации. Нет никакой гарантии, что что-то не будет пропущено и что все такие изменения будут работать правильно.
Поэтому существует другой, более удобный и простой способ решения такой задачи.
Открывая форму программно, можно передать ей набор данных заполнения, который она получила бы, если бы открывалась интерактивной командой.
Например, программно нужно открыть форму новой накладной точно так, как если бы она открывалась интерактивной командой из списка накладных, отобранного по поставщику и складу. Предположим, что в переменных СсылкаНаПоставщика и СсылкаНаСклад у нас имеются необходимые ссылки. Тогда можно использовать следующий код:
ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора); ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы);
Данные заполнения можно передать в открываемую форму с помощью параметра ЗначенияЗаполнения. В этот параметр нужно передать те данные, которые передала бы туда платформа, если бы выполнялось аналогичное интерактивное действие.
В нашем случае платформа передала бы в данные заполнения ссылку на поставщика и ссылку на склад, по которым отобран список накладных. Поэтому мы в данные заполнения передаем структуру, содержащую два элемента: для реквизита Поставщик — ссылку на поставщика, а для реквизита Склад — ссылку на склад.
Может встретиться и более сложная ситуация, когда в программном коде необходимо полностью съимитировать интерактивные действия пользователя по созданию нового объекта, не открывая форму этого объекта.
В этом случае можно создать программно объект, а затем вызвать его метод Заполнить(). В этом случае платформа выполнит все те же действия и вызовет все те же события, которые она бы вызвала в случае интерактивного создания нового объекта. В метод Заполнить() в качестве параметра точно так же можно передать структуру, содержащую данные заполнения:
ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад); ОбъектНакладной = Документы.Накладная.СоздатьДокумент(); ОбъектНакладной.Заполнить(ЭлементыОтбора);
// Действия, имитирующие интерактивный ввод данных пользователем ...
ОбъектНакладной.Дата = ТекущаяДатаСеанса();
... ОбъектНакладной.Записать();
Продолжаю небольшую серию статей про открытие обычных и управляемых форм различными способами, предыдущая статья была посвящена реализации подбора в управляемом приложении, а сегодня на очереди открытие формы с заполнением.
Открытие формы с заполнением (передача в параметре открываемой формы и реализация метода «ОбработкаЗаполнения()») выполняется одинаково в управляемом и обычном приложении (проверял на платформе 8.3.5.1146 — управляемое приложение и на платформе 8.2.18.102 — обычное приложение).
В том месте кода, откуда нужно сделать открытие и заполнение формы нужно добавить приблизительно такой код:
ПараметрыЗаполнения = Новый Структура; ПараметрыЗаполнения.Вставить(«ТестРеквизит», «Тест строка»); ПараметрыФормы = Новый Структура(«ЗначенияЗаполнения», ПараметрыЗаполнения); фНовыйДокумент = ПолучитьФорму(«Документ.ТестДокумент.Форма.ФормаДокумента», ПараметрыФормы, ЭтаФорма); фНовыйДокумент.Открыть(); |
В структуру «ПараметрыЗаполнения» записываются все нужные для заполнения данные, затем эта структура вставляется в другую структуру под названием «ПараметрыФормы».
Причем ключ, под которым структура «ПараметрыЗаполнения» вставляется в структуру «ПараметрыФормы», должен называться именно «ЗначенияЗаполнения» иначе, ничего не работать не будет.
Далее нужно реализовать событие модуля формы заполняемого объекта — «ОбработкаЗаполнения()». Я для этого использую следующую конструкцию, которая, на мой взгляд, изящно выглядит и позволяет избежать всех возможных ошибок (поправьте, если я ошибаюсь):
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Если ТипЗнч(ДанныеЗаполнения) = Тип(«Структура») Тогда ДанныеЗаполнения.Свойство(«ТестРеквизит», ТестРеквизит); КонецЕсли; КонецПроцедуры |
Напомню, что метод структуры «Свойство()» проверяет наличие в структуре элементы с именем, указанным в первом параметре и записывает найденное значение во второй параметр — в данном случае это реквизит заполняемого объекта (если элемент с указанным именем в структуре не найден, то во второй параметр записывается «Неопределено»).
На этом все, надеюсь данная статья Вам помогла.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Загрузка…
Добавить значение в реквизит при открытии формы программо |
Я |
12.05.16 — 11:52
Добрый день! Есть общая форма, кнопка на ней. Открываем форму нового документа при нажатии кнопки. Как добавить в открытую форму программно значений в реквизиты(тип строка)? Проводим вручную открытый документ.
Пока так сделал, но не добавляет Значение реквизита (Иванов):
&НаКлиенте
Процедура Иванов(Команда)
СсылкаНаЭлемент=»Иванов»;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить(«Иванов», СсылкаНаЭлемент);
Форма=ОткрытьФорму(«Документ.РегестрацияСотрудниковПТО.Форма.ФормаДокумента», ПараметрыФормы);
КонецПроцедуры
1 — 12.05.16 — 11:54
Форма.Иванов=»Вася»
2 — 12.05.16 — 11:57
86 год
3 — 12.05.16 — 12:00
(1) Поле объекта не обнаружено (ФИО).
Реквизит, в который запихнуть значение — ФИО.
4 — 12.05.16 — 12:01
(0) ну начали вы верно, параметр в форму отправился, а что форме с ним делать?
в форме документа ПриСозданииНаСервере надо разбирать входящие параметры и заполнять необходимые реквизиты.
5 — 12.05.16 — 12:01
РегестрацияСотрудниковПТО через Е — эпик.
6 — 12.05.16 — 12:06
(5) Так надо, РегИстрацияСотрудниковПТО есть уже реквизит. Этот тренировочный. Отмазался)
7 — 12.05.16 — 12:08
(6) В таких случаях нужно писать: РегИстрацияСотрудниковПТО11ТестовыйВторойИТакДалее.
8 — 12.05.16 — 12:09
Форма=ОткрытьФорму(«Документ.РегестрацияСотрудниковПТО.Форма.ФормаДокумента», ПараметрыФормы);
Форма=ПолучитьФорму(«Документ.РегестрацияСотрудниковПТО.Форма.ФормаДокумента», ПараметрыФормы);
Форма.ФИО = «Иванов»;
Форма.Открыть()
9 — 12.05.16 — 12:17
(4) (8) А в форме самого документа принять параметр и заполнить реквизит как? (ПриСозданииНаСервере)
10 — 12.05.16 — 12:52
(9) Как обычно.
Процедура ПриСозданииНаСервере()
Если Параметры.Свойство(«Иванов») Тогда
ФИО = Параметры.Иванов;
КонецЕсли;
<остальной код>
КонецПроцедуры
где Иванов — имя переданного параметра.
ФИО — реквизит формы или объекта.
11 — 12.05.16 — 13:10
(0) в ПриОткрытии переданные параметры уже не видны видны в ПриСозданииНаСервере
12 — 12.05.16 — 13:23
Перебрали все возможные варианты г-кода.
И копание в форме, и заполнение реквизитов в при создании…
(0) ОбработкаЗаполнения кури. В модуле или в подписке.
13 — 12.05.16 — 13:36
(12) http://v8.1c.ru/metod/faq2/answer.jsp?id=652
мило конечно, но как открыть и передать любой параметр через команду другой формы?
небольшая вытяжка из СП:
«<ДанныеЗаполнения>
Тип: Произвольный.
Значение, которое используется как основание для заполнения.
Если обработчик вызван при выполнении метода Заполнить, параметр равен параметру <ДанныеЗаполнения> метода Заполнить.
При обработке заполнения во время ввода на основании параметр имеет значение основания.
При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено. Если параметр <СтандартнаяОбработка> по окончании работы обработчика равен Истина (установлен по умолчанию), система автоматически произведет заполнение одноименными элементами структуры.»
14 — 12.05.16 — 13:56
В общей форме:
СсылкаНаЭлемент=»Иванов»;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить(«ФИО», СсылкаНаЭлемент);
Форма=ОткрытьФорму(«Документ.РегестрацияСотрудниковПТО.Форма.ФормаДокумента», ПараметрыФормы);
В модуле формы документа при создании на сервере:
Если Параметры.Свойство(«ФИО») Тогда
Объект.ФИО = Параметры.ФИО; //Параметры.Свойство(«СсылкаНаЭлемент»);
КонецЕсли;
И не работает. Че не так?
15 — 12.05.16 — 14:06
(14) Отладчиком посмотри, че там хоть прилетело
16 — 12.05.16 — 14:21
(14) «Форма=» убери.
17 — 12.05.16 — 14:29
(15) (16)
«Форма» убрал.
Отладчик молчит, ошибок нет
18 — 12.05.16 — 14:32
Не передает параметр
19 — 12.05.16 — 14:33
(18) мистика
20 — 12.05.16 — 14:36
(18) в каком месте хоть смотришь То ?
21 — 12.05.16 — 14:50
(20) Точку останова ставлю на
Объект.ФИО = Параметры.ФИО;
пропускает
22 — 12.05.16 — 14:55
Параметры ?
очень интересно, это что у вас ?
23 — 12.05.16 — 14:58
Что там у вас в Параметры ?
в отладчике то хоть посмотрите
24 — 12.05.16 — 15:27
(23) Всмысле что у меня в Параметры?
25 — 12.05.16 — 15:40
А вообще никакие данные не добавляет ПриСозданииНаСервере(), даже любые тестовые
26 — 12.05.16 — 15:41
(24) закладку Параметры открой на форме, не тормози. Проверь есть там Иванов?
27 — 12.05.16 — 15:44
В присозданиинасервере вотуни точку останова и смотри, через shift+f9 чего сидит в Параметры.
28 — 12.05.16 — 16:02
(26) (27) В параметрах ФИО, тип строка. На точку останова не реагирует. Процедуру не видит. Даже ставлю Объект.ФИО=ПараметрыСеанса.ТекущийПользователь;
Не ставит ничего.
29 — 12.05.16 — 16:04
(28) Если на точку останова не реагирует, то у Вас — сервер запущен без «-debug».
Aleks291086
30 — 12.05.16 — 16:11
Парни, сильно извиняюсь. Саму процедуру ПриСозданииНаСервере() не указал в свойствах формы. Все сработало. Спасибо!
Рассмотрим такую задачу. Есть сложная форма, с большим количеством реквизитов. Для многих из них в конфигураторе установлено свойство ЗаполнятьИзДанныхЗаполнения
. В результате при открытии этой формы для нового объекта ее реквизиты могут быть заполнены различными начальными значениями. Это зависит и от точки навигации, в которой расположена команда создания нового объекта, и от программного алгоритма, описанного в модуле самого объекта.
Теперь предположим, что в процессе выполнения некоторого программного кода требуется открыть эту форму. Но не «пустую», а так, чтобы ее реквизиты были заполнены теми значениями, которые должны получиться в результате работы всех алгоритмов, заложенных в форму.
Можно было бы получить программный объект формы и затем напрямую установить значения ее реквизитов. Но тогда в этом месте программного кода пришлось бы дублировать весь тот алгоритм, который отвечает за начальное заполнение формы. Это может быть трудоемко, и поддерживать такое решение сложно, т. к. при изменении этого алгоритма его придется менять не в одном месте, в модуле объекта, а синхронно еще в нескольких местах конфигурации. Нет никакой гарантии, что что-то не будет пропущено и что все такие изменения будут работать правильно.
Поэтому существует другой, более удобный и простой способ решения такой задачи. Открывая форму программно, можно передать ей набор данных заполнения, который она получила бы, если бы открывалась интерактивной командой.
Например, программно нужно открыть форму новой накладной точно так, как если бы она открывалась интерактивной командой из списка накладных, отобранного по поставщику и складу. Предположим, что в переменных СсылкаНаПоставщика
и СсылкаНаСклад
у нас имеются необходимые ссылки. Тогда можно использовать следующий код:
ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора); ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы);
Данные заполнения можно передать в открываемую форму с помощью параметра ЗначенияЗаполнения
. В этот параметр нужно передать те данные, которые передала бы туда платформа, если бы выполнялось аналогичное интерактивное действие.
В нашем случае платформа передала бы в данные заполнения ссылку на поставщика и ссылку на склад, по которым отобран список накладных. Поэтому мы в данные заполнения передаем структуру, содержащую два элемента: для реквизита Поставщик
— ссылку на поставщика, а для реквизита Склад
— ссылку на склад.
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) Если ДанныеЗаполнения = Неопределено Тогда // «Простой» ввод новой накладной // .......... ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда // Новая накладная создается командой из отобранного списка накладных Поставщик = ДанныеЗаполнения.Поставщик; Склад = ДанныеЗаполнения.Склад; ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Поставщики") Тогда // Новая накладная создается на основании элемента справочника «Поставщики» Поставщик = ДанныеЗаполнения.Ссылка; ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Склады") Тогда // Новая накладная создается на основании элемента справочника «Склады» Склад = ДанныеЗаполнения.Ссылка; КонецЕсли; КонецПроцедуры
Может встретиться и более сложная ситуация, когда в программном коде необходимо полностью съимитировать интерактивные действия пользователя по созданию нового объекта, не открывая форму этого объекта.
В этом случае можно создать программно объект, а затем вызвать его метод Заполнить()
. В этом случае платформа выполнит все те же действия и вызовет все те же события, которые она бы вызвала в случае интерактивного создания нового объекта. В метод Заполнить()
в качестве параметра точно так же можно передать структуру, содержащую данные заполнения:
ОбъектНакладной = Документы.Накладная.СоздатьДокумент(); ЭлементыОтбора = Новый Структура( "Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад ); ОбъектНакладной.Заполнить(ЭлементыОтбора); // Действия, имитирующие интерактивный ввод данных пользователем // .......... ОбъектНакладной.Дата = ТекущаяДатаСеанса(); // .......... ОбъектНакладной.Записать();
Поиск:
1С:Предприятие • Заполнить • Заполнять из данных заполнения • Значение заполнения • Обработка заполнения • Управляемая форма
1C | ||
|
Спасибо, смешно. Такой метод не будет работать в 8.2 (тонкий клиент, веб-клиент), только обычное приложение.
Такой метод слишком узок в применении, поэтому жизнь его отвергнет (кроме как валюта регламентированного учета и подобные).
Преподаватель Вас научил лишь тому, что можно подписаться на обработчик «ПриОткрытии» и получить значения констант. Причем тоже не очень оптимально, т.к. при частом открывании будут вылетать различные блокировки (если очень много обращений к константе). Можно использовать параметры сеанса, как вариант, и устанавливать в них значение константы при запуске системы или хэшировать или еще что-нибудь, только не постоянное обращение к базе данных.
Начальный опыт, тоже опыт! А мне было бы интересно как открыть управляемую форму с помощью
«ОткрытьФормуМодально(«ИмяФормы», Параметры, ЭтаФорма); при этом в самой открываемой форме мы ничего не хотим изменять (никаких изменений в модуле). В параметрах должно быть что-то, что будет заполнять нужные реквизиты объекта. А для более сложного варианта, изначально открытие списка с отбором по значениям реквизитов, а при создании нового объекта заполнение их нужными. Опять же, ни в какие модули этого документа мы не должны залезать.
Программное открытие форм в управляемом приложении 1С значительно отличается от их открытия в обычном приложении. Рассмотрим для начала старый метод. Он заключается в получении формы и ее последующем открытии в обычном или модальном режиме (при открытии в модальном режиме форма блокирует работу программы).
ПолучитьФорму(«Документ.ПоступлениеТоваровУслуг.ФормаДокумента»).Открыть()
Это самый медленный метод открытия форм. Тем не менее, он позволяет программно обработать форму перед открытием. Для обработки код нужно немного изменить:
Форма=ПолучитьФорму(«Документ.ПоступлениеТоваровУслуг.ФормаДокумента»);
//Тут выполняем действия с формой
Форма.Открыть();
Надо учитывать, что при получении формы будет выполняться еще процедура события ПриСозданииНаСервере.
Рассмотрим другие методы, которые позволяют открывать формы в управляемом приложении 1С быстрее и удобнее. В зависимости от конкретной ситуации могут использоваться разные методы.
1. Как открыть форму объекта в управляемом приложении, если есть ссылка на него.
В этом случае все предельно просто.
СпрСсылка=Справочники.Номенклатура.НайтиПоКоду(«000000001»);
ОткрытьЗначение(СпрСсылка);
2. Как открыть форму выбора и получить потом выбранное значение.
Для этого существует функция ВвестиЗначение(). У функции 3 параметра:
- Переменная, в которую будет записано выбранное значение;
- Подсказка, которая будет отображена в окне выбора;
- Описание типов выбираемых значений. Может быть несколько типов, тогда перед выбором конкретного значения будет предложено выбрать тип.
В результате выполнения функции откроется форма выбора по умолчанию для объекта указанного типа.
Перем Значение;
Массив=новый массив;
Массив.Добавить(Тип(«СправочникСсылка.Номенклатура»));
Массив.Добавить(Тип(«СправочникСсылка.Контрагенты»));
ОписаниеТипов=новый ОписаниеТипов(Массив);
Рез=ВвестиЗначение(Значение, «Подсказка», ОписаниеТипов);
Предыдущие способы позволяли открывать только формы, установленные для объектов по умолчанию (форму объекта или форму выбора). Если нужно открыть произвольную форму, то можно воспользоваться функцией ОткрытьФорму().
Эта функция имеет довольно много параметров. Рассмотрим некоторые из них:
- Имя формы — тут можно выбрать либо одну из стандартных форм объекта, например, ФормаВыбора или ФормаСписка. Или конкретную, созданную разработчиками форму.
- Параметры — позволяет передать в форму в виде структуры некоторые параметры перед ее открытием, тем самым определив выводимые данные. Параметры могут представлять собой любые данные, которые можно передавать с клиента на сервер. Переданные при открытии формы параметры можно обработать в процедуре ПриСозданииНаСервере() у открываемой формы.
- Режим открытия формы — имеет 3 варианта: независимый, блокировать весь интерфейс, блокировать форму владельца.
Рассмотрим, как применяется функция ОткрытьФорму() в различных ситуациях.
3. Как открыть форму существующего объекта
У каждой формы есть один ключевой реквизит. Он выделен жирным в списке реквизитов формы и обычно называется Объект у форм элементов справочников, документов. У других объектов название может быть другим. Для открытия формы существующего объекта нужно передать в открываемую форму параметр Ключ со значением в виде ссылки на объект.
&НаКлиенте
Процедура Команда1(Команда)
Параметр=новый структура;
Параметр.Вставить(«Ключ», НайтиС());
ОткрытьФорму(«Справочник.Контрагенты.ФормаОбъекта»,Параметр);
КонецПроцедуры
&НаСервере
Функция НайтиС();
Возврат Справочники.Контрагенты.НайтиПоРеквизиту («ИНН», «745107734623»)
КонецФункции
4. Как открыть форму нового объекта
Тут подойдет просто функция ОткрытьФорму() без всяких параметров.
&НаКлиенте
Процедура Команда1(Команда)
ОткрытьФорму(«Справочник.Контрагенты.ФормаОбъекта»);
КонецПроцедуры
5. Как открыть форму нового объекта и заполнить ее на основании чего-либо
Нужно передать параметр Основание, значением которого будет являться ссылка на объект-основание заполнения. При этом будет запущена процедура ОбработкаЗаполнения().
&НаКлиенте
Процедура Команда1(Команда)
Параметр=новый структура;
Параметр.Вставить(«Основание», СсылкаНаСчетПокупателю);
ОткрытьФорму(«Документ.РеализацияТоваровУслуг.ФормаОбъекта», Параметр);
КонецПроцедуры
В этом примере будет создан документ Реализация товаров и услуг и заполнен на основании счета на оплату покупателю, ссылка на который была передана.
6. Как открыть форму и задать на ней отбор
Отбор на формах 1С может быть простым и сложным. Простой отбор предусматривает выражения типа Организация = ООО «Рога и копыта». Сложный отбор предполагает и другие типы сравнения, например, В списке. В данной статье рассмотрим организацию простого отбора, а сложному будет посвящена отдельная статья.
Чтобы организовать простой отбор, нужно передать в открываемую форму параметр с ключом Отбор, значением будет являться структура, в которой ключ — имя поля динамического списка, а значение — искомые данные.
Например, откроем форму списка справочника НомераГТД и сделаем там отбор по владельцу — элементу справочника Номенклатура.
&НаКлиенте
Процедура Команда1(Команда)
Параметр=новый структура;
Отбор=новый Структура;
Отбор.Вставить(«Владелец», СсылкаНаНоменклатуру);
Параметр.Вставить(«Отбор», Отбор);
ОткрытьФорму(«Справочник.НомераГТД.ФормаСписка», Параметр);
КонецПроцедуры
7. Как открыть форму записи регистра сведений
Для этого понадобится ключ записи регистра сведений.
Ключ записи — это значения всех измерений и период (если регистр периодический). То есть ключ записи — это параметры, по которым можно однозначно идентифицировать запись.
Алгоритм открытия следующий:
- Заносим в структуру данные ключа записи с необходимыми значениями.
- Помещаем полученную структуру в массив.
- Из массива создаем ключ записи.
- Передаем в открываемую форму параметр Ключ с ключом записи из п.3 в качестве значения.
&НаКлиенте
Процедура Команда1(Команда)
Параметр=новый структура;
ПараметрыКлюча=новый Структура;
ПараметрыКлюча.Вставить(«Номенклатура», СсылкаНаНоменклатуру);
ПараметрыКлюча.Вставить(«ТипЦены», СсылкаНаТипЦен);
ПараметрыКлюча.Вставить(«Период», Дата);
МассивКлюча = Новый Массив;
МассивКлюча.Добавить(ПараметрыКлюча);
КлючЗаписи = Новый(«РегистрСведенийКлючЗаписи.ЦеныНоменклатуры», МассивКлюча);
Параметр.Вставить(«Ключ», КлючЗаписи);
ОткрытьФорму(«РегистрСведений.ЦеныНоменклатуры.ФормаЗаписи», Параметр);
КонецПроцедуры