Как правильно убрать неправильное субконто в 1С 7.7 и навести порядок на затратных счетах

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

В практике поддержки и администрирования систем на платформе 1С:Предприятие 7.7 часто встречается классическая проблема: добавление дополнительной аналитики (например, третьего субконто) на затратные счета (такие как 20, 26, 44) без соответствующей адаптации механизмов закрытия периода. В результате регламентный документ ЗакрытиеМесяца продолжает списывать затраты без учета новой аналитики, что приводит к образованию «каши» в Оборотно-сальдовой ведомости (ОСВ). На уровне самого счета сальдо закрывается в ноль, но при разворачивании по субконто отчет начинает пестрить огромными суммами с плюсом и минусом (краснотой).

В данной статье мы подробно разберем, как исправить эту ошибку, восстановить корректный учет и безболезненно вернуть структуру плана счетов к исходному или рабочему состоянию. Мы рассмотрим три различных сценария решения проблемы: от радикального удаления аналитики до более мягких административных и программных методов.

Подготовительный этап: Безопасность данных превыше всего

Любые манипуляции со структурой метаданных и планом счетов в 1С 7.7 могут необратимо изменить или удалить данные в базе. Поэтому перед выполнением любых действий мы в обязательном порядке должны создать резервную копию базы данных.

Для создания копии выполним следующие шаги:

  1. Убедимся, что все пользователи вышли из информационной базы. В 1С 7.7 монопольный доступ является обязательным условием для изменения метаданных.
  2. Если используется файловый вариант базы (DBF), полностью скопируем каталог с базой данных в безопасное место.
  3. Если используется SQL-версия, сделаем резервную копию (Backup) базы данных средствами СУБД (SQL Server Management Studio), а также сохраним файл метаданных 1Cv7.MD.
  4. Все дальнейшие эксперименты и тестирование процедур будем проводить исключительно на копии базы данных. Только после успешной проверки результатов на копии можно переносить изменения на рабочую базу.

Вариант №1. Физическое удаление лишнего субконто в Конфигураторе

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

Давайте разберем по шагам, что происходит в системе и как правильно выполнить эту операцию:

  1. Запустим Конфигуратор в монопольном режиме и откроем План счетов (меню «Словарь» — «Планы счетов» или через дерево метаданных).
  2. Найдем проблемный счет (в нашем примере — счет 26) и откроем его свойства.
  3. В списке субконто выделим третье субконто и удалим его.
  4. Сохраним изменения в конфигурации (нажав клавишу F7 или выбрав пункт меню «Файл» — «Сохранить»).

Важное предупреждение о сдвиге аналитики! В данном случае мы удаляем последнее, то есть третье субконто. Это относительно безопасная операция. Однако помните: если бы вы удаляли первое или второе субконто, оставшиеся аналитики сдвинулись бы на освободившееся место (например, второе стало бы первым). В 1С 7.7 это приводит к полной потере сопоставимости данных, когда контрагенты начинают отображаться в полях договоров, и наоборот. Всегда удаляйте только конечные субконто, либо будьте готовы к масштабной перенастройке.

При сохранении изменений система запустит реструктуризацию таблиц базы данных. Физически в таблице проводок 1SENTRY значения очищаемого субконто будут стерты во всех проводках по счету 26. После успешного сохранения метаданных необходимо обязательно запустить процедуру восстановления итогов.

Для этого в Конфигураторе:

  1. Перейдем в меню «Администрирование» — «Тестирование и исправление ИБ».
  2. Отметим флажками пункты «Проверка физической целостности», «Реиндексация таблиц» и «Пересчет бухгалтерских итогов».
  3. Нажмем кнопку «Выполнить».

После завершения тестирования запустим базу в режиме «Предприятие» и сформируем Оборотно-сальдовую ведомость по счету 26. Поскольку аналитика была удалена, «краснота» исчезнет, а обороты схлопнутся до уровня оставшихся двух субконто. Обязательно сверьте общую оборотку с базой-источником до изменений — итоговые цифры по балансу должны идеально совпадать.

Вариант №2. Установка признака «Только обороты» (Оборотное субконто)

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

По умолчанию для каждого субконто система ведет учет как оборотов, так и остатков. Если для третьего субконто включить признак «Только обороты», платформа перестанет рассчитывать и хранить сальдо в разрезе этого субконто на конец каждого периода.

Рассмотрим, как это сделать:

  1. В Конфигураторе откроем свойства счета 26 в Плане счетов.
  2. Для третьего субконто установим галочку в колонке «Только обороты» (в некоторых конфигурациях этот флаг называется «Оборотное»).
  3. Сохраним конфигурацию и выполним пересчет бухгалтерских итогов через «Тестирование и исправление ИБ».

