Имя: Пароль:
1C
1С v8
Доля стоимости в разукомплектации
0 Лирик
 
06.03.24
10:59
Коллеги, тема конечно пятничная, но будем считать, что среда это маленькая пятница.
Итак:
В документе "Комплектация номенклатуры" (УТ 10.3) для вида операции "Разукомплектация" есть колонка "ДоляСтоимости". Пропорционально ей стоимость комплекта распределяется на комплектующие. Заполняют ее по разному, кто как, у меня свой алгоритм (он не важен). Столкнулся с проблемой если сумма долей стоимости больше 2000 то строка с долей стоимости равной 1 при выгрузке в бухгалтерию пропадает из проводок (ошибка зарегистрирована, принята к исправлению, но висит с 2016 года). Это связано с использованием типизированного реквизита в алгоритме распределения стоимости в бухгалтерии. Тип - Число(15, 3) доля стоимости меньше 0.0005, при округлении получаем 0.
Задача:
Повысить долю стоимости таких строк до минимально возможной.
Какие решения предложите. Свой вариант выложу вечером в пятницу.
ПС. Важно: Тип реквизита "ДоляСтоимости" - целое число.
1 RomanYS
 
06.03.24
11:16
(0) если не пытаться оптимизировать, то min = ОкруглитьВверхДоЦелого(sum/2000).
Заменил всё, что меньше min, на min, пересчитал сумму, повторил итерацию.
Если сильно озадачиться от итераций можно попробовать избавиться. Но это уже тема не для мисты, секцию "математика и алгоритмы" вроде прикрыли(
2 Лирик
 
06.03.24
11:24
(1) Как вариант, спасибо.
3 Гена
 
06.03.24
11:37
На мой взгляд, это не ошибка, а грамотное отсечение перфекционного онанизма по критерию существенности в 0.05%

Аналогия. В Госдуме депутатские кресла получают только те партии, что набрали свыше 5% голосов. Голоса тех, кто собрал меньше, пропорционально забирают себе победители.

Так и здесь. Ну к чему, скажите на милость, остоимовать кучу мелочёвки по каждому чиху? Учёт рухнет, если какую-то нитку с распоротого пиджака примут к учёту не по 3 рубля 62 копейки, а по нулю, а эти деньги уйдут на габардин, который примут к учёту не за 10 000 рублей, а за 10 003.62 ?

Тем более, как Вы сами скромно упомянули, пропорцию долей Вы определяете самостоятельно, т.е. неточно, т.е. от балды, т.е. по формуле, придуманной главным инженером.
4 Одинист
 
06.03.24
11:46
(3) +1 стандартный вопрос: мы покупаем в тоннах, амнадо списывать в граммах. Просишь продемонстрировать как они арматурину до грамма отрезают: ну это у нас технологи рассчитали…
5 RomanYS
 
06.03.24
12:45
(3) он же проблему описал. Оно не оприходуется по нулевой стоимости, "пропадает из проводок". В итоге или потеря ТМЦ совсем или расхождение БУ и регистров. Ну и нулевая стоимость тоже может создавать проблемы в учете и вопли бухов
6 Valdis2007
 
06.03.24
12:57
(0) решение в лоб))

Для каждого строка из Комплектующие Цикл

Если ДоляСтоимостиНижеМин(строка) Тогда

  ПовыситьДолюСтоимостиДоМин(строка);

  КонецЕсли

КонецЦикла
7 Лирик
 
06.03.24
14:04
(3) Позвольте не согласиться.
Во первых, 1/2000 - это не так мало, зависит от исходной суммы комплекта.
Во вторых, Роман прав, была бы нулевая себестоимость - половина беды, пропадает количество, там явная ошибка. Причем зарегистрирована ошибка "Неправильно рассчитывается себестоимость", а в текущем релизе вообще пропадают дебетовые проводки и движения по этой строке.
Ну и в третьих, тема не про методологию учета ).
8 Лирик
 
06.03.24
14:10
(6) Это не в лоб, это мимо. Все дело в пропорциях. Перефразируя Михаила Афанасиевича - сегодня это минимальная доля, а завтра, глядишь, не минимальная. А бывает и наоборот. И еще как бывает.
9 ILM
 
06.03.24
14:15
результат = ?(результат = 0, 0.001, результат);
10 Гена
 
06.03.24
14:30
(9) Тогда не сойдётся суммарный результат с изначальной суммой к распределению.
11 Гена
 
06.03.24
14:33
(7) Уговорили )
Тогда проще всего похерить типизированный реквизит в алгоритме распределения стоимости в бухгалтерии, который 15,3 и задать свой, хоть 20,8
12 RomanYS
 
06.03.24
14:55
(11) Это правильный вариант, непонятно зачем в промежточных расчетах вообще типизация. Ну и непонятно почему ТС не хочет исправить ошибку.
Насколько я понял, текущая ветка - это всё-таки пятничная задача по математике, а не реальная учетная проблема.
13 Лирик
 
06.03.24
15:11
(12) Этот правильный вариант требует изменений в конфигурации "Бухгалтерия 3.0". Насколько я понял, там вообще использовали кусок алгоритма распределения, который используется в разных местах, не очень хочется туда лезть. Судя по коду эта функция может отдавать таблицу для заполнения табличных частей, ибо колонка принимающая рассчитанные доли называется "Количество" и типизирована как раз под него. Мне проще обойти это на этапе учета в УТ. А так проблема вполне реальна.
14 Лирик
 
06.03.24
15:12
(9) ПС. Важно: Тип реквизита "ДоляСтоимости" - целое число.
15 Гена
 
06.03.24
15:16
(13) Дубль два: никто и не предлагает рубить по типовой функции. Вам предлагают через расширение сделать в данном доке СВОЮ функцию распределения только для него.
16 MaximSh
 
06.03.24
15:25
(14) увеличиваем разрядность ДоляСтоимости после "," ?
17 Гена
 
06.03.24
15:51
(16) Какая разница в разрядности, если потом придёт логарифмическая линейка с тремя знаками расчёта.
1/2001 = 0 = 0,999 / 2000.999

Может автор задумал изврат с умножением/делением на 1000?
1000 / 2001 = 0.499
СуммаКРаспределению * 0.499 / 1000

Но это уже из серии "когда коту делать нечего" )
18 MaximSh
 
06.03.24
16:05
(17)
1/1000=0,001
1/0,1=10
можно уже до 10000 долей указывать
19 RomanYS
 
06.03.24
16:24
(18) что такое 1/0.1? Доля  1, а сумма 0.1? Такое возможно только при отрицательных долях

И ограничение на целые - это внешнее ограничение со стороны ТС. Проблема не в нём, а в промежуточных расчетах, где считается
ДоляОтЕдиницы_Коэф = Доля/СуммаДолей
и зачем-то этот промежуточный коэффициент типизирован. Уточнение долей здесь ничего не даст
20 NGM995
 
03.04.24
11:17
Добрый день, коллеги! Объясните ,пожалуйста, простым языком как считать долю стоимости при разукомплектации? может есть формула какая то? не судите строго я только учусь)) спасибо)
21 Волшебник
 
03.04.24
11:36
(20) На свои вопросы создавайте новые ветки, а не поднимайте старые.
Независимо от того, куда вы едете — это в гору и против ветра!