|
Пересчёт количества при изменении единицы измерения | ☑ | ||
---|---|---|---|---|
0
WildSery
16.04.14
✎
15:06
|
Меня интересует вот это место модуля ОбщийМодуль.ОбработкаТабличныхЧастей:
Процедура ПриИзмененииЕдиницыТабЧасти() ... Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест) Тогда СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество * СтароеЗначениеКоэффициента / НовоеЗначениеКоэффициента; КонецЕсли; Нафига нужна заполненность ЕдиницаИзмеренияМест для пересчёта? При том, что она очищается при записи документа, если мест = 0. Получается, было у меня 1 шт. (0.2 коробки, ноль мест). Меняю штуки на коробки - становится 1 коробка. |
|||
1
Shurjk
16.04.14
✎
15:09
|
По моему ты далеко не весь текст обработчика привел.
|
|||
2
WildSery
16.04.14
✎
15:11
|
(1) Код типовой, посмотрите у себя в УПП, пожалуйста.
Я указал место, которое не понимаю, и подозреваю, что тут ошибка. |
|||
3
Shurjk
16.04.14
✎
15:23
|
(2) УПП у меня нет под рукой, а в УТ он там в случае если указана единица мест то рассчитывает количество мест, а потом перерасчитывает цену, а не количество.
|
|||
4
WildSery
16.04.14
✎
15:47
|
(3) Если я правильно прочитал ваш ответ, то при изменении единицы измерения в УТ количество вообще не пересчитывается?
|
|||
5
WildSery
16.04.14
✎
15:51
|
Вот немного пошире процедура (не вижу смысла всю публиковать)
СтароеЗначениеКоэффициента = СтрокаТабличнойЧасти.Коэффициент; НовоеЗначениеКоэффициента = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент; Если НовоеЗначениеКоэффициента <> СтароеЗначениеКоэффициента Тогда СтрокаТабличнойЧасти.Коэффициент = НовоеЗначениеКоэффициента; Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест) Тогда СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество * СтароеЗначениеКоэффициента / НовоеЗначениеКоэффициента; КонецЕсли; РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект); Для Каждого ИмяРеквизитаЦены Из СтруктураРеквизитовЦен Цикл Если СтароеЗначениеКоэффициента > 0 И ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента(ИмяРеквизитаЦены.Ключ, МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СтрокаТабличнойЧасти[ИмяРеквизитаЦены.Ключ] = СтрокаТабличнойЧасти[ИмяРеквизитаЦены.Ключ] * НовоеЗначениеКоэффициента / СтароеЗначениеКоэффициента; КонецЕсли; КонецЦикла; КонецЕсли; После пересчёта количества (если оно случилось), пересчитываем число мест (нахуа?), а затем уже пересчёт цены, причём без проверки заполненности единицы мест. |
|||
6
Shurjk
16.04.14
✎
15:52
|
(4) Нет но цена ставиться уже за другую еденицу измерения.
|
|||
7
hhhh
16.04.14
✎
16:29
|
(5) количество мест - это для грузчиков и кладовщика. Им цена ни к чему.
И то что вы написали в вопросе: вы перепутали ЕдиницаИзмерения и ЕдиницаИзмеренияМест |
|||
8
Azverin
16.04.14
✎
16:34
|
(0) если не въезжаешь, то не заполняй поле ЕдиницаИзмеренияМест
|
|||
9
WildSery
17.04.14
✎
09:56
|
(7) Нет, я ничего не путаю.
(8) Ещё раз попробую задать вопрос другими словами. Я НЕ ЗАПОЛНЯЮ ЕдиницуИзмеренияМест. ЕдиницаИзмерения стоит штуки. Количество 1 штука. Я меняю ЕдиницуИзмерения на коробки. Получается 1 коробка, пересчёта количества нет. |
|||
10
Azverin
17.04.14
✎
10:12
|
(9) что по-твоему должна сделать программа?
|
|||
11
WildSery
17.04.14
✎
10:15
|
(10) Пересчитать количество в коробки.
Ведь именно это будет сделано, если штук не 1, а 10. |
|||
12
hhhh
17.04.14
✎
10:24
|
(11) количество мест целое. Считается, что неполная коробка. Но она всё-таки есть.
|
|||
13
Базис
naïve
17.04.14
✎
10:25
|
Это работает у всех уже много лет, если есть ошибка, значит она в данных, а не в конфе. См. коэффициенты единиц измерения, кури ронятие базовой ед. изм.
|
|||
14
hhhh
17.04.14
✎
10:26
|
(11) "Получается, было у меня 1 шт. (0.2 коробки, ноль мест)." - неправильно. Это одно место.
|
|||
15
2083
17.04.14
✎
10:26
|
(11) если у тебя в 1 коробке умещается например всего 10 штук чего-нибудь, а у тебя всего 9 штук. Это сколько коробок? Кури коэффициенты ед. изм.
|
|||
16
WildSery
17.04.14
✎
10:58
|
(12) 1С считает по-другому. Неполная коробка вполне может быть 0 мест.
(13) Курите сами вашу траву. Базовая вообще не при чём, это вообще не единица измерения. (15) То же самое могу посоветовать вам. Давать советы, не разобравшись в теме, или хотя бы просто не попробовав, нехорошо. 9 штук - это ноль коробок, поскольку Цел(КоличествоМест) Меня мало беспокоит то, что когда при записи документа очистится ЕдиницаИзмеренияМест, то в Количество можно уже что угодно писать, хоть 1000, мест по-прежнему будет 0, пока пользователь сам вручную не укажет ЕдиницуИзмеренияМест. Но вот то, что после этого пересчёт количества при изменении ЕдиницыИзмерения отключается, пока я не укажу нахрен не нужную ЕдиницуИзмеренияМест, мне не нравится. |
|||
17
hhhh
17.04.14
✎
11:07
|
(16) просто вы тупо не указали нам конфигурацию, поэтому ваши дальнейшие высказывания воспринимаются как бред.
|
|||
18
hhhh
17.04.14
✎
11:13
|
(16) вот смотрите. Допустим, я пользователь. МНе нужно занести строку: 100 коробок. Я по ошибке внес 100 щтук. Заячем мне нужно, чтобы количество скакало при этом? Ведь бред вы нам предлагаете.
|
|||
19
hhhh
17.04.14
✎
11:13
|
Пользователь внес количество. Оно потом не должно меняться.
|
|||
20
WildSery
17.04.14
✎
14:14
|
(17) Просто вы пропустили часть обсуждения, где я упомянул УПП, потому ваш пост воспринимается как бред.
(18) Я вам ничего не предлагаю. Если бы количество не пересчитывалось НИКОГДА, я бы успокоился, списав всё на "методологию 1С". Но ведь оно пересчитывается, но только когда есть единица мест. Отсюда и ваша фраза "Оно потом не должно меняться" теряет смысл. |
|||
21
WildSery
17.04.14
✎
14:29
|
Вообще, весь смысл этой процедуры - после многочисленных проверок ПЕРЕСЧИТАТЬ КОЛИЧЕСТВО и пересчитать цену.
|
|||
22
WildSery
17.04.14
✎
14:33
|
(18) И кстати, предлагаю вас самостоятельно провести эксперимент:
В Счете на оплату покупателя через подбор выбрать любую номенклатуру (в карточке номенклатуры должна быть заполнена единица мест), а затем закрыть подбор, и в табличной части выбрать другую единицу измерения. Вы увидите, что количество ПЕРЕСЧИТАЛОСЬ. Поскольку подбор заполняет единицу мест автоматически. Но при сохранении документа, если мест 0, то единица мест очистится, и пересчёт с этого момента ДЛЯ ЭТОЙ ПОЗИЦИИ отключается (для остальных, где мест > 0, он по-прежнему работает. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |