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

СКД

Автор Shaman_blr, 09 янв 2024, 12:24

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

Shaman_blr

Всем привет. Есть отчет в скд
ВЫБРАТЬ
ЮИ_ОстаткиТМЦСодержащихДМОстатки.Номенклатура,
ЮИ_ОстаткиТМЦСодержащихДМОстатки.Партия,
ЮИ_ОстаткиТМЦСодержащихДМОстатки.ВидДрагметалла,
ЮИ_ОстаткиТМЦСодержащихДМОстатки.КоличествоОстаток
ПОМЕСТИТЬ ОСТАТКИ
ИЗ
РегистрНакопления.ЮИ_ОстаткиТМЦСодержащихДМ.Остатки(&НаМомент, Склад = &Склад) КАК ЮИ_ОстаткиТМЦСодержащихДМОстатки
ГДЕ
ВЫРАЗИТЬ(ЮИ_ОстаткиТМЦСодержащихДМОстатки.Номенклатура КАК Справочник.ЮИ_ИзделияИКомплектующиеСодержащиеДМ).БратьДМПоУстановленномуСодержаниюДляПлат
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОСТАТКИ.Номенклатура,
ОСТАТКИ.Партия,
ОСТАТКИ.КоличествоОстаток
ПОМЕСТИТЬ ВЕСАПЛАТ
ИЗ
ОСТАТКИ КАК ОСТАТКИ
ГДЕ
ОСТАТКИ.ВидДрагметалла = ЗНАЧЕНИЕ(Справочник.ВидыДрагметаллов.ОбщийВес)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЮИ_НормыСодержаниеДМДляИмпортныхПлатСрезПоследних.ВидДрагметалла,
ЮИ_НормыСодержаниеДМДляИмпортныхПлатСрезПоследних.Процент
ПОМЕСТИТЬ НОРМЫСОДЕРЖАНИЯ
ИЗ
РегистрСведений.ЮИ_НормыСодержаниеДМДляИмпортныхПлат.СрезПоследних(&НаДату, ) КАК ЮИ_НормыСодержаниеДМДляИмпортныхПлатСрезПоследних
ГДЕ
НЕ ЮИ_НормыСодержаниеДМДляИмпортныхПлатСрезПоследних.Процент = 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЕСАПЛАТ.Номенклатура,
ВЕСАПЛАТ.Партия,
ВЫРАЗИТЬ(ВЕСАПЛАТ.КоличествоОстаток * ЕСТЬNULL(НОРМЫСОДЕРЖАНИЯ.Процент, 0) / 100 КАК ЧИСЛО(16, 7)) КАК Количество,
НОРМЫСОДЕРЖАНИЯ.ВидДрагметалла
//ПОМЕСТИТЬ НОВЫЕСОДЕРЖАНИЯ
ИЗ
ВЕСАПЛАТ КАК ВЕСАПЛАТ
ЛЕВОЕ СОЕДИНЕНИЕ НОРМЫСОДЕРЖАНИЯ КАК НОРМЫСОДЕРЖАНИЯ
ПО (ИСТИНА)

В ВЕСАПЛАТ.КоличествоОстаток сидит число 5940,5700000
в НОРМЫСОДЕРЖАНИЯ.Процент сидит число 0,0095000

В этой строчке ВЫРАЗИТЬ(ВЕСАПЛАТ.КоличествоОстаток * ЕСТЬNULL(НОРМЫСОДЕРЖАНИЯ.Процент, 0) / 100 КАК ЧИСЛО(16, 7)) КАК Количество, получается число 0,5643541
Но на калькуляторе получается 0,56435415
почему нет округления до 0,5643542 или как это организовать?

LexaK

функция Выразить просто обрезает ркузльтат до заданной разрядности
для округления просто добавьте к результатау 0,0....5 (нужной разрядности)
если помогло нажмите: Спасибо!

Shaman_blr

LexaK, для округления просто добавьте к результатау 0,0....5 (нужной разрядности)
не особо понял:)
Чисто рукой дописать?

LexaK

Shaman_blr, да, примерно так
ВЫРАЗИТЬ(
   0.0000005 + (ВЕСАПЛАТ.КоличествоОстаток * ЕСТЬNULL(НОРМЫСОДЕРЖАНИЯ.Процент, 0) / 100)
       КАК ЧИСЛО(16, 7)) КАК Количество,
получится округление в большую сторону

1.0000005  -->   1.000001
1.00000049  -->  1.00000
если помогло нажмите: Спасибо!

antoneus

Вообще-то должно округлять

LexaK

antoneus, да, проверил, сейчас округляет в большую сторону,
наверно зависит от версий или др.каких настроек (1С, СКЛ, др.)

но раньше, сам сталкивался именно с обрезанием дробной части   :xfbnsdfb:
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск