Разработка нового функционала в среде «1С:Предприятие» часто сопровождается созданием уникальных (самописных) документов, которые должны отражать хозяйственные операции в бухгалтерском или налоговом учете. Довольно распространенной является ситуация, когда разработчик успешно запрограммировал проведение документа, проводки физически созданы и видны в журнале проводок или специальном отчете, однако при формировании стандартной Оборотно-сальдовой ведомости (ОСВ) нужные строки или суммы упорно не отображаются.
В этой статье мы подробно разберем все возможные причины такого поведения системы — от простых логических ошибок учета до глубоких архитектурных особенностей платформы «1С:Предприятие 8». Мы составим пошаговый алгоритм диагностики, который поможет вам быстро локализовать и устранить эту проблему.
Начнем с самой частой практической причины, с которой столкнулся автор рассматриваемой темы на форуме. Если документ делает и приход, и расход по одному и тому же счету и аналитике в пределах выбранного периода, или если его проводки перекрываются другими операциями, итоговое сальдо и обороты за период могут свернуться в ноль.
Рассмотрим, как это происходит:
Как проверить: откройте специализированный отчет КарточкаСчета по интересующему вас счету с отбором по вашему документу-регистратору или сформируйте ОтчетПоПроводкам. Если в карточке счета вы видите ваш документ, а следом за ним идет регламентный документ, обнуляющий сумму, значит, дело в логике закрытия периода.
Чтобы понять эту проблему, нам необходимо заглянуть под капот платформы 1С. База данных регистра бухгалтерии состоит из нескольких таблиц. Две основные из них:
Если в базе данных произошел технический сбой (например, аварийное завершение работы СУБД, некорректное обновление или программный сбой транзакции), актуальность таблицы итогов может нарушиться. Новые проводки вашего документа запишутся в физическую таблицу движений, но виртуальная таблица их «не увидит».
Решение проблемы по шагам:
Конфигуратор.УправлениеИтогами, где нужно проверить актуальность периода рассчитанных итогов регистра Хозрасчетный.При создании самописного документа разработчики часто совершают типичные ошибки в модуле проведения (в обработчике события ОбработкаПроведения). Разберем две наиболее коварные ошибки.
Ошибка А: Некорректное управление записью набора движений.
Платформа 1С самостоятельно управляет транзакцией проведения. Если в коде принудительно вызывается метод записи набора, но при этом свойство автоматической записи установлено некорректно, проводки могут физически не записаться или очиститься сразу после завершения процедуры проведения.
Проанализируем пример неправильного кода:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// НЕПРАВИЛЬНО:
Движение = Движения.Хозрасчетный.Добавить();
Движение.Период = Ссылка.Дата;
Движение.СчетДт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
Движение.СчетКт = ПланыСчетов.Хозрасчетный.Вспомогательный;
Движение.Сумма = 10000;
// Платформа ожидает, что запись произойдет автоматически,
// но если флаг Записывать сброшен, данные могут пропасть:
Движения.Хозрасчетный.Записывать = Ложь;
КонецПроцедуры
А теперь посмотрим, как этот код должен выглядеть в правильном исполнении:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// ПРАВИЛЬНО:
// Устанавливаем флаг обязательной записи набора движений при завершении транзакции
Движения.Хозрасчетный.Записывать = Истина;
Движение = Движения.Хозрасчетный.Добавить();
Движение.Регистратор = Ссылка;
Движение.Период = Ссылка.Дата;
Движение.Организация = Ссылка.Организация; // Важно заполнять разделитель учета!
Движение.СчетДт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
Движение.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками;
Движение.Сумма = 10000;
КонецПроцедуры
Ошибка Б: Передача некорректных типов данных в субконто.
Если на выбранном счете учета настроена аналитика (например, субконто типа СправочникСсылка.Контрагенты), а программист в коде проведения по ошибке передает туда значение другого типа (например, строку, ссылку на другой справочник или пустую ссылку не того типа), СУБД может записать это «кривое» значение в таблицу проводок. Однако виртуальные таблицы при попытке построить отчет ОСВ выполняют строгое левое соединение (JOIN) по типам данных. Запись с несовпадением типов отфильтруется и не попадет в ОСВ.
Выяснить эту причину можно с помощью отладчика, проверив типы заполняемых субконто в свойствах проводки.
В большинстве типовых и нетиповых конфигураций план счетов Хозрасчетный имеет разделители учета, главным из которых является измерение Организация.
Если при формировании проводки в коде вашего самописного документа реквизит Организация в регистре остался пустым или незаполненным, то:
Убедитесь, что в коде проведения заполняются все ключевые измерения регистра: Организация, Подразделение (если по счету ведется учет по подразделениям) и валюта (для валютных счетов).
Каждая запись в регистрах 1С имеет специальное системное поле — флаг Активность. Если данный флаг установлен в значение Ложь, проводки физически существуют в базе данных, но считаются выключенными (например, документ помечен на удаление, распроведен или временно отключен пользователем).
Проверьте в коде или через консоль запросов значение поля Активность для записей вашего документа.
Если вы разрабатываете и тестируете документ под правами Администратора (с полными правами), а бухгалтер утверждает, что документа в ОСВ нет — проверьте настройки безопасности RLS (Record Level Security).
Пользователю могут быть доступны права на чтение самого документа, но роли безопасности могут накладывать ограничения на чтение записей регистра бухгалтерии по конкретным подразделениям, организациям или группам доступа контрагентов. В этом случае для администратора ОСВ сформируется с учетом документа, а для рядового бухгалтера — без него.
Если ваш самописный документ предназначен для учета материальных ценностей на забалансовых счетах (например, счета серии МЦ, 001, 002 и т.д.), учитывайте особенности вывода таких счетов в ОСВ:
Иногда виновником проблемы становится локальный кэш метаданных на компьютере пользователя. ОСВ в современных конфигурациях построена на базе Системы компоновки данных (СКД). При добавлении нового документа или изменении структуры регистра локальный кэш может некорректно сопоставить старую схему компоновки с новыми данными.
Для устранения этой проблемы выполните следующие действия:
%userprofile%\AppData\Local\1C\1cv8.Используя этот комплексный чек-лист, вы сможете быстро разобраться, почему движения самописного документа отсутствуют в Оборотно-сальдовой ведомости, и оперативно исправить как программные ошибки, так и проблемы с настройкой ведения учета.