Имя: Пароль:
1C
1C 7.7
v7: Передать Документ в функцию через шаблон
,
0 zenik
 
08.04.16
12:51
Разнообразно приветствую. Сразу скажу, что выкрутился через переменную в модуле, но "червячок точит" :)

Делаем вызов:
Шаблон("[ИмяФункции("+Документ+")]");

И вот этот документ я и через кавычки и через ЗначениеВСтроку... Но не канает.
Есть способ передать документ в функцию при вызове шаблоном?
1 Mikeware
 
08.04.16
12:54
а зачем такой изврат? виртуальные методы, чтоль?
2 Mikeware
 
08.04.16
12:56
есличо, можно ВыполняемымМодулем , либо доп.глобальником.
Но это если нет религиозных предрассудков...
3 zenik
 
08.04.16
12:57
Уважаемый, это 7.7 :)
4 Ёпрст
 
08.04.16
12:57
(0) всё там канает..
5 Ёпрст
 
08.04.16
12:57
(3) выполняемыйМодуль - это тоже 7.7
6 Ёпрст
 
08.04.16
12:58
у тя проблема - не верное количество ковычек
7 Ёпрст
 
08.04.16
12:58
при преобразовании значениевстрокувнутр
8 zenik
 
08.04.16
12:59
значениевстрокувнутр - мне вообще дает пустую строку :( Или я ее неправильно готовил?
9 Mikeware
 
08.04.16
12:59
(6) можно тупо получить ид и иддокдеф, и передать их строкой-13
10 Ёпрст
 
08.04.16
12:59
11 Ёпрст
 
08.04.16
13:00
(8) нам отсюда не видно, чего и как передаешь
12 Ёпрст
 
08.04.16
13:00
а так, всё работает, нужно только ковычки экранировать , при передачи строки в шаблон
13 Mikeware
 
08.04.16
13:02
(3) и я о том же.
http://www.1cpp.ru/docum/icpp/html/extobjs.html#id27
или
ДобавитьГлобальныйМодуль(<?>)
Синтаксис:
ДобавитьГлобальныйМодуль(<ТекстМодуля>)
Назначение:
Загружает, компилирует и запускает дополнительный глобальный модуль. В случае удачной
загрузки возвращает номер загруженного глобального модуля, иначе - 0.
Параметры:
<ТекстМодуля> - (Строка) Передается по значению.  строка с текстом добавляемого глобального модуля.
ЗАМЕЧАНИЕ:
С версии 1.8.1.3 в дополнительных модулях работает теперь директива ЗагрузитьИзФайла.
ПРИМЕР:
Сервис = СоздатьОбъект("Сервис");
глДопМодуль = Сервис.ДобавитьГлобальныйМодуль("#ЗагрузитьИзФайла ГлобМодуль1.txt");
14 zenik
 
08.04.16
13:08
Ммм... Понял вашу политику, но, типа, штатными методами?

Ну вот типа как то так:
Функция Тест(Док)
    
    Сообщить(Док);
    
КонецФункции
//*******************************************
Процедура Сформировать()

    Параметр = ЗначениеВСтрокуВнутр(ВыбДок.ТекущийДокумент());
    
    Шаблон("[Тест("""+Параметр+""")]");
    
КонецПроцедуры

Но ругается:
Тест("{"<<?>>O","0","0","272","0","0","   1099838   "}")
Ожидается символ ')'

ЗначениеВСтроку ругается вот так:
Тест("{"<<?>>Документ","ПриходнаяНакладная","ТПН1-11047     ","08.04.2016"}")
Ожидается символ ')'

Кавычек по разному навтыкивал...
15 zenik
 
08.04.16
13:10
О, е:
Параметр = СтрЗаменить(Параметр,"""","""""");

так?
16 Mikeware
 
08.04.16
13:10
(14) ну так замени одну на три...
17 zenik
 
08.04.16
13:11
Да, да, да... Работает. Принцип понял, спасиб.
18 Mikeware
 
08.04.16
13:12
(14) а лучше - сделавй ЗначениеВСТрокуВнутр, оттуда возьми иддок и иддокдеф, и их передавай. а на другом конце веревки - обратно. этих данных вполне достаточно
19 Mikeware
 
08.04.16
13:13
(17) но ты не ответил на ТКВ...
20 zenik
 
08.04.16
13:27
(19) ТКВ - это что, прости, не понял?
21 Builder
 
08.04.16
13:45
(20) ТКВ = Традиционный Китайский Вопрос - "нафейхуа?"
22 zenik
 
08.04.16
13:51
(21) - Спасиб, буду знать :)
(19) - Выгрузка документов, на каждый вид документа своя процедура... Что бы не делать этажерку:
Если Документ.Вид() = "ТырыПыры" Тогда
  Выгрузить_ТырыПыры(Документ);
и тд.
23 Злопчинский
 
08.04.16
14:08
нфехоа передавать значниевстрокувнутр - нифехоа не понял...
что, для шаблона нельзя сфомировать строку
"МояФункция(ВыбДокумент)"
..?
24 trdm
 
08.04.16
14:56
(22) Дык универсалку замутил бы какую нить. Все равно лесенка получается.
25 zenik
 
08.04.16
14:59
(24) Не получается лесенка... Вместо кучи условий один вызов шаблона:
Шаблон("[Выгрузить_"+Документ.Вид()+"()]");

Только параметр не стал переделывать - через переменную оставил.
26 Mikeware
 
08.04.16
15:11
(25) ну так функции у тебя все равно разные. сделай головную Выгрузить(Документ), а в ней уже по видам "лесенкой."
27 zenik
 
08.04.16
15:19
(27) Функции разные, но их вызов сделан универсальным через шаблон.
Независимо от того, куда вы едете — это в гору и против ветра!