diff --git a/CHANGELOG.md b/CHANGELOG.md index f1eb3c5..d118f2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ --- +## 1.3.0.42 (2026-07-15) + +### Обмен — этапы графика оплаты ЗаказКлиента (Д1.2) + +База: **1.3.0.41** (ws-rhana + объекты расчётов 1.3.0.40). + +Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`. + +- `&После("ОтложеннаяОбработка_ЗаказыПоставщикуКлиента")` — `РК_ОтложеннаяОбработка_ЗаказыПоставщикуКлиента_ЭтапыОплаты`. +- При «бедных» этапах из XDTO (пустые `ДатаПлатежа` / `ВариантОтсчета`) ТЧ очищается и перезаполняется типовым `ЭтапыОплатыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты` по соглашению / графику оплаты / договору. +- При пустых реквизитах шапки из соглашения подставляются `ГрафикОплаты`, `ФормаОплаты`. +- Только для узла **«Рабочая CRM3»** (`РК_ЭтоОбменС_Crm3Dev`). + +Данные уже загруженных заказов: `docs/transfer/Код_дозаполнения_этапов_оплаты_заказов_crm3-26.bsl` (монорепозиторий). + +--- + ## 1.3.0.41 (2026-07-09) ### HTTP Transfer API перенесён в ws-rhana diff --git a/VERSION b/VERSION index 00d7d25..6a61bcd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.0.41 +1.3.0.42 diff --git a/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl b/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl index 708fb1d..810c704 100644 --- a/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl +++ b/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl @@ -665,4 +665,86 @@ КонецПроцедуры +// Д1.2: этапы графика оплаты из соглашения/договора при загрузке ЗаказКлиента. +// XDTO 1.8 не передаёт ВариантОтсчета; ДатаПлатежа часто пустая. +// Типовой ОтложеннаяОбработка_ЗаказыПоставщикуКлиента вызывает +// ЭтапыОплатыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты только при пустой ТЧ — +// при «бедных» строках из пакета пересчёт не выполняется. +// +&После("ОтложеннаяОбработка_ЗаказыПоставщикуКлиента") +Процедура РК_ОтложеннаяОбработка_ЗаказыПоставщикуКлиента_ЭтапыОплаты(Объект, КомпонентыОбмена) + + Если Не РК_ЭтоОбменС_Crm3Dev(КомпонентыОбмена) Тогда + Возврат; + КонецЕсли; + + РК_ДозаполнитьЭтапыГрафикаОплатыПоСоглашению(Объект); + +КонецПроцедуры + +// Перезаполняет ТЧ ЭтапыГрафикаОплаты, если есть строки без ДатаПлатежа / ВариантОтсчета. +// Иначе вызывает типовое заполнение из соглашения / графика оплаты / договора. +// +Процедура РК_ДозаполнитьЭтапыГрафикаОплатыПоСоглашению(Объект) Экспорт + + Если Объект = Неопределено Тогда + Возврат; + КонецЕсли; + + МетаОбъекта = Объект.Метаданные(); + Если МетаОбъекта.ТабличныеЧасти.Найти("ЭтапыГрафикаОплаты") = Неопределено Тогда + Возврат; + КонецЕсли; + + Если МетаОбъекта.Реквизиты.Найти("Соглашение") = Неопределено Тогда + Возврат; + КонецЕсли; + + НужноПерезаполнить = Ложь; + Если Объект.ЭтапыГрафикаОплаты.Количество() = 0 Тогда + НужноПерезаполнить = ЗначениеЗаполнено(Объект.Соглашение) + Или (МетаОбъекта.Реквизиты.Найти("ГрафикОплаты") <> Неопределено + И ЗначениеЗаполнено(Объект.ГрафикОплаты)) + Или (МетаОбъекта.Реквизиты.Найти("Договор") <> Неопределено + И ЗначениеЗаполнено(Объект.Договор)); + Иначе + Для Каждого СтрокаЭтапа Из Объект.ЭтапыГрафикаОплаты Цикл + Если Не ЗначениеЗаполнено(СтрокаЭтапа.ДатаПлатежа) + Или Не ЗначениеЗаполнено(СтрокаЭтапа.ВариантОтсчета) Тогда + НужноПерезаполнить = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если Не НужноПерезаполнить Тогда + Возврат; + КонецЕсли; + + // Условия из соглашения (как при перевыборе на форме): график и форма оплаты. + Если ЗначениеЗаполнено(Объект.Соглашение) + И ТипЗнч(Объект.Соглашение) = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда + + РеквизитыСоглашения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Соглашение, + "ГрафикОплаты,ФормаОплаты"); + + Если МетаОбъекта.Реквизиты.Найти("ГрафикОплаты") <> Неопределено + И Не ЗначениеЗаполнено(Объект.ГрафикОплаты) + И ЗначениеЗаполнено(РеквизитыСоглашения.ГрафикОплаты) Тогда + Объект.ГрафикОплаты = РеквизитыСоглашения.ГрафикОплаты; + КонецЕсли; + + Если МетаОбъекта.Реквизиты.Найти("ФормаОплаты") <> Неопределено + И Не ЗначениеЗаполнено(Объект.ФормаОплаты) + И ЗначениеЗаполнено(РеквизитыСоглашения.ФормаОплаты) Тогда + Объект.ФормаОплаты = РеквизитыСоглашения.ФормаОплаты; + КонецЕсли; + + КонецЕсли; + + Объект.ЭтапыГрафикаОплаты.Очистить(); + ЭтапыОплатыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты(Объект); + +КонецПроцедуры + #КонецОбласти diff --git a/src/Configuration.xml b/src/Configuration.xml index 9194630..b284caf 100644 --- a/src/Configuration.xml +++ b/src/Configuration.xml @@ -62,7 +62,7 @@ Role.РК_ОсновнаяРоль - 1.3.0.41 + 1.3.0.42 Language.Русский