как присвоить значение реквизиту формы 1с
Программирование в 1С для всех
Знакомство с управляемой формой 1С лучше всего начинать с реквизитов. Что такое реквизит управляемой формы? По своей сути, это данные, которые привязаны именно к форме: они создаются, хранятся, отображаются (по возможности) и редактируются на форме. Вне контекста формы эти данные не могут существовать. Сам по себе реквизит не может отображаться на форме. Для этого служат элементы формы, которые связаны с реквизитами форм.
Научимся создавать простые реквизиты формы и размещать их на форме.
Для этого в конфигураторе 1С создадим пустую форму. Пусть это будет форма некой внешней обработки. В этой форме нас интересует закладка Реквизиты
В этой закладке сейчас только один реквизит – основной. Он нас пока не интересует, работа с основным реквизитом эта тема отдельной статьи. Пока разберемся с простыми реквизитами.
Для того, чтобы добавить реквизит необходимо нажать на кнопку «Добавить реквизит» командной панели закладки «Реквизиты»
После этого будет добавлен реквизит управляемой формы 1С с типом по умолчанию (строка) и справа откроется палитра свойств этого реквизита.
В этой палитре мы можем установить имя, заголовок, а так же тип реквизита управляемой формы.
Для тренировки создадим четыре реквизита с типом строка: Фамилия, Имя, Отчество и ФИО. И один реквизит с типом дата: ДатаРождения.
Разместим реквизиты на форме. Сделать это просто: необходимо нужный реквизит мышкой «перетащить» из закладки «Реквизиты» на закладку «Элементы»
Перетащим все реквизиты на формы, и с помощью кнопок «Вверх», «Вниз» удобно расположим их на форме.
Сейчас мы сделали такую примитивную форму, на которой расположили реквизиты. После того, как мы «перетащили» реквизит в элементы, то на форме был создан элемент формы. В нашем случае это поле формы. Если мы сейчас зайдем в палитру свойств поля ввода, то увидим, что он связан с реквизитом посредством свойства ПутьКДанным.
Если нажать на кнопку «…» свойства ПутьКДанным, то у разработчика есть возможность поменять привязанный к этому элементу реквизит формы.
Сейчас научимся использовать реквизиты в программном коде. Из статьи, посвященной архитектуре управляемой формы 1С 8.3 Вы знаете, что выполнение кода на форме возможно под директивами &НаКлиенте &НаСервере и &НаСервереБезКонтекста. Доступ к реквизитам формы возможен только в процедурах и функциях, которые выполняются на &НаКлиенте и &НаСервере.
Для наглядности выполним небольшую задачу: создадим команду, при выполнении которой Фамилия, Имя, Отчество и дата Рождения будут складываться в ФИО + Дата рождения.
Создадим локальную команду формы. Для этого на закладке «Команды» в подзакладке «Команды формы» необходимо нажать на кнопку «Добавить»
После создания команды, справа откроется палитра свойств новой команды, где мы зададим её название.
Но команда – это выполнение некоторых действий на форме. Чтобы действия осуществились необходимо создать обработчик команды. Для создания обработчика команды нужно нажать на кнопку «Лупа» свойства действия. После этого откроется окно выбора места размещения обработчика.
Мы выберем расположение НаКлиенте, поскольку для тех действий, которые мы хотим осуществить вполне хватит клиентского контекста.
После выбора места расположения обработчика, в модуле формы будет создана процедура под директивой &НаКлиенте, в которой мы напишем несложный код. В этом коде к реквизитам формы мы будем обращаться просто как к переменным. Мы можем это делать в клиентском и серверном контексте.
В этом коде, я преобразовал дату в строку при помощи функции формат.
Обратите внимание, после создание процедуры в палитре свойств команды свойство Действие заполнилось названием нашей новой процедуры.
И последним шагом нам осталось нашу команду разместить на управляемой форме. Просто перетащим её мышкой в закладку Элементы
При этом на форме появится кнопка.
Сохраним обработку и попробуем выполнить нашу команду.
Как видите, к реквизитам формы в модуле формы можно обращаться напрямую, как к переменным, но только если процедура или функция выполняется под директивами &НаКлиенте и &НаСервере.
Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
Промо-код на скидку в 15% — 48PVXHeYu
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей
Как получить доступ к реквизитам формы?
Этот цикл позволяет просмотреть имена а так же типы всех реквизитов формы, в том числе такие реквизиты как надписи, командные панели и тд.
Реквизиты формы могут быть различных типов. Поставив фильтр в виде типа реквизита мы можем просмотреть реквизиты определенного типа.
Если реквизит формы имеет тип «ТабличноеПоле», то можно такой элемент просканировать во вложенном цикле и узнать имена колонок таблицы:
Как получить значение отдельного реквизита формы?
Чаще требуется получать не массив реквизитов формы, а значение отдельных конкретных реквизитов формы. Например реквизиты «Шапки» или «Подвала» формы документа.
Реквизиты шапки могут иметь различные типы: Дата, СправочникСсылка, ЧекБокс, элемент раскрывающегося списка и др.
Как получить значение элементов табличной части формы?
Доступ к табличной части формы через объект
Доступ к табличной части формы (например: Товары) можно получить через объект:
Доступ к табличной части формы через ЭлементыФормы
Для того, чтобы код работал правильно, надо чтобы колонка формы табчасти объекта в свойстве данные ссылалась на реквизит табличной части объекта. Этим определяется тип колонки таб части формы.
То есть должна быть установлена связь между реквизитом табчасти объекта и реквизитом табчасти формы. Форм у объекта метаданных может быть много мы знаем. Табличную часть формы объекта можно получить через объект ЭлементыФормы :
Объект ЭлементыФормы используется для доступа к элементам управления, расположенным на форме, в частности к таб части документа.
Результат для документа Авансовый отчет:
Это табличное поле!! Товары
Количество строк: 4
Женские ботфорты коричневые
Ботинки женские демисезонные
Ботинки женские натуральная кожа
Женские босоножки
Результат для документа Авансовый отчет:
Это табличное поле!! ВыданныеАвансы
=======================
НомерСтроки 1
ДокументАванса Расходный кассовый ордер ТК000000004 от 15.02.2007 19:24:03
СуммаДокументаАванса 300
ВалютаДокументаАванса USD
Выдано 300
Сумма 174
Такое двойное сканирование удобно использовать для быстрой проверки того, что все колонки таб части формы имеют связь с реквизитами таб части объекта. Если такой связи у какой-либо колонки нет, система сгенерирует ошибку.
gvk2009 подробно и доходчиво описал разницу методов, за что ему огромное спасибо:
РеквизитФормыВЗначение()
Является методом управляемой формы, компилируется только &НаСервере, контекст формы является для него необходимым, поэтому компиляция &НаСервереБезКонтекста недоступна. На клиенте не работает, поскольку в результате получаем прикладной объект.
Где и когда его нужно использовать?
Метод РеквизитФормыВЗначение() необходим, если требуется из модуля формы вызвать стандартный метод объекта или метод (процедуру, функцию) из модуля объекта, из общего модуля.
Этот метод будет отрабатывать с данными, взятыми из формы, т.е. еще не записанными в базу.
Для того, чтобы измененные данные вернуть на форму, используется метод ЗначениеВРеквизитФормы().
Вторым параметром метода РеквизитФормыВЗначение является тип значения. Это необязательный параметр. Если обрабатываемый реквизит не является составным типом, то тип будет автоматически получен из реквизита формы. Иначе генерируется исключение времени выполнения.
ДанныеФормыВзначение()
В отличие от метода управляемой формы РеквизитФормыВЗначение(), процедура глобального контекста ДанныеФормыВЗначение() может работать без контекста формы, но именно поэтому, в частности, ей необходимо указывать тип конвертируемых данных.
Обратной процедурой является ЗначениеВДанныеФормы().
В этом примере на форме отображен набор записей регистра бухгалтерии. При отработке процедуры, активность набора меняется только на форме, в базе при этом ничего не происходит. Активность у набора записей регистра в базе поменяется только после выполнения операции Записать.
В этом примере на клиент возвращается ОснРеквизит, содержащий измененные данные. Но его еще нужно «запихать» в отображаемую форму. Для этого используем процедуру глобального контекста КопироватьДанныеФормы().
В качестве иллюстрации взаимозаменяемости Пример 2 еще в двух вариантах:
Как установить значение реквизита формы?
Как при создании нового элемента справочника
можно установить значение неосновного реквизита ФормыЭлемента? Спасибо.
(0) Нужно посмотреть к какому виду данных принадлежит данный реквизит (конфигуратор). регистр, перечисление и т.д. и соответсвующим образом заполнить его.
В конфигураторе в списке форм существует ФормаЭлемента (то есть при работе в режиме 1С:Предприятие форма создается не программно!).
Тебе уже сказали: создай форму для начала.
(10) значения дл «Контактная информация», «Счета и договоры», прочие реквизиты Объекта устанавливаются без проблем, проблема с реквизитами формы. 🙁
Ну и подобная задача может возникнуть не только в этом случае. Программно создают разные объекты и может понадобится установить значения реквизитов формы.
(20) либо в методе ПередЗаписью (он работает и при программном создании элемента, так?), либо уже ПриОткрытии формы. Другие два метода к нашему случаю не имеют отношения.
интересно, но я еще вначале (2 недели назад) смотрел модуль формы и видел «ГоловнойКонтрагент». Но после безуспешных попыток «лешить» этот реквизит значения путем присвоения:
— Неопределено, Справочники.Контрагенты.ПустаяСсылка(). решил попробовать установить ВходитВХолдинг = Ложь, но это тоже не помогло. (
Извините, но что-то я не пойму, что надо делать?:)
(22) понимаю, сочуствую, но не горячись. Наверно надо этот вопрос добавить в базу знаний и жестко прописать телепату
(0) к сожалению не написано какая конфа, поэтому привожу код из БП 1.6
.
(23) т.е. элемент ВходитВХолдинг при программном создании реагирует на элемент ГоловнойКонтрАгент.
у меня получилось организовать доступ, после всех проб и ошибок и с подачи Валерыч-а, так:
Обращения к элементу ВходитВХолдинг даже и не требуется. ТАК.
Присвоить значение реквизиту формы
Как присвоить реквизиту ТЧ документа значение реквизита справочника
Есть справочник Номенклатура, в котором реквизит «Дата выхода» типа Дата И документ «Прием.
Как присвоить реквизиту ТЧ документа значение реквизита справочника?
Есть справочник «Номенклатура» в нем реквизит РозничнаяЦена, Документ «ПриходнаяНакладная» с.
Как Из Документа-объекта Обратиться К Реквизиту Формы?
Здравствуйте! Подскажите, пожалуйста, как из документа объекта обратиться к реквизиту формы этого.
Обращение к реквизиту формы
Добрый день всем! Что имеем: 1. Реквизит на форме «Контрагент» 2. Происходит обращение к.
Обращению к реквизиту формы в группе
Как обратиться в запросе к реквизиту формы документа, если этот реквизит находится в группе? Есть.
Как обратиться к реквизиту экранной формы в модуле документа?
Привет Всем Не подскажите как можно обратится к реквизиту многострочной части экранной формы из.
Как ограничить выбор в поле табличной части по реквизиту формы
В реквизите формы есть поле со значением Справочник1, в табличной части поле со значением.
Обращение к реквизиту формы документа через внешнюю печатную форму.
Здравствуйте Есть внешняя печатная форма и документ «Договор». У документа есть на форме реквизит.