Как из управляемой формы вызвать процедуру модуля объекта и обратно
Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.
Реклама
Новые вакансии
- Вакансия «Прораммист/разработчи 1С» Екатеринбург от Денис Спеиалист
Вчера в 13:10 - Вакансия Стажер Аналитик от Elizavetashkr
17 ноября 2023 г. - Вакансия Стажер Программист 1С от Elizavetashkr
17 ноября 2023 г.
Вызов процедур или функций модуля объекта из модуля формы

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

Секреты TurboConf
TurboConf ИР

Нейросети и AI

Лайфхаки 1С

Бубен админа

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




Подтверждение действия
Вы действительно хотите удалить комментарий?
Отмена Удалить
- © 2013-2023 FastCode
- Контакты
- Пользовательское соглашение

× Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (6К участников)
Присоединиться
Как из управляемой формы вызвать процедуру модуля объекта
Напрямую обратиться к процедурам модуля объекта из формы не получится. Связано это с тем, что прикладных объектов на клиенте нет, они существуют только на сервере. На клиенте доступны только специальные типы для отображения данных.
Общая схема вызова серверной процедуры/функции состоит из нескольких этапов:
- Вызов контекстной серверной процедуры формы;
- Преобразование основного реквизита формы в прикладной объект;
- Вызов экспортной процедуры/функции модуля объекта;
- Обратное преобразование прикладного объекта в реквизит формы.
Рассмотрим описанные действия на примере. Предположим, что у документа есть табличная часть с товарами и ценами. Необходимо из формы документа вызвать процедуру модуля объекта, которая применяет для всех строк табличной части скидку в процентах.
Процедура модуля объекта документа для применения скидки:
Процедура ПрименитьСкидку ( ПроцентСкидки ) Экспорт
Для каждого СтрокаТЧ Из Товары Цикл
СтрокаТЧ . Цена = СтрокаТЧ . Цена — СтрокаТЧ . Цена / 100 * ПроцентСкидки ;
КонецЦикла;
КонецПроцедуры
Внимание!
Процедуры/функции модуля объекта, которые предназначены для вызова извне модуля должны быть экспортными, т.е. иметь ключевое слово Экспорт .
На форме документа расположим кнопку, вызывающую серверную процедуру:
&НаКлиенте
Процедура ПересчитатьЦены ( Команда )
// Этап 1. Вызов серверной процедуры
ПересчитатьЦеныНаСервре ();
&НаСервере
Процедура ПересчитатьЦеныНаСервре ()
// Этап 2. Преобразование основного реквизита формы в прикладной объект
ДокументОбъект = РеквизитФормыВЗначение ( «Объект» );
// Этап 3. Вызов процедуры модуля объекта
ДокументОбъект . ПрименитьСкидку ( 5 );
// Этап 4. Обратное преобразование прикладного объекта в реквизит формы
ЗначениеВРеквизитФормы(ДокументОбъект , «Объект» );
1С 8.3 Вызов процедур или функций из модуля объекта в модуле формы — Программист 1С Минск. Автоматизация бизнеса.

1С 8.3 Вызов процедур или функций из модуля объекта в модуле формы
Данные > Примеры кода 1С > 1С 8.3 Форма, элементы
ПРИМЕРЫ КОДА 1С
Перейти в раздел примеры кода 1С 8.3:

Вызов процедур или функций из модуля объекта в модуле формы (&НаСервере) в 1С 8.3:
&НаСервере
Процедура Вызов_из_модуля_объекта ()
// сперва получаем объект:
ДокОбъект = РеквизитФормыВЗначение ( «Объект» );
ДокОбъект . ПроцедураМодуляОбъектаЭкспортная ();
//.
// примечание:
// если у разных объектов, например: два документа и надо в форму одного документа вызвать процедуру из другого документа,
// то в этом случаи надо процедуру помещать в модуль менеджера и вызывать ее как Документы.НазваниеДокумента.НазваниеПроцедуры
// соответственно все вызовы на сервере
