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

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

  • автор:

Использование модуля объекта, модуля менеджера объекта и общих модулей

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

Методическая рекомендация (полезный совет)

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

Например, в модуле объекта могут размещаться:

  • обработчики событий объекта
  • процедуры заполнения экземпляра объекта.

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

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

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

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

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

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

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

Данные > Примеры кода 1С > 1С 8.3 Форма, элементы

ПРИМЕРЫ КОДА 1С

Перейти в раздел примеры кода 1С 8.3:

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

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

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

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

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

  • Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.

    Шаблоны кода 1С

    Секреты TurboConf

    TurboConf ИР

    Нейросети и AI

    Лайфхаки 1С

    Бубен админа

    1С не всерьез

    Комментарии

    VolAll
    #1, ред. 01 июня 2021 17:17

    &НаСервере Перем ОбработкаОбъект; &НаСервере Функция ОбработкаОбъект() Если ОбработкаОбъект = Неопределено Тогда СтруктураОбработки = ПолучитьИзВременногоХранилища(Объект.ОбщийКонтекстКлиентСервер.АдресОбработкаОбъект); Если СтруктураОбработки <> Неопределено Тогда ОбработкаОбъект = СтруктураОбработки.ОбработкаОбъект; КонецЕсли; Если ОбработкаОбъект = Неопределено Тогда ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); Попытка ПоместитьВоВременноеХранилище(Новый Структура("ОбработкаОбъект", ОбработкаОбъект), Объект.ОбщийКонтекстКлиентСервер.АдресОбработкаОбъект); Исключение КонецПопытки; Иначе ОбработкаОбъект.ОбщийКонтекстКлиентСервер = Объект.ОбщийКонтекстКлиентСервер; КонецЕсли; КонецЕсли; Возврат ОбработкаОбъект; КонецФункции 

    Нравится 0 Ответить

    См. также

    sale

    sale

    fastcode_tg

    courses_fastcode

    courses_fastcode

    Подтверждение действия

    Вы действительно хотите удалить комментарий?

    Отмена Удалить

    • © 2013-2024 FastCode
    • Контакты
    • Пользовательское соглашение

    × Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (6К участников)
    Присоединиться

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

    Добрый день! УТ 11.4
    Возможно ли вызвать процедуру &НаКлиенте Процедура Заполнить(Команда) с определенными параметрами из модуля формы документа ПриЗаписи() ?

    Располагается это все в форме Заказа клиента, по кнопке «Обеспечение» — «Заполнить обеспечение» выводиться форма «Перечисление.Форма.ИсполнениеЗаказа и в ней процедура Заполнить()
    Хочу автоматизировать этот процесс и без открытия всяких форм сразу вызывать эту процедуру..
    Это реально?

    Форма документа

    &НаКлиенте Процедура ЗаполнитьОбеспечение(Команда) ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения(); ПараметрыПроверки.Поля.Удалить("Подразделение"); Если ОбеспечениеКлиент.ПроверитьЗаполнение( Объект, Объект.Товары, Элементы.Товары.ВыделенныеСтроки, ПараметрыПроверки, Неопределено, Объект.Склад) Тогда ПараметрыФормы = ОбеспечениеКлиентСервер.ПараметрыФормыИсполнениеЗаказа(ТипЗнч(Объект.Ссылка), Объект.Товары, Элементы.Товары.ВыделенныеСтроки); ОткрытьФорму("Перечисление.ВариантыОбеспечения.Форма.ИсполнениеЗаказа", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор); КонецЕсли; КонецПроцедуры

    Форма.Перечисления.ВариантыОбеспечения

    &НаКлиенте Процедура Заполнить(Команда) ПереченьВариантов = Новый Массив(); Если Отгрузить Тогда Если Параметры.СписокВыбора = Неопределено Или Параметры.СписокВыбора.НайтиПоЗначению( ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить")) <> Неопределено Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить")); КонецЕсли; Если Параметры.СписокВыбора = Неопределено Или Параметры.СписокВыбора.НайтиПоЗначению( ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ОтгрузитьОбособленно")) <> Неопределено Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ОтгрузитьОбособленно")); КонецЕсли; КонецЕсли; Если Резервировать Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.СоСклада")); КонецЕсли; Если РезервироватьКСроку Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ИзЗаказов")); КонецЕсли; Если Обособленно Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Обособленно")); КонецЕсли; Если Требуется Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Требуется")); КонецЕсли; Если НеТребуется Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.НеТребуется")); КонецЕсли; Результат = Новый Структура("ПереченьВариантов, ЗаполнятьЦелымиУпаковками"); Результат.ПереченьВариантов = ПереченьВариантов; Результат.ЗаполнятьЦелымиУпаковками = ЗаполнятьЦелымиУпаковками; Если Параметры.ПроверятьЗаполнение И ПереченьВариантов.Количество() = 0 Тогда Текст = НСтр("ru = 'Для заполнения необходимо установить хотя бы одну отметку'"); ПоказатьПредупреждение(, Текст); Иначе ОповеститьОВыборе(Результат); КонецЕсли; КонецПроцедуры
    • Вопрос задан более года назад
    • 217 просмотров

    2 комментария

    Средний 2 комментария

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

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