|
v7: Как РассчитатьРегистрыНА() через ОЛЕ, если заранее не известно имя регистра?
| ☑ |
0
vSobolev
13.07.12
✎
17:57
|
Классический пример расчета остатков регистра по ОЛЕ:
Рег = БазаОЛЕ.createobject("Регистры");
ВремРег=Рег.Товары;
ВремРег.ВременныйРасчет(1);
Рег.РассчитатьРегистрыНА(ТекДата);
А если заранее не известны имена регистров, надо тупо перебрать все регистры по Метаданным, тогда как получить ВремРег?
Для Сч=1 по Метаданные.Регистр() Цикл
Идентификатор = Метаданные.Регистр(Сч).Идентификатор;
ВремРег = ???;
КонецЦикла;
|
|
1
дущ
13.07.12
✎
18:04
|
Ну этааа... сейчас не помню, но попробуй так
Рег = СоздатьОбъект("Регистры." + ИмяРега);
Рег.РассчитатьРегистрыНа(ТекДата);
|
|
2
Rie
13.07.12
✎
18:04
|
ПолучитьАтрибут(...)
|
|
3
vSobolev
13.07.12
✎
18:10
|
Рег = СоздатьОбъект("Регистры." + ИмяРега);
Рег.РассчитатьРегистрыНа(ТекДата);
Здесь мы имеем объект - регистр, а у регистра нет метода РассчитатьРегистрыНа(ТекДата), соответственно, возвращается ошибка "Поле агрегатного объекта не обнаружено (РассчитатьРегистрыНа)"
|
|
4
vSobolev
13.07.12
✎
18:13
|
ПолучитьАтрибут(...) - а как это можно использовать???
|
|
5
Z1
13.07.12
✎
18:14
|
(0) Вызывай глобальную процедуру по OLE
Вот только как передавать обратно то что рассчитал уже
не помню
В крайнем случае точно через файл получиться.
|
|
6
vSobolev
13.07.12
✎
18:17
|
(5) Но прежде чем вызвать глобальную процедуру, надо во всех регистрах признак временного расчета установить. А как это сделать через метаданные?
|
|
7
Rie
13.07.12
✎
18:20
|
(4)
Регистры = БазаОЛЕ.CreateObject("Регистры");
Рег = Регистры.ПолучитьАтрибут(ИмяМоегоРегистра);
|
|
8
Rie
13.07.12
✎
18:21
|
(6)
После (7)
Рег.ВременныйРасчет(1);
|
|
9
vSobolev
13.07.12
✎
18:22
|
(7)(8) Спасибо, сейчас попробую
|
|
10
Serginio1
13.07.12
✎
18:23
|
8+ и закинуть в список.
|
|
11
Serginio1
13.07.12
✎
18:25
|
10 а может и не надо.
|
|
12
vSobolev
13.07.12
✎
19:02
|
Всем участникам спасибо, все работает.
|
|