From 0ef87a322cce295cfece4dac6055c239c9e1021f Mon Sep 17 00:00:00 2001 From: mihailkudravcev Date: Thu, 30 Jul 2026 13:13:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BC=D0=B5=D0=BD=20=E2=80=94=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BE=D1=80=D0=B8=D1=82=D0=B5=D1=82=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=92=D0=B8=D0=B4=D0=9D=D0=BE=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=82=D1=83=D1=80=D1=8B=20=D0=B8=D0=B7=20?= =?UTF-8?q?=D1=80=D0=B0=5F=D0=92=D0=B8=D0=B4=D0=9D=D0=BE=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=82=D1=83=D1=80=D1=8BCRM326=20(1.3.0.46).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit При получении номенклатуры из Рабочая CRM3 сопоставляет вид по наименованию из AdditionalInfo.РК_ВидНоменклатурыCRM326; без значения — прежний механизм. Co-authored-by: Cursor --- CHANGELOG.md | 12 +++ VERSION | 2 +- .../Ext/Module.bsl | 79 +++++++++++++++++-- src/Configuration.xml | 2 +- 4 files changed, 87 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c85599..79dbdab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,18 @@ --- +## 1.3.0.46 (2026-07-30) + +### Обмен — приоритетный ВидНоменклатуры из ра_ВидНоменклатурыCRM326 + +Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`. + +При получении номенклатуры из **Рабочая CRM3**: если в пакете есть `AdditionalInfo.РК_ВидНоменклатурыCRM326`, `ВидНоменклатуры` сопоставляется по наименованию в целевой ИБ (перебивает защиту учётных реквизитов). Если значение не передано — действует прежний механизм обмена. + +Пара с `crm3-dev.rhana` 1.0.1.342. + +--- + ## 1.3.0.45 (2026-07-21) ### Обмен — ВидЦены строк из AdditionalInfo (Д1.3 / issue #10) diff --git a/VERSION b/VERSION index 93d6b19..20541a7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.0.45 +1.3.0.46 diff --git a/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl b/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl index 115994b..b000f00 100644 --- a/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl +++ b/src/CommonModules/МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl @@ -170,14 +170,13 @@ Если ЗначениеЗаполнено(ПолученныеДанные.ВидНоменклатуры) Тогда Справочники.Номенклатура.ЗаполнитьРеквизитыПоВидуНоменклатуры(ПолученныеДанные); КонецЕсли; - Возврат; + Иначе + Если ПолученныеДанные.ДополнительныеСвойства.Свойство("РК_СнимокУчетаНоменклатуры") Тогда + ЗаполнитьЗначенияСвойств(ДанныеИБ, ПолученныеДанные.ДополнительныеСвойства.РК_СнимокУчетаНоменклатуры); + КонецЕсли; КонецЕсли; - Если Не ПолученныеДанные.ДополнительныеСвойства.Свойство("РК_СнимокУчетаНоменклатуры") Тогда - Возврат; - КонецЕсли; - - ЗаполнитьЗначенияСвойств(ДанныеИБ, ПолученныеДанные.ДополнительныеСвойства.РК_СнимокУчетаНоменклатуры); + РК_ПрименитьВидНоменклатурыCRM326ИзДополнительныхСвойств(ПолученныеДанные, ДанныеИБ); КонецПроцедуры @@ -836,6 +835,7 @@ Параметры.Свойство("ДанныеXDTO", ДанныеXDTO); Параметры.Свойство("ПолученныеДанные", ПолученныеДанные); РК_СохранитьВидыЦенСтрокИзAdditionalInfo(ДанныеXDTO, ПолученныеДанные, КомпонентыОбмена); + РК_СохранитьВидНоменклатурыCRM326ИзAdditionalInfo(ДанныеXDTO, ПолученныеДанные); ИначеЕсли СтрНачинаетсяС(ИмяПроцедуры, "ОтложеннаяОбработка_") Тогда @@ -1044,4 +1044,71 @@ КонецФункции +// Ключ AdditionalInfo для вида номенклатуры CRM3-26 (доп. реквизит ра_ВидНоменклатурыCRM326 в исходной ИБ). +// +Функция РК_КлючAdditionalInfoВидНоменклатурыCRM326() + Возврат "РК_ВидНоменклатурыCRM326"; +КонецФункции + +// Сохраняет наименование вида номенклатуры из AdditionalInfo пакета в ДополнительныеСвойства номенклатуры. +// +Процедура РК_СохранитьВидНоменклатурыCRM326ИзAdditionalInfo(ДанныеXDTO, ПолученныеДанные) + + Если ДанныеXDTO = Неопределено Или ПолученныеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Не ДанныеXDTO.Свойство("AdditionalInfo") + Или ТипЗнч(ДанныеXDTO.AdditionalInfo) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + НаименованиеВида = ""; + Если Не ДанныеXDTO.AdditionalInfo.Свойство(РК_КлючAdditionalInfoВидНоменклатурыCRM326(), НаименованиеВида) + Или Не ЗначениеЗаполнено(НаименованиеВида) Тогда + Возврат; + КонецЕсли; + + Попытка + ПолученныеДанные.ДополнительныеСвойства.Вставить(РК_КлючAdditionalInfoВидНоменклатурыCRM326(), СокрЛП(Строка(НаименованиеВида))); + Исключение + // ПолученныеДанные может быть структурой без ДополнительныеСвойства. + КонецПопытки; + +КонецПроцедуры + +// Приоритетно сопоставляет ВидНоменклатуры целевой ИБ по наименованию из ра_ВидНоменклатурыCRM326. +// Если значение не передано — остаётся текущий механизм обмена (в т.ч. защита учётных реквизитов). +// +Процедура РК_ПрименитьВидНоменклатурыCRM326ИзДополнительныхСвойств(ПолученныеДанные, ДанныеИБ) + + Если ПолученныеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + НаименованиеВида = ""; + Попытка + Если Не ПолученныеДанные.ДополнительныеСвойства.Свойство(РК_КлючAdditionalInfoВидНоменклатурыCRM326(), НаименованиеВида) + Или Не ЗначениеЗаполнено(НаименованиеВида) Тогда + Возврат; + КонецЕсли; + Исключение + Возврат; + КонецПопытки; + + ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(СокрЛП(Строка(НаименованиеВида)), Истина); + Если Не ЗначениеЗаполнено(ВидНоменклатуры) Тогда + Возврат; + КонецЕсли; + + ПолученныеДанные.ВидНоменклатуры = ВидНоменклатуры; + + Если ДанныеИБ <> Неопределено Тогда + ДанныеИБ.ВидНоменклатуры = ВидНоменклатуры; + Иначе + Справочники.Номенклатура.ЗаполнитьРеквизитыПоВидуНоменклатуры(ПолученныеДанные); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти diff --git a/src/Configuration.xml b/src/Configuration.xml index c61576e..4cb1ca7 100644 --- a/src/Configuration.xml +++ b/src/Configuration.xml @@ -62,7 +62,7 @@ Role.РК_ОсновнаяРоль - 1.3.0.45 + 1.3.0.46 Language.Русский