Почему встроенный калькулятор 1С не учитывает отрицательные числа при использовании кнопок М, М+ и М-?

Пользователь 1С v8.3 (Управляемые формы)
← На главную

Мы с вами сталкиваемся с распространенной, но весьма раздражающей проблемой, когда встроенный калькулятор в системе 1С:Предприятие некорректно обрабатывает отрицательные числа при использовании функций памяти (кнопки М, М+, М-). Рассмотрим подробнее, в чем проявляется эта ошибка, какие были предприняты попытки ее решения и какое окончательное решение оказалось эффективным. Эта проблема доставляла неудобства многим пользователям, заставляя их искать обходные пути или отказываться от удобных функций калькулятора, особенно в системах 1С:Бухгалтерия Предприятия и 1С:Зарплата и Управление Персоналом.

Проявление проблемы: некорректная работа с отрицательными числами

Как правило, при использовании встроенного калькулятора 1С для операций с отрицательными числами с помощью кнопок памяти (М, М+, М-) возникает следующая ситуация:

  1. При попытке добавить или вычесть отрицательное число из памяти калькулятора, вместо ожидаемого отрицательного значения, система учитывает 0. Например, если в памяти калькулятора (MS) сохранено значение 5, и мы пытаемся прибавить к нему -7 (5 + (-7)), результат с использованием М+ будет 5, а не -2. Аналогично, при попытке вычесть отрицательное число, например, 5 - (-7), результат также может быть 5 вместо 12, так как -7 воспринимается как 0.
  2. Результат вычислений, которые должны были бы уйти в отрицательную область, также остается равным 0. Продолжая пример: (5) - (7) с использованием кнопок памяти вместо -2 даст 0. Это существенно ограничивает функциональность калькулятора, делая его непригодным для точных финансовых и других расчетов, требующих работы с отрицательными величинами.

Проблема проявлялась на различных конфигурациях, таких как 1С:Бухгалтерия Предприятия (БП) и 1С:Зарплата и Управление Персоналом (ЗУП), в файловом режиме, независимо от многочисленных обновлений этих конфигураций и платформы, что наводило на мысль о более глубокой или системной причине. Пользователи отмечали, что эта "странность" могла наблюдаться достаточно продолжительное время – около года, охватывая несколько обновлений как самих конфигураций, так и платформы 1С:Предприятие.

Анализ возможных причин и их проверка

В поисках решения этой загадочной проблемы мы, как и многие другие, рассмотрели несколько потенциальных источников сбоя. Важно систематически исключить все возможные факторы, чтобы добраться до истинной причины. Мы последовательно проанализировали следующие гипотезы:

  1. Региональные настройки операционной системы и информационной базы:

    Первым шагом всегда является проверка региональных настроек, поскольку они напрямую влияют на то, как система интерпретирует числа, даты и валюты. Мы проверили следующие параметры:

    1. Настройки операционной системы: В системных настройках (например, в среде Windows Server 2008 R2) в разделе "Региональные стандарты" — "дополнительные параметры" — "формат отрицательных чисел" было установлено стандартное значение "-1,1". Это обычное и корректное отображение отрицательных чисел, которое не должно приводить к подобным ошибкам.
    2. Настройки информационной базы 1С: В режиме Конфигуратор мы проверили "Региональные установки информационной базы". Была установлена галка "Использовать региональные установки текущего сеанса", а страна совпадала с системными настройками (Россия, русский). Это подтвердило, что форматы чисел в ОС и 1С были согласованы, и проблема не связана с различиями в региональных стандартах или форматах отображения отрицательных чисел.

    Таким образом, эта гипотеза не подтвердилась, и мы перешли к следующему возможному источнику проблемы.

  2. Формат ячеек (чисел) в табличных частях:

    Было высказано предположение, что числа, которыми оперирует пользователь, могли иметь формат, отличный от системного, или содержать невидимые символы (например, пробел после минуса), из-за чего система воспринимала их как текст, а не как числовое значение. Если бы это было так, калькулятор мог бы игнорировать такие "текстовые" числа или неправильно их интерпретировать. Однако, в данном случае, проблема наблюдалась даже при прямом вводе чисел в калькулятор и работе с его кнопками, а также затрагивала общую логику вычислений независимо от места ввода (будь то ячейка табличной части или моксель). Хотя некорректный формат ввода может быть причиной ошибок в других ситуациях, в нашем случае это не объясняло системное игнорирование отрицательных чисел встроенным калькулятором.

