как в модуле объекта обратиться к реквизиту формы

Шаблон кода: Как в 1С обратиться к элементу формы

ОБЫЧНЫЕ ФОРМЫ

Для того чтобы обратиться к элементу формы из модуля объекта этой формы и передать значение в переменную:

Шаблон кода:

мМойДокумент = ЭтотОбъект.Ссылка.ПолучитьФорму(«ФормаДокумента»); // получаем форму документа
НашаПеременная = мМойДокумент.ЭлементыФормы.Дата.Значение; // передаем значение переменной

Для того чтобы обратиться к элементу формы из модуля формы документа:

Шаблон кода:

УПРАВЛЯЕМЫЕ ФОРМЫ

Для того чтобы обратиться к элементу формы из модуля формы документа:

Для того чтобы программно установить значение поля в табличной части документа в :

В данном случае при изменении поля ТекущаяДата происходит автозаполнение поля ОстатокОплаченыхДней.

Процедура ТабличнаяЧасть1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущаяДата = Формат (ТекущаяДата (), «ДФ=dd.MM.yyyy» );
Если НоваяСтрока И Не Копирование Тогда
Элемент.ТекущиеДанные.ТекущаяДата = ТекущаяДата;
Элемент.ТекущиеДанные.Комментарий = «наш комментарий»;
КонецЕсли;
КонецПроцедуры

Для того чтобы записать какие-то данные в поле управляемой формы нужно создать прямо на форме элемент (реквизит создавать не нужно), например, поле ввода и прописать для него, например, результат функции в модуле формы:

Процедура ПриОткрытии(Отказ)
Реквизит1 = ПодсчетИтогаКассы();
КонецПроцедуры

Источник

Получение значения реквизита формы из модуля объекта

При записи справочника, срабатывает процедура ПередЗаписью() модуля объекта справочника.
В ней вызываются процедуры, делающие запросы по табличной части справочника, выявляя там необходимое значение.

то есть в ЭтотОбъект

но нет тут Ссылка.РолиКонтактногоЛица в ссылка. Тут имеется значение что было записано. То есть тут не видны текущие значения элементов формы, что пользователь правит интерактивно и ещё не записал.

(0+) ЭтотОбъект не подойдет конечно, если только ЭтотОбъект.Ссылка

>> возможно стоит начать делать это же в модуле формы.

>> нет тут Ссылка.РолиКонтактногоЛица в ссылка.

(4) При открытии формы справочника, нужно что бы отрабатывали проверки на измененные значения в модуле объекта.
Пользователь открыл справочник, поменял значение в табличной части и записывает. А в коде, по заданным условиям, отрабатывает старое значение.
Так как берется все из ссылки. В ней видимо только уже записанные значения.

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

Иначе как это делать в модуле объекта не ясно, как в (3) может, как предлагают

(7) Вы забыли задачу описать. Вы описываете тот бред, который уже есть в Вашей голове. А он никому не интересен. В ответ получите только сообщения, что это бред.

Опишите конкретно задачу.

(10) Задача такая, у справочника контактная информация есть разные роли.

Если роль мастер, то проверок нет и срабатывает возврат.

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

Или по другому как то делать.

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

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

(16) Да, по условию что такой емайл уже введен. Поиск по емайлу идет. Все там нормально. ТОлько вот с старое и новое значение, загвоздка возникла.

(18) Согласен, возможно, многое придется переделывать. Но я вчера это увидел в первые. По этому пытаюсь разобраться как нужно.

1. Если у записываемого контактного лица ЕСТЬ мастер, роль, то проверок нет. Возврат.
Возможно это как то придется править.

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

Я не знаю на сколько это все правильно сделано. Уже выявлено при записи, проблемы со старое. новое значение.

Источник

Модуль объекта в 1С 8.3

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

Модуль объекта

Модуль объекта есть почти у всех основных прикладных объектов конфигурации в 1С.

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

Чтобы открыть модуль объекта нужно в окне свойств объекта на закладке «Прочее» нажать кнопку «Модуль объекта»

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

Также модуль объекта можно открыть из контекстного меню объекта:

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

Или из меню Действия:

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

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

Вызов методов модуля объекта

Для примера создадим в конфигурации справочник «Номенклатура» с реквизитом «Артикул» и табличной частью «Остатки». У табличной части будет 2 реквизита: «Склад» и «Остаток»:

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

В модуле объекта напишем следующий код:

Теперь создадим обработку с одной формой и в модуле обработки в событии ПриСозданииНаСервере напишем следующий код:

Здесь мы сначала создаем новый программный объект справочника Номенклатура вызвав встроенный метод Справочники.Номенклатура.СоздатьЭлемент(). Потом через ссылку на этот объект обращаемся к экспортным переменной и функции объекта.

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

Теперь поменяем код в модуле формы обработки на следующий:

Здесь мы делаем все то же самое, но обращаемся к не экспортным переменной и функции.

При открытии формы возникнет ошибка «Поле объекта не обнаружено ПолноеНаименование»:

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

Так как переменная ПолноеНаименование не является экспортной, то к ней нет доступа из других модулей.

