Почему не заполняется книга продаж в 1С 7.7 и как это исправить при отсутствии документов-оснований

Программист 1С v7.7 Налоговый учет
← На главную

Работа в программных продуктах на платформе 1С:Предприятие 7.7, особенно в поздних релизах конфигурации «Бухгалтерский учет» (таких как 7.70.650), имеет свои нюансы, связанные с жесткой логикой алгоритмов НДС. Одной из самых неприятных ситуаций является момент, когда при нажатии кнопки «Заполнить» в документе Формирование книги продаж табличная часть остается абсолютно пустой, хотя все счета-фактуры в журнале присутствуют и проведены. Разберем детально, почему это происходит и как мы можем решить эту проблему, особенно если данные были перенесены из сторонних программ (например, из «1С:Торговля и Склад 7.7») некорректно.

В чем кроется корень проблемы: логика 1С 7.7

Проанализируем ситуацию. В типовой конфигурации 1С 7.7 алгоритм автоматического заполнения книги продаж (процедура Заполнить) опирается на несколько критически важных условий. Главным камнем преткновения часто становится реквизит ДокументОснование в счете-фактуре. Если этот реквизит пуст, стандартный запрос, встроенный в программный код документа, просто «не видит» такие счета-фактуры.

Это происходит потому, что программа пытается восстановить цепочку событий: отгрузка товаров или оказание услуг (первичный документ) → выставление счета-фактуры. Именно из документа-основания система берет данные о ставках НДС, суммах и, что немаловажно, определяет правомерность включения записи в книгу продаж в конкретном периоде. Если при переносе данных из «Торговли» вы перенесли только счета-фактуры и бухгалтерские проводки по счету 68.2, но не перенесли сами документы реализации (акты, накладные), то для системы связь разорвана.

Проверка забалансового учета (счет ЗПР)

Прежде чем приступать к исправлению кода, проанализируем состояние вспомогательных счетов. В 1С 7.7 учет НДС для книги продаж ведется на специальном забалансовом счете ЗПР («Записи книги продаж»). Рассмотрим алгоритм:

  1. При проведении корректно оформленного счета-фактуры (с основанием) программа делает проводку по дебету счета ЗПР.
  2. Документ Формирование книги продаж при нажатии кнопки «Заполнить» анализирует остатки и обороты по счету ЗПР в разрезе контрагентов, договоров и счетов-фактур.
  3. Если проводок по ЗПР нет, то даже при наличии проводок по счету 68.2 автоматического заполнения не произойдет.

Выясним причину отсутствия проводок по ЗПР: скорее всего, ваши счета-фактуры были просто записаны или перенесены без проведения, либо их проведение без «Основания» не инициирует запись в этот регистр (счет). Проверить это можно через «Отчет по проводкам», выбрав счет ЗПР за нужный период.

Решение №1: Метод «Самооснования» (Грязный хак)

Если документов реализации в базе действительно нет и восстанавливать их вручную не представляется возможным, мы можем применить программную хитрость. Тип реквизита ДокументОснование в счете-фактуре часто позволяет хранить ссылку на саму себя. Рассмотрим, как это реализовать с помощью небольшой внешней обработки:

Нам необходимо создать файл .ert, который переберет все счета-фактуры и пропишет в поле «Документ-основание» ссылку на этот же документ. Посмотрим на пример кода:


Процедура Выполнить()
    СФ = СоздатьОбъект("Документ.СчетФактураВыданный");
    СФ.ВыбратьДокументы(ДатаНач, ДатаКон);
    Пока СФ.ПолучитьДокумент() = 1 Цикл
        Если СФ.ДокументОснование.Выбран() = 0 Тогда
            СФ.ДокументОснование = СФ.ТекущийДокумент();
            СФ.Записать();
            // Попробуем перепровести, чтобы сформировались проводки по ЗПР
            Попытка
                СФ.Провести();
            Исключение
                Сообщить("Не удалось провести документ: " + СФ);
            КонецПопытки;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

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

Решение №2: Написание собственной обработки заполнения

Если мы не хотим «портить» данные в счетах-фактурах сомнительными основаниями, проанализируем второй вариант — создание внешней обработки, которая будет заполнять табличную часть документа Формирование книги продаж напрямую, игнорируя стандартные фильтры. Это более «чистый» путь с точки зрения методологии 1С.

Рассмотрим пошагово, что должна делать такая обработка:

  1. Мы выбираем в обработке конкретный документ Формирование книги продаж.
  2. Указываем период поиска счетов-фактур.
  3. Программно перебираем все документы СчетФактураВыданный за период.
  4. Для каждого найденного документа добавляем новую строку в табличную часть Книги продаж.

Пример кода для такой обработки:


Процедура ЗаполнитьКнигу(ДокКнигаПродаж)
    ДокСФ = СоздатьОбъект("Документ.СчетФактураВыданный");
    ДокСФ.ВыбратьДокументы(ДатаНач, ДатаКон);
    
    ДокКнигаПродаж.УдалитьСтроки(); // Очищаем старые записи
    
    Пока ДокСФ.ПолучитьДокумент() = 1 Цикл
        // Проверяем, чтобы СФ была проведена
        Если ДокСФ.Проведен() = 0 Тогда
            Продолжить;
        КонецЕсли;
        
        ДокКнигаПродаж.НоваяСтрока();
        ДокКнигаПродаж.СчетФактура = ДокСФ.ТекущийДокумент();
        ДокКнигаПродаж.ДатаОплаты = ДокСФ.ДатаДок; // Условно ставим дату документа
        ДокКнигаПродаж.ВидОперации = "01"; // Обычная реализация
        
        // Заполняем остальные реквизиты из СФ
        ДокКнигаПродаж.Всего = ДокСФ.Итого;
        ДокКнигаПродаж.НДС = ДокСФ.ИтогоНДС;
        ДокКнигаПродаж.ПродажиБезНДС = ДокСФ.Итого - ДокСФ.ИтогоНДС;
    КонецЦикла;
    
    ДокКнигаПродаж.Записать();
    Сообщить("Табличная часть заполнена успешно!");
КонецПроцедуры

Нюансы релиза .650: Коды видов операций (КВО)

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

Проверка настроек договоров

Выясним еще одну возможную причину. В сообщении автора упоминалось, что галочки «Автообработка НДС» в договорах стоят. Однако в 1С 7.7 существует тонкий момент: если в учетной политике или в константах установлен метод определения налоговой базы «По оплате» (хотя это давно неактуально, настройки могли переехать из старых баз), то Формирование книги продаж будет искать не отгрузки, а факты поступления денежных средств, связанные со счетами-фактурами через основание. Убедитесь, что везде установлен метод «По отгрузке».

Если вы столкнулись с такой ситуацией, рекомендуем следующий алгоритм действий:

  1. Проверить наличие оборотов по счету ЗПР. Если их нет — документы нужно перепроводить.
  2. Если перепроведение не помогает из-за отсутствия «Основания» — используйте внешнюю обработку для заполнения табличной части документа Формирование книги продаж напрямую из журнала счетов-фактур.
  3. Убедитесь, что в сформированном документе корректно заполнены ставки НДС и коды видов операций.

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

← На главную