8.х Что сделать, чтобы в Перемещении и Реализации КоличествоМест выходили не целыми числами, а дробными,

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем setqa, 27 окт 2010.

  1. TopicStarter Overlay
    setqa
    Offline

    setqa

    Регистрация:
    26 окт 2010
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    на данный момент в стандартной конфигурации КоличествоМест выходит целыми числами
    т.е.
    в Упаковке 10 штук, если указать 12 штук, выводит КоличествоМест=2 Упаковки
    нужно, чтобы выводил 1,2 упаковки

    "Управление торговлей", редакция 10.3 (10.3.8.9)

    нашел в Общем Модуле - ОбработкаТабличныхЧастей - Процедура РассчитатьКоличествоМестТабЧасти

    вот такой фрагмент, но не разберусь как все правильно релизовать?
    скорее всего убрать ОКР?

    помогите! люди добрые!!!

    Код:
    Процедура РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект) Экспорт
    
    ИмяТабличнойЧасти   = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
    МетаданныеДокумента = ДокументОбъект.Метаданные();
    
    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмеренияМест", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Количество", МетаданныеДокумента, ИмяТабличнойЧасти)
    И ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("КоличествоМест", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
    Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмерения)
    И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " не выбрана единица измерения цены!
    |Пересчет количества невозможен.");
    ИначеЕсли НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест) Тогда
    СтрокаТабличнойЧасти.КоличествоМест = 0;
    Иначе
    Если СтрокаТабличнойЧасти.Коэффициент = 0
    И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " у единицы измерения цены "
    + СокрЛП(СтрокаТабличнойЧасти.ЕдиницаИзмерения) + " не проставлен коэффициент!
    |Пересчет количества невозможен.");
    ИначеЕсли СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест.Коэффициент = 0
    И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " у единицы измерения мест "
    + СокрЛП(СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест) + " не проставлен коэффициент!
    |Пересчет количества невозможен.");
    Иначе
    Если СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест Тогда
    КоличествоМест = СтрокаТабличнойЧасти.Количество;
    Иначе
    КоличествоМест = Окр(СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Коэффициент
    / СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест.Коэффициент
    , 4, РежимОкругления.Окр15как20);
    КоличествоМест = ?((КоличествоМест % 2 = 0) ИЛИ (КоличествоМест % 2 = 1), КоличествоМест, Цел(КоличествоМест) + 1);
    КонецЕсли;
    СтрокаТабличнойЧасти.КоличествоМест = КоличествоМест;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Иначе
    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("КоличествоМест", МетаданныеДокумента, ИмяТабличнойЧасти)
    И СтрокаТабличнойЧасти.Коэффициент > 0 Тогда
    Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков)
    И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " не выбрана единица хранения остатков!
    |Пересчет количества невозможен.");
    ИначеЕсли СтрокаТабличнойЧасти.Коэффициент = 0 Тогда
    ОбщегоНазначения.СообщитьОбОшибке("Не проставлен коэффициент!
    |Пересчет количества мест невозможен.");
    Иначе
    КоличествоМест = Окр(СтрокаТабличнойЧасти.Количество
    * СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
    / СтрокаТабличнойЧасти.Коэффициент
    , 4, РежимОкругления.Окр15как20);
    СтрокаТабличнойЧасти.КоличествоМест = ?((КоличествоМест % 2 = 0) ИЛИ (КоличествоМест % 2 = 1), КоличествоМест, Цел(КоличествоМест) + 1);
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры // РассчитатьКоличествоМестТабЧасти()
    
    
    Как бы сделать так, чтобы в Перемещении Товаров КоличествоМест было дробным?
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Вот эту строку попробуйте заккоментировать:
    Код:
    КоличествоМест = ?((КоличествоМест % 2 = 0) ИЛИ (КоличествоМест % 2 = 1), КоличествоМест, Цел(КоличествоМест) + 1);
    
    
    И вот эту:
    Код:
    СтрокаТабличнойЧасти.КоличествоМест = ?((КоличествоМест % 2 = 0) ИЛИ (КоличествоМест % 2 = 1), КоличествоМест, Цел(КоличествоМест) + 1);
    
    
    переписать на
    Код:
    СтрокаТабличнойЧасти.КоличествоМест = КоличествоМест;
    
    
  3. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    А вообще это некорректный вопрос, если что-то дорабатываете под свой учет, лучше не трогаете типовые механизмы, а доработайте свои.
  4. TopicStarter Overlay
    setqa
    Offline

    setqa

    Регистрация:
    26 окт 2010
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Спасибо всем за отзывы)
    Попробую оба варианта!
    Просто первый совет по решению моего вопроса был именно про изменение типового механизма!
    А так еще попробую Доработать печатную форму...
  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    И это правильно - почитайте методологию, почему.
    Кстати, в 11 торговле у вас вообще бы все по другому выглядело

Поделиться этой страницей