Теперь попробуем обратиться к не экспортной функции модуля объекта. Вставим в модуль формы следующий код и откроем обработку:

Выйдет ошибка «Метод объекта не обнаружен ПолноеНаименованиеНоменклатуры»:

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

Теперь вставим в форму обработки такой код и откроем обработку:

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

В результате в базе данных будет создан новый элемент, у которого заполнен артикул и добавлены 2 строки в табличную часть:

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

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

Обработчики событий

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

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

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

как в модуле объекта обратиться к реквизиту формы. Смотреть фото как в модуле объекта обратиться к реквизиту формы. Смотреть картинку как в модуле объекта обратиться к реквизиту формы. Картинка про как в модуле объекта обратиться к реквизиту формы. Фото как в модуле объекта обратиться к реквизиту формы

Если выделить какое-то событие и нажать кнопку «Перейти» или просто щелкнуть по нему два раза левой кнопкой мыши, то в модуле объекта будет создана процедура для обработки данного события.

Рассмотрим основные события модуля объекта:

Для примера создадим в модуле объекта 3 обработчика события и вставим в них следующий код:

Источник

Как получить доступ к реквизитам формы?

Этот цикл позволяет просмотреть имена а так же типы всех реквизитов формы, в том числе такие реквизиты как надписи, командные панели и тд.

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

Если реквизит формы имеет тип «ТабличноеПоле», то можно такой элемент просканировать во вложенном цикле и узнать имена колонок таблицы:

Как получить значение отдельного реквизита формы?

Чаще требуется получать не массив реквизитов формы, а значение отдельных конкретных реквизитов формы. Например реквизиты «Шапки» или «Подвала» формы документа.

Реквизиты шапки могут иметь различные типы: Дата, СправочникСсылка, ЧекБокс, элемент раскрывающегося списка и др.

Как получить значение элементов табличной части формы?

Доступ к табличной части формы через объект

Доступ к табличной части формы (например: Товары) можно получить через объект:

Доступ к табличной части формы через ЭлементыФормы

Для того, чтобы код работал правильно, надо чтобы колонка формы табчасти объекта в свойстве данные ссылалась на реквизит табличной части объекта. Этим определяется тип колонки таб части формы.

То есть должна быть установлена связь между реквизитом табчасти объекта и реквизитом табчасти формы. Форм у объекта метаданных может быть много мы знаем. Табличную часть формы объекта можно получить через объект ЭлементыФормы :

Объект ЭлементыФормы используется для доступа к элементам управления, расположенным на форме, в частности к таб части документа.

Результат для документа Авансовый отчет:

Это табличное поле!! Товары
Количество строк: 4
Женские ботфорты коричневые
Ботинки женские демисезонные
Ботинки женские натуральная кожа
Женские босоножки

Результат для документа Авансовый отчет:

Это табличное поле!! ВыданныеАвансы
=======================
НомерСтроки 1
ДокументАванса Расходный кассовый ордер ТК000000004 от 15.02.2007 19:24:03
СуммаДокументаАванса 300
ВалютаДокументаАванса USD
Выдано 300
Сумма 174

Такое двойное сканирование удобно использовать для быстрой проверки того, что все колонки таб части формы имеют связь с реквизитами таб части объекта. Если такой связи у какой-либо колонки нет, система сгенерирует ошибку.

Источник

Обращение к ревизитам формы внешней обработки из модуля этой внешней обработки.

Только не кидайтесь тапками))

Вообще вылетело из головы (давно этого не делала) как мне обратиться к реквизитам формы из модуля внешней обработки?)

(21) Все оказалось намного проще)

Нужно было сделать так:

Спасибо Вам огромное, что не остались безучастными к моей проблеме и помогали на протяжении всего времени!)

Если о модуле объекта говоришь, то там никаких реквизитов формы и быть не может. Туда все параметрами надо передавать

(2) Да, я говорю о модуле объекта (внешней обработки). И в этом модуле нужно получить реквизиты формы.

Пример можете привести?

а в модуле объекта, там процедура Процедура ЗагрузкаДанных(ПереносимыеДокументы) Экспорт

(4) В процедуре (1) я, так сказать, вызываю процедуру (2). То есть в процедуре (1) я могу передать в качестве параметров реквизиты формы??

Не реквизиты формы, а значения реквизитов формы. Да, конечно

З.Ы.
я так понимаю, они отчасти итак у вас туда передаются. Имя файла там, база..

(7) Спасибо за исправление моей корявой формулировки))

Вот так, по идее, должно быть?

(10)
т.е.
ДопПараметры = Новый Структура(«ВремяЗавершенияСпящегоСеанса,ВремяЗасыпанияПассивногоСеанса»,Объект.ВремяЗавершения,Объект.ВремяЗасыпания);

далее
еще одну строку
МассивПараметров.Добавить(ДопПараметры);

и в процедуре
Процедура МассоваяНастройкаПараметровИБ(База,ВремяЗавершенияСпящегоСеанса,ВремяЗасыпанияПассивногоСеанса,ВремяОжиданияБлокировкиДанных,МинимальнаяДлинаПаролейПользователей,ПроверкаСложностиПаролейПользователей,ДопПараметры) Экспорт

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *