При настройке статей расходов в 1С:ERP Управление предприятием (а также в 1С:Комплексная автоматизация) пользователи часто сталкиваются с тем, что в списке выбора счетов списания отсутствуют счета 90.02.1 и 90.02.2 («Себестоимость продаж»). Особенно остро эта проблема проявляется при обновлении старых релизов (начиная с версий 2.4.11/2.4.12 и в ветке 2.5), где ранее эти счета были выбраны и успешно работали.
В этой статье мы подробно разберем, почему разработчики 1С приняли решение ограничить выбор этих счетов, какие методологически верные альтернативы существуют в программе и как при необходимости обойти это ограничение техническими средствами.
Исключение счетов себестоимости продаж из помощника настройки статей расходов — это не ошибка релиза, а осознанное решение методологов фирмы 1С. Проанализируем логику, которой руководствовались разработчики:
20 («Основное производство»), а при закрытии месяца напрямую списывали их в дебет счета 90.02. 20) должны формировать себестоимость конкретной выпущенной продукции, выполненных работ или оказанных услуг. Списание со счета 20 напрямую в дебет 90.02 минуя выпуск или реализацию некорректно. Кто гарантирует, что в периоде списания расходов по этой статье у предприятия вообще были продажи?90.07), либо на управленческие (дебет 90.08) расходы.Чтобы предотвратить методологические ошибки пользователей и исключить некорректные проводки вида Дт 90.02 - Кт 20 напрямую через распределение расходов, разработчики жестко ограничили список доступных счетов в коде конфигурации.
Рассмотрим подробнее три основных варианта решения этой задачи: от изменения учетной политики до технического обхода ограничения.
Прежде чем прибегать к программированию и изменять конфигурацию, крайне рекомендуется обсудить с бухгалтерией и финансовой службой возможность ведения учета в соответствии со стандартами 1С:ERP. Для этого есть две отличные альтернативы.
Если ваша компания оказывает услуги, не имеющие материального выражения (консалтинг, IT, юридические услуги), то затраты целесообразно признавать управленческими (периодическими):
26 («Общехозяйственные расходы»).90.08 («Управленческие расходы»).Если вам принципиально важно использовать счет 20 и видеть проводку Дт 90.02 - Кт 20 (например, при строительно-монтажных работах или сложных услугах):
20 по аналитике номенклатурных групп или заказов.Дт 90.02.1 - Кт 20. В данном случае настраивать счет списания в самой статье расходов вообще не требуется.В настройках статьи расходов можно указать вариант распределения «На себестоимость продаж» (тип расходов: При продаже). При такой настройке затраты будут распределяться на конкретные документы реализации (сделки), а система позволит использовать счет 90.02 для отражения этих дополнительных расходов в себестоимости продаж. Для анализа таких данных в разрезе сделок подойдёт отчет по валовой прибыли с дополнительными расходами на документы продажи.
Если бухгалтерия категорически настаивает на старой схеме работы и не готова менять учетную политику, в актуальных версиях 1С:ERP можно временно обойти системный фильтр прямо в режиме «1С:Предприятие» без изменения кода:
90.02.1 и 90.02.2. Выберите их и сохраните настройки.Если вам необходимо вернуть возможность штатного выбора этих счетов без дополнительных действий со стороны пользователей, мы можем написать небольшое расширение конфигурации. Выясним причину ограничения на уровне кода.
Жесткий отбор накладывается в общих модулях регламентированного учета, которые отвечают за заполнение допустимых счетов для ГФУ расходов (Групп финансового учета доходов и расходов). Параметры выбора передаются на форму, отсекая счета группы 90.02.
Посмотрим на пример реализации обхода этого ограничения. Мы можем перехватить процедуру инициализации параметров выбора на форме создания ГФУ или статьи расходов с помощью механизма &После.
Разберем пример кода для расширения формы:
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверим наличие параметров отбора счетов в форме выбора
Если Параметры.Свойство("Отбор") И ТипЗнч(Параметры.Отбор) = Тип("Структура") Тогда
// Если в отборе присутствует ограничение по доступным счетам,
// мы можем программно очистить этот массив или добавить туда счета 90.02
Если Параметры.Отбор.Свойство("Ссылка") Тогда
// Очищаем принудительный список разрешенных счетов,
// чтобы пользователь мог выбрать любой счет из плана счетов
Параметры.Отбор.Исключить("Ссылка");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Также разработчики могут модифицировать запрос в форме выбора плана счетов регучета, если счета исключаются через специальный программный фильтр. Ниже представлен пример переопределения списка допустимых счетов в общем модуле:
&Вместо("ЗаполнитьСписокДопустимыхСчетов")
Процедура Расш1_ЗаполнитьСписокДопустимыхСчетов(СписокСчетов, НаправлениеДеятельности)
// Сначала вызываем стандартную логику конфигурации
ПродолжитьВызов(СписокСчетов, НаправлениеДеятельности);
// Принудительно добавляем счета себестоимости в список разрешенных
Счет90_02_1 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
Счет90_02_2 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.2");
Если ЗначениеЗаполнено(Счет90_02_1) Тогда
СписокСчетов.Добавить(Счет90_02_1);
КонецЕсли;
Если ЗначениеЗаполнено(Счет90_02_2) Тогда
СписокСчетов.Добавить(Счет90_02_2);
КонецЕсли;
КонецПроцедуры
Важное предупреждение: Применение программного обхода или лайфхака с отключением фильтров решает проблему заполнения реквизитов, однако при последующих обновлениях системы 1С:ERP алгоритмы закрытия месяца могут отработать непредсказуемо, если встретят непредусмотренную кодом проводку. Поэтому настоятельно рекомендуем рассмотреть переход на использование Работ или применение 26 счета в связке с 90.08.