Для контроля оплаты нам нужны всего две суммы - сумма договора и сумма платежей по данному договору. Получить эти суммы не составит никакого труда. Создадим общий модуль, в который поместим функции расчета вышеуказанных сумм. Почему общий модуль? Соображения просты - при обновлении конфигурации c ним ничего не случится. Если мы поместим эти функции в модуль объекта "Заявка на кассовый расход" (ЗКР), то при обновлении нужно будет предпринимать дополнительные действия, чтобы не потерять их.
Итак, создаем общий модуль, в нашем примере он называется EventProc. Вставляем в него следующие функции:
для получения суммы договора:
добавляем функцию для суммы платежей по договору:
И наконец, вставляем процедуру(обработчик события), которая будет выдавать предупреждающее сообщение, если сумма оплаты превысит сумму договора:
Теперь привяжем эту процедуру из модуля EventProc к какому либо событию в документе "Заявка на кассовый расход". В нашем случае это будет событие "ПриЗаписи". Для выполнения привязки создадим новый объект в ветке конфигуратора "Подписки на события" и назовем его - "ПриЗаписиЗКР". При помощи этого объекта ("ПриЗаписиЗКР") cвяжем событие "ПриЗаписи" документа "Заявка на кассовый расход" с процедурой CheckOplDog из модуля EventProc как показано ниже:
В итоге, путем несложных манипуляций мы связали событие "ПриЗаписи" документа "Заявка на кассовый расход" с нашей процедурой CheckOplDog в общем модуле EventProc, т.е. назначили нашу процедуру обработчиком события "ПриЗаписи" документа ЗКР. Теперь при нажатии кнопки "Записать" или "ОК" (ввод/редактирование документа ЗКР), пользователь получит предупреждающее сообщение, если сумма платежей по договору, указанному в качестве документа-основания платежа, превысит сумму этого договора.
В примере использовалась платформа - 1С:Предприятие 8.2 (8.2.14.537) , конфигурация - Бухгалтерия государственного учреждения, редакция 1.0 (1.0.6.3) .