Как в 1С:Комплексная автоматизация 2 настроить автоматическую связь статьи ДДС со статьей расходов?

Программист 1С:Комплексная автоматизация Управленческий учет
← На главную

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

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

Методологическая причина: почему нет стандартной настройки?

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

  1. Статьи ДДС: используются для формирования «Отчета о движении денежных средств». Это кассовый метод. Нам важно знать, куда ушли «живые» деньги прямо сейчас.
  2. Статьи расходов: используются для формирования финансового результата (P&L) и расчета себестоимости. Это метод начисления.

В реальном бизнесе связь между ними не всегда «один к одному». Например, выплата поставщику по одной статье ДДС «Оплата товаров и услуг» может закрывать задолженность, которая на стороне расходов распределяется на «Транспортные услуги», «Основные материалы» или «Арендные платежи». Именно поэтому жесткая привязка на уровне справочников в 1С:КА 2 ограничила бы гибкость системы. Однако для прочих операционных расходов такая связь часто линейна, и желание автоматизировать её вполне оправдано.

Анализ стандартных механизмов системы

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

1. Настройка правил заполнения реквизитов (Банк). В системе существует механизм правил для банковских выписок. Мы можем настроить подстановку Статьи ДДС по ИНН контрагента или ключевым словам в назначении платежа. Однако этот механизм не умеет транслировать данные в Статью расходов. Он останавливается на уровне реквизитов денежных потоков.

2. Подсистема бюджетирования. Если в вашей базе включено Бюджетирование и планирование, можно создать «Правила получения фактических данных». Там настраивается связь между хозяйственными операциями и статьями бюджетов. Посмотрим на этот механизм внимательно: он работает «постфактум» для отчетов и не влияет на заполнение полей в момент создания документа Списание безналичных ДС.

3. Группы финансового учета (ГФУ). ГФУ позволяют настроить счета учета, но они не связывают аналитику двух разных справочников напрямую для целей автозаполнения экранных форм.

Таким образом, мы приходим к выводу, что штатными средствами, без изменения логики работы форм, задача автоматического заполнения не решается.

Техническое решение: создание «Маппинга» через расширение

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

Шаг 1: Создание регистра сведений для хранения связей

Для начала нам нужно место, где бухгалтер или администратор сможет указать пары соответствий. Создадим в расширении новый РегистрСведений, назовем его, например, ит_СвязьДДСИРасходов.

Настроим его структуру:

Сделаем этот регистр доступным в интерфейсе, чтобы пользователи могли самостоятельно заполнять таблицу соответствий. Для первичного наполнения регистра данными из внешних источников удобно использовать инструмент миграции данных между похожими конфигурациями 1С с сопоставлением по произвольным полям.

Шаг 2: Написание логики автозаполнения

Теперь проанализируем, где именно должно происходить заполнение. Основной документ, где это требуется — Списание безналичных денежных средств (а также Расходный кассовый ордер).

Нам необходимо перехватить событие изменения поля СтатьяДДС на форме документа. Для этого в расширении создадим обработчик события ПриИзменении для этого реквизита. Рассмотрим пример кода, который будет выполнять поиск соответствия:


&НаКлиенте
Процедура ит_СтатьяДДСПриИзмененииПосле(Элемент)
    
    // Получаем текущее значение статьи ДДС из данных формы
    ТекущаяСтатьяДДС = Объект.СтатьяДДС;
    
    Если ЗначениеЗаполнено(ТекущаяСтатьяДДС) Тогда
        // Вызываем серверную функцию для поиска маппинга
        НайденнаяСтатьяРасходов = ПолучитьСтатьюРасходовПоДДС(ТекущаяСтатьяДДС);
        
        Если ЗначениеЗаполнено(НайденнаяСтатьяРасходов) Тогда
            Объект.СтатьяРасходов = НайденнаяСтатьяРасходов;
            
            // Если в документе требуется указание подразделения-получателя 
            // или другой аналитики, можно добавить логику и для них
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСтатьюРасходовПоДДС(СтатьяДДС)
    // Выполняем запрос к нашему новому регистру сведений
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ит_СвязьДДСИРасходов.СтатьяРасходов КАК СтатьяРасходов
        |ИЗ
        |   РегистрСведений.ит_СвязьДДСИРасходов КАК ит_СвязьДДСИРасходов
        |ГДЕ
        |   ит_СвязьДДСИРасходов.СтатьяДДС = &СтатьяДДС";
    
    Запрос.УстановитьПараметр("СтатьяДДС", СтатьяДДС);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.СтатьяРасходов;
    КонецЕсли;
    
    Возврат Справочники.СтатьиРасходов.ПустаяСсылка();
КонецФункции

Шаг 3: Обработка табличных частей

Обратите внимание, что в документах 1С:КА 2 статья расходов может находиться не только в шапке, но и в табличной части (например, при расшифровке платежа). В этом случае процедуру ПриИзменении нужно будет добавить и для реквизита колонки в таблице РасшифровкаПлатежа.

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

Дополнительные рекомендации по внедрению

Выясним, какие еще нюансы стоит учесть при реализации этой связки:

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

Таким образом, мы выяснили, что прямой настройки «связать справочники» в 1С:КА 2 нет, но задача легко решается созданием небольшого расширения с регистром маппинга. Это обеспечит корректность учета и значительно ускорит работу оператора.

← На главную