Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Ошибка при проведении накладной

v7: Ошибка при проведении накладной
Я
   Aldnepr
 
17.01.21 - 15:07
Необходимо записать в ТЗ реквизит Категория из Спр.КатегорииТоваров, который подчинен спр.Номенклатура. При проведении вручную все прописывается правильно. А если проводить через Операции-ПроведениеДокументов ругается
{Документ.РасходнаяНакладная.Модуль Документа(633)}: Значение не представляет агрегатный объект (Категория)
тбБренды.Категория =Эл.Категория;
Реквизит "Категория" обычный (не периодический), но у него стоят галки на вкладке Дополнительные "Сортировка" и "Отбор По Реквизиту".

Процедура ДвижениеОборотыБрендыМенеджеры()  
    Спр=СоздатьОбъект("Справочник.КатегорииТоваров");
    тбБренды = СоздатьОбъект("ТаблицаЗначений");
    тбБренды.НоваяКолонка("Категория","Справочник.Категории");
    тбБренды.НоваяКолонка("Бренд","Справочник.ТорговыеМарки");
    тбБренды.НоваяКолонка("СуммаБезНДС","Число",15,2);
    тбБренды.НоваяКолонка("НДС","Число",15,2);
    тбБренды.НоваяКолонка("СуммаСНДС","Число",15,2);
    
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        Если Товар.Уровень() > 1 Тогда
            тбБренды.НоваяСтрока();
            тбБренды.Бренд = Товар.ТорговаяМарка;    //.Родитель;
            Спр.ИспользоватьВладельца(Товар);
            Спр.ВыбратьЭлементы();
            Пока Спр.ПолучитьЭлемент()=1 цикл
            Если Спр.ЭтоГруппа()=1 тогда
                продолжить;
            КонецЕсли;    
            Эл=Спр.ТекущийЭлемент();
            КонецЦикла;
            тбБренды.Категория =Эл.Категория;
   acht
 
1 - 17.01.21 - 15:12
(0) Что будет в переменной Эл, если Спр.ПолучитьЭлемент() сразу вернет ноль?
   Lazy Stranger
 
2 - 17.01.21 - 15:17
+ в чем смысл перебирать все элементы и записывать в таблицу последний из них?
   Aldnepr
 
3 - 17.01.21 - 15:21
(2) Там всего один элемент. Если ноль вернет ноль, вопрос же в другом. Чего программно спотыкается??
   Cthulhu
 
4 - 17.01.21 - 15:55
(3):
там может быть не один элемент.
вопрос именно в этом.
   Lazy Stranger
 
5 - 17.01.21 - 17:34
Если ПустоеЗначение(Эл)=0 тогда
тбБренды.Категория =Эл.Категория;
иначе
Сообщить("не найдена категория для товара "+Товар);
КонецЕсли;
   acht
 
6 - 17.01.21 - 17:42
(3) >  вопрос же в другом. Чего программно спотыкается
Ну, что написал, то в точности и получил. Или, думаешь, оно тебя спецально ненавидит?
   victuan1
 
7 - 18.01.21 - 04:38
(0)
 Эл=Спр.ТекущийЭлемент(); 
            КонецЦикла; 

Если нашел элемент, то разве не нужно ПРЕРВАТЬ выполнение цикла? Иначе он переберет все элементы в выборке до конца и в итоге остановится на элементе "после последнего", т.е на "не выбранном".
   Aldnepr
 
8 - 18.01.21 - 10:30
(5) Спасибо друг, именно в этом просер был. Я заполнил все категории программно, но бух втихаря внесла новую номенклатуру не присвоив категорию. Там еще надо допилить условие при записи нового.
(7) Беру последнюю позицию из списка на случай, если категорию изменят путём внесения новой позиции в этот подчиненный справочник.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.