Разберем типичную проблему, с которой сталкиваются пользователи программы 1С:Управление торговлей 11.5. При создании документа «Расходный кассовый ордер» (РКО) на операцию «Инкассация» (сдача денежных средств в банк), кассирам при выборе банковского счета организации открывается полный список всех открытых счетов. В этом списке легко запутаться, что приводит к выбору ошибочных реквизитов. Переименование счетов помогает лишь частично, поэтому возникает закономерный вопрос: как типовыми или неинвазивными методами настроить автоподстановку нужного счета?
Проанализируем ситуацию и выясним причину, почему система ведет себя именно так, а затем рассмотрим несколько рабочих способов решения данной задачи.
В современных версиях 1С:УТ 11.5 разработчики отказались от жестко заданного реквизита «Основной банковский счет» в карточке организации. Вместо этого применяется платформенный механизм ЗаполнениеСвойствПоСтатистике.
Система анализирует последние введенные документы пользователя (как правило, 5 последних записей). Если кассир по ошибке выберет неправильный счет несколько раз подряд, система «переобучится» и начнет по умолчанию подставлять этот ошибочный счет во все новые документы. Именно поэтому механизм статистики в случае со строгим регламентом инкассации работает ненадежно и требует вмешательства.
Это самый простой и быстрый способ жестко привязать конкретный счет к конкретной кассе. Разберем по шагам, как это реализовать:
Кассы и заведем новый дополнительный реквизит (используя табличную часть ДополнительныеРеквизиты). Назовем его, например, «Счет инкассации» и укажем тип данных — ссылка на справочник банковских счетов.РасходныйКассовыйОрдер.КассаПриИзменении.БанковскийСчет.Важное замечание: Если вы решите реализовывать собственную логику автоподстановки, настоятельно рекомендуется отключить для пользователей-кассиров типовое автозаполнение по статистике. Иначе два механизма начнут конфликтовать, что приведет к непредсказуемому перезаполнению реквизитов.
Вместо жесткой принудительной подстановки можно использовать более гибкий вариант — фильтрацию выпадающего списка. Рассмотрим этот подход подробнее.
С помощью расширения мы можем ограничить список счетов, который видит кассир при попытке заполнить реквизит. Для этого необходимо перехватить одно из событий:
ПриНачалеВыбора элемента формы (поля ввода банковского счета) в документе РКО.ОбработкаПолученияДанныхВыбора в модуле менеджера справочника БанковскиеСчетаОрганизаций.В обработчике мы накладываем отбор, например, по определенному признаку или заранее заданному списку. В результате при нажатии на кнопку выбора кассир увидит не все счета организации (расчетные, зарплатные, валютные), а только один-два целевых счета, предназначенных для инкассации. Это полностью исключит возможность ошибки, сохранив при этом интерактивность выбора.
Посмотрим на пример решения проблемы без написания кода, исключительно архитектурными методами прав доступа. Если кассирам по роду их деятельности в принципе не нужно видеть основную массу расчетных, депозитных и валютных счетов компании, задачу можно решить через RLS (Record Level Security — ограничение прав доступа на уровне записей).
Разберем этот вариант:
При такой настройке выпадающий список банковских счетов в любых документах сократится естественным образом. Кассир физически не сможет выбрать неправильный счет, так как система просто не покажет его в списке доступных.
Используйте тот метод, который лучше всего вписывается в архитектуру вашей базы и текущие бизнес-процессы компании.