Процедура ПоКнопкеОбновитьЦены()

Новая тема
Т+С 9,2, аналогичная проблема и в Комплексной 4,5
частенько наблюдается путаница с типом валют
закупочная цена по умолчанию в евро
но не все товары идут закупочной в евро, некоторые в рублях
но продажный один и тот же тип в рублях
забиваю накладную в рублях (ВалютаДок = "руб") , после на обновления цен в справочнике, иногда правильно обновляет т.е. задает тип цены = Закупочная, валюта = руб, цена = цена
а иногда переводит в евро, из за чего в последствие арифметическая ошибка из за округление копеек и центов
причину данного сбоя понять не могу, и от чего он зависит
код в следующей мисаге , что бы не мешалась
"вырезка из Т+С 9,2
Процедура ПоКнопкеОбновитьЦены()

ИзменяемЦену = 1;
Если Форма.ИспользоватьЗакладки() = 1 Тогда
Если Форма.Закладки.ТекущаяСтрока() = 2 Тогда          
ИзменяемЦену = 0; // изменяем розничную цену
КонецЕсли;
ИначеЕсли ЕстьРознЦена = 1 Тогда
ИзменяемЦену = 0; // изменяем розничную цену
КонецЕсли;

// Проверка настроек обновления
// Если хотим обновить учетную цену, то она должна быть выбрана
Если (ИзменяемЦену = 1) и (ВариантУстановкиЦен = 1) Тогда
Если ПустоеЗначение(БазовыйТипЦен) = 1 Тогда
Предупреждение("Не выбран базовый тип цен",60);
Возврат;
КонецЕсли;
КонецЕсли;

// Если хотим присваивать свойство, то оно должно быть выбрано и не быть основным свойством товара
Если ПустоеЗначение(УстановитьСвойствоТоваров) = 0  Тогда
Если ПустоеЗначение(СвойствоТоваров) = 1  Тогда
Предупреждение("Не выбрано свойство товаров",60);
Возврат;
Иначе
   Если СвойствоТоваров.Владелец = Константа.ВидСвойстваНоменклатуры Тогда
Предупреждение("Основное свойство выбирается в карточке номенклатурной позиции
              |здесь его присваивать нельзя.",60);
Возврат;
   КонецЕсли;
КонецЕсли;
   
КонецЕсли;

// Обновляем цены
Попытка
НачатьТранзакцию();
Состояние("Обновление цен в справочнике");

ТаблЗнач.ВыбратьСтроки();
Пока ТаблЗнач.ПолучитьСтроку() = 1 Цикл

// Обрабатываем только помеченные (служебные строки д.б. НЕ помеченными)
Если ТаблЗнач.Пометка = МеткаЕсть Тогда

ТекСтрока = ТаблЗнач.НомерСтроки;
Тов = ТаблЗнач.Номенклатура;

// не оказалось товара
Если Тов.Выбран() = 0 Тогда
Продолжить;
КонецЕсли;

Сообщить("Выполняется обработка позиции "+СокрЛП(Тов),".");

Если ИзменяемЦену = 1 Тогда
Если ВариантУстановкиЦен = 1 Тогда

// Устанавливаем базовый тип цен              
УстановитьБазовуюЦену(Тов, БазовыйТипЦен, ТаблЗнач.Цена, ТаблЗнач.Единица, ВалДок, "Оптовая", ТаблЗнач.ПошлинаСборы);

Иначе

// Устанавливаем все цены
СчетчикЦикла = 0;
Для СчетчикЦикла = 1 По СписокТиповЦен.РазмерСписка() Цикл

ТекТипЦен   = СписокТиповЦен.ПолучитьЗначение(СчетчикЦикла);
ТекЦена = ТаблЗнач.ПолучитьЗначение(ТекСтрока, "ЦенаСпр" + СчетчикЦикла);
РассчитатьЦену(Тов, ТекТипЦен, ТекЦена);

КонецЦикла;
КонецЕсли; // ВариантУстановкиЦен = 1
Иначе

// устанавливаем розничную цену (не нацениваем)
УстановитьБазовуюЦену(Тов, РозничныйТипЦен, ТаблЗнач.РозничнаяЦена, ТаблЗнач.Единица, глРубли, "Розничная");
КонецЕсли;

КонецЕсли; // ТаблЗнач.Пометка = МеткаЕсть
КонецЦикла;

ЗафиксироватьТранзакцию();

// Обновим цены в таблице
ТаблЗнач.ВыбратьСтроки();
Пока ТаблЗнач.ПолучитьСтроку() = 1 Цикл
Если ТаблЗнач.Пометка = МеткаЕсть Тогда
Если ТаблЗнач.Номенклатура.Выбран() = 0 Тогда
Продолжить; // не оказалось товара
КонецЕсли;
ЗаполнитьЦеныВСтрокеТаблицы();
КонецЕсли;
КонецЦикла;

Сообщить("Обработка закончена",".");

Исключение                          
ОтменитьТранзакцию();
Сообщить(ОписаниеОшибки(), "!");
КонецПопытки;

КонецПроцедуры // ПоКнопкеОбновитьЦены()"
Читают тему
(гостей: 1)

Быстрый переход