7.7 Создание цены номенклатуры

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем yourname, 15 июл 2007.

  1. TopicStarter Overlay
    yourname
    Offline

    yourname Опытный в 1С

    Регистрация:
    15 июл 2007
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    ДОброе время суток!
    Пытаюсь написать обработку, которая для существующего элемента номенклатуры "тест" добавляет закупочную цену (предположим что ее нет)
    Написал код:
    "Процедура Сформировать()
    СпрНом=СоздатьОбъект("Справочник.Номенклатура");
    СпрЦены=СоздатьОбъект("Справочник.Цены");
    СпрТипЦен=СоздатьОбъект("Справочник.ТипыЦен");

    //Найдем закупочный тип цен
    Если СпрТипЦен.НайтиПоНаименованию("Закупочная")=1 тогда
    Закупочная=СпрТипЦен.ТекущийЭлемент();
    иначе
    Сообщить("Все пропало...");
    возврат;
    конецЕсли;


    Если СпрНом.НайтиПоНаименованию("тест")=1 тогда
    Тест=СпрНом.ТекущийЭлемент();
    конецЕсли;
    СпрЦены.ИспользоватьВладельца(Тест);
    СпрЦены.Новый();
    СпрЦены.ТипЦен=Закупочная;
    СпрЦены.Цена.Установить(РабочаяДата(),50); //ВОТ ТУТ ВЫДАЕТ ОШИБКУ
    СпрЦены.Валюта=Константа.ВалютаБухУчета;
    СпрЦены.Единица.Установить(РабочаяДата(),Тест.БазоваяЕдиница);
    СпрЦены.Записать();


    КонецПроцедуры"

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

    В принципе нашел ответ: перед изменением периодических реквизитов, элемент нужно "записать()". Но почему???
  2. TopicStarter Overlay
    yourname
    Offline

    yourname Опытный в 1С

    Регистрация:
    15 июл 2007
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    И еще один вопрос на ту же тему.....
    Предположим, цену я создал, а как изменить значение цены?
    Изменил код:
    "Процедура Сформировать()
    СпрНом=СоздатьОбъект("Справочник.Номенклатура");
    СпрЦены=СоздатьОбъект("Справочник.Цены");
    СпрТипЦен=СоздатьОбъект("Справочник.ТипыЦен");

    //Найдем закупочный тип цен
    Если СпрТипЦен.НайтиПоНаименованию("Закупочная")=1 тогда
    Закупочная=СпрТипЦен.ТекущийЭлемент();
    иначе
    Сообщить("Все пропало...");
    возврат;
    конецЕсли;


    Если СпрНом.НайтиПоНаименованию("тест")=1 тогда
    Тест=СпрНом.ТекущийЭлемент();
    конецЕсли;
    СпрЦены.ИспользоватьВладельца(Тест);

    Если спрЦены.НайтиПоРеквизиту("ТипЦен",Закупочная,0)=1 тогда
    ЗакупочнаяЦена=СпрЦены.ТекущийЭлемент();
    ЗакупочнаяЦена.Цена.Установить(РабочаяДата(),999); // НЕДОПУСТИМАЯ ОПЕРАЦИЯ
    ЗакупочнаяЦена.Записать();
    КонецЕсли;

    КонецПроцедуры"

    Если же обозначить ЗакупочнаяЦена=СпрЦены (вместо СпрЦены.ТекущийЭлемент()), тогда ругаться перестаёт.НО ПОЧЕМУ НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ ТЕКУЩИЙ ЭЛЕМЕНТ()???
  3. ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    Вместо Если СпрТипЦен.НайтиПоНаименованию("Закупочная")=1 тогда
    надо писать Если СпрТипЦен.НайтиПоНаименованию("Закупочная", 0)=1 тогда
  4. landay
    Offline

    landay Опытный в 1С

    Регистрация:
    23 янв 2007
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    Когда создаешь новый элемент подчиненного справочника надо указать владельца это раз....
    СпрЦены.Владелец=.....

    И прежде чем установить значение периодическому реквизиту для нового элемента, его сначала надо записать это два

    СпрЦены.Новый();
    СпрЦены.ТипЦен=Закупочная;
    СпрЦены.Валюта=Константа.ВалютаБухУчета;
    СпрЦены.Записать();

    СпрЦены.Единица.Установить(РабочаяДата(),Тест.БазоваяЕдиница);
    СпрЦены.Цена.Установить(РабочаяДата(),50);
  5. TopicStarter Overlay
    yourname
    Offline

    yourname Опытный в 1С

    Регистрация:
    15 июл 2007
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    А "СпрЦены.ИспользоватьВладельца(Тест);" ??? - нет с Владельцем вроде все в порядке.
    А есть мысли по поводу второго поста? Создать цену получается, проблема как ее изменить (Реквизит Цена).
    Если писать "ЗакупочнаяЦена=СпрЦены" вместо "ЗакупочнаяЦена=СпрЦены.ТекущийЭлемент();" тогда
    если я еще и розничную буду редактировать, отредактируются все цены, которые "=СпрЦены" при выборке.




    А причем тут режим глобального поиска?

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