Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=29650)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Связь 7.7 - 7.7 по OLE, передача функции в запросе

Автор: mister-x 04.05.16, 17:29

Є запит (частина):

// ===============================
Функция ПолучитьНомЛиц(Контрагент)
    Попытка
        лиц = Контрагент.ТипЛицензии;
        Если Лиц = Перечисление.ТипыЛицензий.Первый Тогда
            Возврат 1;
        ИначеЕсли  Лиц = Перечисление.ТипыЛицензий.Второй Тогда
            Возврат 2;
        ИначеЕсли  Лиц = Перечисление.ТипыЛицензий.Третий Тогда
            Возврат 3;
        ИначеЕсли  Лиц = Перечисление.ТипыЛицензий.Четвертый Тогда
            Возврат 4;
        КонецЕсли;                      
    Исключение
        Возврат 0;
    КонецПопытки;
КонецФункции



функция ПроверкаДокаПеремещение(Док)
    
    попытка
        если Док.Вид() = "ПеремещениеТМЦ" тогда
            если Док.КодОперации = перечисление.КодыОпераций.ВозвратИзРозницы тогда
                возврат 0;
            иначе
                Возврат 1;    
            конецесли;    
        иначе
            Возврат 1;    
        конецесли;    
       Исключение
        Возврат 0;
    КонецПопытки;

КонецФункции


ЗапросТам = v7.EvalExpr("CreateObject(""Запрос"")");
        ТекстЗапросаТам ="         
        |ПЕРИОД С '"+ВыбНачПериода+"' По '"+ВыбНачПериода+"';
        |ОбрабатыватьДокументы Проведенные;
                ...
                |Функция ВозвратИзРозницы = Сумма(Количество) Когда((ПолучитьНомЛиц(Контрагент)<>3)И(ПроверкаДокаПеремещение(ТекущийДокумент)=0));
                ...


Чи є можливість передати ці функції (і як) для викон. запиту в базу, яка підключена по OLE, а то при виконані запиту вибиває помилку, що ці функції не знайдені?

Автор: Домовик 04.05.16, 20:24

Андрію, а чому ви їх туди(в конфігурацію іншої бази) не кинете?
Це не етично? )

Автор: mister-x 05.05.16, 10:14

Ще є ідея зробити їх експортними в глобальному модулі тієї бази, до якої підключаюсь.

"Не свариться", але і не працюють ці функції в запиті...

Автор: Acid 05.05.16, 10:36

mister-x @ Сегодня, 11:14 *, Функции в запросах не работают через ОЛЕ.
Как вариант, в подключаемой базе сделать глобальную функцию с нужными отборами. И уже вызывать именно эту глобальную функцию.

Автор: mister-x 06.05.16, 17:33

Acid @ Вчера, 10:36 *,
на жаль, ця функція верне у базу, з якої підключаюся, тільки простий тип даних, а мені необхідно хоча б ТЗ - результат запиту. Тут потрібно якось переробити запит без вкладених функцій.

Автор: mister-x 06.05.16, 23:13

Хм, хіба перебрати результат функції в базі-ОЛЕ і передати в цю базу примітивні типи даних. Попробую...

Автор: Мичман Харитонов 09.05.16, 19:26

А если использовать "ЗначениеВСтроку"?
Строка Через ОЛЕ передается... вот только максимально допустимую длину не помню.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua