Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Запись из контекста формы (число прочтений - 3351 )
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Запись из контекста формы
17. Мая 2007 :: 10:25
Печать  
Может не совсем по 1с++, но все же.
Ситуация:
Есть алгоритм заполнения скрытых полей в каждом документе и реализован он в модуле формы в процедуре ПриЗаписи().
Создаю автоматом документы. Заполняю основные поля. Делаю Записать().
Затем ОткрытьФорму(Док, Конт) и получаю контекст формы, для заполнения скрытых полей вызываю Конт.ПриЗаписи(). Но после этого не могу из контекста сохранить данные. Поскольку Конт.Записать() пишет, что "данный метод нельзя вызывать из элементов формы".
Есть ли выход?
  
Наверх
 
IP записан
 
Shadal
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 18. Июля 2006
Re: Запись из контекста формы
Ответ #1 - 18. Мая 2007 :: 01:30
Печать  
Просто Сделай Процедурку ПриЗаписи1() например в конце которой стоит Записать()
Процедура ПриЗаписи1()
     //тоже что и приЗаписи()
    Записать()
Конецпроцедуры

И потом уже вызываешь Конт.ПриЗаписи1()
и всё записывать не нада далее.
  
Наверх
 
IP записан
 
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Re: Запись из контекста формы
Ответ #2 - 18. Мая 2007 :: 02:37
Печать  
Это понятно. Только проблема в том, что (сорри, не озвучил ранее) видов документов более 30, да и конфигурацию менять нельзя по определенным причинам.
  
Наверх
 
IP записан
 
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Re: Запись из контекста формы
Ответ #3 - 18. Мая 2007 :: 03:09
Печать  
Shadal писал(а) 18. Мая 2007 :: 01:30:
Просто Сделай Процедурку ПриЗаписи1() например в конце которой стоит Записать()
Процедура ПриЗаписи1()
    //тоже что и приЗаписи()
   Записать()
Конецпроцедуры

И потом уже вызываешь Конт.ПриЗаписи1()
и всё записывать не нада далее.


Кстати - так та же самая ошибка выходит...
  
Наверх
 
IP записан
 
Shadal
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 18. Июля 2006
Re: Запись из контекста формы
Ответ #4 - 18. Мая 2007 :: 04:38
Печать  
Улыбка вот короче что у меня стоит в модуле.
//часть модуля
Процедура ПоКнопкеЗаполнить()
     Результат = ЗаполнениеПоДокументуОснованию();
     Форма.Обновить(0);
КонецПроцедуры // ПоКнопкеЗаполнить()
Процедура ПриЗакрытии()
     Записать();
КонецПроцедуры
// конец части модуля

Вот как я вызываю
конт="";
ОткрытьФорму(Док.ТекущийДокумент(),конт);       
конт.ПоКнопкеЗаполнить();
конт.ПриЗакрытии();    
конт.Форма.Закрыть();   
У меня не ругается... и нормально в цикле все документы пробегает...

Если по каким либо причинам не хочешь менять модули можно же хитро поступить
Для себя сделать turbomd.prm где будут переподгружаться модули.. ну а дя пользователя другой turbomd.prm или вообще ему его не надо....
  
Наверх
 
IP записан
 
Shadal
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 18. Июля 2006
Re: Запись из контекста формы
Ответ #5 - 18. Мая 2007 :: 04:55
Печать  
Ещё если много документов делать то я предпочитаю вот так делать

Перем Док Экспорт;
//*******************************************
Процедура Сформировать()
     к=0;
     Пока к<1 Цикл
            Если  Док.ПолучитьДокумент()=1 Тогда
               Если Док.Проведен()=1 Тогда
                   конт="";
                   ОткрытьФорму(Док.ТекущийДокумент(),конт);       
                   конт.ПоКнопкеЗаполнить();
                   конт.ПриЗакрытии();    
                   конт.Форма.Закрыть();   
           КонецЕсли; 
            Иначе      
           Форма.ОбработкаОжидания();
            КонецЕсли;   
                к=к+1;
     КонецЦикла;
     Форма.ОбработкаОжидания();
КонецПроцедуры
Процедура ПриОткрытии()
     ЗагрузитьВнешнююКомпоненту("1cpp.dll");
     ЗагрузитьВнешнююКомпоненту("TurboMD.dll");
КонецПроцедуры         
Процедура НажатиеКнопкиНаФорме()   //Ставим на кнопку в обработке.
     Док=СоздатьОбъект("Документ.МойДокумент");
     Док.ВыбратьДокументы(НачДата,КонДата);
     Форма.ОбработкаОжидания("Сформировать",1);
КонецПроцедуры 
  
Наверх
 
IP записан
 
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Re: Запись из контекста формы
Ответ #6 - 18. Мая 2007 :: 05:18
Печать  
Хм. Обязательно проверю все это - выглядит интересно. Только одно сразу уже не очень понятно - зачем цикл по "к" - он ведь все равно один раз всего выполнится в любом случае?
P.S. - Если я не прав, то буду рад узнать где Улыбка
  
Наверх
 
IP записан
 
Shadal
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 18. Июля 2006
Re: Запись из контекста формы
Ответ #7 - 18. Мая 2007 :: 05:22
Печать  
ну это у меня просто как признак того что получить очередной документ не могу  Смех
так уж я в своём модуле это написал )))
Просто если через контекст открывать в цикле без обработки ожидания Форма не закрывается до завершения цикла почемуто... ну и при очень больших объёмах комп зависает )). А так не зависает и быстро отрабатывает...
  
Наверх
 
IP записан
 
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Re: Запись из контекста формы
Ответ #8 - 18. Мая 2007 :: 05:24
Печать  
Все ясно Улыбка.
Это я для подстраховки спрашиваю. Вдруг очередная неизвестная фишка  Смех

А на зависание в цикле я уже наткнулся - об этом и в документации сказано, что Закрыть() устанавливает только флаг и ждет конца текущей процедуры.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запись из контекста формы
Ответ #9 - 18. Мая 2007 :: 05:50
Печать  
Для немедленного закрытия формы используйте Система::ЗакрытьФорму(КонтФормы, фЗакрыватьССохранением) - в отличие от штатного, этот метод не ждет завершения кода, а немедленно закрывает форму Улыбка

Полное описание данной функции смотрите в доке на 1С++
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать