Автоматизация создания документа "Установка цен номенклатуры&quot

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

  1. Гость

    Необходимо автоматически создавать документы "Ценообразование" -> "Установка цен номенклатуры".... документ создать непроблема (стандарт)

    Код (Text):
    Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    Док.Записать();
    А вот как дальше быть если я пишу следующее:

    Код (Text):
    Док.Дата = ТекущаяДата();
    Док.ТипыЦен.Добавить().ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
    то в поле "Тип Цен" устанавливается только 1 тип цен....
    Вопросы:
    1. как выбрать сразу несколько типов цен?
    2. как обратиться к табличной части поля(когда будет 2 типа цен) и заолнить цены выбранной номенклатуры????
     
  2. Гость

    Ладно... с первым пунктом я мало-мальски разобрался и сделал....
    По второму, увидел в конфиге, чтоидут записи в регистр Сведений ЦеныНоменклатуры.... как туда можно загнать эти самые записи.. через Движение или как??? Опять-таки ссылку на ТипЦен как в регистре прописать правильно?
     
  3. WildAnther

    WildAnther Гость

    через движение. у регистра ставиш регистратором документ с которым ты оперируеш и потом в документе в конструкторе движений настраиваеш.
    ссылку. просто создай ресурс с типом ссылка наверно.
     
  4. Гость

    Вот что получилось... однако при проведении документа данные из регистра не попадают в табл часть док-та, а попросту исчезают из регистра... как их связать правильно???
    Код (Text):
        Док.Дата = ТекущаяДата();
    Док.ТипыЦен.Добавить().ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
    Док.Записать(РежимЗаписиДокумента.Запись);

    НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
    НаборЗаписей.Прочитать();

    НоваяЗапись = НаборЗаписей.Добавить();      
    НоваяЗапись.Период = Док.Дата;
    НоваяЗапись.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
    НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Nokia 7600");
    НоваяЗапись.Регистратор = Док.Ссылка;
    НоваяЗапись.Цена = 4000;
    НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию("руб.");
    НоваяЗапись.ПроцентСкидкиНаценки = 40;
    НоваяЗапись.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");
    НоваяЗапись.СпособРасчетаЦены = Перечисления.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип;
    НаборЗаписей.Записать();
    Тоже самое сделал через Свойство Движение.... Результат Аналогичный =( Вот пример кода:
    Код (Text):
        Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    Док.Дата = ТекущаяДата();
    Док.ТипыЦен.Добавить().ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");

    Движение = Док.Движения.ЦеныНоменклатуры.Добавить();
    Движение.Период = Док.Дата;
    Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
    Движение.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Nokia 7600");
    Движение.Цена = 400;
    Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("руб.");
    Движение.ПроцентСкидкиНаценки = 40;
    Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");
    Движение.СпособРасчетаЦены = Перечисления.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип;
    //Движение.Регистратор = Док.Ссылка;

    Док.Записать(РежимЗаписиДокумента.Проведение);
     
  5. WildAnther

    WildAnther Гость

    Подожди подожди дак тебе надо ИЗ регистра в ДОКУМЕНТ?
     
  6. Гость

    Вобще смысл в том чтобы перенести цены номенклатуры из БД и создать програмно документ "Цстановка цен".... а откуда будет регистр создаваться мне вобщем без разницы...
    Дык в чем ошибка моя????
     
  7. tanat

    tanat Well-Known Member

    Регистрация:
    2 мар 2007
    Сообщения:
    265
    Симпатии:
    0
    В отсуствствии знаний.
    Регистр должен быть уже создан - это какбы некое хранилище данных, в которое и будете складывать свои значения цен.
    НайтиПоНаименованию - это что, для кажэдой номенклатуры так будет? Не проще использовать табличную часть документа?
     
  8. Гость

    Как создан регистр??? ему надо обязательно указать регистратор! А если док-нт есче не создана что тогда указывать в качестве онного???
    Так всетаки как правильн заполнить данными этот документ... почему регистры пропадают, кода я его провожу и не отображаются в документе???
     
  9. tanat

    tanat Well-Known Member

    Регистрация:
    2 мар 2007
    Сообщения:
    265
    Симпатии:
    0
    Проавдает не регистр, а движения по регистру по данному регистратору. И вы для себя уясните, что объект в системе уже есть. ( в конфигураторе есть документ "установкаЦенНоменклатуры"), а вот движения сами идут уже по конкретному документу, созданному в пользовательском режиме. Вы путаете базоыве понятия. Настоятельо рекомендую почитать литературу( гдето на форуме точно были ссылки, зайти на миста.ру - там почитать).

    Я так понял, что вам поставлена задача - автоматизировать установку цен номенклатуры? в самом документе все процедуры, переменные и функции уже есть.Тебе нужно лишь програмно заполнить документ и правильно задействовать существующие процедуры-функции.
     
  10. Гость

    Вроде шо-то получилось.... обатился к табличной части документа и заполнил цены....
     
  11. WildAnther

    WildAnther Гость

    Блин дак у тебя и регистр не создан.
    Сначала добавляеш новый регистр Выбираеш ему измерения ресурсы вообщем те данные которые ты хочеш хранить тут
    Потом в созданом регистре ставиш что он подчененый регистратору, и выставляеш регистратора(твой документ) потом в документе
    Делаеш "движение" конструктором выбираеш всё что надо и смотриш там код может чего сам пишеш. и всё как бы.. Типовым способом так.
    А при проведение он сам создает запись в регистре. а как бы без регистра то нифига не сделаеш...
    Если конечно я тебя правильно понял.=)
     
  12. tanat

    tanat Well-Known Member

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

    примерно так.

    А движения будут формироваться при записи документа. и ничего тебе уже прописывать не надо. Конфа, я так понял - УТ?
     
  13. Гость

    Благодарю за подсказки... вроде получилось что-то.... сделал обращение к табличной части док-та (в ней и был косяк)... он сам регистры при проведении создает как ему надо.
     
  14. WildAnther

    WildAnther Гость

    Молодцом!
     
Загрузка...

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