Как настроить автоподстановку банковского счета в РКО при инкассации в 1С:УТ 11?

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

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

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

Почему не работает типовая привязка счета?

В современных версиях 1С:УТ 11.5 разработчики отказались от жестко заданного реквизита «Основной банковский счет» в карточке организации. Вместо этого применяется платформенный механизм ЗаполнениеСвойствПоСтатистике.

Система анализирует последние введенные документы пользователя (как правило, 5 последних записей). Если кассир по ошибке выберет неправильный счет несколько раз подряд, система «переобучится» и начнет по умолчанию подставлять этот ошибочный счет во все новые документы. Именно поэтому механизм статистики в случае со строгим регламентом инкассации работает ненадежно и требует вмешательства.

Решение 1: Использование расширения и дополнительного реквизита

Это самый простой и быстрый способ жестко привязать конкретный счет к конкретной кассе. Разберем по шагам, как это реализовать:

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

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

Решение 2: Фильтрация списка выбора счетов

Вместо жесткой принудительной подстановки можно использовать более гибкий вариант — фильтрацию выпадающего списка. Рассмотрим этот подход подробнее.

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

  1. Событие ПриНачалеВыбора элемента формы (поля ввода банковского счета) в документе РКО.
  2. Или событие ОбработкаПолученияДанныхВыбора в модуле менеджера справочника БанковскиеСчетаОрганизаций.

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

Решение 3: Использование ограничения доступа (RLS)

Посмотрим на пример решения проблемы без написания кода, исключительно архитектурными методами прав доступа. Если кассирам по роду их деятельности в принципе не нужно видеть основную массу расчетных, депозитных и валютных счетов компании, задачу можно решить через RLS (Record Level Security — ограничение прав доступа на уровне записей).

Разберем этот вариант:

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

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

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

← На главную