Процедура ПоКнопкеОбновитьЦены()
26.01.2010
00:55
#1
Т+С 9,2, аналогичная проблема и в Комплексной 4,5
частенько наблюдается путаница с типом валют
закупочная цена по умолчанию в евро
но не все товары идут закупочной в евро, некоторые в рублях
но продажный один и тот же тип в рублях
забиваю накладную в рублях (ВалютаДок = "руб") , после на обновления цен в справочнике, иногда правильно обновляет т.е. задает тип цены = Закупочная, валюта = руб, цена = цена
а иногда переводит в евро, из за чего в последствие арифметическая ошибка из за округление копеек и центов
причину данного сбоя понять не могу, и от чего он зависит
код в следующей мисаге , что бы не мешалась
частенько наблюдается путаница с типом валют
закупочная цена по умолчанию в евро
но не все товары идут закупочной в евро, некоторые в рублях
но продажный один и тот же тип в рублях
забиваю накладную в рублях (ВалютаДок = "руб") , после на обновления цен в справочнике, иногда правильно обновляет т.е. задает тип цены = Закупочная, валюта = руб, цена = цена
а иногда переводит в евро, из за чего в последствие арифметическая ошибка из за округление копеек и центов
причину данного сбоя понять не могу, и от чего он зависит
код в следующей мисаге , что бы не мешалась
26.01.2010
00:55
#2
"вырезка из Т+С 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;
Если Форма.ИспользоватьЗакладки() = 1 Тогда
Если Форма.Закладки.ТекущаяСтрока() = 2 Тогда
ИзменяемЦену = 0; // изменяем розничную цену
КонецЕсли;
ИначеЕсли ЕстьРознЦена = 1 Тогда
ИзменяемЦену = 0; // изменяем розничную цену
КонецЕсли;
// Проверка настроек обновления
// Если хотим обновить учетную цену, то она должна быть выбрана
Если (ИзменяемЦену = 1) и (ВариантУстановкиЦен = 1) Тогда
Если ПустоеЗначение(БазовыйТипЦен) = 1 Тогда
Предупреждение("Не выбран базовый тип цен",60);
Возврат;
КонецЕсли;
КонецЕсли;
// Если хотим присваивать свойство, то оно должно быть выбрано и не быть основным свойством товара
Если ПустоеЗначение(УстановитьСвойствоТоваров) = 0 Тогда
Если ПустоеЗначение(СвойствоТоваров) = 1 Тогда
Предупреждение("Не выбрано свойство товаров",60);
Возврат;
Иначе
Если СвойствоТоваров.Владелец = Константа.ВидСвойстваНоменклатуры Тогда
Предупреждение("Основное свойство выбирается в карточке номенклатурной позиции
|здесь его присваивать нельзя.",60);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Обновляем цены
Попытка
НачатьТранзакцию();
Состояние("Обновление цен в справочнике");
ТаблЗнач.ВыбратьСтроки();
Пока ТаблЗнач.ПолучитьСтроку() = 1 Цикл
// Обрабатываем только помеченные (служебные строки д.б. НЕ помеченными)
Если ТаблЗнач.Пометка = МеткаЕсть Тогда
ТекСтрока = ТаблЗнач.НомерСтроки;
Тов = ТаблЗнач.Номенклатура;
// не оказалось товара
Если Тов.Выбран() = 0 Тогда
Продолжить;
КонецЕсли;
Сообщить("Выполняется обработка позиции "+СокрЛП(Тов),".");
Если ИзменяемЦену = 1 Тогда
Если ВариантУстановкиЦен = 1 Тогда
// Устанавливаем базовый тип цен
УстановитьБазовуюЦену(Тов, БазовыйТипЦен, ТаблЗнач.Цена, ТаблЗнач.Единица, ВалДок, "Оптовая", ТаблЗнач.ПошлинаСборы);
Иначе
// Устанавливаем все цены
СчетчикЦикла = 0;
Для СчетчикЦикла = 1 По СписокТиповЦен.РазмерСписка() Цикл
ТекТипЦен = СписокТиповЦен.ПолучитьЗначение(СчетчикЦикла);
ТекЦена = ТаблЗнач.ПолучитьЗначение(ТекСтрока, "ЦенаСпр" + СчетчикЦикла);
РассчитатьЦену(Тов, ТекТипЦен, ТекЦена);
КонецЦикла;
КонецЕсли; // ВариантУстановкиЦен = 1
Иначе
// устанавливаем розничную цену (не нацениваем)
УстановитьБазовуюЦену(Тов, РозничныйТипЦен, ТаблЗнач.РозничнаяЦена, ТаблЗнач.Единица, глРубли, "Розничная");
КонецЕсли;
КонецЕсли; // ТаблЗнач.Пометка = МеткаЕсть
КонецЦикла;
ЗафиксироватьТранзакцию();
// Обновим цены в таблице
ТаблЗнач.ВыбратьСтроки();
Пока ТаблЗнач.ПолучитьСтроку() = 1 Цикл
Если ТаблЗнач.Пометка = МеткаЕсть Тогда
Если ТаблЗнач.Номенклатура.Выбран() = 0 Тогда
Продолжить; // не оказалось товара
КонецЕсли;
ЗаполнитьЦеныВСтрокеТаблицы();
КонецЕсли;
КонецЦикла;
Сообщить("Обработка закончена",".");
Исключение
ОтменитьТранзакцию();
Сообщить(ОписаниеОшибки(), "!");
КонецПопытки;
КонецПроцедуры // ПоКнопкеОбновитьЦены()"
ЗиУП 2.5.19.3 Как и где можно завести фактическую выработку, для расчета зарплаты за месОбработка V77Exp.ert!!!
Читают тему
(гостей: 1)