В процессе работы с программой «1С:Бухгалтерия предприятия 3.0» пользователи часто сталкиваются с ситуацией, когда стандартные отчеты ведут себя непредсказуемо. Одной из наиболее странных и обсуждаемых проблем является ошибка формирования «Оборотно-сальдовой ведомости по счету» (ОСВ) для счетов расчетов с контрагентами, таких как 60 «Расчеты с поставщиками и подрядчиками» и 62 «Расчеты с покупателями и заказчиками». Суть проблемы заключается в том, что при переключении между этими счетами в отчете данные либо отображаются не полностью (пропадают субсчета), либо в отчет по одному счету ошибочно попадают данные другого счета.
Рассмотрим подробнее этот программный сбой, разберем причины его возникновения с технической точки зрения и выясним, как окончательно устранить эту проблему в вашей базе данных.
Представим стандартный рабочий сценарий бухгалтера. Вы открываете отчет «Оборотно-сальдовая ведомость по счету» и выполняете следующие действия:
Такое поведение системы вызывает обоснованные опасения у пользователей: «Можно ли доверять цифрам в отчете, если они меняются от количества нажатий на кнопку?». Проанализируем ситуацию, чтобы понять, что происходит «под капотом» программы.
Причина кроется в особенностях работы механизма Системы компоновки данных (СКД) и кэширования настроек в типовых решениях 1С. Для большинства счетов в 1С состав аналитики (субконто) одинаков на всех субсчетах. Однако существуют так называемые «особенные счета».
Например, у счета 60.01 и 60.02 стандартный набор субконто: «Контрагенты», «Договоры», «Документы расчетов». А у субсчета 60.03 «Векселя выданные» набор аналитики может отличаться. Проанализируем программный код, который отвечает за построение запроса для таких случаев.
В конфигурации используется специальная функция, которая динамически меняет текст запроса в зависимости от того, какой счет выбран. Рассмотрим пример логики в общем модуле ТиповыеОтчеты:
// Функция формирует текст запроса, учитывающий разный состав субконто субсчетов выбранного счета.
Функция ТекстЗапросаДляОсобенныхСчетов(Счет, СхемаКомпоновкиДанных, КомпоновщикНастроек) Экспорт
// Здесь происходит анализ выбранного счета и его иерархии
// Если у субсчетов разный набор аналитики, запрос перестраивается
...
КонецФункции
Выясним причину сбоя: при первом нажатии кнопки «Сформировать» система обращается к временному хранилищу, где уже лежит подготовленная ранее схема компоновки данных (например, от предыдущего формирования по счету 60). Из-за программной ошибки в старых релизах (в частности, 3.0.80.40) очистка этого хранилища происходила позже, чем вызывалась функция построения запроса. В итоге система пыталась «наложить» настройки счета 62 на структуру запроса счета 60.
Данная ситуация не является следствием неправильных действий пользователя или сбоя в базе данных (битых индексов или кэша платформы). Компания 1С официально зарегистрировала эту ошибку под номером 10224864.
Суть ошибки: В отчете «Оборотно-сальдовая ведомость по счету» некорректно обновляются параметры схемы при смене счета, имеющего субсчета с различным составом субконто.
Посмотрим на доступные варианты решения задачи в зависимости от ваших возможностей по обновлению конфигурации.
Самый надежный способ избавиться от этого «глюка» — обновить программу. Разработчики выпустили исправление в последующих версиях. Ошибка была полностью устранена в релизах 3.0.82.24 и выше. Если ваша конфигурация версии 3.0.83 и старше, данная проблема вас больше не побеспокоит.
Иногда ошибка может «залипнуть» в сохраненных настройках конкретного пользователя. Проанализируем, как их сбросить:
ОборотноСальдоваяВедомостьПоСчету и удалите все записи, связанные с ним.Если вы не можете обновиться прямо сейчас, научимся правильно «проталкивать» данные в отчет:
Мы выяснили, что странное поведение оборотки по счетам 60 и 62 связано с архитектурной особенностью обработки динамических запросов в 1С. Это не повреждение данных, а ошибка визуализации в конкретной версии программы. Рекомендуем своевременно обновлять типовые конфигурации, чтобы не тратить время на борьбу с известными платформенными багами.