Как добавить отбор по номенклатурной группе или автомобилю в ОСВ по счету в 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

При работе в 1С:Бухгалтерия предприятия 3.0 (БП 3.0) пользователи и начинающие разработчики часто сталкиваются с ситуацией, когда в документе (например, в «Поступлении товаров») заполняется определенное поле (например, Субконто3 или Номенклатурная группа), но при формировании Оборотно-сальдовой ведомости (ОСВ) по счету 10 эти данные невозможно выбрать для группировки или отбора. Рассмотрим подробнее, почему это происходит и как правильно организовать аналитический учет, чтобы получить нужные данные.

Разберем причину: почему поле в документе не попадает в ОСВ?

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

Проанализируем ситуацию: в типовой конфигурации БП 3.0 для счета 10 (Материалы) обычно определены следующие виды субконто:

  1. Номенклатура
  2. Склады
  3. Партии (если включен партионный учет в настройках параметров учета)

Если в плане счетов у конкретного счета (например, 10.01) не задан вид субконто Номенклатурные группы, то программа просто «не знает», куда записывать эти данные в проводке. Даже если в экранной форме документа вы видите поле Субконто3, оно может относиться к корреспондирующему счету (например, к счету затрат 20.01 или 44.01), но никак не к счету 10. Попытка программно «запихнуть» значение в субконто, которого нет на счете в плане счетов, ни к чему не приведет — данные не будут сохранены в регистре.

Решение 1: Использование складов в качестве автомобилей

Самый простой и методически верный способ организовать учет запчастей и ГСМ в разрезе конкретных транспортных средств — это заведение каждого автомобиля в справочнике Склады. Рассмотрим этот метод по шагам:

  1. Создадим в справочнике Склады элементы с наименованиями ваших автомобилей (например, «Грузовик АУ 123», «Легковая ББ 777»).
  2. При поступлении запчастей или топлива указывайте в качестве склада конкретный автомобиль.
  3. При списании (документ «Расход материалов») также выбирайте соответствующий склад-автомобиль.

В этом случае в стандартной ОСВ по счету 10 вы сможете легко сделать отбор по полю Склад и увидеть все остатки и обороты в разрезе конкретного транспортного средства. Это не требует программирования и изменения плана счетов.

Решение 2: Использование специализированных субсчетов (10.03.2)

Выясним, предоставляет ли типовое решение готовые инструменты. В 1С:БП 3.0 существует субсчет 10.03.2 (Топливо в баках), который специально предназначен для учета ГСМ по транспортным средствам. На этом счете по умолчанию настроены субконто:

Если ваша задача — вести учет именно ГСМ, правильнее использовать этот счет. Если же нужно вести учет запчастей, вы можете создать свой субсчет (например, 10.03.3) по аналогии с 10.03.2, добавив туда нужную аналитику (субконто). Однако помните о важном ограничении платформы: на одном счете может быть не более 3-х субконто.

Решение 3: Использование дополнительных реквизитов (без программирования)

Если вам нужно делать отбор по «Номенклатурной группе» или «Автомобилю», а менять структуру складов нельзя, воспользуемся механизмом Дополнительных реквизитов и сведений. Проанализируем, как это работает:

  1. Перейдем в раздел Администрирование — Общие настройки — Дополнительные реквизиты и сведения.
  2. Добавим к справочнику Номенклатура новый дополнительный реквизит (например, «Основной автомобиль»).
  3. В настройках ОСВ по счету на закладке «Отборы» нажмем кнопку выбора поля.
  4. Найдем Субконто 1 (Номенклатура), раскроем его через «плюс» и увидим наш дополнительный реквизит.

Этот метод позволяет делать отборы в стандартных отчетах СКД без написания кода и изменения плана счетов. Однако он работает, если запчасть жестко привязана к одной машине.

Решение 4: Программное изменение плана счетов (для разработчиков)

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

Нельзя просто вызвать Удалить() у коллекции видов субконто ссылки. Нужно получить объект счета, изменить его и записать. Разберем правильный подход к изменению плана счетов через код:


// Пример программного изменения состава субконто на счете
Процедура ДобавитьАналитикуНаСчет(НужныйСчет, ВидСубконто) Экспорт
    СчетОбъект = НужныйСчет.ПолучитьОбъект();
    
    // Проверяем, нет ли уже такого субконто и не превышен ли лимит (3)
    Если СчетОбъект.ВидыСубконто.Количество() >= 3 Тогда
        Сообщить("На счете уже максимальное количество субконто!");
        Возврат;
    КонецЕсли;
    
    // Добавляем новый вид аналитики
    НоваяСтрока = СчетОбъект.ВидыСубконто.Добавить();
    НоваяСтрока.ВидСубконто = ВидСубконто;
    НоваяСтрока.ТолькоОбороты = Ложь; // Если нужны остатки
    
    Попытка
        СчетОбъект.Записать();
        Сообщить("Счет успешно обновлен");
    Исключение
        Сообщить("Ошибка записи: " + ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

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

Почему возникают ошибки при добавлении субконто «Склады»?

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

  1. Номенклатура.
  2. Партии (добавляется автоматически при включении партионного учета в настройках).
  3. Номенклатурные группы (если кто-то уже добавил их программно, как автор темы).

В такой ситуации добавить Склады (третье или четвертое субконто) штатными средствами невозможно. Чтобы вернуть систему в рабочее состояние, необходимо сначала программно удалить лишнее, некорректно добавленное субконто (например, ту самую Номенклатурную группу), а затем включить складской учет через стандартные настройки параметров учета.

Выясним, как правильно удалять субконто

Если вы ошибочно добавили аналитику и хотите её убрать, используйте следующий подход:


СчетОбъект = ПланыСчетов.Хозрасчетный.СырьеИМатериалы.ПолучитьОбъект();
ИндексДляУдаления = -1;

Для Ит = 0 По СчетОбъект.ВидыСубконто.Количество() - 1 Цикл
    Если СчетОбъект.ВидыСубконто[Ит].ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы Тогда
        ИндексДляУдаления = Ит;
        Прервать;
    КонецЕсли;
КонецЦикла;

Если ИндексДляУдаления <> -1 Тогда
    СчетОбъект.ВидыСубконто.Удалить(ИндексДляУдаления);
    СчетОбъект.Записать();
КонецЕсли;

После очистки лишней аналитики рекомендуется воспользоваться типовым интерфейсом настроек (Главное — Настройки — Параметры учета — Настройки метода определения стоимости — Складской учет). Программа сама корректно добавит субконто Склады на все нужные счета плана счетов.

Заключение и рекомендации

Проанализировав проблему, мы пришли к выводу, что наиболее стабильным и дешевым в поддержке решением для учета в разрезе автомобилей является использование справочника Склады. Это позволяет использовать все стандартные отчеты конфигурации без риска ошибок при обновлении системы. Если же требуется сложный учет (с расчетом ГСМ по путевым листам, учетом шин, аккумуляторов и т.д.), рассмотрите возможность интеграции специализированных решений, таких как «1С:Управление автотранспортом» (УАТ), которые бесшовно синхронизируются с Бухгалтерией предприятия.

← На главную