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