Документ (многострочная часть)

  • Автор темы lira89
  • Дата начала
L

lira89

Есть документ (1с v77) с табличной частью. Табличная часть имеет два реквизита: Специальность (тип справочник.Специальности) и сумма. Надо пройти по всем строкам табличной части документа (в процедуре ОбработкаПроведения), получить название специальности и найти эту специальность(найти элемент) в справочнике специальностей для последующих манипуляций, например для задания суммы для каждой специальности . Есть код:
Код:
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
СпрСпец.НайтиЭлемент(Специальность);
Эл = СпрСпец.ТекущийЭлемент();
ПрисвоитьЗначениеСтоимости(Эл,"ОснОч1к","ОснЗаоч1к");
КонецЦикла;
Проблема в том, что в многострочной части документа несколько специальностей, а в Эл попадает только первая и СпрСпец.ТекущийЭлемент() тоже только первое значение, хотя реквизит документа Специальность изменяется в зависимости от строки. Не могу понять: это не срабатывает метод НайтиЭлемент или проблема в другом?
 
L

lira89

Спасибо, но почему-то после долгих проверок все начало работать. возможно это был какой-то сбой в самой программе, точно не знаю, но по крайней мере я ничего не меняла и все заработало))))).
 
E

evgenyatam

но по крайней мере я ничего не меняла и все заработало)))))
а вот на такое я натыкался несколько раз.
изредка программа ведет себя так как будто ее не записали. причем сколько не пиши - нуль эффект. пока отладчиком не протрассируеш - ничего не получается.

и еще: СпрСпец.НайтиЭлемент(Специальность);
Эл = СпрСпец.ТекущийЭлемент();
эти две строки в коде лишние.
ПрисвоитьЗначениеСтоимости(Специальность,"ОснОч1к","ОснЗаоч1к");
а эту надо так как я написал.
поясняю: первая строка находят элемент - объект для записи по ссылке. вторая - по объекту находит ссылку. результат Эл тождественно равен Специальность. тогда уж можно Эл = Специальность(вообще - то зависит от процедуры ПрисвоитьЗначениеСтоимости() ).
но если строк в документе обычно меньше 100 - то неактуально.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!