В практике поддержки и администрирования систем на платформе 1С:Предприятие 7.7 часто встречается классическая проблема: добавление дополнительной аналитики (например, третьего субконто) на затратные счета (такие как 20, 26, 44) без соответствующей адаптации механизмов закрытия периода. В результате регламентный документ ЗакрытиеМесяца продолжает списывать затраты без учета новой аналитики, что приводит к образованию «каши» в Оборотно-сальдовой ведомости (ОСВ). На уровне самого счета сальдо закрывается в ноль, но при разворачивании по субконто отчет начинает пестрить огромными суммами с плюсом и минусом (краснотой).
В данной статье мы подробно разберем, как исправить эту ошибку, восстановить корректный учет и безболезненно вернуть структуру плана счетов к исходному или рабочему состоянию. Мы рассмотрим три различных сценария решения проблемы: от радикального удаления аналитики до более мягких административных и программных методов.
Любые манипуляции со структурой метаданных и планом счетов в 1С 7.7 могут необратимо изменить или удалить данные в базе. Поэтому перед выполнением любых действий мы в обязательном порядке должны создать резервную копию базы данных.
Для создания копии выполним следующие шаги:
1Cv7.MD.Если аналитика по третьему субконто действительно больше не нужна и собирать данные в этом разрезе не планируется, самым простым и радикальным решением будет полное удаление этого субконто из плана счетов в Конфигураторе.
Давайте разберем по шагам, что происходит в системе и как правильно выполнить эту операцию:
26) и откроем его свойства.Важное предупреждение о сдвиге аналитики! В данном случае мы удаляем последнее, то есть третье субконто. Это относительно безопасная операция. Однако помните: если бы вы удаляли первое или второе субконто, оставшиеся аналитики сдвинулись бы на освободившееся место (например, второе стало бы первым). В 1С 7.7 это приводит к полной потере сопоставимости данных, когда контрагенты начинают отображаться в полях договоров, и наоборот. Всегда удаляйте только конечные субконто, либо будьте готовы к масштабной перенастройке.
При сохранении изменений система запустит реструктуризацию таблиц базы данных. Физически в таблице проводок 1SENTRY значения очищаемого субконто будут стерты во всех проводках по счету 26. После успешного сохранения метаданных необходимо обязательно запустить процедуру восстановления итогов.
Для этого в Конфигураторе:
После завершения тестирования запустим базу в режиме «Предприятие» и сформируем Оборотно-сальдовую ведомость по счету 26. Поскольку аналитика была удалена, «краснота» исчезнет, а обороты схлопнутся до уровня оставшихся двух субконто. Обязательно сверьте общую оборотку с базой-источником до изменений — итоговые цифры по балансу должны идеально совпадать.
Если вы опасаетесь физически удалять метаданные или хотите сохранить накопленную историю операций в документах без изменения структуры плана счетов, существует более элегантный способ. Мы можем сделать третье субконто оборотным.
По умолчанию для каждого субконто система ведет учет как оборотов, так и остатков. Если для третьего субконто включить признак «Только обороты», платформа перестанет рассчитывать и хранить сальдо в разрезе этого субконто на конец каждого периода.
Рассмотрим, как это сделать:
26 в Плане счетов.Каков результат этого действия? В проводках значения субконто сохранятся, данные в документах не пострадают. Однако при формировании отчетов (ОСВ, Карточка счета) на конец периода «краснота» больше не будет отображаться. Все остатки будут автоматически сворачиваться на уровне счета без детализации по этому субконто. Это самый нетравматичный способ, не требующий перепроведения документов или написания сложных обработок.
При физическом удалении субконто из плана счетов мы сталкиваемся с серьезной проблемой: данные из проводок удаляются, но в самих документах (в реквизитах шапки или табличных частей) ссылки на удаленный справочник остаются заполненными. Если в будущем вам потребуется перепровести старый документ (например, при восстановлении последовательности), модуль проведения может выдать ошибку из-за отсутствия связи или некорректного заполнения типов данных.
Чтобы избежать этого, мы можем воспользоваться программным методом очистки субконто прямо в режиме «1С:Предприятие» с помощью внешней обработки. Нам необходимо написать скрипт, который найдет все операции по счету 26 за проблемный период (2 года) и принудительно очистит значение третьего субконто в проводках, а также обнулит соответствующие реквизиты в документах.
Проанализируем пример кода для такой обработки:
// Процедура для очистки субконто в проводках операций
Процедура ОчиститьАналитикуНаСчете()
ВыбСчет = СчетПоКоду("26");
// Создаем объект для работы с операциями документов
Оп = СоздатьОбъект("Операция");
// Выбираем операции за весь период накопления ошибок
Оп.ВыбратьОперации(ДатаНачала, ДатаКонца);
Пока Оп.ПолучитьОперацию() = 1 Цикл
Док = Оп.Документ;
Модифицирован = 0;
// Перебираем проводки операции
Оп.ВыбратьПроводки();
Пока Оп.ПолучитьПроводку() = 1 Цикл
// Проверяем дебет проводки
Если Оп.Дебет.Счет = ВыбСчет Тогда
Если ПустоеЗначение(Оп.Дебет.Субконто(3)) = 0 Тогда
Оп.Дебет.Субконто(3, ""); // Очищаем третье субконто
Модифицирован = 1;
EndIf;
КонецЕсли;
// Проверяем кредит проводки
Если Оп.Кредит.Счет = ВыбСчет Тогда
Если ПустоеЗначение(Оп.Кредит.Субконто(3)) = 0 Тогда
Оп.Кредит.Субконто(3, ""); // Очищаем третье субконто
Модифицирован = 1;
EndIf;
КонецЕсли;
КонецЦикла;
// Если были изменения в проводках, записываем операцию
Если Модифицирован = 1 Тогда
Оп.Записать();
Сообщить("Очищены проводки в документе: " + Строка(Док));
КонецЕсли;
КонецЦикла;
Предупреждение("Программная очистка проводок успешно завершена!");
КонецПроцедуры
После очистки проводок с помощью этого кода мы также должны программно обойти все документы, которые делают движения по 26 счету (например, УслугиСтороннихОрганизаций, Амортизация, ПеремещениеМатериалов), и очистить реквизиты, хранящие ссылки на это субконто. Для этого можно использовать стандартную обработку «Поиск и замена значений» или написать точечную обработку метаданных.
Если вы выбрали первый вариант (удаление субконто из метаданных), помните о нюансах последующей поддержки конфигурации. Счет 26 является предопределенным в типовых планах счетов 1С. Любое ручное вмешательство в его структуру усложнит процедуру обновления релиза конфигурации:
Подводя итог, выделим оптимальный алгоритм действий в зависимости от вашей ситуации: