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

В глобальнике есть процедурка с таким содержанием:

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

Процедура Сформировать_NEW(Режим="")


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

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

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

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

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


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


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

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

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