|   |   | 
| 
 | Пересчёт количества при изменении единицы измерения | ☑ | ||
|---|---|---|---|---|
| 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, он по-прежнему работает. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |