Передача значения из формы документа в модуль объекта
Хочу передать значение из формы документа в модуль объекта и сделать проверку при проведении.
В модуле формы в какой-либо процедуре:
--------------------
ЗначениеПеременной = Истина;
УстановитьГлобальноеЗначениеПеременнойВОбъекте(ЗначениеПеременной);
В модуле объекта:
----------------------------------------------
Перем мПеременная;
Функция УстановитьГлобальноеЗначениеПеременнойВОбъекте(Переменная) Экспорт
мПеременная = Переменная;
КонецФункции
В модуле объекта процедура обработка проведения:
----------------------------------------------
Если мПеременная = ИСТИНА Тогда ...
Не работает, подскажите ошибку.
Зараннее спасибо.
В модуле формы в какой-либо процедуре:
--------------------
ЗначениеПеременной = Истина;
УстановитьГлобальноеЗначениеПеременнойВОбъекте(ЗначениеПеременной);
В модуле объекта:
----------------------------------------------
Перем мПеременная;
Функция УстановитьГлобальноеЗначениеПеременнойВОбъекте(Переменная) Экспорт
мПеременная = Переменная;
КонецФункции
В модуле объекта процедура обработка проведения:
----------------------------------------------
Если мПеременная = ИСТИНА Тогда ...
Не работает, подскажите ошибку.
Зараннее спасибо.
По теме из базы знаний
- Трюки 1С 8 – Передача формы документа в форму выбора
- Конфигурация "Весовая ред. 3.0" для Платформы 8.3
- Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".
- Что делать, если строк в документе больше 99'999?
- Последовательности событий при проведении документа 1С. Шпаргалка
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Allexe8.1, ДополнительынеСвойства работают только в пределах модуля объекта. Т.е. можно установить в процедуре ПередЗаписью, и потом прочитать в ОбработкаПроведения. Установить ДополнительныеСвойства из модуля формы, и потом прочитать в модуле объекта не получится.
лучше через доп. свойства объекта. при каждом обращении к объекту он занаво инициализируется..
вот пример аналогичного вопроса:
почитайте про видимость экспортных переменных в 8.2
(5) может и так.. не пробовал из формы менять
вот пример аналогичного вопроса:
В модуле объекта справочника объявляю переменную:
Перем м_Перем Экспорт;
В этом же модуле инициализирую переменную значением:
м_Перем = "1";
Далее, в обработчике ОбработкаЗаполнения() или ПриКопировании() этой переменной присваивается другое значение:
м_Перем = "2";
Вопрос: почему в модуле формы в процедурах ПриСозданииНаСервере() или ПриЧтенииНаСервере() значение выражения РеквизитФормыВЗначение("Объект").м_Перем равно "1", а не "2"? Естественно, либо ОбработкаЗаполнения(), либо ПриКопировании() обрабатывается. Кто мне может объяснить это поведение? Как нужно менять значение экспортируемой переменной модуля объекта, чтобы её изменённое значение было доступно в форме?
Перем м_Перем Экспорт;
В этом же модуле инициализирую переменную значением:
м_Перем = "1";
Далее, в обработчике ОбработкаЗаполнения() или ПриКопировании() этой переменной присваивается другое значение:
м_Перем = "2";
Вопрос: почему в модуле формы в процедурах ПриСозданииНаСервере() или ПриЧтенииНаСервере() значение выражения РеквизитФормыВЗначение("Объект").м_Перем равно "1", а не "2"? Естественно, либо ОбработкаЗаполнения(), либо ПриКопировании() обрабатывается. Кто мне может объяснить это поведение? Как нужно менять значение экспортируемой переменной модуля объекта, чтобы её изменённое значение было доступно в форме?
почитайте про видимость экспортных переменных в 8.2
(5) может и так.. не пробовал из формы менять
прокатит и через экспортную переменную модуля и через дополнительные свойства если присваивать в обработчиках, где в параметрах есть наш объект, например:
а вот если присваивать получая объект из данных формы, то ни так ни так работать не будет:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.ДополнительныеСвойства.Вставить("А", 1);
//ТекущийОбъект.мБылаПроверкаЗаполнения = 1;
КонецПроцедуры
а вот если присваивать получая объект из данных формы, то ни так ни так работать не будет:
&НаСервере
Процедура УстановитьДоступностьСоглашений()
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
КоличествоСоглашенийСПоставшиком = ЗакупкиВызовСервера.ПолучитьКоличествоСоглашенийСПоставщиком(Объект.Партнер);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Соглашение", "Видимость", КоличествоСоглашенийСПоставшиком > 0);
КонецЕсли;
ТекОбъект = РеквизитФормыВЗначение("Объект");
ТекОбъект.мБылаПроверкаЗаполнения = 2;
ЗначениеВРеквизитФормы(ТекОбъект, "Объект");
КонецПроцедуры
Показать
в модуле формы документа:
В модуле объекта:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("НашПараметр", Истина);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ПараметрыЗаписи.Свойство("НашПараметр") Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("НашПараметр", ПараметрыЗаписи["НашПараметр"]);
КонецЕсли;
КонецПроцедуры
ПоказатьВ модуле объекта:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Если ДополнительныеСвойства.Свойство("НашПараметр") Тогда
...
КонецЕсли;
...
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот