Как исправить некорректные расчеты с клиентами и поставщиками после обновления 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С, а также применению системных подходов к тестированию и актуализации данных, мы можем обеспечить стабильную и корректную работу системы взаиморасчетов.

← На главную