Добрый день. Пишку пенеренос по Ole из 7-ки в 8-ку. Столкулся с проблемой расчета себестоимости. Почему я не могу получить номер строки в записи регистра?
Код Следующий:
Пока ДокОЛЕ.ПолучитьСтроку() = 1 Цикл
СебНомен = 0;
д=v7.CreateObject("Документ");
р=v7.CreateObject("Регистр.ПартииНаличие");
Если д.НайтиПоНомеру(ДокОЛЕ.НомерДок ,ДокОЛЕ.ДатаДок,"Реализация")=1 Тогда
Если р.ВыбратьДвиженияДокумента(д)=1 Тогда
Пока р.ПолучитьДвижение()=1 цикл
Если (р.НомерСтроки = ДокОЛЕ.НомерСтроки) Тогда
СебНомен = СебНомен + р.СуммаУпр;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Под отладчиком р.НомерСтроки выдает Неопределено. А при просмотре движений документа у данного регистра номер строки заполнен.
(0) Не знаю, что такое "ПолучитьДвижение".
Но, возможно, после того, как получил выборку движений, нужно спозиционироваться на какой-нибудь строке.
Иначе номер какой строки должен выдаваться?
в ОЛЕ-контексте сильно желательно (и даже обязательно - заведи такое правило, оно полезное) все методы и ключевые слова использовать исключительно в англик-транскрипции.
НомерСтроки() (для регистра)
LineNum()
Синтаксис:
НомерСтроки()
Назначение:
Возвращает номер строки документа, по которой было выбрано движение.
Замечание:
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
************
//А вот эта функция должна отрабатывать при проведения документа :)
ПривязыватьСтроку(<?>);
LinkLine(<?>);
Синтаксис:
ПривязыватьСтроку(<НомерСтроки>)
Назначение:
Записать номер строки документа в движении регистра.
Параметры:
<НомерСтроки> - номер строки Документа.
Замечание:
Метод доступен только в Модуле документа в предопределенной процедуре ОбработкаПроведения.
Метод можно применять только к регистрам, непосредственно доступным в локальном контексте Модуля документа.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший