При оформлении первичных документов нередко возникает задача оприходовать в одной поставке как обычные товары для перепродажи (счет 41.01), так и объекты, относящиеся к оборудованию или основным средствам (счет 08.04). Часто пользователи хотят автоматизировать этот процесс так, чтобы программа сама проверяла стоимостной порог позиции и при превышении лимита автоматически подставляла счет капитальных вложений.
Разберем подробно, почему типовой механизм счетов учета не поддерживает условия по стоимости, какие штатные инструменты заложены в «1С:Бухгалтерия 3.0» и как решить задачу программными средствами.
Проанализируем работу регистра сведений СчетаУчетаНоменклатуры. В типовой конфигурации счет учета в строке документа определяется строго по иерархическому алгоритму поиска соответствий со следующими аналитиками:
Номенклатура;Важно: в регистре СчетаУчетаНоменклатуры нет реквизитов для анализа цены, суммы строки или количества. Таким образом, исключительно штатными пользовательскими настройками регистра невозможно реализовать динамическое правило «если сумма больше 40 000 (или 100 000) рублей — ставить счет 08.04, иначе 41.01».
Рассмотрим стандартные сценарии программы, позволяющие корректно вести учет без доработки конфигурации:
08.04.41.01), «Оборудование» (счет 08.04.1) и «Услуги». Это позволяет провести единый документ по накладной поставщика без дробления.Номенклатура отдельную папку или вид номенклатуры «Оборудование» и настраиваем в регистре СчетаУчетаНоменклатуры для этой папки счет 08.04.1. При выборе позиции из этой группы счет подставится автоматически вне зависимости от выбранной вкладки.08.04.1 («Приобретение компонентов основных средств») полностью совпадают с субконто счета 41.01 (это справочники Номенклатура, Склады и Партии). Поэтому бухгалтер может вручную выбрать счет 08.04.1 прямо в табличной части «Товары». При этом счет 08.04.2 использовать в таблице товаров нельзя, так как его аналитикой является справочник ОсновныеСредства.Если требуется строго автоматическое заполнение счетов в зависимости от суммы строки при заполнении накладной, применим один из способов доработки без изменения типовой конфигурации.
Разберем создание подключаемой обработки по стандарту БСП (Библиотеки Стандартных Подсистем). Обработка регистрируется в справочнике «Дополнительные отчеты и обработки» с видом ЗаполнениеФормы и добавляет кнопку в меню «Заполнить» документа поступления.
Посмотрим на пример серверного кода обработки, который перебирает строки табличной части «Товары», проверяет лимит суммы и переназначает счет учета:
// Процедура заполнения табличной части документа
Процедура ВыполнитьНазначениеСчетов(ОбъектНазначения, ПорогСуммы) Экспорт
СчетОборудование = ПланыСчетов.Хозрасчетный.НайтиПоКоду("08.04.1");
СчетТовары = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
Для Каждого СтрокаТЧ Из ОбъектНазначения.Товары Цикл
Если СтрокаТЧ.Сумма >= ПорогСуммы Тогда
СтрокаТЧ.СчетУчета = СчетОборудование;
Иначе
СтрокаТЧ.СчетУчета = СчетТовары;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Для мгновенной реакции формы при вводе цены или суммы создаем расширение конфигурации. В расширении перехватываем клиентские события изменения полей табличной части (СуммаПриИзменении, ЦенаПриИзменении, КоличествоПриИзменении) с помощью аннотации &После.
При изменении суммы алгоритм проверяет заданный лимит стоимости и автоматически пересчитывает реквизит СчетУчета текущей строки без необходимости нажатия дополнительных кнопок.