Довольно часто возникает необходимость изменить договор контрагента при наличии уже проведенных документов по этому договору. Причин на это возникает множество, и обработочки для решения этой задачки встречались мне не раз.
Обычно обработки меняют вид договора, дату действия и еще один-два реквизита. А тут вдруг понадобилось выставить галочку "контролировать число дней задолженности", указать число этих самых дней, а заодно и "Взаиморасчеты ведутся по документам расчетов с контрагентами". Одним словом, все виденные мною обработочки не подошли.
Первое желание было - состряпать некую универсальную обработку, которая будет составлять список реквизитов по метаданным справочника. Но столкнулся с неожиданным сопротивлением назначению типов. Но самое главное, я увидел, что после получения списка реквизитов справочника Договоры контрагента разобраться в назначении этих самых реквизитов по одним названиям несколько проблематично. Визуальных форм нет, и все смешалось в одну кучу.
Возникла идея открыть стандартную форму справочника ДоговораКонтрагента, пусть пользователь изменяет реквизиты в ней, так привычнее и удобнее, а сохранять через другую, стороннюю форму.
Вот, собственно, и вся предыстория. А теперь сама сказка.
- При выборе договора заполняется табличная часть с перечнем документов по выбранному договору.
- Открываем форму договора кнопочкой, редактируем его. Не сохраняем.
- Нажимаем кнопу "Сохранить договор" на форме нашей обработочки. Документы из списка распроводятся, договор сохраняется, документы вновь проводятся.
Возможные риски данной операции:
1. Документы могут не провестись из-за кривых остатков, т.е. проведенное когда-то не проводится второй раз (в моей УПП такого не возникало)
2. Дата запрета редактирования документов. Обработочка проследит, чтобы верхняя граница перепроводимых документов не вышла за границу запрета редактирования.
3. Счет-фактура частенько стоит ранее Реализации. Чтобы обойти данную неприятность, таблица документов отсортирована по виду документов, а потом по дате.
4. Права. У пользователя банально может не хватить прав на проведение определенного типа документа. Тут уж ничего не поделаешь. Полные права - самое лучшее лекарство...
PS: Тестировалось на 8.3 - Толстый клиент, УПП 1.3.68.1