Как убрать количественный остаток без суммы на счете 10.11 в 1С 7.7

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

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

Выясним причину возникновения остатка в бухгалтерском учете

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

  1. Передача в эксплуатацию: в момент выдачи спецодежды формируется дебетовый оборот по счету 10.11, фиксирующий как количество предметов, так и их первоначальную стоимость.
  2. Погашение стоимости (амортизация): стоимость переданных материалов переносится на затраты предприятия (например, на счета 20, 25, 26). Это делается либо единовременно в момент выдачи (для недорогой спецодежды со сроком службы до года), либо ежемесячно линейным методом. При этом регламентная операция формирует проводку по кредиту счета 10.11 только на сумму, не уменьшая физическое количество.
  3. Итоговое сальдо: когда вся стоимость полностью перенесена на затраты, сальдо на счете 10.11 показывает сумму 0 рублей, но вещь продолжает числиться за работником в количестве 1 штуки для контроля ее фактического использования и сохранности.

Таким образом, остаток образовался в результате разницы оборотов по разным проводкам, а проводок с нулевой суммой в базе может не быть вовсе.

Разберем ошибки при поиске через объект Операция

Посмотрим на типичный ошибочный код, с помощью которого часто пытаются найти такие остатки:


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

В этом фрагменте допущено сразу несколько фундаментальных ошибок платформы 1С:Предприятие 7.7:

  1. Метод ВыбратьОперацииСПроводками перебирает документы-операции. Для перемещения по выборке необходимо сначала вызывать метод ПолучитьОперацию(), и только затем внутри перебирать проводки, если они требуются.
  2. Проверка реквизита Сумма у проводки ничего не дает: проводка списания стоимости имела конкретную ненулевую сумму, а ввод в эксплуатацию содержал и сумму, и количество. Нулевым является конечное сальдо на счете, а не сумма отдельной хозяйственной операции.
  3. Прямое удаление проводок документа через объект Операция нарушает ссылочную целостность базы: документ останется с пометкой проведения, но потеряет движения, а при первой же групповой перепроводке документов все движения восстановятся заново.

Способ 1. Штатное оформление списания материалов из эксплуатации

Методически правильный способ избавиться от зависшего количественного остатка — зафиксировать физическое выбытие спецодежды типовыми средствами конфигурации. Если срок носки истек или вещь пришла в негодность, необходимо:

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

Способ 2. Поиск остатков через объект БухгалтерскиеИтоги

Если позиций много и необходимо выявить все объекты, у которых зависло количество без суммы, используем объект БухгалтерскиеИтоги. В отличие от перебора проводок, бухгалтерский запрос сразу возвращает агрегированные остатки на заданную дату с учетом всех субконто.

Рассмотрим пример кода для выборки зависших позиций:


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

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

Способ 3. Автоматизированное списание количества без суммы

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

  1. Создаем новую операцию с помощью метода Новая() объекта Операция.
  2. Добавляем новую проводку: по кредиту указывается счет "10.11" с заполнением всех необходимых субконто (номенклатура, материально ответственное лицо).
  3. В проводке заполняем только количество (Опер.Количество = НужноеКоличество), а поле суммы оставляем равным 0. Дебет проводки можно оставить пустым либо использовать забалансовый счет в зависимости от учетной политики организации.
  4. Записываем операцию с помощью метода Записать().

Такой подход полностью устраняет нулевое сальдо по счету 10.11, сохраняя при этом корректную историю движений и хронологию бухгалтерского учета.

← На главную