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