РК_ЗагрузкаОстатков 1.3.1.49: подбор складов, загрузка и сопоставление остатков.
HTTP-клиент Transfer API, детальная ТЧ входящих остатков и шаг сопоставления НСИ/серий по логике BSL-переноса. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+15
-1
@@ -1,6 +1,20 @@
|
|||||||
# История изменений crm3-26.rhana
|
# История изменений crm3-26.rhana
|
||||||
|
|
||||||
Формат версии: `1.3.0.NNN` (синхронизируется с `VERSION` и `Configuration.xml`).
|
Формат версии: `1.3.0.NNN` / `1.3.1.NNN` (синхронизируется с `VERSION` и `Configuration.xml`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1.3.1.49 (2026-08-10)
|
||||||
|
|
||||||
|
### Обработка РК_ЗагрузкаОстатков — подбор складов и предварительные остатки
|
||||||
|
|
||||||
|
- Общий модуль `РК_ОбменСВнешнейБазой`: HTTP-клиент Transfer API по `РК_НастройкиПодключенияКВнешнейБазе`.
|
||||||
|
- Подбор складов исходной ИБ (`POST /v1/stock/warehouses`) в отбор на форме.
|
||||||
|
- Загрузка остатков (`POST /v1/stock/balances`, mode=`combined`) в ТЧ `ВходящиеДанные` с детализацией (кол-во, артикул, код, характеристика, серия/ГТД GUID, вид, политика, организация).
|
||||||
|
- Шаг «Сопоставить»: поиск НСИ + создание серий-заглушек `Перенос_<склад>_<дата>` по логике BSL-переноса остатков (тест / запись).
|
||||||
|
- Создание документов ввода остатков — следующий шаг (пока не реализовано).
|
||||||
|
|
||||||
|
Пара: `ws-rhana` 0.0.0.30 (endpoint складов + `nomenclature_article`).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
|
||||||
|
<CommonModule uuid="c0610707-f5d6-4026-9679-2330d831a986">
|
||||||
|
<Properties>
|
||||||
|
<Name>РК_ОбменСВнешнейБазой</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Обмен с внешней базой</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment>HTTP-клиент Transfer API по настройкам РК_НастройкиПодключенияКВнешнейБазе</Comment>
|
||||||
|
<Global>false</Global>
|
||||||
|
<ClientManagedApplication>false</ClientManagedApplication>
|
||||||
|
<Server>true</Server>
|
||||||
|
<ExternalConnection>false</ExternalConnection>
|
||||||
|
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||||
|
<ServerCall>true</ServerCall>
|
||||||
|
<Privileged>false</Privileged>
|
||||||
|
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
|
||||||
|
</Properties>
|
||||||
|
</CommonModule>
|
||||||
|
</MetaDataObject>
|
||||||
@@ -0,0 +1,190 @@
|
|||||||
|
|
||||||
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
// Настройки подключения из элемента справочника РК_НастройкиПодключенияКВнешнейБазе.
|
||||||
|
//
|
||||||
|
Функция НастройкиПодключения(Подключение) Экспорт
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Подключение) Тогда
|
||||||
|
ВызватьИсключение "Не указано подключение к сторонней базе";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Подключение,
|
||||||
|
"АдресПодключения, Токен, Таймаут, Логин, Пароль, Активно, ИмяТекущейБазы");
|
||||||
|
|
||||||
|
Если Реквизиты.Активно = Ложь Тогда
|
||||||
|
ВызватьИсключение "Подключение к сторонней базе отключено (Активно = Ложь)";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Адрес = СокрЛП(Строка(Реквизиты.АдресПодключения));
|
||||||
|
Если ПустаяСтрока(Адрес) Тогда
|
||||||
|
ВызватьИсключение "В настройке подключения не заполнен АдресПодключения";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Таймаут = 120;
|
||||||
|
Попытка
|
||||||
|
Таймаут = Число(Реквизиты.Таймаут);
|
||||||
|
Исключение
|
||||||
|
Таймаут = 120;
|
||||||
|
КонецПопытки;
|
||||||
|
Если Таймаут <= 0 Тогда
|
||||||
|
Таймаут = 120;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Настройки = Новый Структура;
|
||||||
|
Настройки.Вставить("Адрес", Адрес);
|
||||||
|
Настройки.Вставить("Токен", СокрЛП(Строка(Реквизиты.Токен)));
|
||||||
|
Настройки.Вставить("Таймаут", Таймаут);
|
||||||
|
Настройки.Вставить("Логин", СокрЛП(Строка(Реквизиты.Логин)));
|
||||||
|
Настройки.Вставить("Пароль", Строка(Реквизиты.Пароль));
|
||||||
|
Настройки.Вставить("ИмяТекущейБазы", СокрЛП(Строка(Реквизиты.ИмяТекущейБазы)));
|
||||||
|
Возврат Настройки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// POST /v1/stock/warehouses на исходной ИБ.
|
||||||
|
//
|
||||||
|
Функция СписокСкладовВнешнейБазы(Подключение, ПараметрыЗапроса = Неопределено) Экспорт
|
||||||
|
|
||||||
|
Если ПараметрыЗапроса = Неопределено Тогда
|
||||||
|
ПараметрыЗапроса = Новый Структура;
|
||||||
|
КонецЕсли;
|
||||||
|
Настройки = НастройкиПодключения(Подключение);
|
||||||
|
Возврат ВыполнитьPOST(Настройки, "v1/stock/warehouses", ПараметрыЗапроса);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// POST /v1/stock/balances на исходной ИБ.
|
||||||
|
//
|
||||||
|
Функция ОстаткиВнешнейБазы(Подключение, ПараметрыЗапроса) Экспорт
|
||||||
|
|
||||||
|
Если ПараметрыЗапроса = Неопределено Тогда
|
||||||
|
ПараметрыЗапроса = Новый Структура;
|
||||||
|
КонецЕсли;
|
||||||
|
Настройки = НастройкиПодключения(Подключение);
|
||||||
|
Возврат ВыполнитьPOST(Настройки, "v1/stock/balances", ПараметрыЗапроса);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Универсальный POST к Transfer API.
|
||||||
|
//
|
||||||
|
Функция ВыполнитьPOST(НастройкиПодключения, ОтносительныйПуть, Тело) Экспорт
|
||||||
|
|
||||||
|
Возврат ВыполнитьHTTPЗапросЛокально(НастройкиПодключения, ОтносительныйПуть, Тело);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Функция ВыполнитьHTTPЗапросЛокально(НастройкиПодключения, ОтносительныйПуть, Тело)
|
||||||
|
|
||||||
|
АдресБазы = СокрЛП(Строка(НастройкиПодключения.Адрес));
|
||||||
|
Ключ = СокрЛП(Строка(НастройкиПодключения.Токен));
|
||||||
|
Таймаут = 120;
|
||||||
|
Попытка
|
||||||
|
Таймаут = Число(НастройкиПодключения.Таймаут);
|
||||||
|
Исключение
|
||||||
|
Таймаут = 120;
|
||||||
|
КонецПопытки;
|
||||||
|
Если Таймаут <= 0 Тогда
|
||||||
|
Таймаут = 120;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Логин = "";
|
||||||
|
Пароль = "";
|
||||||
|
Если НастройкиПодключения.Свойство("Логин") Тогда
|
||||||
|
Логин = СокрЛП(Строка(НастройкиПодключения.Логин));
|
||||||
|
КонецЕсли;
|
||||||
|
Если НастройкиПодключения.Свойство("Пароль") Тогда
|
||||||
|
Пароль = Строка(НастройкиПодключения.Пароль);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Тело = Неопределено Тогда
|
||||||
|
Тело = Новый Структура;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Запись = Новый ЗаписьJSON;
|
||||||
|
Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет));
|
||||||
|
ЗаписатьJSON(Запись, Тело);
|
||||||
|
ТекстТела = Запись.Закрыть();
|
||||||
|
|
||||||
|
Разбор = РазобратьURL(АдресБазы);
|
||||||
|
ПутьЗапроса = Разбор.Путь;
|
||||||
|
Если Не СтрЗаканчиваетсяНа(ПутьЗапроса, "/") Тогда
|
||||||
|
ПутьЗапроса = ПутьЗапроса + "/";
|
||||||
|
КонецЕсли;
|
||||||
|
Относительный = СокрЛП(ОтносительныйПуть);
|
||||||
|
Если СтрНачинаетсяС(Относительный, "/") Тогда
|
||||||
|
Относительный = Сред(Относительный, 2);
|
||||||
|
КонецЕсли;
|
||||||
|
ПутьЗапроса = ПутьЗапроса + Относительный;
|
||||||
|
|
||||||
|
ПользовательHTTP = ?(ПустаяСтрока(Логин), Разбор.Пользователь, Логин);
|
||||||
|
ПарольHTTP = ?(ПустаяСтрока(Логин), Разбор.Пароль, Пароль);
|
||||||
|
|
||||||
|
Соединение = Новый HTTPСоединение(
|
||||||
|
Разбор.Хост,
|
||||||
|
Разбор.Порт,
|
||||||
|
ПользовательHTTP,
|
||||||
|
ПарольHTTP,
|
||||||
|
,
|
||||||
|
Таймаут,
|
||||||
|
?(Разбор.HTTPS, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено));
|
||||||
|
|
||||||
|
ЗапросHTTP = Новый HTTPЗапрос(ПутьЗапроса);
|
||||||
|
Если Не ПустаяСтрока(Ключ) Тогда
|
||||||
|
ЗапросHTTP.Заголовки.Вставить("Authorization", "Bearer " + Ключ);
|
||||||
|
КонецЕсли;
|
||||||
|
ЗапросHTTP.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
|
||||||
|
ЗапросHTTP.УстановитьТелоИзСтроки(ТекстТела, КодировкаТекста.UTF8);
|
||||||
|
|
||||||
|
ОтветHTTP = Соединение.ОтправитьДляОбработки(ЗапросHTTP);
|
||||||
|
ТекстОтвета = ОтветHTTP.ПолучитьТелоКакСтроку();
|
||||||
|
|
||||||
|
Если ОтветHTTP.КодСостояния < 200 Или ОтветHTTP.КодСостояния >= 300 Тогда
|
||||||
|
ЗаписьЖурналаРегистрации("РК_ОбменСВнешнейБазой", УровеньЖурналаРегистрации.Ошибка, , ,
|
||||||
|
"HTTP " + ОтветHTTP.КодСостояния + " " + Относительный + ": " + ТекстОтвета);
|
||||||
|
ВызватьИсключение "Ошибка HTTP " + ОтветHTTP.КодСостояния + ": " + ТекстОтвета;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Чтение = Новый ЧтениеJSON;
|
||||||
|
Чтение.УстановитьСтроку(ТекстОтвета);
|
||||||
|
Результат = ПрочитатьJSON(Чтение);
|
||||||
|
Чтение.Закрыть();
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция РазобратьURL(Адрес)
|
||||||
|
|
||||||
|
Результат = Новый Структура("Хост, Порт, Путь, HTTPS, Пользователь, Пароль", "", 0, "", Ложь, "", "");
|
||||||
|
|
||||||
|
СтрокаURL = СокрЛП(Адрес);
|
||||||
|
HTTPS = СтрНачинаетсяС(НРег(СтрокаURL), "https://");
|
||||||
|
Если СтрНачинаетсяС(НРег(СтрокаURL), "http://") Тогда
|
||||||
|
СтрокаURL = Сред(СтрокаURL, 8);
|
||||||
|
ИначеЕсли HTTPS Тогда
|
||||||
|
СтрокаURL = Сред(СтрокаURL, 9);
|
||||||
|
КонецЕсли;
|
||||||
|
Результат.HTTPS = HTTPS;
|
||||||
|
|
||||||
|
ПозицияПути = СтрНайти(СтрокаURL, "/");
|
||||||
|
ХостПорт = ?(ПозицияПути > 0, Лев(СтрокаURL, ПозицияПути - 1), СтрокаURL);
|
||||||
|
Результат.Путь = ?(ПозицияПути > 0, Сред(СтрокаURL, ПозицияПути), "/");
|
||||||
|
|
||||||
|
ПозицияПорта = СтрНайти(ХостПорт, ":");
|
||||||
|
Если ПозицияПорта > 0 Тогда
|
||||||
|
Результат.Хост = Лев(ХостПорт, ПозицияПорта - 1);
|
||||||
|
Результат.Порт = Число(Сред(ХостПорт, ПозицияПорта + 1));
|
||||||
|
Иначе
|
||||||
|
Результат.Хост = ХостПорт;
|
||||||
|
Результат.Порт = ?(HTTPS, 443, 80);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
|
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
|
||||||
</DefaultRoles>
|
</DefaultRoles>
|
||||||
<Vendor/>
|
<Vendor/>
|
||||||
<Version>1.3.1.48</Version>
|
<Version>1.3.1.49</Version>
|
||||||
<DefaultStyle/>
|
<DefaultStyle/>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
<BriefInformation/>
|
<BriefInformation/>
|
||||||
@@ -95,6 +95,7 @@
|
|||||||
<CommonModule>РК_ОбщегоНазначения</CommonModule>
|
<CommonModule>РК_ОбщегоНазначения</CommonModule>
|
||||||
<CommonModule>РК_ОбщегоНазначенияКлиентСервер</CommonModule>
|
<CommonModule>РК_ОбщегоНазначенияКлиентСервер</CommonModule>
|
||||||
<CommonModule>РК_ОбщегоНазначенияВызовСервера</CommonModule>
|
<CommonModule>РК_ОбщегоНазначенияВызовСервера</CommonModule>
|
||||||
|
<CommonModule>РК_ОбменСВнешнейБазой</CommonModule>
|
||||||
<CommonModule>ОбщегоНазначенияКлиентСервер</CommonModule>
|
<CommonModule>ОбщегоНазначенияКлиентСервер</CommonModule>
|
||||||
<CommonModule>МенеджерОбменаЧерезУниверсальныйФормат</CommonModule>
|
<CommonModule>МенеджерОбменаЧерезУниверсальныйФормат</CommonModule>
|
||||||
<CommonModule>ОбменДаннымиXDTOСервер</CommonModule>
|
<CommonModule>ОбменДаннымиXDTOСервер</CommonModule>
|
||||||
|
|||||||
@@ -468,6 +468,867 @@
|
|||||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
|
<Attribute uuid="7b95a661-e588-4388-ab7a-906c5dba8326">
|
||||||
|
<Properties>
|
||||||
|
<Name>Количество</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Количество</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:decimal</v8:Type>
|
||||||
|
<v8:NumberQualifiers>
|
||||||
|
<v8:Digits>15</v8:Digits>
|
||||||
|
<v8:FractionDigits>3</v8:FractionDigits>
|
||||||
|
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||||
|
</v8:NumberQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:decimal">0</FillValue>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="153af227-1988-4f97-bb00-30c138e01e11">
|
||||||
|
<Properties>
|
||||||
|
<Name>КоличествоКОтгрузке</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>К отгрузке</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:decimal</v8:Type>
|
||||||
|
<v8:NumberQualifiers>
|
||||||
|
<v8:Digits>15</v8:Digits>
|
||||||
|
<v8:FractionDigits>3</v8:FractionDigits>
|
||||||
|
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||||
|
</v8:NumberQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:decimal">0</FillValue>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="d290bd6f-5309-493b-ad6e-32ca05ba5757">
|
||||||
|
<Properties>
|
||||||
|
<Name>КоличествоОрганизации</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Кол. организации</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:decimal</v8:Type>
|
||||||
|
<v8:NumberQualifiers>
|
||||||
|
<v8:Digits>15</v8:Digits>
|
||||||
|
<v8:FractionDigits>3</v8:FractionDigits>
|
||||||
|
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||||
|
</v8:NumberQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:decimal">0</FillValue>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="fc18b487-eee5-4116-80e7-a57f1afafa44">
|
||||||
|
<Properties>
|
||||||
|
<Name>Артикул</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Артикул</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>50</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="6212b2dc-a55b-48bb-9437-075e5502a1c5">
|
||||||
|
<Properties>
|
||||||
|
<Name>НоменклатураКод</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Код</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>50</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="8fa984e4-bbf2-4d38-a80d-33827c3645da">
|
||||||
|
<Properties>
|
||||||
|
<Name>ХарактеристикаНаименование</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Характеристика</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>150</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="bf93ecc1-fb65-4ba9-be07-78575a66384b">
|
||||||
|
<Properties>
|
||||||
|
<Name>ХарактеристикаИдентификатор</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Характеристика идентификатор</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>v8:UUID</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="a0b08c20-f11b-47bb-ab41-3c80166deab5">
|
||||||
|
<Properties>
|
||||||
|
<Name>СерияИдентификатор</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Серия идентификатор</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>v8:UUID</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="b037736f-f398-4863-8734-45f0e88ee3c9">
|
||||||
|
<Properties>
|
||||||
|
<Name>ГТДИдентификатор</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>ГТД идентификатор</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>v8:UUID</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="a1896aca-6eaf-46df-87dc-2e9f3ea8ae64">
|
||||||
|
<Properties>
|
||||||
|
<Name>ВидНоменклатурыНаименование</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Вид номенклатуры</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>150</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="c1085a20-3350-4ac3-924e-4f165c416542">
|
||||||
|
<Properties>
|
||||||
|
<Name>ВидНоменклатурыИдентификатор</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Вид номенклатуры идентификатор</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>v8:UUID</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="57232515-7ec2-46b9-9c00-5f5dfd8f799c">
|
||||||
|
<Properties>
|
||||||
|
<Name>ПолитикаСерии</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Политика серии</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>100</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="fe5d2e6d-6039-46ed-9277-3ec8fd31ae16">
|
||||||
|
<Properties>
|
||||||
|
<Name>ПолитикаХарактеристик</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Политика характеристик</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>100</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="6c30b7db-dbb7-4564-8e6c-d3b17ba55bd3">
|
||||||
|
<Properties>
|
||||||
|
<Name>ОрганизацияНаименование</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Организация</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>150</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="4eef5276-30ac-40dd-bc7d-19e708da43e8">
|
||||||
|
<Properties>
|
||||||
|
<Name>ОрганизацияИдентификатор</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Организация идентификатор</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>v8:UUID</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="f8bd1e77-bfbf-4bd4-8779-3a04f7be0bea">
|
||||||
|
<Properties>
|
||||||
|
<Name>Номенклатура</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Номенклатура</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>cfg:CatalogRef.Номенклатура</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="ee5deed3-c67c-4411-9069-1ee4c51b7776">
|
||||||
|
<Properties>
|
||||||
|
<Name>Склад</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Склад</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>cfg:CatalogRef.Склады</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="25ff0379-7e93-4930-a29e-97bb9c77c235">
|
||||||
|
<Properties>
|
||||||
|
<Name>Характеристика</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Характеристика (цель)</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>cfg:CatalogRef.ХарактеристикиНоменклатуры</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="5ac27167-fc94-42ea-81cb-a29ff122415d">
|
||||||
|
<Properties>
|
||||||
|
<Name>СерияСсылка</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Серия (цель)</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>cfg:CatalogRef.СерииНоменклатуры</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="13c8d651-954c-444e-9e3a-bfae61c7f1b4">
|
||||||
|
<Properties>
|
||||||
|
<Name>НомерГТДСсылка</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Номер ГТД (цель)</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>cfg:CatalogRef.НомераГТД</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:nil="true"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="a5532d88-c81a-46f9-adb0-b76a04205ccc">
|
||||||
|
<Properties>
|
||||||
|
<Name>Сопоставлено</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Сопоставлено</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:boolean</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:boolean">false</FillValue>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
|
<Attribute uuid="09d80a73-1aa6-4ecc-a39a-c667e99e3084">
|
||||||
|
<Properties>
|
||||||
|
<Name>КомментарийСопоставления</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Комментарий сопоставления</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>500</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters/>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
|
||||||
</ChildObjects>
|
</ChildObjects>
|
||||||
</TabularSection>
|
</TabularSection>
|
||||||
<Form>Форма</Form>
|
<Form>Форма</Form>
|
||||||
|
|||||||
@@ -0,0 +1,439 @@
|
|||||||
|
|
||||||
|
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||||
|
|
||||||
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
// Заполняет ТЧ ВходящиеДанные строками остатков Transfer API (mode=combined по умолчанию).
|
||||||
|
//
|
||||||
|
Процедура ЗаполнитьВходящиеДанныеИзОтветаОстатков(ОтветAPI, ОчищатьПередЗаполнением = Истина) Экспорт
|
||||||
|
|
||||||
|
Если ОчищатьПередЗаполнением Тогда
|
||||||
|
ВходящиеДанные.Очистить();
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СтрокиОтвета = Неопределено;
|
||||||
|
Если ТипЗнч(ОтветAPI) = Тип("Структура") Или ТипЗнч(ОтветAPI) = Тип("Соответствие") Тогда
|
||||||
|
СтрокиОтвета = ЗначениеСвойства(ОтветAPI, "rows", Неопределено);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ТипЗнч(СтрокиОтвета) <> Тип("Массив") Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Каждого СтрокаAPI Из СтрокиОтвета Цикл
|
||||||
|
НовСтр = ВходящиеДанные.Добавить();
|
||||||
|
ЗаполнитьСтрокуВходящихДанныхИзAPI(НовСтр, СтрокаAPI);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Сопоставление строк ТЧ с НСИ целевой ИБ + создание серий-заглушек при необходимости.
|
||||||
|
// Алгоритм — по логике scripts/generate_balances_apply_bsl.py (артикул/GUID/код/имя; серии Перенос_*).
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// РежимТест - Булево - Истина: только поиск, без создания серий/характеристик
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Структура - Сопоставлено, НеСопоставлено, СозданоСерий, СозданоХарактеристик
|
||||||
|
//
|
||||||
|
Функция СопоставитьВходящиеДанные(РежимТест = Истина) Экспорт
|
||||||
|
|
||||||
|
Результат = Новый Структура;
|
||||||
|
Результат.Вставить("Сопоставлено", 0);
|
||||||
|
Результат.Вставить("НеСопоставлено", 0);
|
||||||
|
Результат.Вставить("СозданоСерий", 0);
|
||||||
|
Результат.Вставить("СозданоХарактеристик", 0);
|
||||||
|
|
||||||
|
СуффиксДатыСер = Формат(?(ЗначениеЗаполнено(ДатаДокументовВвода), ДатаДокументовВвода, ДатаОстатков), "ДФ=yyyyMMdd");
|
||||||
|
Если ПустаяСтрока(СуффиксДатыСер) Тогда
|
||||||
|
СуффиксДатыСер = Формат(ТекущаяДатаСеанса(), "ДФ=yyyyMMdd");
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КэшТребуетсяСерия = Новый Соответствие;
|
||||||
|
КэшСерий = Новый Соответствие;
|
||||||
|
|
||||||
|
Для Каждого СтрТ Из ВходящиеДанные Цикл
|
||||||
|
|
||||||
|
СтрТ.Сопоставлено = Ложь;
|
||||||
|
СтрТ.КомментарийСопоставления = "";
|
||||||
|
СтрТ.Номенклатура = Справочники.Номенклатура.ПустаяСсылка();
|
||||||
|
СтрТ.Склад = Справочники.Склады.ПустаяСсылка();
|
||||||
|
СтрТ.Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
|
||||||
|
СтрТ.СерияСсылка = Справочники.СерииНоменклатуры.ПустаяСсылка();
|
||||||
|
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.ПустаяСсылка();
|
||||||
|
|
||||||
|
Ном = НайтиНоменклатуруСтроки(СтрТ);
|
||||||
|
Если Не ЗначениеЗаполнено(Ном) Тогда
|
||||||
|
СтрТ.КомментарийСопоставления = "Номенклатура не найдена";
|
||||||
|
Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
СтрТ.Номенклатура = Ном;
|
||||||
|
|
||||||
|
СкладЦель = НайтиСкладСтроки(СтрТ);
|
||||||
|
Если Не ЗначениеЗаполнено(СкладЦель) Тогда
|
||||||
|
СтрТ.КомментарийСопоставления = "Склад не найден";
|
||||||
|
Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
СтрТ.Склад = СкладЦель;
|
||||||
|
|
||||||
|
Хар = НайтиИлиСоздатьХарактеристику(СтрТ, Ном, РежимТест, Результат);
|
||||||
|
СтрТ.Характеристика = Хар;
|
||||||
|
|
||||||
|
Сер = НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
|
||||||
|
КэшТребуетсяСерия, КэшСерий, Результат);
|
||||||
|
СтрТ.СерияСсылка = Сер;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(СтрТ.ГТД) Тогда
|
||||||
|
КодГТД = СокрЛП(СтрТ.ГТД);
|
||||||
|
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоКоду(КодГТД);
|
||||||
|
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||||
|
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоРеквизиту("РегистрационныйНомер", КодГТД);
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||||
|
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоНаименованию(КодГТД, Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||||
|
СсылкаГТД = СсылкаПоUUID(Справочники.НомераГТД, СтрТ.ГТДИдентификатор);
|
||||||
|
Если ЗначениеЗаполнено(СсылкаГТД) И ОбщегоНазначения.СсылкаСуществует(СсылкаГТД) Тогда
|
||||||
|
СтрТ.НомерГТДСсылка = СсылкаГТД;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СтрТ.Сопоставлено = Истина;
|
||||||
|
Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Тогда
|
||||||
|
СтрТ.КомментарийСопоставления = "OK";
|
||||||
|
КонецЕсли;
|
||||||
|
Результат.Сопоставлено = Результат.Сопоставлено + 1;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Процедура ЗаполнитьСтрокуВходящихДанныхИзAPI(НовСтр, СтрокаAPI)
|
||||||
|
|
||||||
|
НовСтр.НоменклатураИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "nomenclature_guid", ""));
|
||||||
|
НовСтр.НоменклатураНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "nomenclature_name", "")));
|
||||||
|
НовСтр.НоменклатураКод = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "nomenclature_code", "")));
|
||||||
|
НовСтр.Артикул = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "nomenclature_article", "")));
|
||||||
|
|
||||||
|
НовСтр.СкладИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "warehouse_guid", ""));
|
||||||
|
НовСтр.СкладНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "warehouse_name", "")));
|
||||||
|
|
||||||
|
НовСтр.ЕдИзмИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "unit_guid", ""));
|
||||||
|
НовСтр.ЕдИзм = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "unit_name", "")));
|
||||||
|
Если ПустаяСтрока(НовСтр.ЕдИзм) Тогда
|
||||||
|
НовСтр.ЕдИзм = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "unit_code", "")));
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
НовСтр.ХарактеристикаИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "characteristic_guid", ""));
|
||||||
|
НовСтр.ХарактеристикаНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "characteristic_name", "")));
|
||||||
|
|
||||||
|
НовСтр.СерияИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "series_guid", ""));
|
||||||
|
НовСтр.Серия = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_name", "")));
|
||||||
|
|
||||||
|
НовСтр.ГТДИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "gtd_guid", ""));
|
||||||
|
НовСтр.ГТД = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "gtd_name", "")));
|
||||||
|
|
||||||
|
НовСтр.ОрганизацияИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "organization_guid", ""));
|
||||||
|
НовСтр.ОрганизацияНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "organization_name", "")));
|
||||||
|
|
||||||
|
НовСтр.Количество = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "qty_warehouse",
|
||||||
|
ЗначениеСвойства(Строка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, "policy_use_series", "")));
|
||||||
|
НовСтр.ПолитикаХарактеристик = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "policy_use_characteristics", "")));
|
||||||
|
|
||||||
|
НовСтр.Сопоставлено = Ложь;
|
||||||
|
НовСтр.КомментарийСопоставления = "";
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция НайтиНоменклатуруСтроки(СтрТ)
|
||||||
|
|
||||||
|
Ном = Справочники.Номенклатура.ПустаяСсылка();
|
||||||
|
Арт = СокрЛП(СтрТ.Артикул);
|
||||||
|
ИмяНом = СокрЛП(СтрТ.НоменклатураНаименование);
|
||||||
|
КодНом = СокрЛП(СтрТ.НоменклатураКод);
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Арт) Тогда
|
||||||
|
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Арт);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Ном) Тогда
|
||||||
|
СсылкаПоГуид = СсылкаПоUUID(Справочники.Номенклатура, СтрТ.НоменклатураИдентификатор);
|
||||||
|
Если ЗначениеЗаполнено(СсылкаПоГуид) И ОбщегоНазначения.СсылкаСуществует(СсылкаПоГуид) Тогда
|
||||||
|
Ном = СсылкаПоГуид;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Ном) И ЗначениеЗаполнено(КодНом) Тогда
|
||||||
|
Ном = Справочники.Номенклатура.НайтиПоКоду(КодНом);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Ном) И ЗначениеЗаполнено(ИмяНом) Тогда
|
||||||
|
Ном = Справочники.Номенклатура.НайтиПоНаименованию(ИмяНом, Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Ном) И ЗначениеЗаполнено(ИмяНом) Тогда
|
||||||
|
Если СокрЛП(Ном.Наименование) <> ИмяНом Тогда
|
||||||
|
СтрТ.КомментарийСопоставления = "Номенклатура не совпала по имени: " + ИмяНом + " → " + Ном.Наименование;
|
||||||
|
Возврат Справочники.Номенклатура.ПустаяСсылка();
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ном;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция НайтиСкладСтроки(СтрТ)
|
||||||
|
|
||||||
|
СкладЦель = СсылкаПоUUID(Справочники.Склады, СтрТ.СкладИдентификатор);
|
||||||
|
Если ЗначениеЗаполнено(СкладЦель) И ОбщегоНазначения.СсылкаСуществует(СкладЦель) Тогда
|
||||||
|
Возврат СкладЦель;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИмяСкл = СокрЛП(СтрТ.СкладНаименование);
|
||||||
|
Если ЗначениеЗаполнено(ИмяСкл) Тогда
|
||||||
|
Возврат Справочники.Склады.НайтиПоНаименованию(ИмяСкл, Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Справочники.Склады.ПустаяСсылка();
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция НайтиИлиСоздатьХарактеристику(СтрТ, Ном, РежимТест, Результат)
|
||||||
|
|
||||||
|
Хар = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
|
||||||
|
ИмяХар = СокрЛП(СтрТ.ХарактеристикаНаименование);
|
||||||
|
ВидНом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры");
|
||||||
|
|
||||||
|
ИспХар = Ложь;
|
||||||
|
Попытка
|
||||||
|
ИспХар = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры.ИспользоватьХарактеристики") = Истина;
|
||||||
|
Исключение
|
||||||
|
Попытка
|
||||||
|
ИспХар = ВидНом.ИспользоватьХарактеристики;
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(ИмяХар) Тогда
|
||||||
|
Хар = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(ИмяХар, Истина, , Ном);
|
||||||
|
Если Не ЗначениеЗаполнено(Хар) Тогда
|
||||||
|
Хар = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(ИмяХар, Истина, , ВидНом);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Хар) Тогда
|
||||||
|
СсылкаПоГуид = СсылкаПоUUID(Справочники.ХарактеристикиНоменклатуры, СтрТ.ХарактеристикаИдентификатор);
|
||||||
|
Если ЗначениеЗаполнено(СсылкаПоГуид) И ОбщегоНазначения.СсылкаСуществует(СсылкаПоГуид) Тогда
|
||||||
|
ВладХар = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаПоГуид, "Владелец");
|
||||||
|
Если ВладХар = Ном Или ВладХар = ВидНом Тогда
|
||||||
|
Хар = СсылкаПоГуид;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Хар) И ИспХар И ЗначениеЗаполнено(ИмяХар) И Не РежимТест Тогда
|
||||||
|
Попытка
|
||||||
|
НовХар = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
|
||||||
|
НовХар.Владелец = ВидНом;
|
||||||
|
НовХар.Наименование = ИмяХар;
|
||||||
|
НовХар.Записать();
|
||||||
|
Хар = НовХар.Ссылка;
|
||||||
|
Результат.СозданоХарактеристик = Результат.СозданоХарактеристик + 1;
|
||||||
|
Исключение
|
||||||
|
СтрТ.КомментарийСопоставления = "Ошибка создания характеристики: " + ИмяХар;
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ИспХар Тогда
|
||||||
|
Хар = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Хар;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
|
||||||
|
КэшТребуетсяСерия, КэшСерий, Результат)
|
||||||
|
|
||||||
|
Сер = Справочники.СерииНоменклатуры.ПустаяСсылка();
|
||||||
|
ВидНом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры");
|
||||||
|
|
||||||
|
КлючТребСер = Строка(Ном.УникальныйИдентификатор());
|
||||||
|
ТребуетсяСерия = КэшТребуетсяСерия.Получить(КлючТребСер);
|
||||||
|
Если ТребуетсяСерия = Неопределено Тогда
|
||||||
|
ТребуетсяСерия = Ложь;
|
||||||
|
Попытка
|
||||||
|
ТребуетсяСерия = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры.ИспользоватьСерии") = Истина;
|
||||||
|
Исключение
|
||||||
|
Попытка
|
||||||
|
ТребуетсяСерия = ВидНом.ИспользоватьСерии;
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
КонецПопытки;
|
||||||
|
КэшТребуетсяСерия.Вставить(КлючТребСер, ТребуетсяСерия);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИмяСерии = СокрЛП(СтрТ.Серия);
|
||||||
|
Если Не ЗначениеЗаполнено(ИмяСерии) И ТребуетсяСерия Тогда
|
||||||
|
КодСклЗагл = "";
|
||||||
|
Попытка
|
||||||
|
КодСклЗагл = СокрЛП(Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СкладЦель, "Код")));
|
||||||
|
Исключение
|
||||||
|
КодСклЗагл = "";
|
||||||
|
КонецПопытки;
|
||||||
|
Если ПустаяСтрока(КодСклЗагл) Тогда
|
||||||
|
КодСклЗагл = Лев(СтрЗаменить(Строка(СкладЦель.УникальныйИдентификатор()), "-", ""), 8);
|
||||||
|
КонецЕсли;
|
||||||
|
ИмяСерии = "Перенос_" + КодСклЗагл + "_" + СуффиксДатыСер;
|
||||||
|
СтрТ.Серия = ИмяСерии;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ТребуетсяСерия И Не ЗначениеЗаполнено(ИмяСерии) Тогда
|
||||||
|
Возврат Сер;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СсылкаПоГуид = СсылкаПоUUID(Справочники.СерииНоменклатуры, СтрТ.СерияИдентификатор);
|
||||||
|
Если ЗначениеЗаполнено(СсылкаПоГуид) И ОбщегоНазначения.СсылкаСуществует(СсылкаПоГуид) Тогда
|
||||||
|
Возврат СсылкаПоГуид;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ВидСер = Неопределено;
|
||||||
|
ИспНомерСерии = Истина;
|
||||||
|
Попытка
|
||||||
|
НастрСер = Справочники.ВидыНоменклатуры.НастройкиИспользованияСерий(ВидНом, СкладЦель);
|
||||||
|
ВидСер = НастрСер.ВладелецСерий;
|
||||||
|
ИспНомерСерии = НастрСер.ИспользоватьНомерСерии;
|
||||||
|
Исключение
|
||||||
|
ВидСер = ВидНом;
|
||||||
|
КонецПопытки;
|
||||||
|
Если Не ЗначениеЗаполнено(ВидСер) Тогда
|
||||||
|
ВидСер = ВидНом;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КлючКэшСер = Строка(ВидСер.УникальныйИдентификатор()) + "|" + ИмяСерии;
|
||||||
|
СерИзКэш = КэшСерий.Получить(КлючКэшСер);
|
||||||
|
Если СерИзКэш <> Неопределено Тогда
|
||||||
|
Возврат СерИзКэш;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ИспНомерСерии Тогда
|
||||||
|
Сер = Справочники.СерииНоменклатуры.НайтиПоРеквизиту("Номер", ИмяСерии, , ВидСер);
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(Сер) Тогда
|
||||||
|
Сер = Справочники.СерииНоменклатуры.НайтиПоНаименованию(ИмяСерии, Истина, , ВидСер);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Сер) И Не РежимТест И (ТребуетсяСерия Или ЗначениеЗаполнено(ИмяСерии)) Тогда
|
||||||
|
Попытка
|
||||||
|
ОбСер = Справочники.СерииНоменклатуры.ПустойОбъект(ВидСер);
|
||||||
|
Если ИспНомерСерии Тогда
|
||||||
|
НомерСер = ИмяСерии;
|
||||||
|
Если СтрНачинаетсяС(ИмяСерии, "Перенос_") Тогда
|
||||||
|
НомерСер = Сред(ИмяСерии, СтрДлина("Перенос_") + 1);
|
||||||
|
КонецЕсли;
|
||||||
|
ОбСер.Номер = НомерСер;
|
||||||
|
Иначе
|
||||||
|
Попытка
|
||||||
|
ОбСер.Наименование = ИмяСерии;
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЕсли;
|
||||||
|
ОбСер.Записать();
|
||||||
|
Сер = ОбСер.Ссылка;
|
||||||
|
Результат.СозданоСерий = Результат.СозданоСерий + 1;
|
||||||
|
Исключение
|
||||||
|
СтрТ.КомментарийСопоставления = "Ошибка создания серии: " + ИмяСерии;
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Сер) Тогда
|
||||||
|
КэшСерий.Вставить(КлючКэшСер, Сер);
|
||||||
|
ИначеЕсли ТребуетсяСерия Тогда
|
||||||
|
Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Или СтрТ.КомментарийСопоставления = "OK" Тогда
|
||||||
|
СтрТ.КомментарийСопоставления = "Серия не найдена" + ?(РежимТест, " (тест)", "");
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Сер;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СсылкаПоUUID(Менеджер, Идентификатор)
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Идентификатор) Тогда
|
||||||
|
Возврат Менеджер.ПустаяСсылка();
|
||||||
|
КонецЕсли;
|
||||||
|
Попытка
|
||||||
|
Возврат Менеджер.ПолучитьСсылку(Идентификатор);
|
||||||
|
Исключение
|
||||||
|
Возврат Менеджер.ПустаяСсылка();
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция UUIDИзСтроки(Значение)
|
||||||
|
|
||||||
|
Текст = НРег(СокрЛП(Строка(Значение)));
|
||||||
|
Если ПустаяСтрока(Текст) Или Текст = "00000000-0000-0000-0000-000000000000" Тогда
|
||||||
|
Возврат Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
|
||||||
|
КонецЕсли;
|
||||||
|
Попытка
|
||||||
|
Возврат Новый УникальныйИдентификатор(Текст);
|
||||||
|
Исключение
|
||||||
|
Возврат Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ЗначениеСвойства(Источник, Имя, ПоУмолчанию)
|
||||||
|
|
||||||
|
Если Источник = Неопределено Тогда
|
||||||
|
Возврат ПоУмолчанию;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ТипЗнч(Источник) = Тип("Структура") Или ТипЗнч(Источник) = Тип("ФиксированнаяСтруктура") Тогда
|
||||||
|
Если Источник.Свойство(Имя) Тогда
|
||||||
|
Возврат Источник[Имя];
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат ПоУмолчанию;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ТипЗнч(Источник) = Тип("Соответствие") Или ТипЗнч(Источник) = Тип("ФиксированноеСоответствие") Тогда
|
||||||
|
Значение = Источник.Получить(Имя);
|
||||||
|
Если Значение = Неопределено Тогда
|
||||||
|
Возврат ПоУмолчанию;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Значение;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат ПоУмолчанию;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ЧислоИзЗначения(Значение, ПоУмолчанию)
|
||||||
|
|
||||||
|
Если Значение = Неопределено Или Значение = Null Тогда
|
||||||
|
Возврат ПоУмолчанию;
|
||||||
|
КонецЕсли;
|
||||||
|
Попытка
|
||||||
|
Возврат Число(Значение);
|
||||||
|
Исключение
|
||||||
|
Возврат ПоУмолчанию;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#КонецЕсли
|
||||||
@@ -1,6 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
|
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
|
||||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
|
||||||
|
<ChildItems>
|
||||||
|
<Button name="ФормаПеренестиВОтбор" id="26">
|
||||||
|
<Type>CommandBarButton</Type>
|
||||||
|
<DefaultButton>true</DefaultButton>
|
||||||
|
<CommandName>Form.Command.ПеренестиВОтбор</CommandName>
|
||||||
|
<ExtendedTooltip name="ФормаПеренестиВОтборРасширеннаяПодсказка" id="27"/>
|
||||||
|
</Button>
|
||||||
|
</ChildItems>
|
||||||
|
</AutoCommandBar>
|
||||||
|
<Events>
|
||||||
|
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||||
|
</Events>
|
||||||
<ChildItems>
|
<ChildItems>
|
||||||
<CheckBoxField name="Добавление" id="23">
|
<CheckBoxField name="Добавление" id="23">
|
||||||
<DataPath>Добавление</DataPath>
|
<DataPath>Добавление</DataPath>
|
||||||
@@ -146,4 +158,21 @@
|
|||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
</Attributes>
|
</Attributes>
|
||||||
|
<Commands>
|
||||||
|
<Command name="ПеренестиВОтбор" id="1">
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Перенести в отбор</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<ToolTip>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Перенести отмеченные склады в отбор</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</ToolTip>
|
||||||
|
<Action>ПеренестиВОтбор</Action>
|
||||||
|
</Command>
|
||||||
|
</Commands>
|
||||||
</Form>
|
</Form>
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||||
|
|
||||||
|
Добавление = Истина;
|
||||||
|
Подключение = Неопределено;
|
||||||
|
Если Параметры.Свойство("ПодключениеКСтороннейБазе", Подключение) Тогда
|
||||||
|
Объект.ПодключениеКСтороннейБазе = Подключение;
|
||||||
|
КонецЕсли;
|
||||||
|
ЗаполнитьСписокСкладовНаСервере();
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ПеренестиВОтбор(Команда)
|
||||||
|
|
||||||
|
Выбранные = Новый Массив;
|
||||||
|
Для Каждого Стр Из СписокСкладовВнешнейБазы Цикл
|
||||||
|
Если Стр.Отметка Тогда
|
||||||
|
Выбранные.Добавить(Новый Структура("Наименование, Идентификатор, Отметка",
|
||||||
|
Стр.Наименование, Стр.Идентификатор, Истина));
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
Закрыть(Новый Структура("Добавление, Склады", Добавление, Выбранные));
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ЗаполнитьСписокСкладовНаСервере()
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ответ = РК_ОбменСВнешнейБазой.СписокСкладовВнешнейБазы(Объект.ПодключениеКСтороннейБазе);
|
||||||
|
Строки = Неопределено;
|
||||||
|
Если ТипЗнч(Ответ) = Тип("Структура") Или ТипЗнч(Ответ) = Тип("Соответствие") Тогда
|
||||||
|
Если ТипЗнч(Ответ) = Тип("Структура") Тогда
|
||||||
|
Если Ответ.Свойство("rows") Тогда
|
||||||
|
Строки = Ответ.rows;
|
||||||
|
КонецЕсли;
|
||||||
|
Иначе
|
||||||
|
Строки = Ответ.Получить("rows");
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ТипЗнч(Строки) <> Тип("Массив") Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СписокСкладовВнешнейБазы.Очистить();
|
||||||
|
Для Каждого СтрокаAPI Из Строки Цикл
|
||||||
|
ГуидТекст = "";
|
||||||
|
Имя = "";
|
||||||
|
Если ТипЗнч(СтрокаAPI) = Тип("Структура") Тогда
|
||||||
|
Если СтрокаAPI.Свойство("guid") Тогда
|
||||||
|
ГуидТекст = СокрЛП(Строка(СтрокаAPI.guid));
|
||||||
|
КонецЕсли;
|
||||||
|
Если СтрокаAPI.Свойство("name") Тогда
|
||||||
|
Имя = СокрЛП(Строка(СтрокаAPI.name));
|
||||||
|
КонецЕсли;
|
||||||
|
ИначеЕсли ТипЗнч(СтрокаAPI) = Тип("Соответствие") Тогда
|
||||||
|
ГуидТекст = СокрЛП(Строка(СтрокаAPI.Получить("guid")));
|
||||||
|
Имя = СокрЛП(Строка(СтрокаAPI.Получить("name")));
|
||||||
|
КонецЕсли;
|
||||||
|
Если ПустаяСтрока(ГуидТекст) Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
НовСтр = СписокСкладовВнешнейБазы.Добавить();
|
||||||
|
НовСтр.Наименование = Имя;
|
||||||
|
Попытка
|
||||||
|
НовСтр.Идентификатор = Новый УникальныйИдентификатор(ГуидТекст);
|
||||||
|
Исключение
|
||||||
|
Продолжить;
|
||||||
|
КонецПопытки;
|
||||||
|
НовСтр.Отметка = Ложь;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
@@ -6,7 +6,24 @@
|
|||||||
<v8:content>Загрузка остатков из внешней базы</v8:content>
|
<v8:content>Загрузка остатков из внешней базы</v8:content>
|
||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
|
||||||
|
<ChildItems>
|
||||||
|
<Button name="ФормаЗагрузитьОстатки" id="113">
|
||||||
|
<Type>CommandBarButton</Type>
|
||||||
|
<DefaultButton>true</DefaultButton>
|
||||||
|
<CommandName>Form.Command.ЗагрузитьОстатки</CommandName>
|
||||||
|
<ExtendedTooltip name="ФормаЗагрузитьОстаткиРасширеннаяПодсказка" id="114"/>
|
||||||
|
</Button>
|
||||||
|
<Button name="ФормаСопоставить" id="115">
|
||||||
|
<Type>CommandBarButton</Type>
|
||||||
|
<CommandName>Form.Command.Сопоставить</CommandName>
|
||||||
|
<ExtendedTooltip name="ФормаСопоставитьРасширеннаяПодсказка" id="116"/>
|
||||||
|
</Button>
|
||||||
|
</ChildItems>
|
||||||
|
</AutoCommandBar>
|
||||||
|
<Events>
|
||||||
|
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||||
|
</Events>
|
||||||
<ChildItems>
|
<ChildItems>
|
||||||
<InputField name="ПодключениеКСтороннейБазе" id="30">
|
<InputField name="ПодключениеКСтороннейБазе" id="30">
|
||||||
<DataPath>Объект.ПодключениеКСтороннейБазе</DataPath>
|
<DataPath>Объект.ПодключениеКСтороннейБазе</DataPath>
|
||||||
@@ -45,7 +62,7 @@
|
|||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
<v8:content>Водящие данные</v8:content>
|
<v8:content>Входящие данные</v8:content>
|
||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
<ToolTip>
|
<ToolTip>
|
||||||
@@ -143,6 +160,74 @@
|
|||||||
<ContextMenu name="ВходящиеДанныеСерияКонтекстноеМеню" id="68"/>
|
<ContextMenu name="ВходящиеДанныеСерияКонтекстноеМеню" id="68"/>
|
||||||
<ExtendedTooltip name="ВходящиеДанныеСерияРасширеннаяПодсказка" id="69"/>
|
<ExtendedTooltip name="ВходящиеДанныеСерияРасширеннаяПодсказка" id="69"/>
|
||||||
</InputField>
|
</InputField>
|
||||||
|
|
||||||
|
<InputField name="ВходящиеДанныеКоличество" id="80">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.Количество</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеКоличествоКонтекстноеМеню" id="81"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеКоличествоРасширеннаяПодсказка" id="82"/>
|
||||||
|
</InputField>
|
||||||
|
<InputField name="ВходящиеДанныеАртикул" id="83">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.Артикул</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеАртикулКонтекстноеМеню" id="84"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеАртикулРасширеннаяПодсказка" id="85"/>
|
||||||
|
</InputField>
|
||||||
|
<InputField name="ВходящиеДанныеНоменклатураКод" id="86">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.НоменклатураКод</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеНоменклатураКодКонтекстноеМеню" id="87"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеНоменклатураКодРасширеннаяПодсказка" id="88"/>
|
||||||
|
</InputField>
|
||||||
|
<InputField name="ВходящиеДанныеХарактеристикаНаименование" id="89">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.ХарактеристикаНаименование</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеХарактеристикаНаименованиеКонтекстноеМеню" id="90"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеХарактеристикаНаименованиеРасширеннаяПодсказка" id="91"/>
|
||||||
|
</InputField>
|
||||||
|
<InputField name="ВходящиеДанныеВидНоменклатурыНаименование" id="92">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.ВидНоменклатурыНаименование</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеВидНоменклатурыНаименованиеКонтекстноеМеню" id="93"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеВидНоменклатурыНаименованиеРасширеннаяПодсказка" id="94"/>
|
||||||
|
</InputField>
|
||||||
|
<InputField name="ВходящиеДанныеОрганизацияНаименование" id="95">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.ОрганизацияНаименование</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеОрганизацияНаименованиеКонтекстноеМеню" id="96"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеОрганизацияНаименованиеРасширеннаяПодсказка" id="97"/>
|
||||||
|
</InputField>
|
||||||
|
<InputField name="ВходящиеДанныеНоменклатура" id="98">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.Номенклатура</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеНоменклатураКонтекстноеМеню" id="99"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеНоменклатураРасширеннаяПодсказка" id="100"/>
|
||||||
|
</InputField>
|
||||||
|
<InputField name="ВходящиеДанныеСклад" id="101">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.Склад</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеСкладКонтекстноеМеню" id="102"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеСкладРасширеннаяПодсказка" id="103"/>
|
||||||
|
</InputField>
|
||||||
|
<InputField name="ВходящиеДанныеСерияСсылка" id="104">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.СерияСсылка</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеСерияСсылкаКонтекстноеМеню" id="105"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеСерияСсылкаРасширеннаяПодсказка" id="106"/>
|
||||||
|
</InputField>
|
||||||
|
<CheckBoxField name="ВходящиеДанныеСопоставлено" id="107">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.Сопоставлено</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<CheckBoxType>Auto</CheckBoxType>
|
||||||
|
<ContextMenu name="ВходящиеДанныеСопоставленоКонтекстноеМеню" id="108"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеСопоставленоРасширеннаяПодсказка" id="109"/>
|
||||||
|
</CheckBoxField>
|
||||||
|
<InputField name="ВходящиеДанныеКомментарийСопоставления" id="110">
|
||||||
|
<DataPath>Объект.ВходящиеДанные.КомментарийСопоставления</DataPath>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<ContextMenu name="ВходящиеДанныеКомментарийСопоставленияКонтекстноеМеню" id="111"/>
|
||||||
|
<ExtendedTooltip name="ВходящиеДанныеКомментарийСопоставленияРасширеннаяПодсказка" id="112"/>
|
||||||
|
</InputField>
|
||||||
</ChildItems>
|
</ChildItems>
|
||||||
</Table>
|
</Table>
|
||||||
</ChildItems>
|
</ChildItems>
|
||||||
@@ -325,5 +410,35 @@
|
|||||||
</ToolTip>
|
</ToolTip>
|
||||||
<Action>ПодобратьСклады</Action>
|
<Action>ПодобратьСклады</Action>
|
||||||
</Command>
|
</Command>
|
||||||
|
<Command name="ЗагрузитьОстатки" id="2">
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Загрузить остатки</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<ToolTip>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Загрузить остатки из исходной базы</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</ToolTip>
|
||||||
|
<Action>ЗагрузитьОстатки</Action>
|
||||||
|
</Command>
|
||||||
|
<Command name="Сопоставить" id="3">
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Сопоставить</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<ToolTip>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Сопоставить НСИ и серии</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</ToolTip>
|
||||||
|
<Action>Сопоставить</Action>
|
||||||
|
</Command>
|
||||||
</Commands>
|
</Commands>
|
||||||
</Form>
|
</Form>
|
||||||
@@ -1,10 +1,232 @@
|
|||||||
|
|
||||||
|
#Область ОбработчикиСобытийФормы
|
||||||
|
|
||||||
&НаСервере
|
&НаСервере
|
||||||
Процедура ПодобратьСкладыНаСервере()
|
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||||
// Вставить содержимое обработчика.
|
|
||||||
|
Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда
|
||||||
|
Попытка
|
||||||
|
Объект.ПодключениеКСтороннейБазе = Константы.РК_РабочееПодключениеЧерезАПИ.Получить();
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Объект.ДатаОстатков) Тогда
|
||||||
|
Объект.ДатаОстатков = КонецДня(НачалоМесяца(ТекущаяДатаСеанса()) - 1);
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(Объект.ДатаДокументовВвода) Тогда
|
||||||
|
Объект.ДатаДокументовВвода = Объект.ДатаОстатков;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область ОбработчикиКомандФормы
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПодобратьСклады(Команда)
|
Процедура ПодобратьСклады(Команда)
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда
|
||||||
|
ПоказатьПредупреждение(, "Укажите подключение к сторонней базе");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ПодобратьСкладыНаСервере();
|
ПодобратьСкладыНаСервере();
|
||||||
|
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаОтбор;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ЗагрузитьОстатки(Команда)
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда
|
||||||
|
ПоказатьПредупреждение(, "Укажите подключение к сторонней базе");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(Объект.ДатаОстатков) Тогда
|
||||||
|
ПоказатьПредупреждение(, "Укажите дату остатков");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Количество = ЗагрузитьОстаткиНаСервере();
|
||||||
|
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаВходящиеДанные;
|
||||||
|
ПоказатьОповещениеПользователя("Загрузка остатков", , "Загружено строк: " + Формат(Количество, "ЧГ=0"));
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура Сопоставить(Команда)
|
||||||
|
|
||||||
|
Если Объект.ВходящиеДанные.Количество() = 0 Тогда
|
||||||
|
ПоказатьПредупреждение(, "Сначала загрузите остатки");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ДопПараметры = Новый Структура("РежимТест", Истина);
|
||||||
|
Описание = Новый ОписаниеОповещения("СопоставитьПослеВопроса", ЭтотОбъект, ДопПараметры);
|
||||||
|
ПоказатьВопрос(Описание,
|
||||||
|
"Создавать отсутствующие серии и характеристики?" + Символы.ПС
|
||||||
|
+ "Да — запись; Нет — только поиск (тест); Отмена — прервать.",
|
||||||
|
РежимДиалогаВопрос.ДаНетОтмена);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура СопоставитьПослеВопроса(РезультатВопроса, ДопПараметры) Экспорт
|
||||||
|
|
||||||
|
Если РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
РежимТест = (РезультатВопроса <> КодВозвратаДиалога.Да);
|
||||||
|
Текст = СопоставитьНаСервере(РежимТест);
|
||||||
|
ПоказатьОповещениеПользователя("Сопоставление", , Текст);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ПодобратьСкладыНаСервере()
|
||||||
|
|
||||||
|
Ответ = РК_ОбменСВнешнейБазой.СписокСкладовВнешнейБазы(Объект.ПодключениеКСтороннейБазе);
|
||||||
|
Строки = Неопределено;
|
||||||
|
Если ТипЗнч(Ответ) = Тип("Структура") Или ТипЗнч(Ответ) = Тип("Соответствие") Тогда
|
||||||
|
Строки = ЗначениеСвойстваОтвета(Ответ, "rows");
|
||||||
|
КонецЕсли;
|
||||||
|
Если ТипЗнч(Строки) <> Тип("Массив") Тогда
|
||||||
|
ВызватьИсключение "Некорректный ответ /v1/stock/warehouses";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
БылиОтметки = Новый Соответствие;
|
||||||
|
Для Каждого Стр Из ОтборСкладовВнешнейБазы Цикл
|
||||||
|
БылиОтметки.Вставить(Строка(Стр.Идентификатор), Стр.Отметка);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ОтборСкладовВнешнейБазы.Очистить();
|
||||||
|
Для Каждого СтрокаAPI Из Строки Цикл
|
||||||
|
ГуидТекст = СокрЛП(Строка(ЗначениеСвойстваОтвета(СтрокаAPI, "guid")));
|
||||||
|
Если ПустаяСтрока(ГуидТекст) Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
НовСтр = ОтборСкладовВнешнейБазы.Добавить();
|
||||||
|
НовСтр.Наименование = СокрЛП(Строка(ЗначениеСвойстваОтвета(СтрокаAPI, "name")));
|
||||||
|
Попытка
|
||||||
|
НовСтр.Идентификатор = Новый УникальныйИдентификатор(ГуидТекст);
|
||||||
|
Исключение
|
||||||
|
Продолжить;
|
||||||
|
КонецПопытки;
|
||||||
|
СтараяОтметка = БылиОтметки.Получить(Строка(НовСтр.Идентификатор));
|
||||||
|
НовСтр.Отметка = ?(СтараяОтметка = Неопределено, Ложь, СтараяОтметка = Истина);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Функция ЗагрузитьОстаткиНаСервере()
|
||||||
|
|
||||||
|
СкладыGUID = Новый Массив;
|
||||||
|
Для Каждого Стр Из ОтборСкладовВнешнейБазы Цикл
|
||||||
|
Если Стр.Отметка Тогда
|
||||||
|
СкладыGUID.Добавить(Строка(Стр.Идентификатор));
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
Если СкладыGUID.Количество() = 0 Тогда
|
||||||
|
ВызватьИсключение "Отметьте хотя бы один склад на закладке «Отбор»";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Фильтры = Новый Структура;
|
||||||
|
Фильтры.Вставить("warehouses", СкладыGUID);
|
||||||
|
Фильтры.Вставить("only_nonzero", Истина);
|
||||||
|
|
||||||
|
ВсеСтроки = Новый Массив;
|
||||||
|
Курсор = "";
|
||||||
|
Лимит = 2000;
|
||||||
|
МаксСтраниц = 200;
|
||||||
|
|
||||||
|
Для НомерСтраницы = 1 По МаксСтраниц Цикл
|
||||||
|
|
||||||
|
ПараметрыЗапроса = Новый Структура;
|
||||||
|
ПараметрыЗапроса.Вставить("mode", "combined");
|
||||||
|
ПараметрыЗапроса.Вставить("as_of", Формат(Объект.ДатаОстатков, "ДФ=yyyy-MM-ddTHH:mm:ss"));
|
||||||
|
ПараметрыЗапроса.Вставить("limit", Лимит);
|
||||||
|
ПараметрыЗапроса.Вставить("include_policy", Истина);
|
||||||
|
ПараметрыЗапроса.Вставить("filters", Фильтры);
|
||||||
|
Если Не ПустаяСтрока(Курсор) Тогда
|
||||||
|
ПараметрыЗапроса.Вставить("cursor", Курсор);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ответ = РК_ОбменСВнешнейБазой.ОстаткиВнешнейБазы(Объект.ПодключениеКСтороннейБазе, ПараметрыЗапроса);
|
||||||
|
Строки = ЗначениеСвойстваОтвета(Ответ, "rows");
|
||||||
|
Если ТипЗнч(Строки) <> Тип("Массив") Тогда
|
||||||
|
ВызватьИсключение "Некорректный ответ /v1/stock/balances";
|
||||||
|
КонецЕсли;
|
||||||
|
Для Каждого СтрAPI Из Строки Цикл
|
||||||
|
ВсеСтроки.Добавить(СтрAPI);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Мета = ЗначениеСвойстваОтвета(Ответ, "meta");
|
||||||
|
ЕстьЕще = Ложь;
|
||||||
|
Если ТипЗнч(Мета) = Тип("Структура") Или ТипЗнч(Мета) = Тип("Соответствие") Тогда
|
||||||
|
ЗначениеЕстьЕще = ЗначениеСвойстваОтвета(Мета, "has_more");
|
||||||
|
Если ТипЗнч(ЗначениеЕстьЕще) = Тип("Булево") Тогда
|
||||||
|
ЕстьЕще = ЗначениеЕстьЕще;
|
||||||
|
ИначеЕсли ЗначениеЕстьЕще <> Неопределено Тогда
|
||||||
|
ЕстьЕще = (НРег(СокрЛП(Строка(ЗначениеЕстьЕще))) = "true" Или Строка(ЗначениеЕстьЕще) = "1");
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
Курсор = СокрЛП(Строка(ЗначениеСвойстваОтвета(Ответ, "cursor")));
|
||||||
|
Если Не ЕстьЕще Или ПустаяСтрока(Курсор) Или Строки.Количество() = 0 Тогда
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Пакет = Новый Структура("rows", ВсеСтроки);
|
||||||
|
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
|
||||||
|
ОбъектОбработки.ЗаполнитьВходящиеДанныеИзОтветаОстатков(Пакет, Истина);
|
||||||
|
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
|
||||||
|
|
||||||
|
Возврат Объект.ВходящиеДанные.Количество();
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Функция СопоставитьНаСервере(РежимТест)
|
||||||
|
|
||||||
|
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
|
||||||
|
Результат = ОбъектОбработки.СопоставитьВходящиеДанные(РежимТест);
|
||||||
|
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
|
||||||
|
|
||||||
|
Возврат СтрШаблон(
|
||||||
|
"Сопоставлено: %1; не сопоставлено: %2; создано серий: %3; создано характеристик: %4%5",
|
||||||
|
Формат(Результат.Сопоставлено, "ЧН=0; ЧГ=0"),
|
||||||
|
Формат(Результат.НеСопоставлено, "ЧН=0; ЧГ=0"),
|
||||||
|
Формат(Результат.СозданоСерий, "ЧН=0; ЧГ=0"),
|
||||||
|
Формат(Результат.СозданоХарактеристик, "ЧН=0; ЧГ=0"),
|
||||||
|
?(РежимТест, " (тест)", ""));
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Функция ЗначениеСвойстваОтвета(Источник, Имя)
|
||||||
|
|
||||||
|
Если Источник = Неопределено Тогда
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ТипЗнч(Источник) = Тип("Структура") Или ТипЗнч(Источник) = Тип("ФиксированнаяСтруктура") Тогда
|
||||||
|
Если Источник.Свойство(Имя) Тогда
|
||||||
|
Возврат Источник[Имя];
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ТипЗнч(Источник) = Тип("Соответствие") Или ТипЗнч(Источник) = Тип("ФиксированноеСоответствие") Тогда
|
||||||
|
Возврат Источник.Получить(Имя);
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Неопределено;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
<Content>
|
<Content>
|
||||||
<xr:Item xsi:type="xr:MDObjectRef">Catalog.РК_НастройкиПодключенияКВнешнейБазе</xr:Item>
|
<xr:Item xsi:type="xr:MDObjectRef">Catalog.РК_НастройкиПодключенияКВнешнейБазе</xr:Item>
|
||||||
<xr:Item xsi:type="xr:MDObjectRef">Constant.РК_РабочееПодключениеЧерезАПИ</xr:Item>
|
<xr:Item xsi:type="xr:MDObjectRef">Constant.РК_РабочееПодключениеЧерезАПИ</xr:Item>
|
||||||
|
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.РК_ОбменСВнешнейБазой</xr:Item>
|
||||||
<xr:Item xsi:type="xr:MDObjectRef">DataProcessor.РК_ЗагрузкаОстатков</xr:Item>
|
<xr:Item xsi:type="xr:MDObjectRef">DataProcessor.РК_ЗагрузкаОстатков</xr:Item>
|
||||||
<xr:Item xsi:type="xr:MDObjectRef">DataProcessor.РК_ОбработкаПарнеровКонтрагентов</xr:Item>
|
<xr:Item xsi:type="xr:MDObjectRef">DataProcessor.РК_ОбработкаПарнеровКонтрагентов</xr:Item>
|
||||||
</Content>
|
</Content>
|
||||||
|
|||||||
Reference in New Issue
Block a user