diff --git a/CHANGELOG.md b/CHANGELOG.md
index c843404..b4ce627 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,27 @@
---
+## 1.3.1.62 (2026-08-13)
+
+### РК_ЗагрузкаОстатков — два количества, себестоимость rh_, комиссия без серий
+
+- Столбцы **Кол. склад** и **Кол. финансовое** больше не смешиваются в одно количество.
+- Себестоимость только у финансового контура (`rh_ТоварыНаСкладахСебестоимость` на исходной стороне).
+- В документ ввода: количество — финансовое (если 0 — складское); сумма/цена из rh_; валюта упр. (USD), как волна 1.
+- Комиссия 2.5: серии не заполняются и не сопоставляются.
+- Нужен **ws-rhana ≥ 0.0.0.38** на исходной ИБ.
+
+## 1.3.1.61 (2026-08-13)
+
+### РК_ЗагрузкаОстатков — вид, стоимость, политика, ГТД/серии
+
+- Вид номенклатуры из исходной ИБ в обеих входящих ТЧ (`kind_*`, не из policy).
+- Стоимость упр./регл. и валюта в собственных и комиссионных строках.
+- ТЧ **Политика учета номенклатуры** заполняется отдельным `POST /v1/stock/nomenclature-policy`.
+- ГТД берётся из кода / регистрационного номера; количество — `qty_org`, если складское 0.
+- Комиссия: колонки назначения и вида запасов (почему не схлопываются «+»/«−»).
+- Нужен **ws-rhana ≥ 0.0.0.37** на исходной ИБ.
+
## 1.3.1.60 (2026-08-13)
### РК_ЗагрузкаОстатков — вкладка созданных документов
diff --git a/README.md b/README.md
index c4b621d..fa3da8a 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
Расширение РАНА для целевой конфигурации **crm3-26** (ИБ `crm3`, сервер `1c-srv.rhana.local`).
-Текущая версия: **1.3.1.60** — см. [`VERSION`](VERSION) и `src/Configuration.xml`.
+Текущая версия: **1.3.1.62** — см. [`VERSION`](VERSION) и `src/Configuration.xml`.
Префикс новых объектов расширения: **`РК_`**.
diff --git a/VERSION b/VERSION
index 334ea15..3da5b90 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3.1.60
+1.3.1.62
diff --git a/src/CommonModules/РК_ОбменСВнешнейБазой/Ext/Module.bsl b/src/CommonModules/РК_ОбменСВнешнейБазой/Ext/Module.bsl
index 8702675..f712019 100644
--- a/src/CommonModules/РК_ОбменСВнешнейБазой/Ext/Module.bsl
+++ b/src/CommonModules/РК_ОбменСВнешнейБазой/Ext/Module.bsl
@@ -107,6 +107,18 @@
КонецФункции
+// POST /v1/stock/nomenclature-policy на исходной ИБ.
+//
+Функция ПолитикаНоменклатурыВнешнейБазы(Подключение, ПараметрыЗапроса = Неопределено) Экспорт
+
+ Если ПараметрыЗапроса = Неопределено Тогда
+ ПараметрыЗапроса = Новый Структура;
+ КонецЕсли;
+ Настройки = НастройкиПодключения(Подключение);
+ Возврат ВыполнитьPOST(Настройки, "v1/stock/nomenclature-policy", ПараметрыЗапроса);
+
+КонецФункции
+
// Универсальный GET к Transfer API.
//
Функция ВыполнитьGET(НастройкиПодключения, ОтносительныйПуть) Экспорт
diff --git a/src/ConfigDumpInfo.xml b/src/ConfigDumpInfo.xml
index 95376d7..c306a0f 100644
--- a/src/ConfigDumpInfo.xml
+++ b/src/ConfigDumpInfo.xml
@@ -140,6 +140,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Configuration.xml b/src/Configuration.xml
index 9d49e43..c69f505 100644
--- a/src/Configuration.xml
+++ b/src/Configuration.xml
@@ -62,7 +62,7 @@
Role.РК_ОсновнаяРоль
- 1.3.1.60
+ 1.3.1.62
Language.Русский
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков.xml b/src/DataProcessors/РК_ЗагрузкаОстатков.xml
index f863231..f7df498 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков.xml
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков.xml
@@ -576,7 +576,7 @@
ru
- Количество
+ Кол. склад
@@ -658,7 +658,7 @@
ru
- Кол. организации
+ Кол. финансовое
@@ -1521,6 +1521,168 @@
Auto
+
+
+ Стоимость
+
+
+ ru
+ Стоимость (упр.)
+
+
+
+
+ xs:decimal
+
+ 15
+ 2
+ Any
+
+
+ false
+
+
+
+ true
+
+ false
+ false
+
+
+ false
+ 0
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ СтоимостьРегл
+
+
+ ru
+ Стоимость (регл.)
+
+
+
+
+ xs:decimal
+
+ 15
+ 2
+ Any
+
+
+ false
+
+
+
+ true
+
+ false
+ false
+
+
+ false
+ 0
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Валюта
+
+
+ ru
+ Валюта упр.
+
+
+
+
+ xs:string
+
+ 10
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВалютаРегл
+
+
+ ru
+ Валюта регл.
+
+
+
+
+ xs:string
+
+ 10
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
@@ -1943,7 +2105,7 @@
ru
- Кол. организации
+ Кол. комиссии
@@ -3254,6 +3416,360 @@
Auto
+
+
+ Стоимость
+
+
+ ru
+ Стоимость (упр.)
+
+
+
+
+ xs:decimal
+
+ 15
+ 2
+ Any
+
+
+ false
+
+
+
+ true
+
+ false
+ false
+
+
+ false
+ 0
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ СтоимостьРегл
+
+
+ ru
+ Стоимость (регл.)
+
+
+
+
+ xs:decimal
+
+ 15
+ 2
+ Any
+
+
+ false
+
+
+
+ true
+
+ false
+ false
+
+
+ false
+ 0
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Валюта
+
+
+ ru
+ Валюта упр.
+
+
+
+
+ xs:string
+
+ 10
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВалютаРегл
+
+
+ ru
+ Валюта регл.
+
+
+
+
+ xs:string
+
+ 10
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Назначение
+
+
+ ru
+ Назначение
+
+
+
+
+ xs:string
+
+ 150
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ НазначениеИдентификатор
+
+
+ ru
+ Назначение идентификатор
+
+
+
+
+ v8:UUID
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВидЗапасов
+
+
+ ru
+ Вид запасов
+
+
+
+
+ xs:string
+
+ 150
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВидЗапасовИдентификатор
+
+
+ ru
+ Вид запасов идентификатор
+
+
+
+
+ v8:UUID
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ТипЗапасов
+
+
+ ru
+ Тип запасов
+
+
+
+
+ xs:string
+
+ 100
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
@@ -3622,6 +4138,480 @@
+
+
+
+ 941d1225-0be5-4989-aa69-b38164cd6ff1
+ 0f2f4654-a6d4-48b3-95ae-57cc1fade3d1
+
+
+ 7de93048-68ff-400c-b0d3-bcce308dfa4e
+ ba5e495d-6db8-4be8-b8ac-9a826c3fde9c
+
+
+
+ ПолитикаУчетаНоменклатуры
+
+
+ ru
+ Политика учета номенклатуры
+
+
+
+
+ DontCheck
+
+
+
+
+ ВидНоменклатурыНаименование
+
+
+ ru
+ Вид номенклатуры
+
+
+
+
+ xs:string
+
+ 150
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВидНоменклатурыИдентификатор
+
+
+ ru
+ Вид номенклатуры идентификатор
+
+
+
+
+ v8:UUID
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИспользоватьСерии
+
+
+ ru
+ Серии
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ false
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ НастройкаИспользованияСерий
+
+
+ ru
+ Настройка серий
+
+
+
+
+ xs:string
+
+ 100
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИспользоватьНомерСерии
+
+
+ ru
+ Номер серии
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ false
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИспользоватьСрокГодностиСерии
+
+
+ ru
+ Срок годности серии
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ false
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ТочностьУказанияСрокаГодностиСерии
+
+
+ ru
+ Точность срока годности
+
+
+
+
+ xs:string
+
+ 100
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИспользоватьRFIDМеткиСерии
+
+
+ ru
+ RFID серии
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ false
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИспользоватьХарактеристики
+
+
+ ru
+ Характеристики
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ false
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИспользованиеХарактеристик
+
+
+ ru
+ Использование характеристик
+
+
+
+
+ xs:string
+
+ 100
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВестиУчетПоГТД
+
+
+ ru
+ Учет по ГТД / импорт
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ false
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВестиУчетСертификатовНоменклатуры
+
+
+ ru
+ Учет сертификатов
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ false
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
index 4e58e81..31293e1 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl
@@ -48,12 +48,55 @@
НовСтр.Количество = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "qty_commission",
ЗначениеСвойства(СтрокаAPI, "qty_org", НовСтр.Количество)), 0);
НовСтр.КоличествоОрганизации = НовСтр.Количество;
+ НовСтр.СерияИдентификатор = UUIDИзСтроки("");
+ НовСтр.Серия = "";
+ НовСтр.СерияНомер = "";
+ НовСтр.СерияСсылка = Справочники.СерииНоменклатуры.ПустаяСсылка();
НовСтр.СоглашениеИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "agreement_guid", ""));
НовСтр.СоглашениеНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "agreement_name", "")));
НовСтр.ПартнерИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "partner_guid", ""));
НовСтр.ПартнерНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "partner_name", "")));
НовСтр.КонтрагентИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "contractor_guid", ""));
НовСтр.КонтрагентНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "contractor_name", "")));
+ НовСтр.НазначениеИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "purpose_guid", ""));
+ НовСтр.Назначение = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "purpose_name", "")));
+ НовСтр.ВидЗапасовИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "inventory_kind_guid", ""));
+ НовСтр.ВидЗапасов = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "inventory_kind_name", "")));
+ НовСтр.ТипЗапасов = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "inventory_kind_type", "")));
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Заполняет ТЧ ПолитикаУчетаНоменклатуры ответом POST /v1/stock/nomenclature-policy.
+//
+Процедура ЗаполнитьПолитикуУчетаИзОтвета(ОтветAPI, ОчищатьПередЗаполнением = Истина) Экспорт
+
+ Если ОчищатьПередЗаполнением Тогда
+ ПолитикаУчетаНоменклатуры.Очистить();
+ КонецЕсли;
+
+ СтрокиОтвета = Неопределено;
+ Если ТипЗнч(ОтветAPI) = Тип("Структура") Или ТипЗнч(ОтветAPI) = Тип("Соответствие") Тогда
+ СтрокиОтвета = ЗначениеСвойства(ОтветAPI, "rows", Неопределено);
+ КонецЕсли;
+ Если ТипЗнч(СтрокиОтвета) <> Тип("Массив") Тогда
+ Возврат;
+ КонецЕсли;
+
+ Для Каждого СтрокаAPI Из СтрокиОтвета Цикл
+ НовСтр = ПолитикаУчетаНоменклатуры.Добавить();
+ НовСтр.ВидНоменклатурыИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "kind_guid", ""));
+ НовСтр.ВидНоменклатурыНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "kind_name", "")));
+ НовСтр.ИспользоватьСерии = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "use_series", Ложь));
+ НовСтр.НастройкаИспользованияСерий = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_usage", "")));
+ НовСтр.ИспользоватьНомерСерии = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "use_series_number", Ложь));
+ НовСтр.ИспользоватьСрокГодностиСерии = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "use_series_expire", Ложь));
+ НовСтр.ТочностьУказанияСрокаГодностиСерии = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_expire_accuracy", "")));
+ НовСтр.ИспользоватьRFIDМеткиСерии = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "use_series_rfid", Ложь));
+ НовСтр.ИспользоватьХарактеристики = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "use_characteristics", Ложь));
+ НовСтр.ИспользованиеХарактеристик = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "characteristics_usage", "")));
+ НовСтр.ВестиУчетПоГТД = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "use_gtd", Ложь));
+ НовСтр.ВестиУчетСертификатовНоменклатуры = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "use_certificates", Ложь));
КонецЦикла;
КонецПроцедуры
@@ -112,17 +155,19 @@
Хар = НайтиИлиСоздатьХарактеристику(СтрТ, Ном, РежимТест, Результат);
СтрТ.Характеристика = Хар;
- Сер = НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
- КэшТребуетсяСерия, КэшСерий, Результат);
- СтрТ.СерияСсылка = Сер;
- Если НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия) И Не ЗначениеЗаполнено(Сер) Тогда
- Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Или СтрТ.КомментарийСопоставления = "OK" Тогда
- СтрТ.КомментарийСопоставления = "Серия не найдена"
- + ?(РежимТест, " (тест)", "")
- + ?(СоздаватьЗаглушкиСерий, "", "; заглушки выключены");
+ Если СтрТ.Количество <> 0 Тогда
+ Сер = НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
+ КэшТребуетсяСерия, КэшСерий, Результат);
+ СтрТ.СерияСсылка = Сер;
+ Если НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия) И Не ЗначениеЗаполнено(Сер) Тогда
+ Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Или СтрТ.КомментарийСопоставления = "OK" Тогда
+ СтрТ.КомментарийСопоставления = "Серия не найдена"
+ + ?(РежимТест, " (тест)", "")
+ + ?(СоздаватьЗаглушкиСерий, "", "; заглушки выключены");
+ КонецЕсли;
+ Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
+ Продолжить;
КонецЕсли;
- Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
- Продолжить;
КонецЕсли;
ЗаполнитьНомерГТДСтроки(СтрТ);
@@ -140,7 +185,7 @@
КонецФункции
// Сопоставление комиссионных строк (переданные 2.5): соглашение, партнёр, контрагент, договор.
-// Склад не обязателен. Серии — только существующие или созданные из исходных данных.
+// Склад не обязателен. Серии в комиссионном товаре не используются.
//
Функция СопоставитьВходящиеКомиссионныеТовары(РежимТест = Истина) Экспорт
@@ -150,14 +195,6 @@
Результат.Вставить("СозданоСерий", 0);
Результат.Вставить("СозданоХарактеристик", 0);
- СуффиксДатыСер = Формат(?(ЗначениеЗаполнено(ДатаДокументовВвода), ДатаДокументовВвода, ДатаОстатков), "ДФ=yyyyMMdd");
- Если ПустаяСтрока(СуффиксДатыСер) Тогда
- СуффиксДатыСер = Формат(ТекущаяДатаСеанса(), "ДФ=yyyyMMdd");
- КонецЕсли;
-
- КэшТребуетсяСерия = Новый Соответствие;
- КэшСерий = Новый Соответствие;
-
Для Каждого СтрТ Из ВходящиеКомиссионныеТовары Цикл
СтрТ.Сопоставлено = Ложь;
@@ -203,19 +240,6 @@
Хар = НайтиИлиСоздатьХарактеристику(СтрТ, Ном, РежимТест, Результат);
СтрТ.Характеристика = Хар;
- Сер = НайтиИлиСоздатьСерию(СтрТ, Ном, СтрТ.Склад, СуффиксДатыСер, РежимТест,
- КэшТребуетсяСерия, КэшСерий, Результат);
- СтрТ.СерияСсылка = Сер;
- Если НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия) И Не ЗначениеЗаполнено(Сер) Тогда
- Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Или СтрТ.КомментарийСопоставления = "OK" Тогда
- СтрТ.КомментарийСопоставления = "Серия не найдена"
- + ?(РежимТест, " (тест)", "")
- + ?(СоздаватьЗаглушкиСерий, "", "; заглушки выключены");
- КонецЕсли;
- Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
- Продолжить;
- КонецЕсли;
-
ЗаполнитьНомерГТДСтроки(СтрТ);
СтрТ.Сопоставлено = Истина;
@@ -232,7 +256,8 @@
// Создание документов ВводОстатковТоваров по сопоставленным строкам.
// Собственные — 1 документ на склад; комиссия 2.5 — 1 документ на соглашение+партнёра (без склада).
-// Себестоимость не заполняется (нет данных в API) — только оперативный учёт количества.
+// Количество в документе — финансовое (rh_), если не 0, иначе складское.
+// Себестоимость — из rh_ (сумма USD, СуммаРегл); серии только у собственных строк.
//
// Параметры:
// РежимТест - Булево - только подсчёт без записи
@@ -494,7 +519,7 @@
Док.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковСобственныхТоваров;
Док.Комментарий = ТекстТега + ", склад " + СокрЛП(Строка(СкладДок));
Док.ОтражатьВОперативномУчете = Истина;
- Док.ОтражатьСебестоимость = Ложь;
+ Док.ОтражатьСебестоимость = ЕстьСтоимостьВСтроках(СтрокиСклада);
Док.ЦенаВключаетНДС = Ложь;
Попытка
@@ -502,11 +527,20 @@
Исключение
КонецПопытки;
- Попытка
- Док.Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
- Исключение
- Док.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
- КонецПопытки;
+ Если Док.ОтражатьСебестоимость Тогда
+ Попытка
+ Док.Валюта = Константы.ВалютаУправленческогоУчета.Получить();
+ Исключение
+ Док.Валюта = Неопределено;
+ КонецПопытки;
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Док.Валюта) Тогда
+ Попытка
+ Док.Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
+ Исключение
+ Док.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
+ КонецПопытки;
+ КонецЕсли;
Если Не ЗначениеЗаполнено(Док.НалогообложениеНДС) Тогда
Док.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
@@ -551,14 +585,23 @@
Док.Договор = Первая.Договор;
Док.Комментарий = ТекстТега + ", комиссия 2.5, " + СокрЛП(Строка(Первая.Партнер));
Док.ОтражатьВОперативномУчете = Истина;
- Док.ОтражатьСебестоимость = Ложь;
+ Док.ОтражатьСебестоимость = ЕстьСтоимостьВСтроках(СтрокиГруппы);
Док.ЦенаВключаетНДС = Ложь;
- Попытка
- Док.Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
- Исключение
- Док.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
- КонецПопытки;
+ Если Док.ОтражатьСебестоимость Тогда
+ Попытка
+ Док.Валюта = Константы.ВалютаУправленческогоУчета.Получить();
+ Исключение
+ Док.Валюта = Неопределено;
+ КонецПопытки;
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Док.Валюта) Тогда
+ Попытка
+ Док.Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
+ Исключение
+ Док.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
+ КонецПопытки;
+ КонецЕсли;
Если Не ЗначениеЗаполнено(Док.НалогообложениеНДС) Тогда
Док.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
@@ -592,14 +635,30 @@
Процедура ДобавитьСтрокуТоваровДокументаВвода(Док, СтрТ)
+ КолДок = СтрТ.КоличествоОрганизации;
+ Если КолДок = 0 Тогда
+ КолДок = СтрТ.Количество;
+ КонецЕсли;
+ Если КолДок = 0 Тогда
+ Возврат;
+ КонецЕсли;
+
НовСтр = Док.Товары.Добавить();
НовСтр.Номенклатура = СтрТ.Номенклатура;
НовСтр.Характеристика = СтрТ.Характеристика;
НовСтр.Серия = СтрТ.СерияСсылка;
- НовСтр.Количество = СтрТ.Количество;
- НовСтр.КоличествоУпаковок = СтрТ.Количество;
- НовСтр.Цена = 0;
- НовСтр.Сумма = 0;
+ НовСтр.Количество = КолДок;
+ НовСтр.КоличествоУпаковок = КолДок;
+ НовСтр.Сумма = СтрТ.Стоимость;
+ Если КолДок <> 0 И СтрТ.Стоимость <> 0 Тогда
+ НовСтр.Цена = Окр(СтрТ.Стоимость / КолДок, 2);
+ Иначе
+ НовСтр.Цена = 0;
+ КонецЕсли;
+ Попытка
+ НовСтр.СуммаРегл = СтрТ.СтоимостьРегл;
+ Исключение
+ КонецПопытки;
Попытка
НовСтр.СтавкаНДС = СтрТ.Номенклатура.СтавкаНДС;
Исключение
@@ -618,6 +677,17 @@
КонецПроцедуры
+Функция ЕстьСтоимостьВСтроках(Строки)
+
+ Для Каждого СтрТ Из Строки Цикл
+ Если СтрТ.Стоимость <> 0 Или СтрТ.СтоимостьРегл <> 0 Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Ложь;
+
+КонецФункции
+
Процедура ЗаполнитьСтрокуВходящихДанныхИзAPI(НовСтр, СтрокаAPI)
НовСтр.НоменклатураИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "nomenclature_guid", ""));
@@ -645,18 +715,34 @@
КонецЕсли;
НовСтр.ГТДИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "gtd_guid", ""));
- НовСтр.ГТД = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "gtd_name", "")));
+ ГТДТекст = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "gtd_name", "")));
+ Если ПустаяСтрока(ГТДТекст) Тогда
+ ГТДТекст = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "gtd_code", "")));
+ КонецЕсли;
+ Если ПустаяСтрока(ГТДТекст) Тогда
+ ГТДТекст = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "gtd_number", "")));
+ КонецЕсли;
+ НовСтр.ГТД = ГТДТекст;
НовСтр.ОрганизацияИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "organization_guid", ""));
НовСтр.ОрганизацияНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "organization_name", "")));
- НовСтр.Количество = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "qty_warehouse",
+ КолСклад = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "qty_warehouse", 0), 0);
+ КолФин = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "qty_financial",
ЗначениеСвойства(СтрокаAPI, "qty_org", 0)), 0);
+ НовСтр.Количество = КолСклад;
+ НовСтр.КоличествоОрганизации = КолФин;
НовСтр.КоличествоКОтгрузке = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "qty_to_ship", 0), 0);
- НовСтр.КоличествоОрганизации = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "qty_org", 0), 0);
- НовСтр.ВидНоменклатурыИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "policy_kind_guid", ""));
- НовСтр.ВидНоменклатурыНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "policy_kind_name", "")));
+ НовСтр.Стоимость = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "cost_mgmt", 0), 0);
+ НовСтр.СтоимостьРегл = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "cost_regl", 0), 0);
+ НовСтр.Валюта = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "currency_mgmt", "")));
+ НовСтр.ВалютаРегл = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "currency_regl", "")));
+
+ ВидGUID = ЗначениеСвойства(СтрокаAPI, "kind_guid", ЗначениеСвойства(СтрокаAPI, "policy_kind_guid", ""));
+ ВидИмя = ЗначениеСвойства(СтрокаAPI, "kind_name", ЗначениеСвойства(СтрокаAPI, "policy_kind_name", ""));
+ НовСтр.ВидНоменклатурыИдентификатор = UUIDИзСтроки(ВидGUID);
+ НовСтр.ВидНоменклатурыНаименование = СокрЛП(Строка(ВидИмя));
НовСтр.ПолитикаСерии = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "policy_use_series", "")));
НовСтр.ПолитикаХарактеристик = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "policy_use_characteristics", "")));
@@ -1073,6 +1159,19 @@
КонецФункции
+Функция БулевоИзЗначения(Значение)
+
+ Если ТипЗнч(Значение) = Тип("Булево") Тогда
+ Возврат Значение;
+ КонецЕсли;
+ Если Значение = Неопределено Или Значение = Null Тогда
+ Возврат Ложь;
+ КонецЕсли;
+ Стр = НРег(СокрЛП(Строка(Значение)));
+ Возврат Стр = "true" Или Стр = "1" Или Стр = "да" Или Стр = "истина";
+
+КонецФункции
+
#КонецОбласти
#КонецЕсли
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml
index ec22bcf..9ea6fa7 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml
@@ -217,6 +217,36 @@
+
+ Объект.ВходящиеСобственныеТовары.КоличествоОрганизации
+ EnterOnInput
+
+
+
+
+ Объект.ВходящиеСобственныеТовары.Стоимость
+ EnterOnInput
+
+
+
+
+ Объект.ВходящиеСобственныеТовары.Валюта
+ EnterOnInput
+
+
+
+
+ Объект.ВходящиеСобственныеТовары.СтоимостьРегл
+ EnterOnInput
+
+
+
+
+ Объект.ВходящиеСобственныеТовары.ВалютаРегл
+ EnterOnInput
+
+
+
Объект.ВходящиеСобственныеТовары.Артикул
EnterOnInput
@@ -402,6 +432,7 @@
Объект.ВходящиеКомиссионныеТовары.Серия
+ false
EnterOnInput
true
@@ -409,6 +440,7 @@
Объект.ВходящиеКомиссионныеТовары.СерияНомер
+ false
EnterOnInput
true
@@ -420,6 +452,36 @@
+
+ Объект.ВходящиеКомиссионныеТовары.Стоимость
+ EnterOnInput
+
+
+
+
+ Объект.ВходящиеКомиссионныеТовары.Валюта
+ EnterOnInput
+
+
+
+
+ Объект.ВходящиеКомиссионныеТовары.ВидЗапасов
+ EnterOnInput
+
+
+
+
+ Объект.ВходящиеКомиссионныеТовары.ТипЗапасов
+ EnterOnInput
+
+
+
+
+ Объект.ВходящиеКомиссионныеТовары.Назначение
+ EnterOnInput
+
+
+
Объект.ВходящиеКомиссионныеТовары.Артикул
EnterOnInput
@@ -464,6 +526,7 @@
Объект.ВходящиеКомиссионныеТовары.СерияСсылка
+ false
EnterOnInput
@@ -654,6 +717,111 @@
+
+
+
+ ru
+ Политика учета
+
+
+
+
+
+ List
+ Объект.ПолитикаУчетаНоменклатуры
+
+
+
+
+
+
+ - ПолитикаУчетаНоменклатуры
+ SearchStringRepresentation
+
+
+
+
+
+
+ - ПолитикаУчетаНоменклатуры
+ ViewStatusRepresentation
+
+
+
+
+
+
+ - ПолитикаУчетаНоменклатуры
+ SearchControl
+
+
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.ВидНоменклатурыНаименование
+ EnterOnInput
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.ИспользоватьСерии
+ EnterOnInput
+ Auto
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.НастройкаИспользованияСерий
+ EnterOnInput
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.ИспользоватьНомерСерии
+ EnterOnInput
+ Auto
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.ИспользоватьСрокГодностиСерии
+ EnterOnInput
+ Auto
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.ИспользоватьХарактеристики
+ EnterOnInput
+ Auto
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.ИспользованиеХарактеристик
+ EnterOnInput
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.ВестиУчетПоГТД
+ EnterOnInput
+ Auto
+
+
+
+
+ Объект.ПолитикаУчетаНоменклатуры.ВестиУчетСертификатовНоменклатуры
+ EnterOnInput
+ Auto
+
+
+
+
+
+
+
diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl
index 9dd5317..0b32287 100644
--- a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl
+++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl
@@ -140,7 +140,8 @@
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаСобственныеТовары;
ПоказатьОповещениеПользователя("Входящие данные", ,
"Собственные: " + Формат(Количество.Собственные, "ЧН=0; ЧГ=0")
- + "; комиссия 2.5: " + Формат(Количество.Комиссия, "ЧН=0; ЧГ=0"));
+ + "; комиссия 2.5: " + Формат(Количество.Комиссия, "ЧН=0; ЧГ=0")
+ + "; виды (политика): " + Формат(Количество.Политика, "ЧН=0; ЧГ=0"));
КонецПроцедуры
@@ -349,11 +350,13 @@
Новый Структура("rows", СтрокиСобственные), Истина);
ОбъектОбработки.ЗаполнитьВходящиеКомиссионныеТоварыИзОтветаОстатков(
Новый Структура("rows", СтрокиКомиссия), Истина);
+ ЗаполнитьПолитикуУчетаНоменклатуры(ОбъектОбработки, СтрокиСобственные, СтрокиКомиссия);
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
Результат = Новый Структура;
Результат.Вставить("Собственные", Объект.ВходящиеСобственныеТовары.Количество());
Результат.Вставить("Комиссия", Объект.ВходящиеКомиссионныеТовары.Количество());
+ Результат.Вставить("Политика", Объект.ПолитикаУчетаНоменклатуры.Количество());
Возврат Результат;
КонецФункции
@@ -372,7 +375,8 @@
ПараметрыЗапроса.Вставить("mode", Режим);
ПараметрыЗапроса.Вставить("as_of", Формат(Объект.ДатаОстатков, "ДФ=yyyy-MM-ddTHH:mm:ss"));
ПараметрыЗапроса.Вставить("limit", Лимит);
- ПараметрыЗапроса.Вставить("include_policy", Истина);
+ ПараметрыЗапроса.Вставить("include_policy", Ложь);
+ ПараметрыЗапроса.Вставить("include_cost", Истина);
ПараметрыЗапроса.Вставить("filters", Фильтры);
Если ПолныйОбход Тогда
ПараметрыЗапроса.Вставить("allow_full_scan", Истина);
@@ -411,6 +415,42 @@
КонецФункции
+&НаСервере
+Процедура ЗаполнитьПолитикуУчетаНоменклатуры(ОбъектОбработки, СтрокиСобственные, СтрокиКомиссия)
+
+ Виды = Новый Массив;
+ Для Каждого СтрокаAPI Из СтрокиСобственные Цикл
+ ДобавитьВидНоменклатурыИзСтрокиAPI(Виды, СтрокаAPI);
+ КонецЦикла;
+ Для Каждого СтрокаAPI Из СтрокиКомиссия Цикл
+ ДобавитьВидНоменклатурыИзСтрокиAPI(Виды, СтрокаAPI);
+ КонецЦикла;
+ Если Виды.Количество() = 0 Тогда
+ ОбъектОбработки.ПолитикаУчетаНоменклатуры.Очистить();
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыЗапроса = Новый Структура;
+ ПараметрыЗапроса.Вставить("filters", Новый Структура("nomenclature_kinds", Виды));
+ Ответ = РК_ОбменСВнешнейБазой.ПолитикаНоменклатурыВнешнейБазы(
+ Объект.ПодключениеКСтороннейБазе, ПараметрыЗапроса);
+ ОбъектОбработки.ЗаполнитьПолитикуУчетаИзОтвета(Ответ, Истина);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ДобавитьВидНоменклатурыИзСтрокиAPI(Виды, СтрокаAPI)
+
+ Гуид = СокрЛП(Строка(ЗначениеСвойстваОтвета(СтрокаAPI, "kind_guid")));
+ Если ПустаяСтрока(Гуид) Тогда
+ Гуид = СокрЛП(Строка(ЗначениеСвойстваОтвета(СтрокаAPI, "policy_kind_guid")));
+ КонецЕсли;
+ Если Не ПустаяСтрока(Гуид) И Виды.Найти(Гуид) = Неопределено Тогда
+ Виды.Добавить(Гуид);
+ КонецЕсли;
+
+КонецПроцедуры
+
&НаСервере
Функция СопоставитьНаСервере(РежимТест)