Траблы с ОЛЕ
03.02.2006
09:31
#1
"V7=СоздатьОбъект("V77.Application");
Команда="/d"+ПутьКДанным;
Открыта=V7.Initialize(V7.RMTrade,Команда,"NO_SPLASH_SHOW");
Импорт=V7.CreateObject("Документ.ДокСТабличнойЧастью");
Импорт.ВыбратьДокументы();
Док=СоздатьОбъект("Документ.Итоги")
Пока Импорт.ПолучитьДокумент()=1 Цикл
//Реквизиты шапки здесь все ОК - реквизиты из ОЛЕ достаются и присваиваются
Док.ДатаДок=Импорт.ТекущийДокумент().ДатаДок;
Док.Начало=Импорт ТекущийДокумент().Начало;
//Теперь табличная часть
Док.НоваяСтрока();
СуммаДолга=0;
Для Счетчик=1 по Импорт.ТекущийДокумент().КоличествоСтрок() Цикл
//Количество строк считает, зараза!
Импорт.ТекущийДокумент().ПолучитьСтрокуПоНомеру(Счетчик);
//И строку получает т.е. Импорт.ТекущийДокумент().ПолучитьСтрокуПоНомеру(Счетчик)=1
//А вот реквизит табличной части - фига с дрыгой
СуммаДолга=СуммаДолга+Импорт.ТекущийДокумент().Сумма; //Равно нулю и так 40 раз
КонецЦикла;
Как добыть реквизит табличной части или это глюк навеки?"
Команда="/d"+ПутьКДанным;
Открыта=V7.Initialize(V7.RMTrade,Команда,"NO_SPLASH_SHOW");
Импорт=V7.CreateObject("Документ.ДокСТабличнойЧастью");
Импорт.ВыбратьДокументы();
Док=СоздатьОбъект("Документ.Итоги")
Пока Импорт.ПолучитьДокумент()=1 Цикл
//Реквизиты шапки здесь все ОК - реквизиты из ОЛЕ достаются и присваиваются
Док.ДатаДок=Импорт.ТекущийДокумент().ДатаДок;
Док.Начало=Импорт ТекущийДокумент().Начало;
//Теперь табличная часть
Док.НоваяСтрока();
СуммаДолга=0;
Для Счетчик=1 по Импорт.ТекущийДокумент().КоличествоСтрок() Цикл
//Количество строк считает, зараза!
Импорт.ТекущийДокумент().ПолучитьСтрокуПоНомеру(Счетчик);
//И строку получает т.е. Импорт.ТекущийДокумент().ПолучитьСтрокуПоНомеру(Счетчик)=1
//А вот реквизит табличной части - фига с дрыгой
СуммаДолга=СуммаДолга+Импорт.ТекущийДокумент().Сумма; //Равно нулю и так 40 раз
КонецЦикла;
Как добыть реквизит табличной части или это глюк навеки?"
03.02.2006
11:38
#2
Чтобы получить строку по номеру, сначала надо использовать метод Импорт.ВыбратьСтроки().
03.02.2006
11:55
#3
Ну да. Это отвлеченный пример, просто удалял фрагменты кода - обработка здоровенная ну видать и выбрать строки прихватил. Не работает и с ВыбратьСтроки()
03.02.2006
15:37
#4
"В свое время скачивала с proclub универсальную обработку по переносу любых объектов из одной конфигурации в точно такую же и переделывала под себя. Если Вас Импорт - OLE- объект - документ , имеющий табличную часть ( посмотрите в отладке , чему равно Импорт.Вид(), то м.б. У Вас ТекущийДокумент() - Лишнее. У меня работало просто
Импорт.ВыбратьСтроки()
Пока Импорт.ПолучитьСтроку() = 1 Цикл
Док.НоваяСтрока()
Для А=1 по Метаданные.Док(Вид).РеквизитТабличнойЧасти() Цикл
Идентификатор = Метаданные.Док(Вид).РеквизитТабличнойЧасти(А).Идентификатор;
Тип = Метаданные.Док(Вид).РеквизитТабличнойЧасти(А).Тип;
Реквизит = Импорт.ПолучитьАтрибут(Идентификатор);
.....
Значение = Реквизит
..........
Если ПустоеЗначение(Значение) = 0 Тогда
Док.УстановитьАтрибут(Идентификатор,Значение);
КонецЕсли;
и т. д
Но здесь пропущено часть кода ибо, если тип реквизита табличной части - документ или справочник или перечисление или неопределенный то Значение не равно Реквизит.
"
Импорт.ВыбратьСтроки()
Пока Импорт.ПолучитьСтроку() = 1 Цикл
Док.НоваяСтрока()
Для А=1 по Метаданные.Док(Вид).РеквизитТабличнойЧасти() Цикл
Идентификатор = Метаданные.Док(Вид).РеквизитТабличнойЧасти(А).Идентификатор;
Тип = Метаданные.Док(Вид).РеквизитТабличнойЧасти(А).Тип;
Реквизит = Импорт.ПолучитьАтрибут(Идентификатор);
.....
Значение = Реквизит
..........
Если ПустоеЗначение(Значение) = 0 Тогда
Док.УстановитьАтрибут(Идентификатор,Значение);
КонецЕсли;
и т. д
Но здесь пропущено часть кода ибо, если тип реквизита табличной части - документ или справочник или перечисление или неопределенный то Значение не равно Реквизит.
"
Читают тему
(гостей: 1)