EvalExpr или ExecuteBatch? #489966


#0 by Fisco
Сводный отчет по остаткам из разных базы по OLE. Получаемое количество надо перевести в определенную единицу измерения, выбор единицы в реквизите формы. В глобальном модуле есть функция переводящая количество из одних единиц в другие. Создаю объект OLE, выполняю запрос, получаю количество. Проблема возникает при попытке пересчета количества через эту функцию. Функция в глобальном модуле: Если я правильно понимаю, эту функцию необходимо выполнять в OLE базе. Пытался сделать так: ... ОбщаяТаблицаДанных.Количество = OleBase.ExecuteBatch("глПересчетЕдиниц(Запрос.Товар,Запрос.Кво,Запрос.Товар.БазоваяЕдиница,ВыводимаяЕдИзм)*Запрос.Коэф"); ... при этом не происходит ничего, даже сигнальное сообщение не появляется. попытался через EvalExpr: ... ОбщаяТаблицаДанных.Количество = OleBase.EvalExpr("глПересчетЕдиниц(Запрос.Товар,Запрос.Кво,Запрос.Товар.БазоваяЕдиница,ВыводимаяЕдИзм)*Запрос.Коэф"); ... При этом вылетает с ошибками. Так как все таки правильно пересчитать количество?
#1 by Fisco
Модераторам: Сорри, вопрос по 7.7, не выставил раздел, и попал в v.8. Перекиньте, пожалуйста в нужный раздел. Спасибо.
#2 by Fragster
не взлетит... автору долго втыкать про то, как процессы взаимодействуют по OLE и где какие переменные находятся
#3 by rem4755
Какого контекста переменная Запрос,ВыводимаяЕдИзм?
#4 by Ковычки
фигня какая то
#5 by dk
зачем такая мутная функция? ТиС?
#6 by Mikeware
не трахайте моск, юзайте 1с++
#7 by Fisco
Запрос  - OLE контекст. ВыводимаяЕдИзм - OLE контекст: ... ... ВыбЕдИзм - реквизит формы.
#8 by Fisco
Конфигурация самописная. А функция пересчитывает количество товара из исходной единицы измерения в требуемую. Отчет строят то в ящиках, то в бутылках, то в поддонах. Для этого и стоит выбор реквизита выбираемой единицы на форме.
#9 by Rie
Переменная Запрос - где определена?
#10 by dk
---- но не помню точно сработает ли
#11 by Rie
Нет. Требуется EvalExpr. Проблема у автора, видимо, с передачей параметров этому самому EvalExpr.
#12 by dk
тогда придется извращаться с ЗначениеИзСтрокиВнутр(""""+СтрЗаменить(ЗначениеВстрокуВнутр,"""", """""")+"""")
#13 by Fisco
Это каждый передаваемый параметр так надо извращать?
#14 by dk
да, кроме простых типов: строка, число, дата
#15 by dk
причем OleBase.ЗначениеИзСтрокиВнутр ...
#16 by Fisco
т.е. Так? Под рукой нет конфы сейчас проверить.
#17 by dk
---- возможно придется заменить на инглиш синонимы --- пройдись поиском по OLE и ЗначениеИзСтрокиВнутр или на синоре глянь - метод не новый )
#18 by Fisco
Спасибо, поищу, а разве sinor.ru еще жив?
#19 by dk
----------- мертв, открой для себя
#20 by Fisco
dk, cпасибо! не знал про , сейчас гляну.
#21 by Fisco
Инициализация OLE сервера Трейд2 кавычки проверил, вроде все на месте...
#22 by dk
...ЗначениеИзСтрокиВнутр("+ОлеВывЕд+"))")*Запрос.Коэф;
#23 by dk
",Запрос.Кво," - странно - тут числовая константа должна быть я по другому показывал ,Запрос.Кво, <> ,"+Запрос.Кво+",
#24 by Fisco
это я пробовал по разному, не тот вариант скопировал. Без ошибок выполнился твой вариант: но количество везде 0 вернулось ((
#25 by Fisco
просмотр переменных показал:
#26 by dk
отладчик в зубы и вперед
#27 by dk
отладчик в ОЛЕ базе тоже работает
#28 by dk
хотя ОлеВывЕд сильно подозрительная  - походу пустая ссылка
#29 by dk
но может просто первая - хз
#30 by Злобный Йожег
Автор, тебе наиболее оптимальный вариант здесь назвали в . "Что" и "как" при этом делать, можно почитать тут:
#31 by Fisco
не буду спорить что он может и оптимальный. Но: 1. Есть готовый, работающий и довольно сложный отчет. Стоит задача допилить его под работы с OLE базами. 2. Переделывать отчет под 1С++ сейчас нет времени. 3. Проблема почти решена, затык только с этим получаемым количеством.
#32 by Sereja
Передавай в функцию не объект, а код объекта, а в самом начале функции находи нужный
#33 by Sereja
+32 ++...нужный объект, тогда работать будет
#34 by Rie
И ради этого переделывать функцию Глобального модуля, используемую чуть ли не по всей конфигурации? Жестоко...
#35 by Sereja
"Конфигурация самописная. " - цэ. 34 - "И ради этого переделывать функцию Глобального модуля, используемую чуть ли не по всей конфигурации" - откуда сведения ? Может у автора функция используется 1,2 раза
#36 by Fisco
Функция действительно используется в большом количестве отчетов и обработок, несмотря на то, что конфигурация самописная, Менять ее точно нельзя.
#37 by Sereja
- скопируй рядом измененную
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С