При работе с программными продуктами 1С, в частности с «1С:Бухгалтерия 3.0», специалисты часто сталкиваются с необходимостью переноса данных между базами. Одной из самых распространенных и в то же время опасных ситуаций является использование обработки «Универсальный обмен данными в формате XML». В этой статье мы подробно разберем ситуацию, когда после переноса всего пары документов ПКО (Приходный кассовый ордер) из Плана счетов внезапно исчезает аналитика по статьям движения денежных средств (ДДС), и выясним, как вернуть работоспособность базы без обращения к старым резервным копиям. Чтобы избежать подобных сбоев при переезде на новую конфигурацию, лучше использовать специальные решения для переноса данных в 1С:Бухгалтерию из других систем.
Рассмотрим типичный сценарий. Программист или опытный пользователь переносит документы из тестовой или старой копии базы в рабочую. В базе-источнике могла быть отключена опция использования статей ДДС. При выгрузке через XML по умолчанию часто стоит флаг «Выгружать объекты со ссылками». Поскольку документ ПоступлениеНаРасчетныйСчет или ПриходныйКассовыйОрдер содержит ссылки на счета учета (например, 51 «Расчетные счета»), обработка «тянет» за собой и сам объект ПланСчетов.Хозрасчетный.
В «1С:Бухгалтерия 3.0» План счетов является «живым» механизмом. Многие субконто, включая СтатьиДвиженияДенежныхСредств, не зашиты в конфигурацию жестко, а добавляются программно при включении соответствующих функциональных опций. Если в базе-источнике эти субконто отсутствовали, то при загрузке XML в базу-приемник План счетов может быть перезаписан состоянием «без субконто». Это приводит к тому, что на 51 счете аналитика исчезает, хотя в самих документах (в табличной части «Расшифровка платежа») данные могут сохраняться.
Проанализируем интересную особенность: часто пользователи замечают, что на 50 счете (Касса) статьи остались, а на 51 (Банк) пропали. Это связано с тем, что в типовых решениях настройки счетов могут отличаться. Счет 50 часто имеет более жесткую привязку субконто в метаданных, в то время как 51 счет полностью полагается на механизмы Функциональных опций. Как только «кривой» План счетов прилетает извне, программные механизмы настройки аналитики дают сбой.
Это самый простой и эффективный способ «заставить» систему заново проанализировать План счетов и программно добавить недостающее субконто. Разберем этот процесс по шагам:
При повторном включении 1С выполняет код, аналогичный следующему (упрощенно):
Процедура ОбновитьСубконтоДДС()
СчетаДляДобавления = Новый Массив;
СчетаДляДобавления.Добавить(ПланыСчетов.Хозрасчетный.РасчетныеСчета);
СчетаДляДобавления.Добавить(ПланыСчетов.Хозрасчетный.Касса);
Для Каждого Счёт Из СчетаДляДобавления Цикл
// Логика проверки и добавления вида субконто "Статьи движения денежных средств"
// если его нет в коллекции Счёт.ВидыСубконто
КонецЦикла;
КонецПроцедуры
Этот метод восстанавливает структуру Плана счетов, возвращая ВидыСубконто на их законные места.
Если манипуляции с функциональностью не помогли, возможно, произошло нарушение ссылочной целостности или логической структуры таблиц. Выясним, как это исправить через Конфигуратор:
Проанализируем результат: ТиИ может восстановить внутренние связи, которые были нарушены при «насильственной» загрузке Плана счетов через XML.
Даже если субконто появилось в Плане счетов, старые проводки в регистре бухгалтерии могут остаться пустыми. Простая установка галочки не меняет уже записанные движения. Нам потребуется групповое перепроведение, после завершения которого для выявления скрытых расхождений можно запустить автоматическую сверку бухгалтерских проводок между базами.
РасшифровкаПлатежа) и, видя, что в Плане счетов теперь есть место для статьи ДДС, корректно заполнит аналитику.Посмотрим на пример кода, который отвечает за формирование движений в типовой бухгалтерии. Система проверяет наличие субконто перед записью:
Если БухгалтерскийУчетПовторноеИспользование.РазрезУчетаПоСтатьямДДСВключен() Тогда
// Если в Плане счетов субконто есть, то заполняем:
НоваяСтрокаДвижения.СубконтоКт[ВидыСубконтоХозрасчетные.СтатьиДвиженияДенежныхСредств] = СтрокаТЧ.СтатьяДДС;
КонецЕсли;
Чтобы не наступить на эти грабли снова, рассмотрим правила безопасного переноса данных через XML:
Важный совет: Если вы видите, что после загрузки данных «поплыл» План счетов, не пытайтесь вручную добавлять субконто в Конфигураторе. В БП 3.0 это может привести к еще более тяжелым последствиям, так как программные механизмы обновления конфигурации будут конфликтовать с вашими ручными изменениями. Всегда используйте штатные средства управления функциональностью через пользовательский интерфейс.