Может ли в 1С самопроизвольно измениться число или сместиться запятая при сбое электричества?

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

В практике работы с программами 1С нередко возникают ситуации, когда после технического сбоя (отключения электричества, аварийного завершения работы сервера) в документах обнаруживаются некорректные цифры. Самое частое объяснение со стороны пользователей — "программа сама поменяла данные". Разберем подробно, возможно ли самопроизвольное смещение запятой или появление новых цифр в числе с технической и юридической точек зрения, а также выясним, как найти доказательства реальных действий пользователя.

Технический анализ: может ли программа «приписать» лишние цифры?

Рассмотрим ситуацию, описанную в теме: в поле был установлен процент 40,00, бухгалтер утверждает, что вводила 25,30, но после сбоя в базе оказалось 2540,30. Проанализируем механику работы платформы 1С. Числовые данные в базе хранятся в строгом соответствии с типами данных SQL. Платформа 1С:Предприятие не обладает встроенными алгоритмами, которые бы при сбое питания произвольно модифицировали значения в ячейках таблиц путем «склеивания» старых и новых данных.

Рассмотрим наиболее вероятную причину — человеческий фактор при вводе данных:

  1. Ошибка частичного выделения. В управляемых формах 1С при клике мышкой в поле ввода курсор может встать в середину существующего числа. Если пользователь не выделил всё значение целиком (например, не нажал Ctrl+A или не сделал двойной клик) и начал вводить «25», эти цифры просто добавятся к существующим «40». В итоге получится 2540.
  2. Механика записи. Чтобы данные попали в базу, необходимо инициировать транзакцию записи (нажать кнопку «Записать» или «ОК»). Если в момент нажатия этой кнопки произошел скачок напряжения, данные могли успеть записаться в том виде, в котором они были в поле ввода (с ошибкой), после чего сервер «упал».
  3. Сбои терминального доступа (RDP). При работе через удаленный рабочий стол возможны задержки трансляции нажатий клавиш. Если пользователь нажал комбинацию для очистки поля, но из-за лага она не сработала, а последующие цифры ввода дошли до сервера, произойдет наложение символов.

Таким образом, «самопроизвольное» появление цифры 40 внутри числа 2530 — это типичный результат некорректного редактирования поля ввода человеком, а не программного сбоя. Программа не может «вспомнить» предыдущее значение и вставить его в середину нового без команды пользователя.

Как найти доказательства в системе: пошаговая инструкция

Если возник спор о том, кто именно виноват в некорректном значении, проанализируем имеющиеся в 1С инструменты аудита:

1. Журнал регистрации
Это первый инструмент, который мы должны проверить. В нем фиксируются события Данные.Изменение. Мы можем увидеть:

Если время записи в журнале совпадает с секундами перед аварией, это подтверждает, что пользователь нажал кнопку записи с уже введенным ошибочным числом.

2. Механизм версионирования объектов
Если в конфигурации (например, в «1С:ЗУП» или «1С:ERP») включено версионирование, мы можем просмотреть историю изменений конкретного документа. Рассмотрим подробнее:

Если в версии четко прописано 2540,30, значит, именно такое число пришло с клиента на сервер.

3. Технологический журнал (ТЖ)
Для системных администраторов это наиболее мощный инструмент. Если настроен сбор ТЖ с событиями DBMSSQL, можно увидеть текст прямого SQL-запроса UPDATE. Это неопровержимое доказательство того, какие именно данные платформа отправила в СУБД.

Юридический аспект: считается ли это счетной ошибкой?

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

Что НЕ является счетной ошибкой:

Согласно позиции Верховного Суда РФ, счетной считается только ошибка, допущенная в результате арифметических действий (сложение, вычитание, умножение). Ошибка ввода (человеческий фактор) под это определение не подпадает.

Что МОЖНО признать счетной ошибкой:

В рассматриваемом случае, если бухгалтер ввела 2540,30 вместо 25,30, это квалифицируется как техническая ошибка ввода (опечатка), и взыскать эти деньги с сотрудников без их добровольного согласия будет крайне сложно.

Практические рекомендации по предотвращению подобных ситуаций

Чтобы исключить подобные инциденты в будущем, проанализируем и внедрим следующие меры защиты:

  1. Настройка ограничений в полях ввода. Для реквизитов типа «Процент» целесообразно устанавливать проверку диапазона. Например, программно запретить проведение документа, если процент премии превышает разумный предел (например, 100%).
    
    Если Объект.ПроцентПремии > 100 Тогда
        Отказ = Истина;
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Процент премии не может превышать 100%!";
        Сообщение.Сообщить();
    КонецЕсли;
    
  2. Обеспечение бесперебойного питания. Использование ИБП (UPS) для серверов и рабочих станций бухгалтерии исключит риск аварийного завершения сессии в момент записи данных.
  3. Включение версионирования. Настройте версионирование для всех важных документов (Начисление зарплаты, Премирование). Это позволит всегда иметь «алиби» для программы и четко видеть, кто и когда внес изменения.
  4. Обучение персонала. Пользователи должны знать, что при редактировании числовых полей необходимо контролировать выделение всего текста в поле.

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

← На главную