Имя: Пароль:
1C
 
Как передать переменную модуля объекта в модуль формы внешней обработки? (ЗУП 8.1)
0 Kleo
 
20.04.10
07:24
Как передать переменную модуля объекта в модуль формы внешней обработки? (ЗУП 8.1)

пробовала сделать как по этой ссылке
http://www.forum.mista.ru/topic.php?id=438668


В модуле объекта:
----------------------------------------------

Перем мПеременная; // Доступна в любой части модуля объекта.

Функция УстановитьГлобальноеЗначениеПеременнойВОбъекте(Переменная) Экспорт

 мПеременная = Переменная;

КонецФункции

----------------------------------------------
В модуле формы в какой-либо процедуре:
--------------------

УстановитьГлобальноеЗначениеПеременнойВОбъекте(ЗначениеПеременной);

-------------------

не получается(( в модуле формы не видит эту переменную
1 мистер игрек
 
20.04.10
07:27
А где волшебное слово "Возврать" ? :))
2 Kleo
 
20.04.10
07:30
я делаю у себя так:

Перем Док Экспорт;

Функция УстановитьГлобальноеЗначениеПеременнойВОбъекте(СсылкаНаОбъект) Экспорт

 Док = СсылкаНаОбъект;
 Сообщить("Модуль объекта "+Док);
 Возврат Док;
КонецФункции

и потом вызываю эту функцию в модуле формы:
Процедура ПриОткрытии()
УстановитьГлобальноеЗначениеПеременнойВОбъекте(Док);
КонецПроцедуры

и ничего не передается в переменную Док
3 Kleo
 
20.04.10
07:31
Это в модуле объекта:

Перем Док Экспорт;

Функция УстановитьГлобальноеЗначениеПеременнойВОбъекте(СсылкаНаОбъект) Экспорт

 Док = СсылкаНаОбъект;
 Сообщить("Модуль объекта "+Док);
 Возврат Док;
КонецФункции


и потом вызываю эту функцию в модуле формы:

Процедура ПриОткрытии()
УстановитьГлобальноеЗначениеПеременнойВОбъекте(Док);
КонецПроцедуры
4 Zlodey1С
 
20.04.10
07:47
&НаСервере
Процедура УстановитьГлобальноеЗначениеПеременнойВОбъекте(Док)
   
   ДокументПокупки = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.РасходДенежныхСредств"));
   ДокументПокупки.УстановитьГлобальноеЗначениеПеременнойВОбъекте(Док);
   
   ЗначениеВДанныеФормы(ДокументПокупки,Объект);
   
       
КонецПроцедуры

Процедура ПриОткрытии()
УстановитьГлобальноеЗначениеПеременнойВОбъекте(Док);
КонецПроцедуры

вот так попробуй
5 Zlodey1С
 
20.04.10
07:47
где надо по смыслу поменяй
6 Kleo
 
20.04.10
07:48
есть другой вариант мне нужно открыть форму внешней обработки из модуля объекта, это все делается и открывается, но параметр не передается

пишу так в модуле объекта обработки:

ФормаОбработки = ВнешниеОбработки.ПолучитьФорму("d:\Выгрузка.epf","Форма");
ФормаОбработки.Док = СсылкаНаОбъект;
ФормаОбработки.Открыть();

Док - это реквизит формы внешнего отчета.
вообщем не видит она значение этого реквизита в модуле формы. хотя в модуле объекта видит. в чем причина?
7 Kleo
 
20.04.10
07:49
(4) спасибо, но у меня не документ, а внешняя обработка
8 Паланик
 
20.04.10
07:56
(7) Функцию вызвал, а результат её работы почему не присваиваешь?

Переменная = УстановитьГлобальноеЗначениеПеременнойВОбъекте();
9 Kleo
 
20.04.10
07:58
(8) мне этот вариант не подходит. у меня внешняя обработка.
и что это ДанныеФормыВЗначение и ЗначениеВДанныеФормы?
10 Kleo
 
20.04.10
08:01
(4) и где у тебя находится эта процедура
Процедура УстановитьГлобальноеЗначениеПеременнойВОбъекте(Док) ?
11 Zlodey1С
 
