diff --git a/CHANGELOG.md b/CHANGELOG.md
index 652f880..aa12a77 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@
---
+## 1.3.1.111 (2026-09-03)
+
+### РК_ЗагрузкаОстатков — договор комиссии 2.5 (#34)
+
+- Поиск договора `ПередачаНаКомиссию` по партнёру/контрагенту/организации (предпочтительно `КомиссионныеПродажи25`).
+- Соглашение не содержит реквизит `Договор`; API не отдаёт `contract_*`.
+- Сопоставление и создание документа без договора — ошибка с понятным текстом.
+
## 1.3.1.110 (2026-09-02)
### РК_ЗагрузкаОстатков — серии: ГоденДо и заглушки по номенклатуре (#30, #31)
diff --git a/VERSION b/VERSION
index 823727f..cb98a83 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3.1.110
+1.3.1.111
diff --git a/src/ConfigDumpInfo.xml b/src/ConfigDumpInfo.xml
index 158f846..69be812 100644
--- a/src/ConfigDumpInfo.xml
+++ b/src/ConfigDumpInfo.xml
@@ -50,14 +50,14 @@
-
+
-
+
@@ -203,7 +203,7 @@
-
+
diff --git a/src/Configuration.xml b/src/Configuration.xml
index afa84f5..a058240 100644
--- a/src/Configuration.xml
+++ b/src/Configuration.xml
@@ -62,7 +62,7 @@
Role.РК_ОсновнаяРоль
- 1.3.1.110
+ 1.3.1.111
Language.Русский
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
index 2456af7..21726ff 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
@@ -240,6 +240,12 @@
Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
Продолжить;
КонецЕсли;
+ Если Не ЗначениеЗаполнено(СтрТ.Договор) Тогда
+ СтрТ.КомментарийСопоставления = "Договор комиссии 2.5 не найден (партнёр: "
+ + СокрЛП(Строка(СтрТ.Партнер)) + ")";
+ Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
+ Продолжить;
+ КонецЕсли;
Хар = НайтиИлиСоздатьХарактеристику(СтрТ, Ном, РежимТест, Результат);
СтрТ.Характеристика = Хар;
@@ -700,6 +706,15 @@
Функция СоздатьДокументКомиссии(СтрокиГруппы, ТекстТега)
Первая = СтрокиГруппы[0];
+ ДоговорШапки = Первая.Договор;
+ Если Не ЗначениеЗаполнено(ДоговорШапки) Тогда
+ ДоговорШапки = НайтиДоговорКомиссии2_5(Первая.Партнер, Первая.Контрагент);
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(ДоговорШапки) Тогда
+ ВызватьИсключение "Договор комиссии 2.5 не заполнен (партнёр: "
+ + СокрЛП(Строка(Первая.Партнер)) + "). См. #34.";
+ КонецЕсли;
+
Док = Документы.ВводОстатковТоваров.СоздатьДокумент();
Док.Дата = ДатаДокументовВвода;
Док.Организация = Организация;
@@ -707,7 +722,7 @@
Док.СоглашениеСКомиссионером = Первая.Соглашение;
Док.Партнер = Первая.Партнер;
Док.Контрагент = Первая.Контрагент;
- Док.Договор = Первая.Договор;
+ Док.Договор = ДоговорШапки;
Док.Комментарий = ТекстТега + ", комиссия 2.5, " + СокрЛП(Строка(Первая.Партнер));
Док.ОтражатьВОперативномУчете = Истина;
Док.ОтражатьСебестоимость = ЕстьСтоимостьВСтроках(СтрокиГруппы);
@@ -1160,16 +1175,64 @@
Договор = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(ИмяДог, Истина);
КонецЕсли;
КонецЕсли;
- Если Не ЗначениеЗаполнено(Договор) И ЗначениеЗаполнено(Соглашение) Тогда
- Попытка
- Договор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "Договор");
- Исключение
- КонецПопытки;
+ // У СоглашенияСКлиентами нет реквизита Договор (только ИспользуютсяДоговорыКонтрагентов).
+ // API комиссии не отдаёт contract_* — ищем договор ПередачаНаКомиссию по партнёру/контрагенту.
+ Если Не ЗначениеЗаполнено(Договор) Тогда
+ Договор = НайтиДоговорКомиссии2_5(Партнер, Контр);
КонецЕсли;
СтрТ.Договор = Договор;
КонецПроцедуры
+// Договор для ввода остатков комиссии 2.5: ПередачаНаКомиссию у партнёра (предпочтительно CP25).
+//
+Функция НайтиДоговорКомиссии2_5(Партнер, Контрагент)
+
+ Если Не ЗначениеЗаполнено(Партнер) Тогда
+ Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
+ КонецЕсли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ ПЕРВЫЕ 1
+ | Д.Ссылка КАК Ссылка
+ |ИЗ
+ | Справочник.ДоговорыКонтрагентов КАК Д
+ |ГДЕ
+ | НЕ Д.ПометкаУдаления
+ | И Д.Партнер = &Партнер
+ | И Д.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
+ | И (&Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
+ | ИЛИ Д.Контрагент = &Контрагент
+ | ИЛИ Д.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
+ | И (&Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
+ | ИЛИ Д.Организация = &Организация
+ | ИЛИ Д.Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
+ |УПОРЯДОЧИТЬ ПО
+ | Д.КомиссионныеПродажи25 УБЫВ,
+ | ВЫБОР
+ | КОГДА &Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
+ | И Д.Контрагент = &Контрагент
+ | ТОГДА 0
+ | ИНАЧЕ 1
+ | КОНЕЦ,
+ | Д.Дата УБЫВ,
+ | Д.Номер УБЫВ";
+ Запрос.УстановитьПараметр("Партнер", Партнер);
+ Запрос.УстановитьПараметр("Контрагент",
+ ?(ЗначениеЗаполнено(Контрагент), Контрагент, Справочники.Контрагенты.ПустаяСсылка()));
+ Запрос.УстановитьПараметр("Организация",
+ ?(ЗначениеЗаполнено(Организация), Организация, Справочники.Организации.ПустаяСсылка()));
+
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ Возврат Выборка.Ссылка;
+ КонецЕсли;
+
+ Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
+
+КонецФункции
+
Функция ДатаИзSeriesExpire(СтрокаДаты)
Текст = СокрЛП(Строка(СтрокаДаты));