Почему не формируются проводки при программном создании документа Строка выписки банка в 1С 7.7

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

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

Анализ архитектуры формирования проводок в 1С 7.7

Для начала проанализируем, чем отличается «Комплексная конфигурация» (ТиС+Бух+ЗиК) от обычной «Бухгалтерии». В простой бухгалтерской конфигурации 7.7 проводки обычно жестко прописаны в модуле документа в процедуре ОбработкаПроведения. Однако в «Комплексной» реализована более сложная модель разделения учета на оперативный и бухгалтерский. Здесь проводки зачастую зависят не только от факта проведения документа, но и от заполнения специфических реквизитов, которые не всегда очевидны при программном заполнении объекта.

Критическая важность реквизита СуммаВзаиморасчетов

Как показывает практика и обсуждение в рассматриваемой теме, наиболее частой причиной отсутствия проводок является незаполненный реквизит СуммаВзаиморасчетов. В 1С 7.7 для документа СтрокаВыпискиБанка существует несколько полей для сумм:

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


Док = СоздатьОбъект("Документ.СтрокаВыпискиБанка");
Док.Новый();
Док.ДатаДок = ВыбДата;
Док.СчетДанные = ВыбСчет;
// Заполнение аналитики
Док.Субконто1 = ВыбКонтрагент;
Док.Субконто2 = ВыбДоговор;
// Обязательные суммы
Док.Сумма = 10000;
Док.СуммаВзаиморасчетов = 10000; 
Док.СуммаУчета = 10000;
// Установка вида операции (важно для проводок)
Док.ХозОперация = Справочник.ХозяйственныеОперации.НайтиПоКоду("ОплатаПоставщику");
Док.Записать();
Док.Провести();

Связь со справочником Хозяйственные операции

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

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

Режим формирования проводок: «Одновременно» или «Отложенно»

Разберем настройки самой системы, которые могут влиять на результат. В 1С 7.7 существует константа, определяющая режим формирования проводок. Найти её можно через меню: Сервис — Настройка параметров учета — Режимы.

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

Важно понимать, что если в базе включен отложенный режим, то программно созданный документ и не должен сразу генерировать проводки. Это нормальное поведение системы. Чтобы они появились, необходимо запустить регламентную обработку за соответствующий период.

Работа с обработкой Формирование проводок

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

Инициализация объекта Операция в коде

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

Проанализируем программный метод: если вы используете Провести(), убедитесь, что в конфигурации не стоит запрет на формирование проводок для данного типа пользователя или через интерфейсные ограничения. Также проверьте, используется ли метод ИспользоватьПроводки(), который в коде 7.7 может включать или выключать бухгалтерский слой для конкретного экземпляра документа.

Итоги и рекомендации

Подводя итог, если вы столкнулись с отсутствием проводок у программно созданной банковской выписки в 1С 7.7, выполните следующие шаги:

  1. Сравните в отладчике или через «Табло» все реквизиты ручного (корректного) документа и программного. Особое внимание уделите СуммаВзаиморасчетов, СуммаУчета и ХозОперация.
  2. Проверьте статус настройки «Режим формирования проводок» в параметрах учета.
  3. Убедитесь, что заполнены все необходимые аналитики (Субконто), так как отсутствие договора или статьи движения денежных средств может блокировать алгоритм подбора счетов.
  4. Если используется «Комплексная конфигурация», попробуйте перепровести созданные документы штатной групповой обработкой — это поможет исключить ошибки, связанные с особенностями контекста выполнения кода при записи из внешней обработки.

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

← На главную