Многие пользователи конфигурации 1С:Управление торговлей 10.3 сталкиваются с необходимостью постоянно вручную выбирать Вид оплаты при создании документа Оплата от покупателя платежной картой. В типовом функционале программы не предусмотрена штатная настройка для автоматической подстановки этого значения. Однако, обладая доступом к конфигуратору, мы можем самостоятельно автоматизировать этот процесс.
Для того чтобы понять, как именно автоматизировать заполнение, давайте проанализируем модуль формы документа. В УТ 10.3 логика работы с эквайрингом тесно завязана на реквизит ДоговорЭквайринга. Именно при выборе договора в форме документа срабатывает обработчик события ПриИзменении, который инициализирует расчеты, связанные с торговой уступкой.
Посмотрим на пример кода, который уже реализован в типовой конфигурации (процедура ДоговорЭквайрингаПриИзменении):
Процедура ДоговорЭквайрингаПриИзменении(Элемент)
ПриИзмененииДоговораЭквайринга;
Если НЕ ЗначениеЗаполнено(ВидОплаты) Тогда
Ответ = КодВозвратаДиалога.Да;
Иначе
Ответ = Вопрос("Пересчитать значение торговой уступки?", РежимДиалогаВопрос.ДаНет);
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
ПроцентТорговойУступки = УправлениеРозничнойТорговлей.ПолучитьПроцентТорговойУступки(ДоговорЭквайринга, ВидОплаты);
ПересчитатьТорговуюУступку;
КонецЕсли;
УстановитьВидимость;
КонецПроцедуры
Чтобы система «запоминала» и подставляла Вид оплаты автоматически, нам необходимо модифицировать процедуру ПриИзмененииДоговораЭквайринга. Рассмотрим пошаговый план действий:
ОплатаОтПокупателяПлатежнойКартой.ДоговорЭквайринга.ПриИзменении. Убедитесь, что оно ссылается на соответствующую процедуру в модуле формы.ПриИзмененииДоговораЭквайринга, добавив логику получения Вида оплаты из выбранного договора.Разберем, как может выглядеть дополнение кода. Нам нужно, чтобы при выборе договора эквайринга система проверяла, заполнен ли Вид оплаты, и если нет — подставляла значение по умолчанию. Важно учитывать, что при изменении Вида оплаты необходимо корректно пересчитать торговую уступку, иначе данные в документе будут неверными.
Процедура ПриИзмененииДоговораЭквайринга()
// Получаем текущий эквайрер и валюту
Эквайрер = ДоговорЭквайринга.Эквайрер;
ДоговорВзаиморасчетовЭквайрера = ДоговорЭквайринга.ДоговорВзаиморасчетов;
// Если ВидОплаты пуст, пробуем подставить значение
Если НЕ ЗначениеЗаполнено(ВидОплаты) Тогда
ВидОплаты = ДоговорЭквайринга.ОсновнойВидОплаты; // Пример обращения к реквизиту договора
КонецЕсли;
// Далее стандартный код пересчета
ВалютаДокумента = ДоговорВзаиморасчетовЭквайрера.ВалютаВзаиморасчетов;
УстановитьКурсДокумента;
Если РасшифровкаПлатежа.Количество > 0 Тогда
Для каждого СтрокаПлатеж Из РасшифровкаПлатежа Цикл
РассчитатьСуммуПлатежа;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Работая с кодом конфигурации 1С, придерживайтесь следующих правил:
Договоры эквайринга у вас корректно заполнены данные, к которым вы обращаетесь в коде.РассчитатьСуммуПлатежа), иначе сумма документа будет рассчитана без учета комиссии банка, что приведет к ошибкам в управленческом учете.Видов оплаты, предусмотрите логику проверки, чтобы система не подставила неверный вид карты для конкретного договора.Надеемся, что это подробное описание поможет вам эффективно автоматизировать рутинные операции в УТ 10.3 и сэкономить время пользователей при работе с платежными документами.