|
v7: OLE как в базе OLE выполнить ВРЕМЕННЫЙРАСЧЕТ | ☑ | ||
---|---|---|---|---|
0
sergsol
22.06.12
✎
13:20
|
Нужно из оле-базы получить данные из регистров не на ТА, а на какой-то произвольный момент. Как в местной базе задать "ВременныйРасчет" и "РассчитатьРегистрыПО" для оле-базы?
Подскажите пожалуйста как это можно реализовать? |
|||
1
sergsol
25.06.12
✎
11:42
|
Дайте какую-нибудь зацепку.
|
|||
2
ДенисЧ
25.06.12
✎
11:44
|
рег = БазаТам.CreateObject("Регистр.МестаХранения");
рег.ВременныйРасчет(1); БазаТам.РассчитатьРегистрыПо('01.04.2012'); |
|||
3
sergsol
25.06.12
✎
17:19
|
Спасибо. Принято.Проблема была в одинарных кавычках.
Еще проблема. ТЗОле=БазаОле.CreateObject("ТаблицаЗначений"); РегОле.ВыгрузитьИтоги(ТЗОле); БазаОле.глННРодитель=0; //перем в оле-базе с признаком внешняя ф2=ТЗОле.НайтиЗначение(ТовОле.Наименование,БазаОле.глННРодитель,"Наименование"); Если ф2=1 Тогда // значение найдено сообщить(БазаОле.глННРодитель); конецесли; Значения находятся---> ф2=1. но переменная БазаОле.глННРодитель, куда должен заноситься номер строки таблицы равна 0. По этой причине не могу спозиционироваться на нужной строке таблицы. Подскажите где искать причину. |
|||
4
Ork
25.06.12
✎
17:27
|
(3) Тип БазаОле.глННРодитель не число.
|
|||
5
sergsol
25.06.12
✎
18:13
|
А команда
БазаОле.глННРодитель=0; //перем в оле-базе с признаком внешняя разве не определяет ее как число? |
|||
6
Ork
25.06.12
✎
18:17
|
И все-таки результат ТипЗначенияСтр(БазаОле.глННРодитель) из отладчика - в студию.
"0" в семерке - аналог пустого значения любого типа. Например есть переменная ВыбКонтрагент с типом "Справочник.Контрагенты". Применение ВыбКонтрагент=0 выполнится в полный рост. При этом тип ВыбКонтрагент не изменится. Только станет Выбран() = 0. |
|||
7
welwel
25.06.12
✎
18:19
|
(3) если в подключаемой базе определен глННРодитель,
то может и определить всю процедуру с нужными действиями целиком, а не делать такие манипуляции через OLE? |
|||
8
sergsol
25.06.12
✎
18:28
|
(6) Тип- Число
(7) Перем глННРодитель экспорт; Я взял эту перем. , т.к. она нигде не используется в конфе. А менять эту конфу я не имею права!!! |
|||
9
Ork
25.06.12
✎
18:34
|
(8) Забей на переменную из ОЛЕ базы. Пользуй свою. Числа по оле ходят без проблем.
|
|||
10
sergsol
25.06.12
✎
18:44
|
метод
глННРодитель=0; ф2=ТЗОле.НайтиЗначение(ТовОле.Наименование,глННРодитель,"Наименование"); тоже не катит. ф2=1; глННРодитель тип число =0; |
|||
11
sergsol
27.06.12
✎
11:38
|
Значит что написано в: http://mista.ru/articles1c/hare/article.15.html
чушь? Цитирую:"...И еще раз обращу внимание: ОБЪЕКТЫ ОДНОЙ БАЗЫ ПРЕКРАСНО ПОНИМАЮТ ДРУГ ДРУГА...". Выходит на самом деле не так! |
|||
12
1dvd
27.06.12
✎
11:47
|
(11) простые объекты (строка, число, дата) понимаются базой ОЛЕ
|
|||
13
sergsol
27.06.12
✎
11:50
|
(12) Посмотри пожалуйста, что написано выше в (3).
|
|||
14
1dvd
27.06.12
✎
11:52
|
(13) Что за измерение "Наименование" в регистре БазыОЛЕ? Тип? Вид?
|
|||
15
akaBrr
27.06.12
✎
11:55
|
(11) на самом деле прекрасно понимают, что используется постоянно
|
|||
16
1dvd
27.06.12
✎
11:57
|
Если справочник, то
ф2=ТЗОле.НайтиЗначение(ТовОле.Наименование.ТекущийЭлемент(),глННРодитель,"Наименование"); |
|||
17
1dvd
27.06.12
✎
11:58
|
Если строка, то руки оторвать по самые гланды тому, кто такой регистр придумал
|
|||
18
akaBrr
27.06.12
✎
12:00
|
похоже что метод НайтиЗначение через ОЛЕ не работает, выгружай данные в локальную тз и работай с ней локально
|
|||
19
sergsol
27.06.12
✎
12:06
|
(14)-(17) Привожу последний код
РегОле.УстановитьЗначениеФильтра("Подразделение",ФрмОле.ТекущийЭлемент(),2); РегОле.ВременныйРасчет(); ф1=БазаОле.ExecuteBatch("РассчитатьРегистрыПо('"+Дата2+"')"); ТЗОле=БазаОле.CreateObject("ТаблицаЗначений"); РегОле.ВыгрузитьИтоги(ТЗОле); ТЗОле.НоваяКолонка("Наименование"); ТЗОле.выбратьстроки(); Пока ТЗОле.получитьстроку()=1 Цикл ТЗОле.Наименование=ТЗОле.Номенклатура.Наименование; конеццикла; НайтиЗначение работает (ф2=1) Но номерстроки=0 (18) Попробую. ТЗОле.Свернуть("Номенклатура,Наименование","Количество,СтоимостьРуб"); ТЗОле.сортировать("Наименование"); |
|||
20
1dvd
27.06.12
✎
12:08
|
(19) а ТовОЛЕ?
|
|||
21
sergsol
27.06.12
✎
12:13
|
(20) Справочник.Номенклаткра
|
|||
22
1dvd
27.06.12
✎
12:14
|
(21) т.е. по Самой номенклатуре у тебя не получилось найти тоже?
|
|||
23
sergsol
27.06.12
✎
12:15
|
(22) Верно
|
|||
24
1dvd
27.06.12
✎
12:16
|
так пробовал?
ф2=ТЗОле.НайтиЗначение(ТовОле.ТекущийЭлемент(),глННРодитель,"Номенклатура"); |
|||
25
sergsol
27.06.12
✎
12:17
|
(24) Спасибо. После обеда попробую.
|
|||
26
akaBrr
27.06.12
✎
12:26
|
ТекущийЭлемент() в ОЛЕ не работает
|
|||
27
1dvd
27.06.12
✎
12:26
|
(26) о_О ч дуба рухнул?
|
|||
28
akaBrr
27.06.12
✎
12:28
|
(27) а ты дебил?
|
|||
29
akaBrr
27.06.12
✎
12:30
|
исправляюсь, ТекущийЭлемент() в ОЛЕ работает, но грубить не надо было
|
|||
30
1dvd
27.06.12
✎
12:32
|
я не грубил.
Как раз в ОЛЕ без .ТекущийЭлемент() не работает |
|||
31
sergsol
27.06.12
✎
14:51
|
код
ф2=ТЗОле.НайтиЗначение(ТовОле.ТекущийЭлемент(),БазаОле.глННРодитель,"Номенклатура"); и ф2=ТЗОле.НайтиЗначение(ТовОле.ТекущийЭлемент().Наименование,БазаОле.глННРодитель,"Наименование"); не РАБОТАЮТ. В обоих случаях ф2=1, а параметр номерстроки=0, тип-число. |
|||
32
akaBrr
27.06.12
✎
14:55
|
(31) см. (18) или грызи дальше кактус
|
|||
33
sergsol
27.06.12
✎
15:01
|
Да. Согласен. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |