Как реализовать гашение подарочного сертификата в документе Заказ клиента в 1С:Управление торговлей 11?

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

Реализация процесса гашения подарочных сертификатов непосредственно в Заказе клиента — это нетривиальная задача для разработчика, так как типовая конфигурация 1С:Управление торговлей 11 жестко связывает работу с сертификатами с документами Чек ККМ. Если вам требуется автоматизировать этот процесс в заказе, необходимо выполнить комплексную доработку, затрагивающую не только остатки сертификатов, но и механизмы взаиморасчетов.

Этап 1: Работа с регистрами накопления сертификатов

Прежде всего, разберем, какие регистры отвечают за корректное списание номинала сертификата. В типовой системе за это отвечают следующие объекты:

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

Этап 2: Настройка взаиморасчетов и аналитики

Основная сложность, с которой сталкиваются разработчики, — это отображение документа в блоке взаиморасчетов. Чтобы Заказ клиента «видел» оплату и не помечал документ как «серый» или неоплаченный, необходимо соблюсти строгую аналитическую чистоту движений.

Рассмотрим по шагам, как обеспечить корректную привязку:

  1. Заполнение аналитики: При программном заполнении движений обязательно используйте значения Организация, Партнер, Контрагент и Договор, которые уже установлены в Заказе клиента. Рекомендуем выбирать эти данные прямым запросом к Заказу клиента по ссылке на объект.
  2. Регистр «Расчеты с клиентами»: Этот регистр является фундаментальным для отчетности по долгам. Если движения в нем не содержат ссылок на объект расчетов (ваш заказ), система будет считать, что долг не погашен, а платежный документ является «висячим».
  3. Проверка структуры подчиненности: Убедитесь, что реквизит документа гашения (например, ЗаказКлиента) правильно заполнен. Это необходимо для того, чтобы механизм Зачета оплаты корректно подтягивал ваш документ в интерфейс заказа.

Этап 3: Обновление состояния заказа

Даже если регистры накопления заполнены верно, интерфейс заказа может продолжать показывать, что заказ не оплачен. Это связано с тем, что форма Заказа клиента опирается на регистр сведений Состояния заказов клиентов.

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

Примерная логика доработки (псевдокод):


// Получаем аналитику из Заказа
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Партнер, Контрагент, Договор, Организация ИЗ Документ.ЗаказКлиента ГДЕ Ссылка = &Заказ";
Запрос.УстановитьПараметр("Заказ", СсылкаНаЗаказ);
Результат = Запрос.Выполнить().Выбрать();

// После выполнения движений по регистрам накопления 
// ОБЯЗАТЕЛЬНО обновляем регистр сведений
НаборЗаписей = РегистрыСведений.СостоянияЗаказовКлиентов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Заказ.Установить(СсылкаНаЗаказ);
НаборЗаписей.Прочитать();
// Корректируем сумму оплаты в наборе и записываем
НаборЗаписей.Записать();

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

Если после всех манипуляций документ в списке «Зачета оплат» по-прежнему выглядит как неактивный (серый), проверьте следующие моменты:

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

← На главную