При закрытии месяца в 1С:ERP и 1С:Комплексная автоматизация одной из самых труднодиагностируемых проблем является наличие остатков по регистру накопления ПрочиеРасходы. Ситуация часто выглядит следующим образом: в помощнике закрытия месяца операция «Распределение расходов по направлениям деятельности» требует выполнения, но при создании или проведении соответствующего документа РаспределениеПрочихЗатрат движения не формируются, а статус строки остается «Готов к распределению». Рассмотрим подробно, как проанализировать эту ситуацию и решить проблему зависших копеек.
Прежде всего, нам необходимо проверить настройки статьи расходов, по которой возникли остатки. Проанализируем комбинацию типа расходов, типа аналитики и способа распределения. В рассматриваемом примере используется статья «Доставка оборудования» со следующими параметрами:
44.01 (издержки обращения) со списанием на счет 90.07.1.Выясним важный нюанс: если статья была настроена как транспортно-заготовительные расходы (ТЗР), то алгоритм ее распределения в 1С:ERP подчиняется особым правилам (ст. 320 НК РФ). В этом случае сумма не списывается полностью в текущем месяце, а распределяется пропорционально остатку товаров на складе. Если в какой-то момент база распределения становится ничтожно малой, могут возникнуть проблемы с математическим округлением в запросах системы.
Проанализируем ситуацию с точки зрения программного кода. При проведении документа РаспределениеПрочихЗатрат система формирует временную таблицу РасходыКРаспределению. В этой таблице рассчитывается сумма к списанию в разрезе управленческого (УПР) и регламентированного (РЕГЛ) учета.
Рассмотрим пример расчета, который приводит к ошибке. Допустим, на остатке в регистре числится сумма 12.15 руб. Доля списания, рассчитанная системой на основании базы (например, выручки или себестоимости продаж), составляет 0.00036979. При выполнении запроса система использует функцию ВЫРАЗИТЬ для приведения результата к двум знакам после запятой:
| КОГДА ЕСТЬNULL(ДолиСписания.Транспортные, ЛОЖЬ)
| ТОГДА ВЫРАЗИТЬ(ОстаткиРасходов.СуммаРегл * ДолиСписания.ДоляСписания КАК ЧИСЛО(15, 2))
В результате математического умножения мы получаем: 12.15 * 0.00036979 = 0.0044929485. Так как третья цифра после запятой (4) меньше 5, функция ВЫРАЗИТЬ округляет результат до 0.00. В итоге документ распределения видит, что к распределению полагается нулевая сумма, и не создает никаких движений по регистрам, хотя остаток в ПрочиеРасходы продолжает висеть.
Разберем по шагам, как можно устранить данное зависание в зависимости от ваших возможностей доступа к системе.
Способ 1. Принудительное изменение суммы через корректировку
Поскольку проблема вызвана слишком малой суммой, которую алгоритм не может «зацепить», мы можем временно увеличить сумму расхода. Создадим документ Корректировка прочих расходов, добавим 1 копейку к остатку по данной статье и подразделению. После этого запустим распределение заново. Если сумма станет достаточной для округления до 0.01, документ сформирует движения, и регистр закроется. После успешного закрытия в следующем периоде можно сделать сторнирующую запись на эту копейку.
Способ 2. Проверка соответствия видов учета
Иногда остатки зависают из-за разрыва между УПР, РЕГЛ и НУ (налоговым учетом). Проверим состояние регистров через консоль запросов или отчет «Движения прочих расходов и доходов». Если в одном виде учета (например, УПР) сумма уже списана, а в другом (РЕГЛ) — нет, это может блокировать автоматическое закрытие. В этом случае выполним следующие действия:
РаспределениеПрочихЗатрат за проблемный месяц.Приобретение услуг и прочих активов). Убедимся, что во всех строках корректно заполнены признаки отражения в УПР, БУ и НУ.Способ 3. Очистка или добавление заданий к распределению
Система 1С:ERP работает на механизме заданий. Если в регистре сведений Задания к распределению расходов отсутствует запись по данной статье, документ может игнорировать остаток. Попробуем выполнить следующие действия:
Задания к распределению расходов.Способ 4. Корректировка программного кода (для программистов)
Если проблема носит массовый характер и связана именно с округлением ТЗР, проанализируем общий модуль, отвечающий за расчет долей распределения. В запросе формирования ВТ РасходыКРаспределению можно заменить жесткое округление на проверку минимального порога. Если расчетная сумма больше нуля, но меньше 0.01, можно принудительно устанавливать 0.01, чтобы «вытолкнуть» остаток из регистра.
Проанализируем еще одну возможную причину — изменение аналитики статьи в процессе эксплуатации. Рассмотрим ситуацию: статья расходов была создана с типом аналитики «Прочие расходы», а позже в самой статье тип был изменен на «Приобретение товаров и услуг». В регистре накопления ПрочиеРасходы старые записи хранят ссылку на объект одного типа, а новые документы распределения пытаются найти базу по другому типу. Это создает ситуацию, когда «визуально» статья одна и та же, но измерения регистра не совпадают.
Для диагностики этого случая воспользуемся отчетом «Остатки прочих расходов» с максимальной детализацией по всем измерениям. Если мы увидим пустые поля в измерениях или несоответствие подразделений, нам поможет документ Корректировка регистров, которым мы перенесем остаток на корректные измерения текущего периода.
Резюме: Чтобы успешно закрыть месяц при наличии зависших остатков в регистре прочих расходов, необходимо последовательно проверить математическую возможность распределения (проблема копеек), идентичность измерений в регистре и корректность отражения по всем видам учета (УПР/РЕГЛ/НУ).