8.х УФ. Проверка условия в ПередЗаписью в модуле формы.

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

  1. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Здравствуйте.
    Есть форма документ в которой только одна кнопка "Записать". Пользователь не может открыть документ или отредактировать его после того как записал. У него нет возможности даже просмотреть список документов. Он может только создать новый. Подобрать товар и записать. Если сумма больше контрольной то срабатывает отказ.
    Он не может открыть другую форму, он работает в базе один.
    В модуле формы в обработчике "ПередЗаписью" вставлен код:
    Код:
    &НаКлиенте    
    Процедура ПередЗаписью(Отказ)
       
        // Контроль суммы чека +
        // перед записью документа. Сумма чека не должна превышать значение задаваемое константой для среднего чека.
        КонтрольнаяСумма = КонтрольнаяСумма();
       
        Если КонтрольнаяСумма > 0 Тогда
           
            Если Объект.ТабличнаяЧасть.Итог("СуммаСоСкидкой") > КонтрольнаяСумма  Тогда
                Предупреждение("ВНИМАНИЕ!!!!! Контроль суммы чека! Сумма чека ОЧЕНЬ БОЛЬШАЯ! Продажа не может быть проведена!");
                Отказ = Истина;
                Возврат;
            КонецЕсли;
           
        КонецЕсли;
        // Контроль суммы чека -
       
        Если ИтогиИзменились() Тогда
            Предупреждение("Итог по чеку изменился!");
            Отказ = Истина;
            Возврат;
        КонецЕсли;
    // далее другие проверки и вызов процедуры печати чека
    Пользователь сумел провести документ с суммой больше контрольной. У меня не получается провести. Контроль отрабатывает нормально.
    Может у кого нибудь есть предположения почему так могло получиться?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Контрольная сумма на момент записи документа была <=0.

    Если оно меняется и ходит с обменом, то вполне себе могло такое быть в момент обмена.
  3. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Сумма да приходит с обменом. Но на момент проведения она уже месяц как там стояла и ни кем не менялась. Я сразу подключился к этому магазину и проверил в первую очередь что всё работает. И что константа стоит.
    --- Объединение сообщений, 3 мар 2016 ---
    Но с другой стороны есть факт... есть проведённый док и пробитый чек. С начало думал может в обмене косячнулось что нибудь. Но есть пробитый чек. А он пробивается в момент проведения.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Можно попробовать сделать следующее:

    Заблокировать константу транзакцией, т.е. сделать эмуляцию выполнения обмена и в этот момент попробовать провести документ.

    Но это пипец конечно....
  5. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Вполне возможно что обмены. Но в то время когда был проведён документ обмены обычно не делаются. Обмен делается утром и вечером. А док был днём.
    И во время обмена интерфейс блокируется. И пользователь не может фиксировать продажи. Он док продажи не сможет ни открыть, ни пробить. Даже уже открытый не сможет. Я открыл форму и запустил обмен. Пока обмен идёт программ висит.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Значит пользователь создал документ, заполнил его суммой ниже контрольной и провел, если этот факт зафиксирован в ЖР.
    Сумма выше контрольной могла уже после этого стать, в результате обмена. Могли например какой обработиной поправить сумму в колонке ТЧ/документе.
  7. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Нет обработин никаких.
    Сумма была именно в момент записи документа. В процедуре перед записью ниже после проверок вызывается процедура печати чека. И он был напечатан.
  8. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    а константу не поменяли в тот момент вернув потом обратно? :)
  9. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Нет. Пользователь до неё добраться не может. Да и смысла ему это делать нет никакого...
  10. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Ну я думаю что чудес не бывает.
    Что случилось естественно сказать не могу.
    1. На посмотреть процедуру КонтрольнаяСумма()
    2. Проверить обработчики табличной части. В частности итог вычисляется по колонке СуммаСоСкидкой, убедится что при изменениях в табличной части корректно пересчитывается поле СуммаСоСкидкой. Кода всего не вижу. Пример с потолка: не пересчиталась эта суммасоскидкой потому что нету (или ошибка) в обработчике изменения какого-то поля табличной части и поэтому там осталась например старая сумма или цена подставилась не от той номенклатуры. Проверка ПередЗаписью() пройдет, и если ниже по коду (которого не видно) идет пересчет табличной части, то криминала никакого ни на чеке ни в документе после записи не будет, но как видишь проверку пройдет.

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