|
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) ну написал бы что было.
а то выморозил всем мозг и слинял... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |