При ведении учета в программе «1С:Бухгалтерия государственного учреждения» (БГУ) бухгалтеры часто сталкиваются с ситуацией, когда при выборе счета в документах система не позволяет использовать нужную комбинацию счета и классификационного признака счета (КПС). При попытке добавить рабочий счет вручную программа выдает ошибку о том, что такая запись уже существует в регистре, хотя в списке доступных счетов её не видно, либо она отображается как неактивная.
В этой статье мы подробно разберем, как устроен механизм рабочих счетов «под капотом», почему возникают конфликты уникальности записей и какими методами — от типовых методологических до технических — можно решить эту проблему.
В отличие от обычной хозрасчетной бухгалтерии, в БГУ рабочий счет не является простой позицией плана счетов. Он представляет собой уникальную аналитическую связку следующих ключевых разрезов:
Эта связка физически хранится в периодическом регистре сведений Рабочие счета. В данном регистре предусмотрен специальный флаг — «Актуален» (или «Активность»). Он определяет, будет ли этот счет предлагаться пользователю для выбора в табличных частях документов. Если флаг снят, счет считается устаревшим или некорректным для текущего периода учета, и программа скрывает его, чтобы уберечь бухгалтера от ошибок.
Выясним причину, почему возникает ошибка «Запись в регистре уже есть». Это связано с платформенным ограничением 1С на уникальность записей в периодическом регистре сведений: в системе не может существовать двух записей с абсолютно одинаковым набором измерений (Учреждение, КФО, КПС, Счет) на один и тот же период. Даже если счет помечен как неактивный или скрыт фильтрами, физически запись в базе существует, и попытка добавить её заново вызывает конфликт на уровне платформы.
---
Посмотрим на практический пример. Предположим, у нас есть старый рабочий счет 208.34 с произвольным КПС 00000244, действовавший с 2011 года. Нам необходимо начать применять новый КПС вида «КРБ» с тем же кодом с 2016 года. Просто «переключить» активность или удалить старый счет нельзя, так как по нему могут быть обороты за прошлые периоды.
Проанализируем пошаговый алгоритм решения этой задачи через ограничение сроков действия:
31.12.2015.01.01.2016.Важный момент: Наличие старого счета в базе необходимо для сохранения целостности учета. Если вам понадобится создать или перепровести документ «задним числом» (например, за 2015 год), система автоматически предложит старый рабочий счет, соответствующий дате документа.
---
Если после настройки дат нужный рабочий счет все равно не появляется в списке выбора или отображается серым (неактивным), проверим параметры учета и настройки отображения:
90н). Если в настройках выбран устаревший приказ, то и рабочие счета будут фильтроваться некорректно.---
В случаях, когда в регистре сведений Рабочие счета образовались некорректные записи (например, несколько записей на одну дату с разной активностью, как в ситуации с переносом данных), стандартные интерфейсные методы могут не сработать. Для исправления таких «сбойных» ситуаций используются специализированные инструменты:
РегистрСведений.РабочиеСчета и изменить флаг активности для выбранных счетов.Рассмотрим пример кода, который технический специалист или программист может использовать для принудительного изменения флага актуальности у проблемного рабочего счета в базе данных:
НаборЗаписей = РегистрыСведений.РабочиеСчета.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Счет.Установить(ПланыСчетов.ЕПСБУ.НайтиПоКоду("208.34"));
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
// Проверяем связь со старым КПС и меняем активность
Если Запись.КПС.Код = "00000244" И Запись.Период = Дата("20160101") Тогда
Запись.Актуальность = Ложь;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();
Важное предупреждение: Любое прямое редактирование регистра сведений с помощью обработок или написания кода должно производиться исключительно после создания резервной копии базы данных. Некорректное изменение регистра может привести к потере аналитики в уже проведенных документах прошлых периодов.