20.04.10
08:03
&НаСервере
Процедура ПроверкаЗаполнения()
   
   Для Каждого Стр Из Объект.СтатьиДвиженияДенежныхСредств Цикл
       
       Если Не ЗначениеЗаполнено(Стр.Счёт) Тогда
           
           Стр.Счёт=Объект.Счёт;
           
       КонецЕсли;
       
   КонецЦикла;
   
   Если Не ЗначениеЗаполнено(Объект.КурсВзаиморасчетов)Тогда
       Если ЗначениеЗаполнено(Объект.ДоговорКонтрагента) Тогда
           ПриИзмененииДоговораСервер();
       КонецЕсли;
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(Объект.ВалютаДокумента)Тогда
       Объект.ВалютаДокумента=Константы.ВалютаРегламентированногоУчета.Получить();
       СтруктураКурсаВалютаДокумента = МодульВалютногоУчета.ПолучитьКурсВалюты(Объект.ВалютаДокумента, ?(Не ЗначениеЗаполнено(Объект.Дата), ТекущаяДата(),Объект.Дата));
       Объект.КурсДокумента        = СтруктураКурсаВалютаДокумента.Курс;
       Объект.КратностьДокумента   = СтруктураКурсаВалютаДокумента.Кратность;
       
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(Объект.СуммаДокумента) Тогда
       ПересчитатьСуммуДокумента();
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(Объект.СуммаВзаиморасчетов) Тогда
       ПересчитатьСуммуВзаиморасчетов();
   КонецЕсли;
   
КонецПроцедуры

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


&НаКлиенте
Процедура ПриОткрытии(Отказ)
   
   ПроверкаЗаполнения();
   ОбновлениеОтображения();    
   
КонецПроцедуры
12 Zlodey1С
 
20.04.10
08:03
ну и в модуле объекта
13 Zlodey1С
 
20.04.10
08:04
// Заполняет условия продаж в заказе клиента.
//
// Параметры:
// УсловияПродаж - Структура - Структура для заполнения
//
Процедура ЗаполнитьРеквизитамиПриИзмененииДоговора() Экспорт
   
   // Надо поменять валюту и курс взаиморасчетов
   мТекущаяВалютаВзаиморасчетов = ДоговорКонтрагента.ВалютаВзаиморасчетов;
   
   СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(мТекущаяВалютаВзаиморасчетов, Дата);
   
   //СтатьяДвиженияДенежныхСредств = ДоговорКонтрагента.ОсновнаяСтатьяДвиженияДенежныхСредств;
   
   КурсВзаиморасчетов     = СтруктураКурсаВзаиморасчетов.Курс;
   КратностьВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Кратность;
   
   РассчитатьСуммуВзаиморасчетов();
   
   Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
       Контрагент = ДоговорКонтрагента.Владелец;
   КонецЕсли;
   
   
   //УстановитьВидимость();
   //УправлениеДенежнымиСредствами.УстановитьНадписьСделкиПлатеж(СтрокаПлатеж, ЭтаФорма, ВидОперации);
   
   
КонецПроцедуры // ЗаполнитьУсловияПродажПоУмолчанию(
14 Kleo
 
20.04.10
08:05
извини, но мне это ничем не поможет
15 Kleo
 
20.04.10
08:06
потому что ты это делаешь все в процедурах, а у меня функция в модуле объекта. не подойдет никак!
16 Паланик
 
20.04.10
08:11
Находясь в модуле какого-то объекта, ты открываешь форму внешней обработки и при ее открытии хочешь присвоить некоему ее реквизиту некое значение - "СсылкаНаОбъект"?
17 VladZ
 
20.04.10
08:17
(0) Отладчик - могучий инструмент! ;)
18 Kleo
 
20.04.10
08:18
помог этот вариант:

Фнукция Печать()
ФормаОбработки = ВнешниеОбработки.ПолучитьФорму("d:\Выгрузка.epf","Форма");
ФормаОбработки.Док = СсылкаНаОбъект;
ФормаОбработки.Открыть();
КонецФункции

просто было ощибка в присвоении типов Док и ссылкаНаОбъект - нужно, чтобы одинаковые полностью типы данных были
19 Kleo
 
20.04.10
08:18
(17) спасибо тебе! открыл глаза!
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс