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

от admin

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

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

Шаблон кода:

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

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

Шаблон кода:

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

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

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

&НаКлиенте
Процедура ТабличнаяЧасть1ТекущаяДатаПриИзменении(Элемент)
ТекСтрока = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
ТекСтрока.ОстатокОплаченыхДней = 111;
КонецПроцедуры

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

Еще один пример — заполнение полей табличной части формы при начале редактирования:

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

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

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

1С 8.3 Вызов процедур или функций из модуля объекта в модуле формы — Программист 1С Минск. Автоматизация бизнеса.

1С 8.3 Вызов процедур или функций из модуля объекта в модуле формы

&НаСервере
Процедура Вызов_из_модуля_объекта ()

// сперва получаем объект:
ДокОбъект = РеквизитФормыВЗначение ( «Объект» );
ДокОбъект . ПроцедураМодуляОбъектаЭкспортная ();
//.

// примечание:
// если у разных объектов, например: два документа и надо в форму одного документа вызвать процедуру из другого документа,
// то в этом случаи надо процедуру помещать в модуль менеджера и вызывать ее как Документы.НазваниеДокумента.НазваниеПроцедуры
// соответственно все вызовы на сервере

Как в 1С вывести в реквизит формы данные из общего модуля

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

Читать:
Какое самое большое двузначное число

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

Для поиска решения я создал в тестовый пример для не типовой конфигурации.

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

Реквизиты объекта Настройки формы

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

Модуль формы Модуль объекта

Также, здесь мы видим как в 1С можно выполнить на клиенте в модуле формы обращение к функции Модуля объекта. Делаем функцию в модуле объекта Экспортной. Получаем Объект через РеквизитФормыВЗначение, вызываем экспортную функцию общего модуля.

Как вызвать процедуру или функцию из модуля объекта на управляемой форме

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

Содержание самой процедуры пересчета рассматривать в рамках данной статьи не будем.

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

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

Похожие статьи