Имя: Пароль:
1C
1C 7.7
v7: Запрос из базы 7.7 к остаткам по счету 41 в базе 8.2 БП2
,
0 dimm7310
 
09.06.16
12:23
Нужно по выбранным товарам в комплексной конфигурации 7.7 получать остаток на 41.01 счете товара в БП2.

Пробую так :

    Коннектор = СоздатьОбъект("V82.ComConnector");
    Логин = "88";
    Пароль = "183729";  
    ПутьКБазе = "f:\1С\V8\Проба\20141022";
    v8 =Коннектор.Connect("File="""+СокрЛП(ПутьКБазе) + """; Usr="""+СокрЛП(Логин) +"""; Pwd=""" +СокрЛП(Пароль)+""" ");
    
    ИмпЗапрос=v8.NewObject("Запрос");
    ИмпЗапрос.Текст =     "ВЫБРАТЬ
    |    ХозрасчетныйОстатки.КоличествоОстатокДт Как Количество,
    |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата1, Счет.Код = &Счет41, , ) КАК ХозрасчетныйОстатки
    |ГДЕ
    |    ХозрасчетныйОстатки.Субконто1.Код = &Товар
    |
    |УПОРЯДОЧИТЬ ПО
    |    Субконто1";    
    
        ИмпЗапрос.УстановитьПараметр("Дата1",'20160601');
        ИмпЗапрос.УстановитьПараметр("Товар","00000000113");
        ИмпЗапрос.УстановитьПараметр("Счет41","41.01");
        ИмпТЗ=ИмпЗапрос.Выполнить().Выгрузить();


запрос возвращает пустую ИмпТЗ
Ошибок не выдает.
Аналогичный запрос выполненный в БП2 возвращает правильный результат.

Пробовал делать простенькие запросы к справочникам - работает нормально.

Впервые столкнулся с необходимостью подключаться из 7.7 к 8.2.

Что не так?
1 dimm7310
 
09.06.16
14:08
ладно,  пробую по другому

в БП2 есть ДополнительныйМодуль (общий модуль добавлен мной для подобных случаев)

делаю в нем экспортную процедуру с таким же запросом

пробую обратится к ней из 7-ки
v8.ДополнительныйМодуль.ПолучитьОстатокТовара("00000000113",'20160601');

выдает: Поле агрегатного объекта не обнаружено (ДополнительныйМодуль)
2 Зая Бусечка
 
09.06.16
14:10
(1) Прав на внешнее соединение нет у дополнительныйМодуль
3 dimm7310
 
09.06.16
14:16
(1) в свойствах ДополнительныйМодуль стоят галки "Внешнее соединение" + "Клиент обычное приложение". Ошибка та же
4 skafandr
 
09.06.16
14:24
А есть уверенность что так работает:
   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата1, Счет.Код = &Счет41, , ) КАК ХозрасчетныйОстатки

попробуйте
    Счет41=v8.ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
...
   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата1, Счет = &Счет41, , ) КАК ХозрасчетныйОстатки
...
    ИмпЗапрос.УстановитьПараметр("Счет", Счет41);


В конце по хорошему Счет41=0;
5 dimm7310
 
09.06.16
15:39
(4) в самом начале я именно так и пробовал
ИмпЗапрос.УстановитьПараметр("Товар",v8.Справочники.Номенклатура.НайтиПоКоду("84284"));
ИмпЗапрос.УстановитьПараметр("Счет41",v8.ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"));

результат был таким же.

а Счет.Код = &Счет41  - работает, я проверял обработкой в 8-ке
6 sonne666
 
09.06.16
16:22
(5) смотрю свою подобную обработку. Из 77 в 8 дата передавалась в формате 77.
7 skafandr
 
09.06.16
17:05
запрос возвращает пустую ИмпТЗ - как определяете?
ИмпТЗ.Количество() что дает ?

ибо по тексту у меня далее
Для инд=0 По ТЗ8.Количество()-1 Цикл
        ТекСтрока = ТЗ8.Получить(инд);
8 skafandr
 
09.06.16
17:07
т.е. ИмпТЗ находится на стороне 8.2
9 dimm7310
 
09.06.16
17:24
(6)
нет передается в формате понятном 8-ке
ИмпЗапрос.УстановитьПараметр("Дата1",'20160601');
10 dimm7310
 
09.06.16
17:27
(7) определял по
ИмпТЗ.Количество() = 0

я писал выше, что запрос к справочнику отрабатывал нормально и ИмпТЗ.Количество() была больше 0

но с остатками по счету - такая вот хрень
11 dimm7310
 
09.06.16
17:40
пробовал не проверять по количеству строк в ИмпТЗ, а просто перебирать их

            Для Н = 1 По ИмпТЗ.Количество() Цикл
                КолФин = Число(ИмпТЗ.Получить(Н-1).Количество);
                Сообщить(КолФин);
            КонецЦикла;

не вывело ни чего
12 sonne666
 
09.06.16
17:58
(9) вы же запрос из 77 делаете? Дата вычисляется в 77 и должна быть ей понятна. Разве нет? Могу ошибаться, давно не приходилось сталкиваться.
13 dimm7310
 
10.06.16
11:11
(9) дата здесь не причем, я пробовал делать запрос не указывая дату (в этом случае должно было считать на текущую дату в запросе) - но результат- тот же
14 dimm7310
 
10.06.16
11:37
удалось решить проблему способом указанным в
http://www.1c1c1c.ru/index.php?option=com_content&task=view&id=22&Itemid=31

но при этом мою функцию расчета пришлось перенести в модуль внешнего соединения БП2, что не есть гуд. Придется следить, что бы обновлением не затерло
15 ptiz
 
10.06.16
11:56
(0) Вот тут проблема
ИмпЗапрос.УстановитьПараметр("Дата1",'20160601');

Семерка не может распознать дату '20160601'
16 skafandr
 
10.06.16
14:36
(0)
Поддержу (15), дата должна ставиться в терминах 7.7.
По ссылке, что Вы дали, в запрос передается дата на стороне 7.7 НачалоДня(ДатаНач)

Надо только понимать понимать что для восьмерки это будет начало дня, с нулевым временем.Если нужен отчет на конец дня - передавать из 7.7 Дату+1  

Кстати,многие вещи,которые при работе нативно можно не указывать и срабатывает какое-то умолчание - при OLE нужно указывать в явном виде
17 dimm7310
 
14.06.16
14:04
(15)(16) Вы совершенно правы

Большое всем спасибо