- В этой теме 1 ответ, 2 участника, последнее обновление 9 часов, 13 минут назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как контролировать дубли банковских счетов в 1С:Комплексная автоматизация 2?
как сделать контроль дублей банковских счетов
Контроль дублей банковских счетов в 1С:Комплексная автоматизация 2 можно организовать через несколько подходов. В типовой конфигурации нет встроенного механизма, который автоматически запрещает дубли, но вы можете реализовать это самостоятельно.
Основные способы:
1. Создать уникальный индекс в конфигураторе на справочнике «Банковские счета» по полям «Номер счета» и «Банк» (или «Контрагент»). Это позволит базе данных не допускать дублирующие записи.
2. Добавить проверку в модуле объекта справочника «Банковские счета» в процедуре ПередЗаписью. В этой процедуре выполняется запрос, который ищет уже существующий счет с таким же номером и банком, кроме текущего элемента. Если такой счет найден, запись блокируется с предупреждением.
3. Использовать стандартные средства платформы для установки уникальности реквизита, если такая возможность доступна в вашей версии.
4. Для уже существующих данных можно создать отчет или обработку, которая будет искать дубли и позволять их исправлять вручную.
Таким образом, надежный контроль достигается сочетанием уникального индекса и проверки в ПередЗаписи.
Пример кода проверки дублей в модуле объекта справочника:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Процедура ПередЗаписью(Отказ) Запрос = Новый Запрос; Запрос.Текст = | "ВЫБРАТЬ | БанковскиеСчета.Ссылка | ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета | ГДЕ | БанковскиеСчета.НомерСчета = &НомерСчета | И БанковскиеСчета.Банк = &Банк | И БанковскиеСчета.Ссылка <> &ТекущийЭлемент"; Запрос.УстановитьПараметр("НомерСчета", ЭтотОбъект.НомерСчета); Запрос.УстановитьПараметр("Банк", ЭтотОбъект.Банк); Запрос.УстановитьПараметр("ТекущийЭлемент", ЭтотОбъект.Ссылка); Результат = Запрос.Выполнить().Выбрать(); Если Результат.Следующий() Тогда Предупреждение("Банковский счет с таким номером и банком уже существует."); Отказ = Истина; КонецЕсли; КонецПроцедуры |