Имя: Пароль:
1C
1C 7.7
v7: OLE, нет периода регистрации. Как обойти?
0 DJ Anthon
 
22.10.11
20:01
Если переменная ЖР (журнал расчета) создана в подключаемой базе, и из нее выбраны записи, то переменная ЖР.ПериодРегистрации недоступна (вернее, в ней поврежденное значение), поэтому ЖР.ПериодРегистрации.ДатаНачала, ЖР.ПериодРегистрации.ДатаОкончания и ЖР.ПериодРегистрации.ОписательПериода возвращают значение неизвестного типа.
Как получить любую дату периода регистрации?

Если мне нужно получить все записи по документу, то я получаю их с помощью такого кода:

ОбъектТам = ЖР.ТекущийДокумент();
СписокДат = ЗначениеИзСтроки(База.EvalExpr("ПолучитьПериодыРегистрации(""" + ОбъектТам.Вид() + """, """ + СокрЛП(ОЛЕДата(ОбъектТам.ДатаДок)) + """, """ + ОбъектТам.НомерДок + """, """ + ИмяЖурнала +""")"));

где
Функция ПолучитьПериодыРегистрации(Вид = "", ДатаДок = "", НомерДок = "", Имя = "") Экспорт
   СписокДат = СоздатьОбъект("СписокЗначений");
   Док = СоздатьОбъект("Документ." + Вид);
   Если Док.НайтиПоНомеру(НомерДок, ДатаДок) = 1 Тогда
       ЖР = СоздатьОбъект("ЖурналРасчетов." + Имя);
       ЖР.ВыбратьЗаписиПоДокументу(Док.ТекущийДокумент());
       Пока ЖР.ПолучитьЗапись() = 1 Цикл
           СписокДат.ДобавитьЗначение(ЖР.ПериодРегистрации.ДатаНачала);
       КонецЦикла;
   КонецЕсли;
   Возврат ЗначениеВСтроку(СписокДат);
КонецФункции

- функция в подключаемой базе. (хочется, конечно, избавиться от внесения правок в подключаемую базу, но это потом).

однако, если я не знаю порядковый номер записи в выборке, то и получаемый в результате выполнения функции список бесполезен.



Как еще можно выкрутиться без дополнительных компонент (например.ю формекс роняет оле-соединения)? Мне нужен период регистрации оле-записи или любая дата из этого периода.

П.С. Кстати, функция ЖР.ПолучитьАтрибут есть, но не документирована )
Основная теорема систематики: Новые системы плодят новые проблемы.