Использование модуля объекта, модуля менеджера объекта и общих модулей
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
Методическая рекомендация (полезный совет)
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 Ответить
См. также
Подтверждение действия
Вы действительно хотите удалить комментарий?
Отмена Удалить
- © 2013-2024 FastCode
- Контакты
- Пользовательское соглашение
× Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (6К участников)
Присоединиться
Вызвать процедуру в форме перечисления из модуля формы документа?
Добрый день! УТ 11.4
Возможно ли вызвать процедуру &НаКлиенте Процедура Заполнить(Команда) с определенными параметрами из модуля формы документа ПриЗаписи() ?
Располагается это все в форме Заказа клиента, по кнопке «Обеспечение» — «Заполнить обеспечение» выводиться форма «Перечисление.Форма.ИсполнениеЗаказа и в ней процедура Заполнить()
Хочу автоматизировать этот процесс и без открытия всяких форм сразу вызывать эту процедуру..
Это реально?
Форма документа
&НаКлиенте Процедура ЗаполнитьОбеспечение(Команда) ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения(); ПараметрыПроверки.Поля.Удалить("Подразделение"); Если ОбеспечениеКлиент.ПроверитьЗаполнение( Объект, Объект.Товары, Элементы.Товары.ВыделенныеСтроки, ПараметрыПроверки, Неопределено, Объект.Склад) Тогда ПараметрыФормы = ОбеспечениеКлиентСервер.ПараметрыФормыИсполнениеЗаказа(ТипЗнч(Объект.Ссылка), Объект.Товары, Элементы.Товары.ВыделенныеСтроки); ОткрытьФорму("Перечисление.ВариантыОбеспечения.Форма.ИсполнениеЗаказа", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор); КонецЕсли; КонецПроцедуры
Форма.Перечисления.ВариантыОбеспечения
&НаКлиенте Процедура Заполнить(Команда) ПереченьВариантов = Новый Массив(); Если Отгрузить Тогда Если Параметры.СписокВыбора = Неопределено Или Параметры.СписокВыбора.НайтиПоЗначению( ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить")) <> Неопределено Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить")); КонецЕсли; Если Параметры.СписокВыбора = Неопределено Или Параметры.СписокВыбора.НайтиПоЗначению( ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ОтгрузитьОбособленно")) <> Неопределено Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ОтгрузитьОбособленно")); КонецЕсли; КонецЕсли; Если Резервировать Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.СоСклада")); КонецЕсли; Если РезервироватьКСроку Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ИзЗаказов")); КонецЕсли; Если Обособленно Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Обособленно")); КонецЕсли; Если Требуется Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Требуется")); КонецЕсли; Если НеТребуется Тогда ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.НеТребуется")); КонецЕсли; Результат = Новый Структура("ПереченьВариантов, ЗаполнятьЦелымиУпаковками"); Результат.ПереченьВариантов = ПереченьВариантов; Результат.ЗаполнятьЦелымиУпаковками = ЗаполнятьЦелымиУпаковками; Если Параметры.ПроверятьЗаполнение И ПереченьВариантов.Количество() = 0 Тогда Текст = НСтр("ru = 'Для заполнения необходимо установить хотя бы одну отметку'"); ПоказатьПредупреждение(, Текст); Иначе ОповеститьОВыборе(Результат); КонецЕсли; КонецПроцедуры
- Вопрос задан более года назад
- 217 просмотров
2 комментария
Средний 2 комментария