diff --git a/CHANGELOG.md b/CHANGELOG.md
index 80efad6..ad42ad0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@
---
+## 1.3.1.109 (2026-09-01)
+
+### РК_ЗагрузкаОстатков — маппинг соглашений комиссии cutover (#24)
+
+- Dev GUID → target GUID для marketplace и plain «Основное соглашение по договорам» → individual Поварова (`189cf86f…`, не типовое).
+- Plain без маппинга: не подставлять типовое продажи по наименованию.
+- Fallback партнёра из `Контрагент.Партнер`, если в API пусто.
+- Канон: `docs/transfer/mapping/map_commission_agreements_cutover_20260801.csv`.
+
## 1.3.1.106 (2026-08-31)
### РК_ЗагрузкаОстатков — ГТД вне ключа схлопывания (#19)
diff --git a/VERSION b/VERSION
index 87b0b49..9f0b865 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3.1.106
+1.3.1.109
diff --git a/src/Configuration.xml b/src/Configuration.xml
index 2ecf600..0e532cc 100644
--- a/src/Configuration.xml
+++ b/src/Configuration.xml
@@ -62,7 +62,7 @@
Role.РК_ОсновнаяРоль
- 1.3.1.108
+ 1.3.1.109
Language.Русский
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
index 165f472..e14104e 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
@@ -1026,14 +1026,62 @@
КонецПроцедуры
+// A4a (#24 comment-893/897): plain dev «Основное соглашение по договорам» (продажи) →
+// индивидуальное соглашение комиссии Поварова в target (не типовое 1448bf7f:
+// ввод на основании типового соглашения в Заказ/Реализация запрещён).
+// Канон: docs/transfer/mapping/map_commission_agreements_cutover_20260801.csv
+//
+Функция РК_ЭтоPlainСоглашениеКомиссииDev(СтрТ)
+
+ GUIDDev = НРег(СокрЛП(Строка(СтрТ.СоглашениеИдентификатор)));
+ ИмяDev = СокрЛП(СтрТ.СоглашениеНаименование);
+ Возврат GUIDDev = "8702ba5a-dd07-11e4-881e-0cc47a0dcc93"
+ Или ИмяDev = "Основное соглашение по договорам";
+
+КонецФункции
+
+Функция РК_GUIDСоглашенияPlainCommissionIndividual()
+
+ // Target: «Поваров Александр Борисович ИП , Передача на комиссию, ФК РАНА, руб. (по умолчанию)».
+ // Все 35 plain-строк post-collapse трассируются к этому партнёру (commission_plain_partner_map_20260801_dev.csv).
+ Возврат "189cf86f-792d-11f1-8d1e-0cc47a7d055f";
+
+КонецФункции
+
+Функция РК_МаппингDevTargetСоглашенияКомиссии()
+
+ Маппинг = Новый Соответствие;
+ Маппинг.Вставить("8702ba5a-dd07-11e4-881e-0cc47a0dcc93", РК_GUIDСоглашенияPlainCommissionIndividual());
+ Маппинг.Вставить("d58fdf94-9b6e-11eb-af32-0cc47a0dcc93", "318d4082-73b6-11f1-8d1e-0cc47a7d055f");
+ Маппинг.Вставить("39738c81-5d8e-11f0-bb1c-0cc47a7d055f", "318d5e24-73b6-11f1-8d1e-0cc47a7d055f");
+ Маппинг.Вставить("38323494-26b0-11f1-803f-0cc47a7d055f", "318d63aa-73b6-11f1-8d1e-0cc47a7d055f");
+ Маппинг.Вставить("c5fdca80-531c-11ef-9574-0cc47a7d055f", "319c60c1-73b6-11f1-8d1e-0cc47a7d055f");
+ Возврат Маппинг;
+
+КонецФункции
+
Функция НайтиСоглашениеСтроки(СтрТ)
+ // A4a: dev GUID соглашения → target GUID (plain → индивидуальное комиссии Поварова, не типовое).
+ GUIDDev = НРег(СокрЛП(Строка(СтрТ.СоглашениеИдентификатор)));
+ GUIDЦель = РК_МаппингDevTargetСоглашенияКомиссии().Получить(GUIDDev);
+ Если GUIDЦель <> Неопределено И ЗначениеЗаполнено(GUIDЦель) Тогда
+ Согл = Справочники.СоглашенияСКлиентами.ПолучитьСсылку(Новый УникальныйИдентификатор(GUIDЦель));
+ Если ОбщегоНазначения.СсылкаСуществует(Согл) Тогда
+ Возврат Согл;
+ КонецЕсли;
+ КонецЕсли;
+
Согл = СсылкаПоUUID(Справочники.СоглашенияСКлиентами, СтрТ.СоглашениеИдентификатор);
Если ЗначениеЗаполнено(Согл) И ОбщегоНазначения.СсылкаСуществует(Согл) Тогда
Возврат Согл;
КонецЕсли;
ИмяСогл = СокрЛП(СтрТ.СоглашениеНаименование);
Если ЗначениеЗаполнено(ИмяСогл) Тогда
+ // Plain без маппинга: не подставлять типовое продажи 30f0f77b по наименованию.
+ Если РК_ЭтоPlainСоглашениеКомиссииDev(СтрТ) Тогда
+ Возврат Справочники.СоглашенияСКлиентами.ПустаяСсылка();
+ КонецЕсли;
Возврат Справочники.СоглашенияСКлиентами.НайтиПоНаименованию(ИмяСогл, Истина);
КонецЕсли;
Возврат Справочники.СоглашенияСКлиентами.ПустаяСсылка();
@@ -1095,6 +1143,14 @@
КонецЕсли;
СтрТ.Контрагент = Контр;
+ Если Не ЗначениеЗаполнено(Партнер) И ЗначениеЗаполнено(Контр) Тогда
+ Попытка
+ Партнер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контр, "Партнер");
+ Исключение
+ КонецПопытки;
+ СтрТ.Партнер = Партнер;
+ КонецЕсли;
+
Договор = СсылкаПоUUID(Справочники.ДоговорыКонтрагентов, СтрТ.ДоговорИдентификатор);
Если Не (ЗначениеЗаполнено(Договор) И ОбщегоНазначения.СсылкаСуществует(Договор)) Тогда
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();