Как исправить некорректные расчеты с клиентами и поставщиками после обновления 1С:ERP с 2.5.12 на 2.5.16?

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

После обновления конфигурации 1С:ERP с версии 2.5.12 до 2.5.16 многие пользователи сталкиваются с критическими проблемами в учете взаиморасчетов с клиентами и поставщиками. Эти сложности затрагивают ключевые регистры накопления, такие как РасчетыСКлиентами и РасчетыСПоставщиками, и могут приводить к серьезным искажениям данных.

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

Симптомы некорректных расчетов

Первоочередные признаки, на которые следует обратить внимание после обновления до версии 2.5.16 (или промежуточных подрелизов этой ветки), включают:

  1. Добавление избыточных записей в регистры: Пользователи замечают, что в регистрах РасчетыСКлиентами и РасчетыСПоставщиками появляются лишние записи, которые ранее отсутствовали и не соответствуют реальным операциям.
  2. Незакрывающиеся регистры: Из-за некорректных движений регистры могут оставаться "открытыми", что приводит к неправильному формированию сальдо и невозможности корректного анализа взаиморасчетов.
  3. Неправильный зачет авансов: Система может отображать зачет авансов на двойную или другую некорректную сумму. Например, при попытке зачесть аванс в документе реализации или поступления, вместо корректного остатка может быть показана удвоенная сумма, что ведет к ошибкам в окончательных расчетах.
  4. Изменение хозяйственных операций: В записях регистров может происходить изменение типа хозяйственной операции. Например, старая запись, изначально имевшая хоз.операцию ПереносАванса, после обновления и перепроведения документа может измениться на Реализация, что кардинально искажает смысл движения.

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

Диагностика проблемы: анализ движений документа

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

  1. Выбор документа: Выберите любой документ (например, Реализация товаров и услуг или Поступление товаров и услуг), который, по вашим наблюдениям, создает проблемы во взаиморасчетах после обновления.
  2. Просмотр движений: Откройте выбранный документ. Воспользуйтесь стандартной функцией Отчеты – Движения документа. В этом окне внимательно изучите записи по регистрам РасчетыСКлиентами, РасчетыСПоставщиками и связанным с ними регистрам взаиморасчетов (например, РасчетыСКлиентамиПоСрокам). Зафиксируйте количество записей и их содержание.
  3. Отмена проведения: Отмените проведение этого документа. Убедитесь, что все записи, созданные им в регистрах накопления, исчезли. Это подтвердит, что движения, которые мы наблюдаем, действительно связаны с этим документом.
  4. Повторное проведение: Проведите документ снова.
  5. Повторная проверка движений: Вновь откройте Отчеты – Движения документа и сравните новые записи с тем, что вы видели до отмены и повторного проведения.

Что мы можем увидеть в результате?

При повторном проведении документа часто наблюдается следующее: записи, которые были некорректно добавлены обработчиком обновления, удаляются. Количество записей в регистрах возвращается к тому, которое было до возникновения проблемы. Однако, при более внимательном рассмотрении, мы можем обнаружить, что в одной из старых, уже существующих записей, меняется хоз.операция. Например, движение с хоз.операцией ПереносАванса может стать движением с хоз.операцией Реализация. Это изменение является критическим, поскольку оно напрямую влияет на корректность распределения авансов и отражение задолженности.

Важным контекстом для этой проблемы является использование режима онлайн-взаиморасчетов. В 1С:ERP 2.5.16 были внесены значительные изменения в механизмы онлайн-расчета, и ошибки в их работе могут приводить к таким искажениям.

Детальный анализ изменений и причины возникновения ошибки

Для полного понимания сути проблемы, рассмотрим ключевые изменения, произошедшие в версии 2.5.16, и как они могли привести к описанным ошибкам.

Изменения в структуре регистров взаиморасчетов (2.5.16.61)

Одним из основных источников проблемы стало изменение структуры оперативных регистров взаиморасчетов. Начиная с версии 2.5.16.61 (и в последующих подрелизах), в такие регистры, как РасчетыСКлиентами, РасчетыСПоставщиками, РасчетыСКлиентамиПоСрокам и РасчетыСПоставщикамиПоСрокам, были добавлены новые реквизиты. Мы можем увидеть следующие дополнения:

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