Каков результат этого действия? В проводках значения субконто сохранятся, данные в документах не пострадают. Однако при формировании отчетов (ОСВ, Карточка счета) на конец периода «краснота» больше не будет отображаться. Все остатки будут автоматически сворачиваться на уровне счета без детализации по этому субконто. Это самый нетравматичный способ, не требующий перепроведения документов или написания сложных обработок.

Вариант №3. Программная очистка аналитики в проводках и документах

При физическом удалении субконто из плана счетов мы сталкиваемся с серьезной проблемой: данные из проводок удаляются, но в самих документах (в реквизитах шапки или табличных частей) ссылки на удаленный справочник остаются заполненными. Если в будущем вам потребуется перепровести старый документ (например, при восстановлении последовательности), модуль проведения может выдать ошибку из-за отсутствия связи или некорректного заполнения типов данных.

Чтобы избежать этого, мы можем воспользоваться программным методом очистки субконто прямо в режиме «1С:Предприятие» с помощью внешней обработки. Нам необходимо написать скрипт, который найдет все операции по счету 26 за проблемный период (2 года) и принудительно очистит значение третьего субконто в проводках, а также обнулит соответствующие реквизиты в документах.

Проанализируем пример кода для такой обработки:


// Процедура для очистки субконто в проводках операций
Процедура ОчиститьАналитикуНаСчете()
    ВыбСчет = СчетПоКоду("26");
    
    // Создаем объект для работы с операциями документов
    Оп = СоздатьОбъект("Операция");
    
    // Выбираем операции за весь период накопления ошибок
    Оп.ВыбратьОперации(ДатаНачала, ДатаКонца);
    
    Пока Оп.ПолучитьОперацию() = 1 Цикл
        Док = Оп.Документ;
        Модифицирован = 0;
        
        // Перебираем проводки операции
        Оп.ВыбратьПроводки();
        Пока Оп.ПолучитьПроводку() = 1 Цикл
            // Проверяем дебет проводки
            Если Оп.Дебет.Счет = ВыбСчет Тогда
                Если ПустоеЗначение(Оп.Дебет.Субконто(3)) = 0 Тогда
                    Оп.Дебет.Субконто(3, ""); // Очищаем третье субконто
                    Модифицирован = 1;
                EndIf;
            КонецЕсли;
            
            // Проверяем кредит проводки
            Если Оп.Кредит.Счет = ВыбСчет Тогда
                Если ПустоеЗначение(Оп.Кредит.Субконто(3)) = 0 Тогда
                    Оп.Кредит.Субконто(3, ""); // Очищаем третье субконто
                    Модифицирован = 1;
                EndIf;
            КонецЕсли;
        КонецЦикла;
        
        // Если были изменения в проводках, записываем операцию
        Если Модифицирован = 1 Тогда
            Оп.Записать();
            Сообщить("Очищены проводки в документе: " + Строка(Док));
        КонецЕсли;
    КонецЦикла;
    
    Предупреждение("Программная очистка проводок успешно завершена!");
КонецПроцедуры

После очистки проводок с помощью этого кода мы также должны программно обойти все документы, которые делают движения по 26 счету (например, УслугиСтороннихОрганизаций, Амортизация, ПеремещениеМатериалов), и очистить реквизиты, хранящие ссылки на это субконто. Для этого можно использовать стандартную обработку «Поиск и замена значений» или написать точечную обработку метаданных.

Особенности обновления измененных конфигураций

Если вы выбрали первый вариант (удаление субконто из метаданных), помните о нюансах последующей поддержки конфигурации. Счет 26 является предопределенным в типовых планах счетов 1С. Любое ручное вмешательство в его структуру усложнит процедуру обновления релиза конфигурации:

Резюме и рекомендации

Подводя итог, выделим оптимальный алгоритм действий в зависимости от вашей ситуации:

  1. Если вам нужно решить проблему максимально быстро, безопасно и без риска потерять данные — используйте Вариант №2 (сделайте субконто оборотным). Это скроет «красноту» в ОСВ и решит проблему с закрытием периода без изменения структуры таблиц БД.
  2. Если вы хотите полностью избавиться от следов некорректной аналитики и вернуть конфигурацию к типовому виду — используйте Вариант №1 (удаление в метаданных) с обязательным последующим «Тестированием и исправлением» и пересчетом итогов на копии базы.
  3. Если вы удаляете субконто, но планируете перепроводить документы прошлых периодов — обязательно проведите программную очистку реквизитов документов (Вариант №3), чтобы исключить возникновение ссылочной целостности и ошибок проведения в будущем.
← На главную