После тщательной проверки этих аспектов стало очевидно, что причина кроется не в пользовательских настройках или форматах данных, а глубже – в самой платформе.

Истинная причина: ошибка платформы 1С:Предприятие

Выяснилось, что описанное поведение встроенного калькулятора 1С является известной ошибкой (багом) платформы "1С:Предприятие". Эта ошибка была обнаружена в некоторых версиях платформы 8.3.20, в частности, она активно проявлялась на версии 8.3.20.1613. Пользователи сообщали, что проблема возникала "где-то с год назад", что совпадает с периодом активного использования и обновлений версий платформы 8.3.19 и 8.3.20. Это подтверждает, что речь идет не о разовом сбое, а о системной недоработке в определенной ветке релизов.

Эта ошибка приводила к тому, что при использовании кнопок М (запись в память), М+ (прибавление к памяти), М- (вычитание из памяти), отрицательные числа не сохранялись и не обрабатывались корректно в памяти калькулятора, фактически заменяясь нулем в операциях. Например, если вы вводите -7 и нажимаете М+, к содержимому памяти прибавляется 0, а не -7. Это крайне критично для точности расчетов.

Решение проблемы: обновление платформы 1С:Предприятие

К счастью, разработчики 1С оперативно отреагировали на эту проблему, и ошибка была исправлена в версии платформы 1С:Предприятие 8.3.20.1674.

  1. Обновление платформы: Для устранения некорректной работы калькулятора необходимо обновить платформу 1С:Предприятие до версии 8.3.20.1674 или более поздней. Пользователи, установившие эту версию, подтвердили, что функциональность кнопок М, М+, М- восстанавливается, и калькулятор начинает корректно обрабатывать отрицательные числа, а результаты вычислений теперь могут уходить в отрицательную область. Например, операция 5 + (-7) теперь корректно выдаст -2.
  2. Проверка после обновления: После обновления платформы обязательно перезапустите клиент 1С:Предприятия и протестируйте работу калькулятора с отрицательными числами. Убедитесь, что операции сложения и вычитания с использованием памяти калькулятора (М+, М-) теперь выполняются корректно во всех режимах — как при открытии самого калькулятора, так и при использовании его в табличных частях документов или в мокселях.

Важно отметить, что даже если вы уже обновлялись до других промежуточных релизов платформы 8.3.20 (например, до 8.3.20.1613 или 8.3.20.1549), проблема могла сохраняться, так как исправление появилось именно в версии 8.3.20.1674. Поэтому, даже если вам казалось, что вы уже "много раз обновлялись", решающим является переход именно на эту или последующую версию.

Дополнительные рекомендации и контекст стабильности платформ

В контексте обсуждения этой ошибки, стоит упомянуть, что платформы версий 8.3.19 и 8.3.20 в целом характеризовались пользователями как достаточно "глючные" и нестабильные. Многие сталкивались не только с проблемой калькулятора, но и с другими сбоями, такими как:

Из-за множества выявленных недочетов, некоторые пользователи принимали решение откатываться на более стабильные, проверенные версии платформы, например, на последние релизы ветки 8.3.18. Там, по их отзывам, такого "ада" не наблюдалось. Если ваша конфигурация не требует обязательного использования именно последних версий платформы 8.3.19 или 8.3.20 (например, из-за требований ЗКГУ к минимальной версии платформы), и вы сталкиваетесь с множеством проблем, возможно, временное возвращение к стабильной предыдущей ветке платформы может быть целесообразным решением до выхода более отлаженных и стабильных релизов.

Таким образом, хотя проблему с калькулятором удалось успешно решить обновлением платформы до версии 8.3.20.1674, общая рекомендация для обеспечения стабильной и безошибочной работы в 1С — всегда внимательно следить за актуальными и проверенными релизами платформы, учитывая отзывы сообщества и официальную информацию от разработчиков 1С. Это поможет избежать многих неприятных сюрпризов в процессе работы.

← На главную