Ошибочная работа обработчика обновления

Основная причина описываемых проблем кроется в некорректной работе обработчика обновления, который запускается при переходе с предыдущих версий (например, с 2.5.12 на 2.5.16). По нашим наблюдениям и анализу, этот обработчик:

Однако, в нашем случае, обработчик ошибочно добавлял новые записи или некорректно изменял существующие. Выяснилось, что проблема заключалась в его логике: обработчик не видел записи типа "Расход" по полю "КОплате" с хоз.операцией "ПереносАванса". Из-за этого "слепого пятна" он считал, что определенных движений не существует или они некорректны, и самостоятельно генерировал новые, ошибочные записи, либо изменял тип существующих. Это приводило к задваиванию сумм, неверным остаткам и, как следствие, к невозможности корректного закрытия регистров.

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

Решение проблемы и рекомендации

К счастью, проблема оказалась известной и была адресована разработчиками 1С. Давайте рассмотрим, как она была решена и какие шаги мы можем предпринять для минимизации рисков.

Признание ошибки и исправление от 1С

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

В последующих подрелизах версии 2.5.16 (например, начиная с 2.5.16.101 и далее в 2.5.16.115) и в следующих мажорных версиях (например, 2.5.17), разработчики внесли изменения в код обработчика. Ключевое изменение заключалось в том, что Перенос авансов исключен из обработки. Это означает, что логика, которая ранее ошибочно обрабатывала и изменяла записи с хоз.операцией "ПереносАванса", была модифицирована таким образом, чтобы больше не создавать конфликты или некорректные движения.

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

Возможные временные решения и общие рекомендации

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

  1. Перепроведение документов: Как показала наша диагностика, повторное проведение документов может исправить некорректные движения в регистрах. Это можно использовать как временное решение для критически важных документов. Однако, массовое перепроведение всех документов может быть трудоемким и не всегда полностью решает проблему, если причина кроется в самом обработчике обновления.
  2. Тестовый перенос и проверка данных: Перед каждым масштабным обновлением мы настоятельно рекомендуем выполнять тестовый перенос рабочей базы на копию. На этой копии следует тщательно проверять корректность данных, особенно остатков по взаиморасчетам, до и после обновления. Это позволяет выявить проблемы до их появления на "боевой" системе.
  3. Актуализация движений: Если проблемы уже возникли, исправление ошибок и актуализация движений документов по взаиморасчетам могут потребовать выполнения этой процедуры, начиная с первого месяца, для которого существуют задания по закрытию месяца. Это помогает системе пересчитать и скорректировать все зависимости.
  4. Ручные корректировки: В некоторых случаях могут потребоваться ручные корректировки регистров. Однако, это следует делать с особой осторожностью и только после создания резервной копии базы. Мы рекомендуем выполнять такие корректировки только при наличии глубокого понимания логики работы регистров и под контролем опытного специалиста.
  5. Ожидание LTS-версий: Для минимизации рисков, связанных с "сырыми" промежуточными релизами, некоторые эксперты и пользователи рекомендуют ожидать выхода LTS (Long Term Support) версий, которые проходят более тщательное тестирование и содержат меньше ошибок.
  6. Проверка способов погашения задолженности: Важно обратить внимание на такие реквизиты, как способ погашения задолженности в документах оплаты и способ зачета аванса в документах поступления и реализации. Их некорректная настройка может приводить к дисбалансу и "зависанию" сальдо на авансовых счетах, даже если сама логика обработчика обновления уже исправлена.
  7. Проверка базы данных на ошибки: Регулярно проводите проверку целостности и логической структуры базы данных с помощью утилиты chkdbsql (для SQL-версий) или стандартных средств 1С. Поврежденные данные могут усугублять проблемы после обновлений.

В заключение, проблема с расчетами после обновления 1С:ERP до версии 2.5.16 является серьезной, но решаемой. Ее природа кроется в изменениях структуры регистров и ошибках в обработчике обновления, который некорректно обрабатывал переносы авансов. Благодаря своевременной диагностике и исправлению со стороны 1С, а также применению системных подходов к тестированию и актуализации данных, мы можем обеспечить стабильную и корректную работу системы взаиморасчетов.

← На главную