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

Тема в разделе "1C и всё что с ней связано", создана пользователем lira89, 11 июл 2010.

  1. lira89

    lira89 Well-Known Member

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Надо смотреть эту процедуру
     
  3. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Спасибо, но почему-то после долгих проверок все начало работать. возможно это был какой-то сбой в самой программе, точно не знаю, но по крайней мере я ничего не меняла и все заработало))))).
     
  4. evgenyatam

    evgenyatam Well-Known Member

    Регистрация:
    7 сен 2007
    Сообщения:
    175
    Симпатии:
    0
    а вот на такое я натыкался несколько раз.
    изредка программа ведет себя так как будто ее не записали. причем сколько не пиши - нуль эффект. пока отладчиком не протрассируеш - ничего не получается.

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

Поделиться этой страницей