При разработке собственных документов в конфигурации «1С:Бухгалтерия предприятия 3.0» разработчики нередко сталкиваются с ситуацией: документ проводится без ошибок, движения в регистре формируются, однако при формировании стандартных отчетов («Оборотно-сальдовая ведомость», «ОСВ по счету» или «Карточка счета») проводки либо отсутствуют вовсе, либо отображаются некорректно при попытке получить детализацию по аналитике.
Проанализируем основные причины такого поведения и разберем по шагам, как правильно формировать движения по регистру бухгалтерии программно.
Самая распространенная причина, по которой отчеты не видят движений, — отсутствие значения в измерении Организация в наборе записей регистра бухгалтерии. В типовых конфигурациях 1С стандартные бухгалтерские отчеты практически всегда строятся с жестким отбором по текущей организации.
Если при формировании проводки в коде не присвоено значение свойству Проводка.Организация, запись попадает в регистр с пустой организацией. В результате при формировании общего журнала или отчетов без фильтрации обороты могут быть видны, но при выборе конкретной организации в шапке ОСВ эти данные полностью отсекаются системой компоновки данных.
При переносе сумм между договорами или контрагентами (например, по счету 76.09 «Прочие расчеты с разными дебиторами и кредиторами») важно правильно заполнять виды субконто:
Проводка.СубконтоДт[0] считается грубой ошибкой, так как при изменении состава или порядка субконто в плане счетов логика нарушится. Следует обращаться явно через предопределенные элементы: Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты].Документы расчетов с контрагентом), пропуск этого субконто приведет к тому, что при детализации отчетов сальдо не схлопнется или не попадет в расшифровку карточки счета.Проверим статус активности сформированных строк. Для того чтобы записи регистра бухгалтерии участвовали в расчете итогов и отображались в стандартных отчетах, они должны быть активными:
Активность должно принимать значение Истина (по умолчанию при проведении документа оно устанавливается автоматически, но при ручном управлении наборами записей его необходимо контролировать).Движения.Хозрасчетный.Записывать = Истина;.Когда «Карточка счета» формируется путем расшифровки (двойного клика) по строке ОСВ, платформа 1С передает в отчет полный набор установленных отборов. Если в созданной проводке какое-либо из субконто имеет значение Неопределено вместо ссылки на пустой элемент или не совпадает измерение (например, Подразделение, если включен учет по подразделениям), карточка счета вернет пустой результат, несмотря на наличие оборотов в общей ведомости.
Разберем пример корректного заполнения движений по счету расчетов в процедуре ОбработкаПроведения модуля документа:
Процедура ОбработкаПроведения(Отказ, Режим)
// Указываем необходимость записи набора проводок
Движения.Хозрасчетный.Записывать = Истина;
// Создаем новую проводку
Проводка = Движения.Хозрасчетный.Добавить();
Проводка.Период = Дата;
Проводка.Организация = Организация; // Обязательное заполнение балансового измерения
// Настройка счетов дебета и кредита
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами;
Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами;
// Заполнение аналитики Дебета
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Контрагент;
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры] = ДоговорНовый;
// Заполнение аналитики Кредита
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Контрагент;
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры] = ДоговорСтарый;
// Заполнение суммовых ресурсов
Проводка.Сумма = СуммаДокумента;
Проводка.СуммаНУДт = СуммаДокумента;
Проводка.СуммаНУКт = СуммаДокумента;
КонецПроцедуры
Если задача заключается исключительно во взаимозачете или переносе задолженности между договорами и контрагентами, создание собственного документа не всегда оправдано:
ОперацияБух, что исключает необходимость добавления новых объектов метаданных в конфигураторе.