Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Объясните пожалуйста метод Закрыть() из РасширениеФормы (число прочтений - 2365 )
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Объясните пожалуйста метод Закрыть() из РасширениеФормы
11. Ноября 2011 :: 00:38
Печать  
Задача:
Закрыть форму документа если она открыта.
Пытаюсь сделать вот так:

     Для СчОкон=1 По СписокОкон.РазмерСписка() Цикл
           ВыбЗначение = ""; ИмяОкна = "";
           ВыбЗначение = СписокОкон.ПолучитьЗначение(СчОкон, ИмяОкна);
           Если Найти(СокрЛП(ИмяОкна), "Поступление в розницу (купля-продажа)") > 0 Тогда
                 Если ВыбЗначение.ТекущийДокумент() = ПоступлениеТовара.ТекущийДокумент() Тогда
                       РасширениеФормы = СоздатьОбъект("РасширениеФормы");
                       РасширениеФормы.УстановитьФорму(ВыбЗначение.Форма);
                       РасширениеФормы.Закрыть();
                       Сообщить("ФормаЗакрыта!");
                       Прервать;
                 КонецЕсли;
           КонецЕсли;
     КонецЦикла;

Документ находится, метод РасширениеФормы.Закрыть() отрабатывает, форма документа закрывается, но и сразу же прекращается выполнение кода!
т.е. метод Сообщить("ФормаЗакрыта!") уже не выполняется.

Это так и задумано?
Может кто посоветует как в таком случае искать и закрывать окна?
  
Наверх
 
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Объясните пожалуйста метод Закрыть() из РасширениеФормы
Ответ #1 - 11. Ноября 2011 :: 00:39
Печать  
Забыл дописать.
Перед приведенным кодом вот еще такой кусок:

     ПоступлениеТовара = СоздатьОбъект("Документ.ПоступлениеТМЦРозница");
     ПоступлениеТовара.НайтиДокумент(текДокумент);
     ОбъектСервис = СоздатьОбъект("Сервис");
     СписокОкон = ОбъектСервис.СписокВсехОткрытыхОкон();
  
Наверх
 
IP записан
 
mszsuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 33
Зарегистрирован: 18. Октября 2010
Re: Объясните пожалуйста метод Закрыть() из РасширениеФормы
Ответ #2 - 11. Ноября 2011 :: 02:51
Печать  
ВыбЗначение.Форма.Закрыть(0);
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Объясните пожалуйста метод Закрыть() из РасширениеФормы
Ответ #3 - 11. Ноября 2011 :: 03:50
Печать  
А в каком контексте выполняется этот код?
  
Наверх
 
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Объясните пожалуйста метод Закрыть() из РасширениеФормы
Ответ #4 - 11. Ноября 2011 :: 04:35
Печать  
mszsuz писал(а) 11. Ноября 2011 :: 02:51:
ВыбЗначение.Форма.Закрыть(0);


В таком случае форма закрывается только после выполнения моей процедуры.
Т.е. смысл в том чтобы изменить документ, но если форма открыта, то понятно записаться не даст.
Если делать так то всеравно выскочит "запись заблокирована", а после уже закроется форма документа.

"А в каком контексте выполняется этот код?"

Вообще процедура находится в форме справочника Номенклатура. Просто эта номенклатура может быть открыта как из справочника, так и из самого документа. В этой процедуре изменяется документ и должен записаться и провестись.
  
Наверх
 
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Объясните пожалуйста метод Закрыть() из РасширениеФормы
Ответ #5 - 11. Ноября 2011 :: 05:49
Печать  
Вообщем пришлось решить в обход, но может кому понадобится:

В обработке:

     ОбъектСервис = СоздатьОбъект("Сервис");
     СписокОкон = ОбъектСервис.СписокВсехОткрытыхОкон();
     //СписокОкон //:СписокЗначений
     Для СчОкон=1 По СписокОкон.РазмерСписка() Цикл
           ВыбЗначение = ""; ИмяОкна = "";
           ВыбЗначение = СписокОкон.ПолучитьЗначение(СчОкон, ИмяОкна);
           Если Найти(СокрЛП(ИмяОкна), "Поступление в розницу (купля-продажа)") > 0 Тогда
                 Если ВыбЗначение.ТекущийДокумент() = ПоступлениеТовара.ТекущийДокумент() Тогда
                       ОбъектСервис.ВыполнитьПроцедуру(ВыбЗначение, "ЗакрытьФормуИзВнешнейФормы");
                       Прервать;
                 КонецЕсли;
           КонецЕсли;
     КонецЦикла;

В документе добавлена процедура:

Процедура ЗакрытьФормуИзВнешнейФормы()
     РасширениеФормы = СоздатьОбъект("РасширениеФормы");
     РасширениеФормы.Закрыть();
КонецПроцедуры // УдалитьТоварИзФормыНоменклатуры
  
Наверх
 
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Объясните пожалуйста метод Закрыть() из РасширениеФормы
Ответ #6 - 11. Ноября 2011 :: 05:53
Печать  
Маленькая поправочка Улыбка

Вот так наверное правильней:


     ОбъектСервис = СоздатьОбъект("Сервис");
     СписокОкон = ОбъектСервис.СписокВсехОткрытыхОкон();
     РасширениеФормы = СоздатьОбъект("РасширениеФормы");
     //СписокОкон //:СписокЗначений
     Для СчОкон=1 По СписокОкон.РазмерСписка() Цикл
           ВыбЗначение = ""; ИмяОкна = "";
           ВыбЗначение = СписокОкон.ПолучитьЗначение(СчОкон, ИмяОкна);
           РасширениеФормы.УстановитьФорму(ВыбЗначение.Форма);
           Если РасширениеФормы.ТипОбъекта() = "Документ" Тогда
                 Если ВыбЗначение.ТекущийДокумент() = ПоступлениеТовара.ТекущийДокумент() Тогда
                       ОбъектСервис.ВыполнитьПроцедуру(ВыбЗначение, "ЗакрытьФормуИзВнешнейФормы");
                       Прервать;
                 КонецЕсли;
           КонецЕсли;
     КонецЦикла;
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать