Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 17:13

Автоматический пересчёт номенклатуры по новому курсу.

Автор xuor, 20 мая 2015, 18:54

0 Пользователей и 1 гость просматривают эту тему.

xuor

Доброго времени суток!

Платформа 1c 7.7, конфигурация: "Торговля и Склад", редакция 9.2

Пытаюсь сделать обработку для ручного выставления курса валюты и автоматического пересчёта номенклатуры по новому курсу.

Проблема заключается в следующем:
1. Не могу получить цену. глПолучитьЦену() всегда выдаёт 0
2. Не знаю как записать новую цену в справочник.

Код:

Процедура ПересчитатьЦены()

НовыйКурс = 50;
   
Спр=СоздатьОбъект("Справочник.Номенклатура"); 
СпрТипЦ =  СоздатьОбъект ("Справочник.ТипыЦен");

Спр.ВыбратьЭлементы();
СпрТипЦ.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл 
Если Спр.ЭтоГруппа()=0 Тогда
ТекЭл = Спр.ТекущийЭлемент();
СпрТипЦ.ВыбратьЭлементы();
Пока СпрТипЦ.ПолучитьЭлемент()=1 Цикл 
ТекТипЦен = СпрТипЦ.ТекущийЭлемент();
Если ТекТипЦен.Наименование = "Закупочные" Тогда
ЗакупочнаяЦенаТовара = глПолучитьЦену(ТекЭл.Наименование, ТекТипЦен, ТекущаяДата(), ТекЭл.БазоваяЕдиница,ТекТипЦен.Валюта,1);
Иначе     
ЦенаТовара = ЗакупочнаяЦенаТовара*НовыйКурс*(ТекТипЦен.Процент/100+1);
//Здесь нужно записать новую цену в справочник

КонецЕсли;
Сообщить (ТекТипЦен.Наименование + ЦенаТовара);
КонецЦикла;
КонецЕсли; 
КонецЦикла;
КонецПроцедуры

Прошу помочь.

xuor

РЕШЕНО:


НовыйКурс = 50;   

Спр=СоздатьОбъект("Справочник.Номенклатура"); 
СпрЦены =  СоздатьОбъект ("Справочник.Цены");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл 
Если Спр.ЭтоГруппа()=0 Тогда
ТекЭл = Спр.ТекущийЭлемент();
СпрЦены.ИспользоватьВладельца(ТекЭл);
СпрЦены.ВыбратьЭлементы();
Пока СпрЦены.ПолучитьЭлемент()=1 Цикл
Если СпрЦены.ТипЦен.Наименование = "Закупочные" Тогда
ЗакупочнаяЦенаТовара = СпрЦены.Цена.Получить(ТекущаяДата());
Иначе
ЦенаТовара = ЗакупочнаяЦенаТовара*НовыйКурс*(СпрЦены.ТипЦен.Процент/100+1);
ЦенаТовара = Окр(ЦенаТовара,2);        
СпрЦены.Цена.Установить(ТекущаяДата(),ЦенаТовара);
СпрЦены.Записать();
    Сообщить ("Новая цена   "+ТекЭл.Наименование+"   "+ЦенаТовара+СпрЦены.Валюта);
КонецЕсли;
КонецЦикла;
КонецЕсли; 
КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск