diff --git a/VERSION b/VERSION index da38598..7dc8bdf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.1.63 +1.3.1.64 diff --git a/src/CommonModules/РК_ОбменСВнешнейБазой/Ext/Module.bsl b/src/CommonModules/РК_ОбменСВнешнейБазой/Ext/Module.bsl index f712019..e491f7a 100644 --- a/src/CommonModules/РК_ОбменСВнешнейБазой/Ext/Module.bsl +++ b/src/CommonModules/РК_ОбменСВнешнейБазой/Ext/Module.bsl @@ -119,6 +119,18 @@ КонецФункции +// POST /v1/stock/nomenclature-groups на исходной ИБ. +// +Функция СписокГруппНоменклатурыВнешнейБазы(Подключение, ПараметрыЗапроса = Неопределено) Экспорт + + Если ПараметрыЗапроса = Неопределено Тогда + ПараметрыЗапроса = Новый Структура; + КонецЕсли; + Настройки = НастройкиПодключения(Подключение); + Возврат ВыполнитьPOST(Настройки, "v1/stock/nomenclature-groups", ПараметрыЗапроса); + +КонецФункции + // Универсальный GET к Transfer API. // Функция ВыполнитьGET(НастройкиПодключения, ОтносительныйПуть) Экспорт diff --git a/src/ConfigDumpInfo.xml b/src/ConfigDumpInfo.xml index 59061f1..24d0c0e 100644 --- a/src/ConfigDumpInfo.xml +++ b/src/ConfigDumpInfo.xml @@ -145,6 +145,14 @@ + + + + + + + + diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков.xml b/src/DataProcessors/РК_ЗагрузкаОстатков.xml index 1be6b57..f57088f 100644 --- a/src/DataProcessors/РК_ЗагрузкаОстатков.xml +++ b/src/DataProcessors/РК_ЗагрузкаОстатков.xml @@ -4694,6 +4694,124 @@ + + + + 9b25a39a-9e13-42b5-92ae-f65a08475332 + 9d042f35-d49d-42b4-92af-c51a50db28bd + + + e7012345-a678-4bcd-9ef0-123456789abd + 383d7cb5-2b7e-439d-9703-be5c608aaa16 + + + + ОтборСкладовВнешнейБазы + + + ru + Отбор складов внешней базы + + + + + DontCheck + + + + + Идентификатор + ruИдентификатор + + v8:UUID + falsefalsefalsefalse + falseDontCheck + ItemsAutoAutoAuto + + + + + Наименование + ruНаименование + + xs:string0Variable + falsefalsefalsefalse + falseDontCheck + ItemsAutoAutoAuto + + + + + Отметка + ruОтметка + + xs:boolean + falsefalsefalsefalse + falsefalseDontCheck + ItemsAutoAutoAuto + + + + + + + + a8703c2c-bc4c-4f6e-8025-a664a8a234e7 + e7ffea42-e739-4ecf-9732-d0387afea506 + + + f8123456-b789-4cde-8fa1-234567890abd + a8cd129c-2184-4d08-bbd8-dc6961b5c74d + + + + ОтборОрганизацийВнешнейБазы + + + ru + Отбор организаций внешней базы + + + + + DontCheck + + + + + Идентификатор + ruИдентификатор + + v8:UUID + falsefalsefalsefalse + falseDontCheck + ItemsAutoAutoAuto + + + + + Наименование + ruНаименование + + xs:string0Variable + falsefalsefalsefalse + falseDontCheck + ItemsAutoAutoAuto + + + + + Отметка + ruОтметка + + xs:boolean + falsefalsefalsefalse + falsefalseDontCheck + ItemsAutoAutoAuto + + + + diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl index 364f54f..6ca20c1 100644 --- a/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl +++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Ext/ObjectModule.bsl @@ -760,6 +760,7 @@ ВидИмя = ЗначениеСвойства(СтрокаAPI, "kind_name", ЗначениеСвойства(СтрокаAPI, "policy_kind_name", "")); НовСтр.ВидНоменклатурыИдентификатор = UUIDИзСтроки(ВидGUID); НовСтр.ВидНоменклатурыНаименование = СокрЛП(Строка(ВидИмя)); + НовСтр.ра_ВидНоменклатурыCRM326 = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "kind_crm326_name", ""))); НовСтр.ПолитикаСерии = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "policy_use_series", ""))); НовСтр.ПолитикаХарактеристик = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "policy_use_characteristics", ""))); diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml index aaf515f..cb77351 100644 --- a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml +++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form.xml @@ -165,7 +165,15 @@ Объект.ОтборГруппНоменклатур - + + + + + @@ -228,7 +236,7 @@ true true true - ОтборСкладовВнешнейБазы + Объект.ОтборСкладовВнешнейБазы false @@ -291,21 +299,21 @@ - ОтборСкладовВнешнейБазы.Отметка + Объект.ОтборСкладовВнешнейБазы.Отметка EnterOnInput Auto - ОтборСкладовВнешнейБазы.Наименование + Объект.ОтборСкладовВнешнейБазы.Наименование EnterOnInput true - ОтборСкладовВнешнейБазы.Идентификатор + Объект.ОтборСкладовВнешнейБазы.Идентификатор false EnterOnInput @@ -337,7 +345,7 @@ true true true - ОтборОрганизацийВнешнейБазы + Объект.ОтборОрганизацийВнешнейБазы false @@ -400,21 +408,21 @@ - ОтборОрганизацийВнешнейБазы.Отметка + Объект.ОтборОрганизацийВнешнейБазы.Отметка EnterOnInput Auto - ОтборОрганизацийВнешнейБазы.Наименование + Объект.ОтборОрганизацийВнешнейБазы.Наименование EnterOnInput true - ОтборОрганизацийВнешнейБазы.Идентификатор + Объект.ОтборОрганизацийВнешнейБазы.Идентификатор false EnterOnInput @@ -768,6 +776,44 @@ + + + + + Объект.ВходящиеКомиссионныеТовары.ВидНоменклатурыНаименование + EnterOnInput + + + + + Объект.ВходящиеКомиссионныеТовары.ра_ВидНоменклатурыCRM326 + EnterOnInput + true + + + + + + + + + + Объект.ВходящиеКомиссионныеТовары.Артикул + EnterOnInput + + + + + Объект.ВходящиеКомиссионныеТовары.НоменклатураКод + EnterOnInput + + + + + + + + Объект.ВходящиеКомиссионныеТовары.НоменклатураНаименование EnterOnInput @@ -775,20 +821,31 @@ - - Объект.ВходящиеКомиссионныеТовары.ЕдИзм + + Объект.ВходящиеКомиссионныеТовары.ХарактеристикаНаименование EnterOnInput - true - - + + - - Объект.ВходящиеКомиссионныеТовары.ЕдИзмИдентификатор - false + + + + + + + Объект.ВходящиеКомиссионныеТовары.Количество EnterOnInput - - - + + + + + Объект.ВходящиеКомиссионныеТовары.КоличествоОрганизации + EnterOnInput + + + + + Объект.ВходящиеКомиссионныеТовары.СкладНаименование EnterOnInput @@ -803,13 +860,9 @@ - - Объект.ВходящиеКомиссионныеТовары.ГТД - EnterOnInput - true - - - + + + Объект.ВходящиеКомиссионныеТовары.Серия EnterOnInput @@ -824,12 +877,22 @@ - - Объект.ВходящиеКомиссионныеТовары.Количество + + + + Объект.ВходящиеКомиссионныеТовары.ЕдИзм EnterOnInput - - + true + + + + Объект.ВходящиеКомиссионныеТовары.ЕдИзмИдентификатор + false + EnterOnInput + + + Объект.ВходящиеКомиссионныеТовары.Стоимость EnterOnInput @@ -842,6 +905,13 @@ + + Объект.ВходящиеКомиссионныеТовары.ГТД + EnterOnInput + true + + + Объект.ВходящиеКомиссионныеТовары.ВидЗапасов EnterOnInput @@ -860,30 +930,6 @@ - - Объект.ВходящиеКомиссионныеТовары.Артикул - EnterOnInput - - - - - Объект.ВходящиеКомиссионныеТовары.НоменклатураКод - EnterOnInput - - - - - Объект.ВходящиеКомиссионныеТовары.ХарактеристикаНаименование - EnterOnInput - - - - - Объект.ВходящиеКомиссионныеТовары.ВидНоменклатурыНаименование - EnterOnInput - - - Объект.ВходящиеКомиссионныеТовары.ОрганизацияНаименование EnterOnInput @@ -973,7 +1019,36 @@ - +дящиеКомиссионныеТоварыКонтрагентКонтекстноеМеню" id="1197"/> + + + + Объект.ВходящиеКомиссионныеТовары.Сопоставлено + EnterOnInput + Auto + + + + + Объект.ВходящиеКомиссионныеТовары.КомментарийСопоставления + EnterOnInput + + + + + Объект.ВходящиеКомиссионныеТовары.ДокументВвода + EnterOnInput + + + + + Объект.ВходящиеКомиссионныеТовары.ЗагруженоВДокумент + EnterOnInput + Auto + + + + @@ -1212,106 +1287,6 @@ - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Отбор складов внешней базы</v8:content> - </v8:item> - - - v8:ValueTable - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Наименование</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Идентификатор</v8:content> - </v8:item> - - - v8:UUID - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Отметка</v8:content> - </v8:item> - - - xs:boolean - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Отбор организаций внешней базы</v8:content> - </v8:item> - - - v8:ValueTable - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Наименование</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Идентификатор</v8:content> - </v8:item> - - - v8:UUID - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Отметка</v8:content> - </v8:item> - - - xs:boolean - - - - <v8:item> diff --git a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl index 76f055f..77d4ebc 100644 --- a/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl +++ b/src/DataProcessors/РК_ЗагрузкаОстатков/Forms/Форма/Ext/Form/Module.bsl @@ -1,12 +1,5 @@ -// TODO: Необходимо реквизит формы ОтборОрганизацийВнешнейБазы перенести в табличную часть объекта обработки РК_ЗагрузкаОстатков (Задача #3, https://git.p7net.ru/1c/crm3_26.rhana/issues/3) - -// TODO: Необходимо реквизит формы ОтборСкладовВнешнейБазы перенести в табличную часть объекта обработки РК_ЗагрузкаОстатков (задача #4, https://git.p7net.ru/1c/crm3_26.rhana/issues/4) - -// TODO: В баличных частях объекта обработки РК_ЗагрузкаОстатков и в соответствующих элементах форм (полей таблиц форм) необходимо в имени добавить "Исх" - для полей, заполняемых из исходной базы, "Цел" - для полей, значения в которых после сопоставления будут применяться для загрузки данных в целевую базу. (https://git.p7net.ru/1c/crm3_26.rhana/issues/8) - -// TODO: Таблицу на форме с товарами, переданными на комиссию (ВходящиеКомиссионныеТовары) в столбцах сгруппировать на подобии с ВходящиеСобственныеТовары (https://git.p7net.ru/1c/crm3_26.rhana/issues/9) - -// TODO: Актуализировать версию в ./VERSION репозитария. +// TODO (#8): префиксы «Исх»/«Цел» в реквизитах ТЧ — отдельный рефакторинг метаданных. +// https://git.p7net.ru/1c/crm3_26.rhana/issues/8 #Область ОбработчикиСобытийФормы @@ -41,8 +34,8 @@ Возврат; КонецЕсли; - Если ОтборСкладовВнешнейБазы.Количество() = 0 - И ОтборОрганизацийВнешнейБазы.Количество() = 0 + Если Объект.ОтборСкладовВнешнейБазы.Количество() = 0 + И Объект.ОтборОрганизацийВнешнейБазы.Количество() = 0 И Объект.ВходящиеСобственныеТовары.Количество() = 0 И Объект.ВходящиеКомиссионныеТовары.Количество() = 0 Тогда ПодключениеКСтороннейБазеПредыдущее = Объект.ПодключениеКСтороннейБазе; @@ -132,9 +125,6 @@ &НаКлиенте Процедура ЗагрузитьОстатки(Команда) - // TODO: При загрузке остатков из исходной базы необходимо также наполнить ра_ВидНоменклатурыCRM326 из дополнительного свойства номенклатуры исходной базы. (задача #5, https://git.p7net.ru/1c/crm3_26.rhana/issues/5) - // В том числе это надо сделать для таблицы для товаров, переданных на комиссию. - Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда ПоказатьПредупреждение(, "Укажите подключение к сторонней базе"); Возврат; @@ -240,7 +230,7 @@ Процедура УстановитьОтметкуВыделенныхСтрок(ИмяТаблицы, Отметка) ТаблицаФормы = Элементы[ИмяТаблицы]; - ДанныеТаблицы = ЭтотОбъект[ИмяТаблицы]; + ДанныеТаблицы = Объект[ИмяТаблицы]; Выделенные = ТаблицаФормы.ВыделенныеСтроки; Если Выделенные.Количество() = 0 Тогда ПоказатьПредупреждение(, "Выделите строки в таблице"); @@ -259,8 +249,8 @@ &НаКлиенте Процедура ОчиститьДанныеВнешнейБазыНаКлиенте() - ОтборСкладовВнешнейБазы.Очистить(); - ОтборОрганизацийВнешнейБазы.Очистить(); + Объект.ОтборСкладовВнешнейБазы.Очистить(); + Объект.ОтборОрганизацийВнешнейБазы.Очистить(); Объект.ВходящиеСобственныеТовары.Очистить(); Объект.ВходящиеКомиссионныеТовары.Очистить(); Объект.СозданныеДокументы.Очистить(); @@ -271,7 +261,7 @@ Процедура ПодобратьСкладыНаСервере() Ответ = РК_ОбменСВнешнейБазой.СписокСкладовВнешнейБазы(Объект.ПодключениеКСтороннейБазе); - ЗаполнитьТаблицуОтбораИзОтветаAPI(ОтборСкладовВнешнейБазы, Ответ, "/v1/stock/warehouses"); + ЗаполнитьТаблицуОтбораИзОтветаAPI(Объект.ОтборСкладовВнешнейБазы, Ответ, "/v1/stock/warehouses"); КонецПроцедуры @@ -279,7 +269,7 @@ Процедура ЗаполнитьОрганизацииНаСервере() Ответ = РК_ОбменСВнешнейБазой.СписокОрганизацийВнешнейБазы(Объект.ПодключениеКСтороннейБазе); - ЗаполнитьТаблицуОтбораИзОтветаAPI(ОтборОрганизацийВнешнейБазы, Ответ, "/v1/stock/organizations"); + ЗаполнитьТаблицуОтбораИзОтветаAPI(Объект.ОтборОрганизацийВнешнейБазы, Ответ, "/v1/stock/organizations"); КонецПроцедуры @@ -322,14 +312,14 @@ Функция ЗагрузитьОстаткиНаСервере() СкладыGUID = Новый Массив; - Для Каждого Стр Из ОтборСкладовВнешнейБазы Цикл + Для Каждого Стр Из Объект.ОтборСкладовВнешнейБазы Цикл Если Стр.Отметка Тогда СкладыGUID.Добавить(Строка(Стр.Идентификатор)); КонецЕсли; КонецЦикла; ОрганизацииGUID = Новый Массив; - Для Каждого Стр Из ОтборОрганизацийВнешнейБазы Цикл + Для Каждого Стр Из Объект.ОтборОрганизацийВнешнейБазы Цикл Если Стр.Отметка Тогда ОрганизацииGUID.Добавить(Строка(Стр.Идентификатор)); КонецЕсли; @@ -525,14 +515,71 @@ &НаСервере Процедура ЗаполнитьГруппыНоменклатурНаСервере() - // TODO: Необходимо запросить список групп номенклатур в исходной базе через ws-rhana и заполнить / перезаполнить ОтборГруппНоменклатур (задача #6, https://git.p7net.ru/1c/crm3_26.rhana/issues/6) - - // TODO: Надо уточнить. Возможно ли вывести таблицу групп номенклатур из исходной базы рекурсивно с сохранением вложенности в исходной базе? (https://git.p7net.ru/1c/crm3_26.rhana/issues/7) + + Ответ = РК_ОбменСВнешнейБазой.СписокГруппНоменклатурыВнешнейБазы(Объект.ПодключениеКСтороннейБазе); + ЗаполнитьТаблицуГруппНоменклатурИзОтветаAPI(Объект.ОтборГруппНоменклатур, Ответ); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьТаблицуГруппНоменклатурИзОтветаAPI(ТаблицаОтбора, Ответ) + + Строки = Неопределено; + Если ТипЗнч(Ответ) = Тип("Структура") Или ТипЗнч(Ответ) = Тип("Соответствие") Тогда + Строки = ЗначениеСвойстваОтвета(Ответ, "rows"); + КонецЕсли; + Если ТипЗнч(Строки) <> Тип("Массив") Тогда + ВызватьИсключение "Некорректный ответ /v1/stock/nomenclature-groups"; + КонецЕсли; + + БылиОтметки = Новый Соответствие; + БылоРекурсивно = Новый Соответствие; + Для Каждого Стр Из ТаблицаОтбора Цикл + БылиОтметки.Вставить(Строка(Стр.Идентификатор), Стр.Отметка); + БылоРекурсивно.Вставить(Строка(Стр.Идентификатор), Стр.Рекурсивно); + КонецЦикла; + + ТаблицаОтбора.Очистить(); + Для Каждого СтрокаAPI Из Строки Цикл + ГуидТекст = СокрЛП(Строка(ЗначениеСвойстваОтвета(СтрокаAPI, "guid"))); + Если ПустаяСтрока(ГуидТекст) Тогда + Продолжить; + КонецЕсли; + НовСтр = ТаблицаОтбора.Добавить(); + ИмяОтображение = СокрЛП(Строка(ЗначениеСвойстваОтвета(СтрокаAPI, "name_display"))); + Если ПустаяСтрока(ИмяОтображение) Тогда + ИмяОтображение = СокрЛП(Строка(ЗначениеСвойстваОтвета(СтрокаAPI, "name"))); + КонецЕсли; + НовСтр.Наименование = ИмяОтображение; + Попытка + НовСтр.Идентификатор = Новый УникальныйИдентификатор(ГуидТекст); + Исключение + Продолжить; + КонецПопытки; + СтараяОтметка = БылиОтметки.Получить(Строка(НовСтр.Идентификатор)); + НовСтр.Отметка = ?(СтараяОтметка = Неопределено, Ложь, СтараяОтметка = Истина); + СтароеРекурсивно = БылоРекурсивно.Получить(Строка(НовСтр.Идентификатор)); + НовСтр.Рекурсивно = ?(СтароеРекурсивно = Неопределено, Истина, СтароеРекурсивно = Истина); + КонецЦикла; + КонецПроцедуры &НаКлиенте Процедура ЗаполнитьГруппыНоменклатур(Команда) - ЗаполнитьГруппыНоменклатурНаСервере(); + + Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда + ПоказатьПредупреждение(, "Укажите подключение к сторонней базе"); + Возврат; + КонецЕсли; + + Попытка + ЗаполнитьГруппыНоменклатурНаСервере(); + Исключение + ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + Возврат; + КонецПопытки; + Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаОтбор; + КонецПроцедуры #КонецОбласти