8.х УТ Как изменить розничную цену товара

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем Sunbear, 5 мар 2010.

  1. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    В 1с 7 был справочник цены и с там хранились цены. А как изменить цену товара, например розничную?
    вот код из 7:
    Код:
    ВыборкаЦен = СоздатьОбъект("Справочник.Цены");  
    ВыборкаЦен.ИспользоватьДату(ДатаДок);
    ВыборкаЦен.ИспользоватьВладельца(ТаблицаДокумента.Номенклатура);
    ВыборкаЦен.ВыбратьЭлементы();  
    ВсеЦены = СоздатьОбъект("Справочник.ТипыЦен");
    ВсеЦены.ВыбратьЭлементы();
    if ТаблицаДокумента.ЦенаМосква>0 Тогда
    ВсеЦены.НайтиПоНаименованию("ЦенаМосква",0); 
    ТипЦены = ВсеЦены.ТекущийЭлемент();  
    Если ВыборкаЦен.НайтиПоРеквизиту("ТипЦен",ТипЦены,0)<=0 Тогда  
    ВыборкаЦен.Новый();
    ВыборкаЦен.Цена=ТаблицаДокумента.ЦенаМосква; 
    ВыборкаЦен.ТипЦен= ТипЦены;
    ВыборкаЦен.Валюта= Валюта;
    ВыборкаЦен.Единица=ТаблицаДокумента.Единица;  
    ВыборкаЦен.ИспользоватьДату(ДатаДок);
    ВыборкаЦен.Записать();	
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">		Иначе	</span>                    
    ВыборкаЦен.Цена= ТаблицаДокумента.ЦенаМосква; 
    ВыборкаЦен.ТипЦен= ТипЦены;
    ВыборкаЦен.Валюта= Валюта;
    ВыборкаЦен.Единица=ТаблицаДокумента.Единица;  
    ВыборкаЦен.ИспользоватьДату(ДатаДок);
    ВыборкаЦен.Записать();	
    КонецЕсли;
    Endif;
    
  2. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    Ну для начала открыть хотя бы описание конфигурации (любой кроме ЗУП) и прочитать про ценообразование.
  3. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    "Управление торговлей", редакция 10.3 (10.3.6.8)
  4. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Поддерживаю. Почитайте.
    В вашем случае: документ "Переоценка товаров в рознице"
  5. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Где-нибудь можно посмотреть действия формы документа по кнопке OK? В 7 версии был модуль документа в котором были действия при проведении документа, а в восьмой я чето такого не могу найти. Подскажите кто знает.
  6. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    МодульДокумента - ОбработкаПроведения...
    там все что при нажатии ОК (т.е. проведении :))
  7. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Вобщем если не выэтываться и не отсылать к прочтению книжек по ценообразованию, что вобще говоря мало помогает в конкретном случае, поскольку у меня во-первых и книжек нет, а во вторых это и так понятно почитай и узнаешь, так вот нашел на форумах и сам допер до следующего кода:

    Код:
    спр= справочники.Номенклатура;  
    ДокУЦН= Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    номХор=0;
    while номХор=0 do 
    ДокУЦН.УстановитьНовыйНомер();
    
    if Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру(ДокУЦН.Номер, мТекущаяДатаДокумента).Ссылка.Пустая() then
    номХор=1;
    endif;
    
    enddo;
    ДокУЦН.Дата = ТекущаяДата();
    
    ДокУЦН2= Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    ДокУЦН2.УстановитьНовыйНомер();
    ДокУЦН2.Дата =ТекущаяДата();
    
    спр= справочники.Номенклатура;  
    тцр=  справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничные");
    запр1 = Новый Запрос;
    запр1.Текст="ВЫБРАТЬ
    | ЦеныНоменклатурыСрезПоследних.Цена
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,
    | Номенклатура.Код = &НомКод
    | И ТипЦен = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних";
    
    запр1.УстановитьПараметр("ТипЦены", тцр.Ссылка);
    
    
    Для Каждого СтрокаДок Из Товары Цикл
    объект = спр.НайтиПоКоду(СтрокаДок["Номенклатура"].код).получитьобъект();
    объект.ценарозн=СтрокаДок["ЦенаРозн"];
    объект.записать();	
    //Запишем товар и цену в документ установки цен
    запр1.УстановитьПараметр("НомКод",объект.Ссылка.Код);
    Результат = запр1.Выполнить().Выбрать();
    Пока Результат.Следующий() = 1 Цикл 
    СтараяЦенаНом=Результат.Цена;
    КонецЦикла;
    
    
    if   СтараяЦенаНом <> СтрокаДок["ЦенаРозн"] then
    НоваяСтрока                     = ДокУЦН.Товары.Добавить();
    НоваяСтрока.Валюта              = ВалютаДокумента;
    НоваяСтрока.Цена                = СтрокаДок["ЦенаРозн"];
    НоваяСтрока.Номенклатура        = объект.ссылка;  
    НоваяСтрока.ЕдиницаИзмерения    = СтрокаДок["Номенклатура"].ЕдиницаДляОтчетов;
    НоваяСтрока.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничные");
    
    НоваяСтрока                     = ДокУЦН2.Товары.Добавить();
    НоваяСтрока.Валюта              = ВалютаДокумента;
    НоваяСтрока.Цена                = СтрокаДок["ЦенаМосква"];
    НоваяСтрока.Номенклатура        = объект.ссылка;        
    НоваяСтрока.ЕдиницаИзмерения =       СтрокаДок["Номенклатура"].ЕдиницаДляОтчетов;
    НоваяСтрока.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("ЦенаМосква");  
    endif;
    Конеццикла;
    ДокУЦН.ТипыЦен.Добавить().ТипЦен= Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничные");
    ДокУЦН2.ТипыЦен.Добавить().ТипЦен= Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("ЦенаМосква");
    
    //Если в документе есть товары записываем и проводим
    
    Если Не( ДокУЦН.Товары.Количество() = 0) Тогда
    ДокУЦН.Записать(РежимЗаписиДокумента.Запись);
    ДокУЦН.Записать(РежимЗаписиДокумента.Проведение);
    Конецесли;  
    Если Не( ДокУЦН2.Товары.Количество() = 0) Тогда
    ДокУЦН2.Записать(РежимЗаписиДокумента.Запись);
    ДокУЦН2.Записать(РежимЗаписиДокумента.Проведение);
    Конецесли;   
    
    Вроде пока меня устраивает, может кому поможет :)

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