Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Проблема с Formex и ВыполнитьПроцедуру()

v7: Проблема с Formex  и ВыполнитьПроцедуру()
Я
   pofigos
 
11.04.17 - 22:34
Всем привет.
Помогите разобраться:

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


и процедура не запускается. Не могу понять в чем дело. На другом отчете, где используется процедура с режимом все хорошо, отрабатывает как положено. Тут даже не доходит :(

Просьба натолкнуть, куда надо :)
 
 
   Злопчинский
 
1 - 11.04.17 - 22:38
первый параметр: Параметры - контекст, в котором выполняется требуемая процедура

ВыполнитьПроцедуру(<?>,,)
Синтаксис:
ВыполнитьПроцедуру(<Контекст>,<ИмяПроцедуры>,<СписокАргументов>)
Назначение:
Метод предназначен для выполнения процедуры в заданном контексте.
Возвращает 1 в случае успеха, 0 - в противном случае.
Пареметры:
<Контекст> - необязательный параметр. Контекст, в котором необходимо выполнить процедуру.
По умолчанию выполняется в текущем контексте.
<ИмяПроцедуры> - строка с именем процедуры.
<СписокАргументов> - необязательный параметр. Список значений, содержащий аргументы
процедуры. Если размер списка меньше, чем количество аргументов процедуры или параметр
опущен, то в оставшиеся аргументы передаются пустые значения. Лишние значения игнорируются.
Значения по умолчанию игнорируются.
Пример:
Перем Конт;
Сервис = СоздатьОбъект("Сервис");
ОткрытьФорму(Обработка.Демо, Конт);
Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение("Первый параметр");
Список.ДобавитьЗначение("Второй параметр");
Список.ДобавитьЗначение("Третий параметр");
Сервис.ВыполнитьПроцедуру(Конт, "Выполнить2", Список);
   pofigos
 
2 - 11.04.17 - 22:42
(2) Спасибо за справку :) На сколько я помню, при выполнении: ОткрытьФорму("Отчет."+спрЗадания.внОтчеты,Параметры), 

Параметры = Контекст. И Именно там пытаюсь выполнить процедуру.

Повторюсь, на другом отчете выполняется без проблем. Этот же отчет, но процедура без Аргументов так же отрабатывается
   pofigos
 
3 - 11.04.17 - 22:53
Выложу полный код, для понимания, что есть:

Если ОткрытьФорму("Отчет", Параметры, СокрЛП(спрЗадания.ПутьКФайлуОтчета)) = 1 Тогда
                        Список = СоздатьОбъект("СписокЗначений");
                           
                        ВыполняемаяПроцедура = Лев(СокрЛП(спрЗадания.ФункцияЗапуска),Найти(СокрЛП(спрЗадания.ФункцияЗапуска),"(")-1);
                        ПараметрПроцедуры = СтрЗаменить(Прав(СокрЛП(спрЗадания.ФункцияЗапуска),(СтрДлина(СокрЛП(спрЗадания.ФункцияЗапуска))-СтрДлина(ВыполняемаяПроцедура))),"(",""); 
                        ПараметрПроцедуры = СтрЗаменить(ПараметрПроцедуры,")","");                  
                        Если ПустаяСтрока(СокрЛП(ПараметрПроцедуры)) = 0 Тогда
                            Попытка 
                                Список.ДобавитьЗначение(Число(СокрЛП(ПараметрПроцедуры))); 
                            Исключение 
                                Список.ДобавитьЗначение(СокрЛП(ПараметрПроцедуры));
                            КонецПопытки;                
                        КонецЕсли;
                        СервисЗадания.ВыполнитьПроцедуру(Параметры,ВыполняемаяПроцедура,Список);    
                        Если СервисЗадания.АктивныйКонтекст(ЛокалКонтекст) = 1 Тогда
                            
                            СервисЗадания.СписокТаблиц().ПолучитьЗначение(1,ИмяФайлаОтчета); 
                            ИмяФайлаОтчета = ""+СокрЛП(спрЗадания.Наименование) + "_"+СтрЗаменить(ТекущаяДата(),".","_");
                              Йоксель        = СоздатьОбъект("ТабличныйДокумент");
                            Конвертер    = СоздатьОбъект("КонвертерExcel");                    
                            ВремТабл    = Конвертер.Создать();                    
                            Йоксель.ЗагрузитьИзТаблицы(ЛокалКонтекст);                    
                            ВремТабл.Листы.Добавить("Лист", Йоксель);                                       
                            ВремТабл.ПараметрыКонвертера.РаспознаватьЧисловыеЗначения = 1;
                            ВремТабл.Записать(СокрЛП(Константа.ПутьХраненияОтчетов)+""+ИмяФайлаОтчета+".xls");
                            Йоксель.Очистить();                      //

                              //ЛокалКонтекст.Записать(СокрЛП(Константа.ПутьХраненияОтчетов)+""+ИмяФайлаОтчета, 1);                     

                            ЛокалКонтекст.Показать("","",-1);
                            
                            ОптравитьПоEmailОтчет(СокрЛП(Константа.ПутьХраненияОтчетов)+""+ИмяФайлаОтчета+".xls",СписокАдресов);                            
                        КонецЕсли;
                        Параметры.Форма.Закрыть();
                    КонецЕсли; 


Тут Открывается форма внешнего отчета и пытаюсь запустить процедуру: Процедура Сформировать_NEW(Режим)

Форма инициализириуется нормально. Процедура ПриОткрытии() отрабатывает. Первоначальное заполнение формы так же происходит в процедуре ПослеОткрытия(Конт) (в глобальном находится).

Ощущение, что по каким-то причинам не видит указанную процедуру.
   pofigos
 
4 - 12.04.17 - 00:02
(1) И все же огромное спасибо! Ночью мозг уже не варит. Хотя странно, как остальное отрабатывало ))) Глюк отловил. Все работает )
   Злопчинский
 
5 - 12.04.17 - 00:32
(4) ну написал бы что было.
а то выморозил всем мозг и слинял...

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует