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