РК_ЗагрузкаОстатков 1.3.1.62: кол. склад и финансовое раздельно, себестоимость rh_.

В таблицу приходят два количества и сумма только финансового контура; комиссия без серий. Документы ввода заполняют сумму из rh_, как волна 1. Нужен ws-rhana ≥ 0.0.0.38.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mihailkudravcev
2026-08-13 16:57:23 +03:00
parent be72455409
commit 8778167248
10 changed files with 1418 additions and 62 deletions
@@ -107,6 +107,18 @@
КонецФункции
// POST /v1/stock/nomenclature-policy на исходной ИБ.
//
Функция ПолитикаНоменклатурыВнешнейБазы(Подключение, ПараметрыЗапроса = Неопределено) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
ПараметрыЗапроса = Новый Структура;
КонецЕсли;
Настройки = НастройкиПодключения(Подключение);
Возврат ВыполнитьPOST(Настройки, "v1/stock/nomenclature-policy", ПараметрыЗапроса);
КонецФункции
// Универсальный GET к Transfer API.
//
Функция ВыполнитьGET(НастройкиПодключения, ОтносительныйПуть) Экспорт
+26
View File
@@ -140,6 +140,32 @@
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.КомментарийСопоставления" id="45b76fd3-eb95-4779-ac62-0aa185285346"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.ДокументВвода" id="35290aa0-0f69-4787-92c2-75242f0ae40d"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.ЗагруженоВДокумент" id="c030165b-15da-47d7-b489-123dd223030a"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.Стоимость" id="cfd625b9-db17-4ad4-b1e8-7410a86a3093"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.СтоимостьРегл" id="cb1bde6c-b910-4bbf-8ba7-58b6bfd56c44"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.Валюта" id="64f14aa0-3d73-4403-b856-34c2eed5ea66"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеСобственныеТовары.Attribute.ВалютаРегл" id="1c568238-e69f-4932-931e-608d60f4f0dc"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.Стоимость" id="c6541cc9-b337-40a0-9344-9bf231b744c5"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.СтоимостьРегл" id="068e3fcc-0bd5-4af0-a192-d100909a8cc1"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.Валюта" id="7d4a051e-00b0-4b8f-a4fd-558cea1efeb2"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.ВалютаРегл" id="36f86933-8160-4e76-81bc-c91652405c6d"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.Назначение" id="b8603b9a-2174-4f67-b235-42b146d4c0e0"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.НазначениеИдентификатор" id="cea7e015-5a14-49ac-b321-898b3d75696a"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.ВидЗапасов" id="4917f342-9c11-4844-8f2e-159f2abe8cb4"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.ВидЗапасовИдентификатор" id="91c330ed-7136-4788-8516-9a67b86b2189"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеКомиссионныеТовары.Attribute.ТипЗапасов" id="47c8a3c1-d23c-4d8f-9f7e-7cab805b5be4"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры" id="d8059437-d963-4b1b-8930-8ed7b9fd05fe"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ВидНоменклатурыНаименование" id="e4d84e8b-fbd4-4967-9f84-67622403de0a"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ВидНоменклатурыИдентификатор" id="38327804-b469-47a4-8d30-d482811dcfd6"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ИспользоватьСерии" id="8670ebd5-bbf6-4181-bf0a-6d227dc08bb2"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.НастройкаИспользованияСерий" id="5d9f3ddb-747d-4844-8344-d7a98b66c148"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ИспользоватьНомерСерии" id="429fe59e-349c-4ae0-a2b6-30f249d9d9c8"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ИспользоватьСрокГодностиСерии" id="5d1bfcf1-6455-4694-a393-d2d3cc1c721c"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ТочностьУказанияСрокаГодностиСерии" id="a1296c97-525a-457d-870e-634d893cea01"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ИспользоватьRFIDМеткиСерии" id="ad687f65-d2a4-4432-ba8a-a075aec31115"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ИспользоватьХарактеристики" id="87262e2d-51c1-4130-974a-66eadc43941c"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ИспользованиеХарактеристик" id="7301c423-a4fc-412d-bffa-31d3b904951e"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ВестиУчетПоГТД" id="1d2892b7-def7-4d9a-8666-1232dc634c34"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ПолитикаУчетаНоменклатуры.Attribute.ВестиУчетСертификатовНоменклатуры" id="eeafee18-23d9-4e5a-b079-36cf49e1b3d8"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.СозданныеДокументы" id="c3e8a1b4-7d2f-4e91-8a56-2b0c9f4d6e18"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.СозданныеДокументы.Attribute.Документ" id="b8d3f6a9-2c74-43e6-9f0b-70514e92b36d"/>
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.СозданныеДокументы.Attribute.ВидОстатков" id="c9e4a7b0-3d85-44f7-8a1c-81625fa3c47e"/>
+1 -1
View File
@@ -62,7 +62,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
</DefaultRoles>
<Vendor/>
<Version>1.3.1.60</Version>
<Version>1.3.1.62</Version>
<DefaultStyle/>
<DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation/>
File diff suppressed because it is too large Load Diff
@@ -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" Или Стр = "да" Или Стр = "истина";
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -217,6 +217,36 @@
<ContextMenu name="ВходящиеСобственныеТоварыКоличествоКонтекстноеМеню" id="81"/>
<ExtendedTooltip name="ВходящиеСобственныеТоварыКоличествоРасширеннаяПодсказка" id="82"/>
</InputField>
<InputField name="ВходящиеСобственныеТоварыКоличествоОрганизации" id="1500">
<DataPath>Объект.ВходящиеСобственныеТовары.КоличествоОрганизации</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеСобственныеТоварыКоличествоОрганизацииКонтекстноеМеню" id="1501"/>
<ExtendedTooltip name="ВходящиеСобственныеТоварыКоличествоОрганизацииРасширеннаяПодсказка" id="1502"/>
</InputField>
<InputField name="ВходящиеСобственныеТоварыСтоимость" id="1400">
<DataPath>Объект.ВходящиеСобственныеТовары.Стоимость</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеСобственныеТоварыСтоимостьКонтекстноеМеню" id="1401"/>
<ExtendedTooltip name="ВходящиеСобственныеТоварыСтоимостьРасширеннаяПодсказка" id="1402"/>
</InputField>
<InputField name="ВходящиеСобственныеТоварыВалюта" id="1403">
<DataPath>Объект.ВходящиеСобственныеТовары.Валюта</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеСобственныеТоварыВалютаКонтекстноеМеню" id="1404"/>
<ExtendedTooltip name="ВходящиеСобственныеТоварыВалютаРасширеннаяПодсказка" id="1405"/>
</InputField>
<InputField name="ВходящиеСобственныеТоварыСтоимостьРегл" id="1406">
<DataPath>Объект.ВходящиеСобственныеТовары.СтоимостьРегл</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеСобственныеТоварыСтоимостьРеглКонтекстноеМеню" id="1407"/>
<ExtendedTooltip name="ВходящиеСобственныеТоварыСтоимостьРеглРасширеннаяПодсказка" id="1408"/>
</InputField>
<InputField name="ВходящиеСобственныеТоварыВалютаРегл" id="1409">
<DataPath>Объект.ВходящиеСобственныеТовары.ВалютаРегл</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеСобственныеТоварыВалютаРеглКонтекстноеМеню" id="1410"/>
<ExtendedTooltip name="ВходящиеСобственныеТоварыВалютаРеглРасширеннаяПодсказка" id="1411"/>
</InputField>
<InputField name="ВходящиеСобственныеТоварыАртикул" id="83">
<DataPath>Объект.ВходящиеСобственныеТовары.Артикул</DataPath>
<EditMode>EnterOnInput</EditMode>
@@ -402,6 +432,7 @@
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыСерия" id="1067">
<DataPath>Объект.ВходящиеКомиссионныеТовары.Серия</DataPath>
<Visible>false</Visible>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="ВходящиеКомиссионныеТоварыСерияКонтекстноеМеню" id="1068"/>
@@ -409,6 +440,7 @@
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыСерияНомер" id="1203">
<DataPath>Объект.ВходящиеКомиссионныеТовары.СерияНомер</DataPath>
<Visible>false</Visible>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="ВходящиеКомиссионныеТоварыСерияНомерКонтекстноеМеню" id="1204"/>
@@ -420,6 +452,36 @@
<ContextMenu name="ВходящиеКомиссионныеТоварыКоличествоКонтекстноеМеню" id="1081"/>
<ExtendedTooltip name="ВходящиеКомиссионныеТоварыКоличествоРасширеннаяПодсказка" id="1082"/>
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыСтоимость" id="1412">
<DataPath>Объект.ВходящиеКомиссионныеТовары.Стоимость</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеКомиссионныеТоварыСтоимостьКонтекстноеМеню" id="1413"/>
<ExtendedTooltip name="ВходящиеКомиссионныеТоварыСтоимостьРасширеннаяПодсказка" id="1414"/>
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыВалюта" id="1415">
<DataPath>Объект.ВходящиеКомиссионныеТовары.Валюта</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеКомиссионныеТоварыВалютаКонтекстноеМеню" id="1416"/>
<ExtendedTooltip name="ВходящиеКомиссионныеТоварыВалютаРасширеннаяПодсказка" id="1417"/>
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыВидЗапасов" id="1418">
<DataPath>Объект.ВходящиеКомиссионныеТовары.ВидЗапасов</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеКомиссионныеТоварыВидЗапасовКонтекстноеМеню" id="1419"/>
<ExtendedTooltip name="ВходящиеКомиссионныеТоварыВидЗапасовРасширеннаяПодсказка" id="1420"/>
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыТипЗапасов" id="1421">
<DataPath>Объект.ВходящиеКомиссионныеТовары.ТипЗапасов</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеКомиссионныеТоварыТипЗапасовКонтекстноеМеню" id="1422"/>
<ExtendedTooltip name="ВходящиеКомиссионныеТоварыТипЗапасовРасширеннаяПодсказка" id="1423"/>
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыНазначение" id="1424">
<DataPath>Объект.ВходящиеКомиссионныеТовары.Назначение</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеКомиссионныеТоварыНазначениеКонтекстноеМеню" id="1425"/>
<ExtendedTooltip name="ВходящиеКомиссионныеТоварыНазначениеРасширеннаяПодсказка" id="1426"/>
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыАртикул" id="1083">
<DataPath>Объект.ВходящиеКомиссионныеТовары.Артикул</DataPath>
<EditMode>EnterOnInput</EditMode>
@@ -464,6 +526,7 @@
</InputField>
<InputField name="ВходящиеКомиссионныеТоварыСерияСсылка" id="1104">
<DataPath>Объект.ВходящиеКомиссионныеТовары.СерияСсылка</DataPath>
<Visible>false</Visible>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВходящиеКомиссионныеТоварыСерияСсылкаКонтекстноеМеню" id="1105"/>
<ExtendedTooltip name="ВходящиеКомиссионныеТоварыСерияСсылкаРасширеннаяПодсказка" id="1106"/>
@@ -654,6 +717,111 @@
</Table>
</ChildItems>
</Page>
<Page name="ГруппаПолитикаУчета" id="1450">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Политика учета</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="ГруппаПолитикаУчетаРасширеннаяПодсказка" id="1451"/>
<ChildItems>
<Table name="ПолитикаУчетаНоменклатуры" id="1452">
<Representation>List</Representation>
<DataPath>Объект.ПолитикаУчетаНоменклатуры</DataPath>
<RowFilter xsi:nil="true"/>
<ContextMenu name="ПолитикаУчетаНоменклатурыКонтекстноеМеню" id="1453"/>
<AutoCommandBar name="ПолитикаУчетаНоменклатурыКоманднаяПанель" id="1454"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыРасширеннаяПодсказка" id="1455"/>
<SearchStringAddition name="ПолитикаУчетаНоменклатурыСтрокаПоиска" id="1456">
<AdditionSource>
<Item>ПолитикаУчетаНоменклатуры</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ПолитикаУчетаНоменклатурыСтрокаПоискаКонтекстноеМеню" id="1457"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыСтрокаПоискаРасширеннаяПодсказка" id="1458"/>
</SearchStringAddition>
<ViewStatusAddition name="ПолитикаУчетаНоменклатурыСостояниеПросмотра" id="1459">
<AdditionSource>
<Item>ПолитикаУчетаНоменклатуры</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ПолитикаУчетаНоменклатурыСостояниеПросмотраКонтекстноеМеню" id="1460"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыСостояниеПросмотраРасширеннаяПодсказка" id="1461"/>
</ViewStatusAddition>
<SearchControlAddition name="ПолитикаУчетаНоменклатурыУправлениеПоиском" id="1462">
<AdditionSource>
<Item>ПолитикаУчетаНоменклатуры</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ПолитикаУчетаНоменклатурыУправлениеПоискомКонтекстноеМеню" id="1463"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыУправлениеПоискомРасширеннаяПодсказка" id="1464"/>
</SearchControlAddition>
<ChildItems>
<InputField name="ПолитикаУчетаНоменклатурыВидНоменклатурыНаименование" id="1465">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.ВидНоменклатурыНаименование</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПолитикаУчетаНоменклатурыВидНоменклатурыНаименованиеКонтекстноеМеню" id="1466"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыВидНоменклатурыНаименованиеРасширеннаяПодсказка" id="1467"/>
</InputField>
<CheckBoxField name="ПолитикаУчетаНоменклатурыИспользоватьСерии" id="1468">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.ИспользоватьСерии</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПолитикаУчетаНоменклатурыИспользоватьСерииКонтекстноеМеню" id="1469"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыИспользоватьСерииРасширеннаяПодсказка" id="1470"/>
</CheckBoxField>
<InputField name="ПолитикаУчетаНоменклатурыНастройкаИспользованияСерий" id="1471">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.НастройкаИспользованияСерий</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПолитикаУчетаНоменклатурыНастройкаИспользованияСерийКонтекстноеМеню" id="1472"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыНастройкаИспользованияСерийРасширеннаяПодсказка" id="1473"/>
</InputField>
<CheckBoxField name="ПолитикаУчетаНоменклатурыИспользоватьНомерСерии" id="1474">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.ИспользоватьНомерСерии</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПолитикаУчетаНоменклатурыИспользоватьНомерСерииКонтекстноеМеню" id="1475"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыИспользоватьНомерСерииРасширеннаяПодсказка" id="1476"/>
</CheckBoxField>
<CheckBoxField name="ПолитикаУчетаНоменклатурыИспользоватьСрокГодностиСерии" id="1477">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.ИспользоватьСрокГодностиСерии</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПолитикаУчетаНоменклатурыИспользоватьСрокГодностиСерииКонтекстноеМеню" id="1478"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыИспользоватьСрокГодностиСерииРасширеннаяПодсказка" id="1479"/>
</CheckBoxField>
<CheckBoxField name="ПолитикаУчетаНоменклатурыИспользоватьХарактеристики" id="1480">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.ИспользоватьХарактеристики</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПолитикаУчетаНоменклатурыИспользоватьХарактеристикиКонтекстноеМеню" id="1481"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыИспользоватьХарактеристикиРасширеннаяПодсказка" id="1482"/>
</CheckBoxField>
<InputField name="ПолитикаУчетаНоменклатурыИспользованиеХарактеристик" id="1483">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.ИспользованиеХарактеристик</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПолитикаУчетаНоменклатурыИспользованиеХарактеристикКонтекстноеМеню" id="1484"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыИспользованиеХарактеристикРасширеннаяПодсказка" id="1485"/>
</InputField>
<CheckBoxField name="ПолитикаУчетаНоменклатурыВестиУчетПоГТД" id="1486">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.ВестиУчетПоГТД</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПолитикаУчетаНоменклатурыВестиУчетПоГТДКонтекстноеМеню" id="1487"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыВестиУчетПоГТДРасширеннаяПодсказка" id="1488"/>
</CheckBoxField>
<CheckBoxField name="ПолитикаУчетаНоменклатурыВестиУчетСертификатовНоменклатуры" id="1489">
<DataPath>Объект.ПолитикаУчетаНоменклатуры.ВестиУчетСертификатовНоменклатуры</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПолитикаУчетаНоменклатурыВестиУчетСертификатовНоменклатурыКонтекстноеМеню" id="1490"/>
<ExtendedTooltip name="ПолитикаУчетаНоменклатурыВестиУчетСертификатовНоменклатурыРасширеннаяПодсказка" id="1491"/>
</CheckBoxField>
</ChildItems>
</Table>
</ChildItems>
</Page>
<Page name="ГруппаОтбор" id="39">
<Title>
<v8:item>
@@ -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")));
КонецЕсли;
Если Не ПустаяСтрока(Гуид) И Виды.Найти(Гуид) = Неопределено Тогда
Виды.Добавить(Гуид);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СопоставитьНаСервере(РежимТест)