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 @@ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Политика учета</v8:content> + </v8:item> + + + + + List + Объект.ПолитикаУчетаНоменклатуры + + + + + + + ПолитикаУчетаНоменклатуры + SearchStringRepresentation + + + + + + + ПолитикаУчетаНоменклатуры + ViewStatusRepresentation + + + + + + + ПолитикаУчетаНоменклатуры + SearchControl + + + + + + + Объект.ПолитикаУчетаНоменклатуры.ВидНоменклатурыНаименование + EnterOnInput + + + + + Объект.ПолитикаУчетаНоменклатуры.ИспользоватьСерии + EnterOnInput + Auto + + + + + Объект.ПолитикаУчетаНоменклатуры.НастройкаИспользованияСерий + EnterOnInput + + + + + Объект.ПолитикаУчетаНоменклатуры.ИспользоватьНомерСерии + EnterOnInput + Auto + + + + + Объект.ПолитикаУчетаНоменклатуры.ИспользоватьСрокГодностиСерии + EnterOnInput + Auto + + + + + Объект.ПолитикаУчетаНоменклатуры.ИспользоватьХарактеристики + EnterOnInput + Auto + + + + + Объект.ПолитикаУчетаНоменклатуры.ИспользованиеХарактеристик + EnterOnInput + + + + + Объект.ПолитикаУчетаНоменклатуры.ВестиУчетПоГТД + EnterOnInput + Auto + + + + + Объект.ПолитикаУчетаНоменклатуры.ВестиУчетСертификатовНоменклатуры + EnterOnInput + Auto + + + + +
+
+
<v8:item> 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"))); + КонецЕсли; + Если Не ПустаяСтрока(Гуид) И Виды.Найти(Гуид) = Неопределено Тогда + Виды.Добавить(Гуид); + КонецЕсли; + +КонецПроцедуры + &НаСервере Функция СопоставитьНаСервере(РежимТест)