Имя: Пароль:
1C
 
v7-v8: ОЛЕ Запрос, параметры
0 1Сергей
 
14.08.14
09:48
Приветствую вас, дамы и господа!
Мне необходимо подключиться из 8.2 к 7.7 и забрать оттуда некоторые данные.
Есть запрос, и один параметр ссылочного типа, который я никак не могу передать в запрос. К сожалению изменять базу 7.7, и как на зло в глобальнике нет ни одной глобальной переменной-массива.
Какие есть варианты?


Функция ПолучитьБрендНутриция(База77) Экспорт
    
    Спр = База77.CreateObject("Справочник.БрендыКонтрактов");
    КонстанатаБрендНутриция77 = Константы.БрендНутриция77.Получить();
    Если ЗначениеЗаполнено(КонстанатаБрендНутриция77) Тогда
        Если Спр.НайтиЭлемент(База77.ЗначениеИзСтрокиВнутр(КонстанатаБрендНутриция77, Неопределено)) = 1 Тогда
            Возврат Спр.ТекущийЭлемент();
        КонецЕсли;
    КонецЕсли;
    
    Если (Спр.НайтиПоНаименованию("NUTRICIA", 0,1) <> 1) Тогда
        Если (Спр.НайтиПоНаименованию("Нутриция", 0,1) <> 1) Тогда
            Возврат База77.ПолучитьПустоеЗначение("Справочник.БрендыКонтрактов");
        КонецЕсли;
    КонецЕсли;
    
    Возврат Спр.ТекущийЭлемент();
    
КонецФункции

    База77.БлокнотРедактируется = ПолучитьБрендНутриция(База77);

    Запрос = База77.CreateObject("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(СформироватьТП)
    //|Период с НачПериода по КонПериода;
    |Период с '01.01.2013';
    |
    |Товар            = Регистр.ПартииТоваров.Товар;
    |БрендКонтракта    = Регистр.ПартииТоваров.Товар.БрендКонтракта;
    //|БрендКонтракта    = Регистр.ПартииТоваров.Товар.БрендКонтракта.Наименование;
    |ФормаСобст        = Регистр.ПартииТоваров.Клиент.ФормаСобственности;
    |КодОпер        = Регистр.ПартииТоваров.КодОперации;
    |Оборот            = Регистр.ПартииТоваров.Оборот;
    |Количество        = Регистр.ПартииТоваров.ОстатокТовара;
    |Стоимость        = Регистр.ПартииТоваров.Стоимость;
    |Скидка            = Регистр.ПартииТоваров.Скидка;
    |НДС            = Регистр.ПартииТоваров.НДС;
    |НДСрасхода        = Регистр.ПартииТоваров.НДСрасхода;
       |ОборотБаз        = Регистр.ПартииТоваров.БазоваяСтоим;
    |ОборотНДСБаз    = Регистр.ПартииТоваров.БазоваяСтоимНДС;
    |РеализаторСс    = Регистр.ПартииТоваров.Реализатор;
    |Реализатор        = Регистр.ПартииТоваров.Реализатор.Наименование;
    |КодТП            = Регистр.ПартииТоваров.Реализатор.Код;
    |Фирма            = Регистр.ПартииТоваров.Фирма.РазделительУчета;
    |
    |Функция ОборотСумма        = Сумма(Оборот);
    |Функция КоличествоСумма    = Сумма(Количество);
    |Функция НДССумма            = Сумма(НДС);
    |Функция СтоимостьСумма        = Сумма(Стоимость);
    |Функция СкидкаСумма        = Сумма(Скидка);
    |Функция НДСрасходаСумма    = Сумма(НДСрасхода);
    |Функция ОборотБазСумма     = Сумма(ОборотБаз);
    |Функция ОборотНДСБазСумма  = Сумма(ОборотНДСБаз);
    |
    |Группировка РеализаторСс Без Групп;
    |
    |Условие(
    //|            (КодОпер<>"""+ПеремещениеТовара+""") И
    |            (КодОпер<>""А"") И
    //|            (КодОпер<>"""+СписаниеТовара+""") И
    |            (КодОпер<>""С"") И
    //|              (КодОпер<>"""+КоСписаниеМатериалов+""") И
    |              (КодОпер<>""М"") И
    //|            (КодОпер<>"""+Инвентаризация+""") И
    |            (КодОпер<>""Е"") И
    //|              (КодОпер<>"""+ВозвратПоставщику+""") И
    |              (КодОпер<>""Ъ"") И
    //|            (КодОпер<>"""+КОПеремещениеЗабаланс+""") И
    |            (КодОпер<>""G"") И
    //|              (КодОпер<>"""+КОВозвратСЗабаланса+""")
    |              (КодОпер<>""X"")
    |        );
    //|Условие(БрендКонтракта = БрендНутриция);
    //|Условие((Найти(БрендКонтракта, ""NUTRICIA"")>0)ИЛИ(Найти(БрендКонтракта, ""Нутриция"")>0));
    |Условие(БрендКонтракта = БлокнотРедактируется);
    |"//}}ЗАПРОС
    ;
1 1Сергей
 
14.08.14
09:48
*К сожалению не могу изменять базу 7.7
2 ДенисЧ
 
14.08.14
09:54
Повеситься?
3 1Сергей
 
14.08.14
09:55
(2) Я похож на Робина Вильямса?
4 ДенисЧ
 
14.08.14
09:56
(3) Да
5 1Сергей
 
14.08.14
09:57
эм... спасибо. пойду за верёвкой
6 1Сергей
 
14.08.14
09:57
Если в запросе использовать ЗначениеИзСтрокиВнутр, это затормозит его выполнение?
7 ДенисЧ
 
14.08.14
09:58
разумеется
8 1Сергей
 
14.08.14
09:59
(7) сильно?
9 ДенисЧ
 
14.08.14
09:59
(8) если дбф, то не очень, если sql - то да
10 1Сергей
 
14.08.14
10:01
(9) а сильно ли геморно сделать прямой запрос из 8.2 к 7.7? Там же нет 1С++
11 1Сергей
 
14.08.14
10:06
В принципе, в данном случае можно будет фильтрануть по коду справочника. Но далее, скорее всего, мне придется столкнуться с другими параметрами запроса
12 ДенисЧ
 
14.08.14
10:06
(10) адо и нужный провайдер.
Правда, без типизации и виртуальных таблиц.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший