|
v7: OLE и периодические реквизиты | ☑ | ||
---|---|---|---|---|
0
Virtmon
04.06.12
✎
10:45
|
Есть функция получения значений справочников. никак не получается побороть периодические реквизиты:
Док = БазаОЛЕ.CreateObject("Документ"); ОбщИдент = Метаданные.ОбщийРеквизитДокумента(Счетчик).Идентификатор ЗначСправ = Док.ПолучитьАтрибут(ОбщИдент) Для Счетчик = 1 По Метаданные.ОбщийРеквизитДокумента() Цикл Если Метаданные.ОбщийРеквизитДокумента(Счетчик).Тип = "Справочник" Тогда ЗначСправ = Док.ПолучитьАтрибут(ОбщИдент); значАтр = ПолучитьЗначениеСправочника(ОбщАттр,ЗначСправ); Попытка ТекДок.УстановитьАтрибут(ОбщИдент,значАтр); Исключение Сообщить("Ошибка = "+ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецЦикла; Функция ПолучитьЗначениеСправочника(ОбщАттр,ЗначСправ) Для Счетчик2 = 1 По Метаданные.Справочник(ВидСпр).Реквизит() Цикл Справ = Метаданные.Справочник(ВидСпр).Реквизит(Счетчик2); Если Справ.Периодический = 1 Тогда ТекДата = ТекущаяДата(); НачДата = "01.01.80"; ПериодОЛЕ = БазаОЛЕ.CreateObject("Периодический"); ПериодОЛЕ.UseObject(Справ,ЗначСправ); ПериодОЛЕ.ВыбратьЗначения(НачДата,ТекДата); Пока ПериодОЛЕ.ПолучитьЗначение()=1 Цикл Сообщить(Строка(ПериодОле.ДатаЗнач) + " " + Строка(ПериодОле.Значение)); КонецЦикла; КонецЕсли; КонецЦикла; КонецФункции Выдает ошибку: Плохой тип переменной |
|||
1
Virtmon
04.06.12
✎
10:48
|
Забыл сказать где тормозится: на строке ПериодОЛЕ.UseObject(Справ,ЗначСправ);
|
|||
2
butterbean
04.06.12
✎
10:49
|
дык Справ не пролазит через OLE
|
|||
3
butterbean
04.06.12
✎
10:50
|
(2)+ его надо "там" получать
|
|||
4
Zmich
04.06.12
✎
10:53
|
(0). Попробуй ПериодОЛЕ.UseObject(Справ.Идентификатор,ЗначСправ);
|
|||
5
Virtmon
04.06.12
✎
10:56
|
Я думал там просто наименование реквизита надо поставить. В любом случае: получил его там - эффект тот же
|
|||
6
1Сергей
04.06.12
✎
10:58
|
ПериодОЛЕ.UseObject(Справ.Идентификатор,ЗначСправ.ТекущийЭлемент());
|
|||
7
Virtmon
04.06.12
✎
10:59
|
Реквизит = ДолжностьРуководителя типа = Строка вида =
........ 21 Элемент периодический = 1 ЗначСправ.Наименование = ООО "ПродИнвест" ВидСпр = СвоиЮрЛица Справ = Руководитель ЗначСправ = OLE |
|||
8
Virtmon
04.06.12
✎
11:02
|
Справ нормально получает, ТекущийЭлемент() в OLE не прокатывает
|
|||
9
Virtmon
04.06.12
✎
11:03
|
Может у кого-то есть решение как получить данные по периодическому элементу из OLE?
|
|||
10
Ёпрст
04.06.12
✎
11:03
|
(8) еще как прокатывает
|
|||
11
Ёпрст
04.06.12
✎
11:04
|
(9) как в (6) чем не устраивает ?
|
|||
12
Virtmon
04.06.12
✎
11:08
|
Хм, действительно прокатило. Просто я читал статью и там было написано что не прокатывает. Извиняюсь.
|
|||
13
1Сергей
04.06.12
✎
11:10
|
(12) удали эту статью нафиг. Всегда про ОЛЕ в 77 писали, что всё что в обычном режиме работает "по-умолчанию", в ОЛЕ надо прописывать явно
|
|||
14
Virtmon
04.06.12
✎
11:16
|
Там так и было написано, но при этом было написано: "Гарантированно не будут работать методы ТекущийЭлемент() и ТекущийДокумент() (ошибки V7 не будет, но и результат работы будет нулевой)."
|
|||
15
ЧеловекДуши
04.06.12
✎
11:19
|
(14)На заборе тоже много пишут из 3-ёх букв :)
...так то 1С само пишет много, что работает совсем по другому ;) |
|||
16
ЧеловекДуши
04.06.12
✎
11:21
|
+(14) В свое время я реализовал работу через функцию: ExecuteBatch и переменные глУсловие1..глУсловие12 (из БД ОЛЕ)
И выполнял код в базе ОЛЕ, а результат передавай через глобальные переменные. |
|||
17
Virtmon
08.06.12
✎
14:08
|
Может кто подскажет как через эту же функцию установить реквизит справочника типа"справочник". Остальные реквизиты получаются нормально. Пытаюсь сделать так:
Справ1 = Справ; Если Справ.Периодический = 1 Тогда Иначе СправИдент = Справ.Идентификатор; ЗначАтр2 = СпрОЛЕ.ПолучитьАтрибут(СправИдент); ПолучЗначАтр2 = ПолучитьЗначениеАттрибута(Справ1,ЗначАтр2); Попытка ТекСправ.УстановитьАтрибут(СправИдент,ПолучЗначАтр2); Исключение КонецПопытки; КонецЕсли; Не получается |
|||
18
ЧеловекДуши
08.06.12
✎
14:15
|
(17)ТекущийЭлемент()
|
|||
19
Virtmon
08.06.12
✎
14:32
|
Куда его вставить?)
|
|||
20
Virtmon
13.06.12
✎
08:42
|
Никто не подскажет?
|
|||
21
Virtmon
13.06.12
✎
15:55
|
Разобрался, всем спасибо. ТекущийЭлемент() не понадобился)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |