7.7 Прописать реквизит справочника

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Виталий, 2 фев 2009.

  1. TopicStarter Overlay
    Виталий
    Offline

    Виталий

    Регистрация:
    11 мар 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    [warn="Внимание!!!"]Пользуемся тегами!!!
    Давайте уважать форумчан.
    PS Буду наказывать[/warn]Прошу помочь. Не могу понять, почему выдает ошибки:
    при присвоении валюты: "Не выбран элемент!" (не периодический эл-т)
    или установить цену - "Недопустимая операция!" (периодический эл-т)

    в следующем контексте:


    Код:
    Пока Товар.ПолучитьЭлемент() = 1  Цикл
    ТекТовар = Товар.ТекущийЭлемент();;
    Цены.ИспользоватьВладельца(ТекТовар);
    //	  Цены.ИспользоватьДату(РабочаяДата());  
    Сообщить("Выбран "+ТекТовар); 
    Если Цены.ВыбратьЭлементы() = 0 Тогда
    Сообщить("Цены для " + ТекТовар.Наименование + " не выбраны или отсутствуют!");
    Продолжить;
    КонецЕсли;	
    Пока Цены.ПолучитьЭлемент() = 1  Цикл
    ТекЦена = Цены.ТекущийЭлемент();
    Если ТекЦена.ТипЦен = ВыбЦена Тогда  
    Если ПустоеЗначение(ТекЦена.Валюта) = 1 Тогда 
    ТекЦена.Цена.Установить(РабочаяДата(), ТекЦена.Цена.Получить()); 
    // ошибка "Недопустимая операция"
    ТекЦена.УстановитьАтрибут("Валюта", ВыбЦена.Валюта);  
    ТекЦена.Записать();    // ошибка "Не выбран элемет!"
    КонецЕсли;	
    КонецЕсли;     
    КонецЦикла;  	  
    КонецЦикла;
    
  2. unknown181538
    Offline

    unknown181538

    Регистрация:
    24 фев 2008
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    установить на рабочую дату, полученное на рабоченную дату?
    мож попробовать :
    Код:
    ТекЦена=СоздатьОбъект("Справочник.Цены");
    ТекЦена.НайтиЭлемент(Цены.ТекущийЭлемент());
    ТекЦена.Цена.Установить(РабочаяДата(), ТекЦена.Цена.Получить());
    
  3. alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    надо убрать текущийЭлемент();
    Код:
    Цены.Цена.Установить(РабочаяДата(), Цены.Цена.Получить(<на какую дату?>)); 
    
    
    
    Если Ты Используеш метод ИспользоватьДату() ,то метод Получить() тут не нужно ,сразу обращаешся к периодическому реквизиту как к обычному.
  4. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А какой смысл в этой строке??

    Если будете работать с одной датой, то нужно использовать ИспользоватьДату(), а методы Получить и Установить не использовать. Если планируется изменять один реквизит но по шкале времени, то рекомендую обратить внимание на тип метаданных Периодический.
  5. TopicStarter Overlay
    Виталий
    Offline

    Виталий

    Регистрация:
    11 мар 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Спасибо!
    Убрал "ТекЦена = Цены.Текущийэлемент()" и стал использовать сам объект "Цены".
    Все заработало.

    Видимо это глюк 1С, передавать данные по значению.
    Поэтому "ТекЦена" не могла быть записана.
    Это не справочник, а все лишь ссылка на него.
    Огромное спасибо!

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