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

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

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

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

Почему стандартных настроек недостаточно?

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

Способ 1: Добавление новой настройки в План видов характеристик

Это самый «правильный» и архитектурно верный способ для конфигураций на обычных формах (1С 8.2). Мы добавим персональную настройку для каждого менеджера.

Рассмотрим по шагам:

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

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

Нам нужно найти процедуру, которая вызывается при создании нового документа или при изменении организации. В этой процедуре мы добавим условие:


// Получаем настройку пользователя
ВариантСчета = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойБанковскийСчет");

Если ЗначениеЗаполнено(ВариантСчета) Тогда
    ЭтотОбъект.БанковскийСчетОрганизации = ВариантСчета;
Иначе
    // Если настройка не задана, используем стандартную логику организации
    ЭтотОбъект.БанковскийСчетОрганизации = ЭтотОбъект.Организация.ОсновнойБанковскийСчет;
КонецЕсли;

Способ 2: Использование подписки на событие «ОбработкаЗаполнения»

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

Мы создадим новый общий модуль (например, КастомныеНастройкиСервер) и добавим в него процедуру, которая будет срабатывать при создании новых документов. Назовем ее УстановитьСчетПоГруппеПользователя.

Разберем логику работы кода:

  1. Система определяет текущего пользователя.
  2. Проверяет, в какую группу доступа или подразделение входит пользователь.
  3. В зависимости от группы выбирает нужный Ссылка на банковский счет.

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

Способ 3: Решение через «Подразделения» (без программирования)

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

Если в вашей конфигурации включен учет по подразделениям, вы можете закрепить каждого менеджера за конкретным Подразделением. Хотя в типовой БП 2.0 прямой связи «Подразделение — Расчетный счет» нет, вы можете использовать это как условие в коде. Это проще, чем настраивать каждого пользователя индивидуально: вы один раз прописываете в коде, что для «Отдела западного направления» всегда ставится «Счет в банке ВТБ», а для «Центрального офиса» — «Счет в Сбербанке».

Особенности для 1С:Бухгалтерия 3.0 (Управляемые формы)

Если вы работаете в современной версии 3.0, ситуация упрощается. Выясним, какие штатные инструменты у нас есть. В разделе «Главное» — «Персональные настройки» уже предусмотрена возможность указать основной банковский счет.

Проанализируем приоритеты подстановки в 3.0:

Если менеджеры работают в 3.0, достаточно просто зайти под каждым пользователем и один раз установить этот параметр. Это не требует вмешательства программиста.

Рекомендации по реализации

При выборе способа реализации важно учитывать следующие моменты:

  1. Человеческий фактор: Если вы оставляете возможность ручного выбора, менеджеры все равно будут ошибаться. Поэтому после автоматической подстановки счета можно программно установить ТолькоПросмотр = Истина для поля счета, если у пользователя нет прав на его изменение.
  2. Обновляемость: Использование расширений (в 8.3) или подписок на события — лучший выбор, так как при обновлении конфигурации ваши правки не затрутся.
  3. Тестирование: Обязательно проверьте, как работает подстановка при копировании документов. Часто разработчики забывают, что при копировании старый счет из документа-образца может перекрыть вашу логику заполнения по умолчанию.

Подводя итог, можно сказать, что в версии 8.2 наиболее стабильным решением будет расширение Плана видов характеристик «Настройки пользователей», так как это дает администратору удобный интерфейс управления счетами без необходимости переписывать код при появлении нового менеджера или нового счета.

← На главную