Compare commits
20 Commits
feature/obmen
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 95c6315feb | |||
| 17e5a81a1d | |||
| f306257050 | |||
| 260edf6800 | |||
| b472ff2470 | |||
| b0d0324074 | |||
| d39b1c0abb | |||
| b0d285a87d | |||
| 78c25277c8 | |||
| 0ef87a322c | |||
| 94f793b614 | |||
| 0ebd01d0ba | |||
| 997b7fe110 | |||
| a83f23d16c | |||
| eb097a8078 | |||
| 8a1624a47a | |||
| 2dfa49b2cf | |||
| 6a61479ba2 | |||
| 7a313f254c | |||
| 45b7af871a |
+220
-1
@@ -1,6 +1,225 @@
|
||||
# История изменений crm3-26.rhana
|
||||
|
||||
Формат версии: `1.3.0.NNN` (синхронизируется с `VERSION` и `Configuration.xml`).
|
||||
Формат версии: `1.3.0.NNN` / `1.3.1.NNN` (синхронизируется с `VERSION` и `Configuration.xml`).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.1.55 (2026-08-11)
|
||||
|
||||
### Добавлено
|
||||
|
||||
- `РК_ФормаНастроекРана`: при открытии и смене `РК_РабочееПодключениеЧерезАПИ`
|
||||
проверка через `СоединениеАктивно` — показ/скрытие `ДекорацияПодключениеНеСработает`.
|
||||
|
||||
---
|
||||
|
||||
## 1.3.1.54 (2026-08-11)
|
||||
|
||||
### Исправлено
|
||||
|
||||
- `РК_ОбменСВнешнейБазой`: заголовок `IBSession: start` при вызовах Transfer API —
|
||||
иначе публикация с повторным использованием сеансов отвечает HTTP 400
|
||||
(«Не указан заголовок управления сеансами…»).
|
||||
- Краткий текст ошибки HTTP (из `<descr>` XML-ответа платформы) для формы проверки.
|
||||
|
||||
---
|
||||
|
||||
## 1.3.1.53 (2026-08-11)
|
||||
|
||||
### Исправлено
|
||||
|
||||
- Заимствован `CommonModule.ОбщегоНазначения` (Adopted, без доработки модуля) —
|
||||
компилятор расширения видит только объекты расширения и заимствованные объекты хоста.
|
||||
- В менеджере `РК_НастройкиПодключенияКВнешнейБазе` и `РК_ОбменСВнешнейБазой` снова
|
||||
`ОбщегоНазначения.ЗначенияРеквизитовОбъекта` (как в `РК_ЗагрузкаОстатков` / `crm3-dev.rhana`).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.1.52 (2026-08-11)
|
||||
|
||||
### Исправлено
|
||||
|
||||
- Модуль менеджера `РК_НастройкиПодключенияКВнешнейБазе` и `РК_ОбменСВнешнейБазой`:
|
||||
убраны вызовы `ОбщегоНазначения.ЗначенияРеквизитовОбъекта` (модуль не заимствован в расширении) —
|
||||
чтение реквизитов через ссылку/объект справочника.
|
||||
|
||||
---
|
||||
|
||||
## 1.3.1.51 (2026-08-11)
|
||||
|
||||
### РК_НастройкиПодключенияКВнешнейБазе
|
||||
|
||||
- Проверка соединения вынесена в модуль менеджера: `ПроверитьСоединение(Источник)`.
|
||||
- Источник: ссылка, объект справочника или структура полей формы (без проверки «Активно»).
|
||||
- Возврат: `Успех`, `Текст`, `Ответ`, `Ошибка` — для UI и вызова из кода.
|
||||
- `СоединениеАктивно(Ссылка)` — «Активно» + совпадение `ИмяТекущейБазы` с текущей ИБ.
|
||||
- `ИмяТекущейИнформационнойБазы()` — общее API менеджера.
|
||||
|
||||
---
|
||||
|
||||
## 1.3.1.50 (2026-08-11)
|
||||
|
||||
### РК_НастройкиПодключенияКВнешнейБазе
|
||||
|
||||
- Форма элемента: «Обновить имя текущей базы» — из `Ref=` / `File=` строки соединения.
|
||||
- Форма элемента: «Проверить» — `GET /v1/health` по полям формы (без записи, без проверки «Активно»).
|
||||
- `РК_ОбменСВнешнейБазой`: `ПроверитьСоединение`, `ВыполнитьGET`; токен передаётся в `X-Transfer-Token` (совместимо с Basic Auth).
|
||||
|
||||
---
|
||||
|
||||
## 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`).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.47 (2026-07-30)
|
||||
|
||||
### Обмен — приём СФ выданного без полей аванса в ТЧ
|
||||
|
||||
Модуль: `ОбменДаннымиXDTOСервер` (`&ИзменениеИКонтроль` `КонвертацияСвойстваСтруктурыОбъектаXDTO`).
|
||||
|
||||
Пакет из **crm3-dev** в `ПлатежноРасчетныеДокументы` передаёт только `ДатаДокумента` / `НомерДокумента`. Целевое ПКО также ждёт поля аванса (`ДатаИсправленияСчетаФактурыНаАванс` и др.). Типовой код при отсутствии свойства писал в `ПриемникДанных.ДополнительныеСвойства`, но у строки ТЧ этого поля нет → ошибка конвертации.
|
||||
|
||||
Исправление: фиксировать `СвойстваОтсутствующиеВПолученныхДанных` только если у приёмника есть `ДополнительныеСвойства`.
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.46 (2026-07-30)
|
||||
|
||||
### Обмен — приоритетный ВидНоменклатуры из ра_ВидНоменклатурыCRM326
|
||||
|
||||
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
|
||||
|
||||
При получении номенклатуры из **Рабочая CRM3**: если в пакете есть `AdditionalInfo.РК_ВидНоменклатурыCRM326`, `ВидНоменклатуры` сопоставляется по наименованию в целевой ИБ (перебивает защиту учётных реквизитов). Если значение не передано — действует прежний механизм обмена.
|
||||
|
||||
Пара с `crm3-dev.rhana` 1.0.1.342.
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.45 (2026-07-21)
|
||||
|
||||
### Обмен — ВидЦены строк из AdditionalInfo (Д1.3 / issue #10)
|
||||
|
||||
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
|
||||
|
||||
Заменяет дозаполнение из соглашения (1.3.0.44): передаём фактические виды цен из исходной ИБ.
|
||||
|
||||
- На отправке (`crm3-dev.rhana` 1.0.1.338): `AdditionalInfo.РК_ВидыЦенСтрок`.
|
||||
- На приёме: сохранить карту при `*_ПриКонвертацииДанныхXDTO`; применить в `ОтложеннаяОбработка_*` по `ИндексВТЧ` (запасной ключ — `НомерСтроки`).
|
||||
- Пустой вид цены в источнике остаётся пустым; цена/сумма не пересчитываются.
|
||||
- Только узел **«Рабочая CRM3»**.
|
||||
|
||||
Refs: https://git.p7net.ru/rhana/crm3-migration/-/issues/10
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.44 (2026-07-21)
|
||||
|
||||
### Обмен — дозаполнение ВидЦены в строках ТЧ (Д1.3, вариант B)
|
||||
|
||||
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
|
||||
|
||||
ED 1.8 не передаёт `ВидЦены` / `ВидЦеныПоставщика` в строках табличных частей (XDTO-схема не меняется).
|
||||
|
||||
- `&После("ВыполнитьПроцедуруМодуляМенеджера")` — `РК_ВыполнитьПроцедуруМодуляМенеджера_ДозаполнитьВидЦены` для всех процедур `ОтложеннаяОбработка_*`.
|
||||
- Универсально обходит все ТЧ документа; для пустых `ВидЦены` — `ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(ПоляЗаполнения = "ВидЦены")`; для `ВидЦеныПоставщика` — `ЦеныПартнеровЗаполнениеСервер` с тем же ограничением полей.
|
||||
- Цена и сумма строк **не пересчитываются** (в отличие от `ЗаполнитьУсловияПродажПоСоглашению(Истина)`).
|
||||
- Только для узла **«Рабочая CRM3»** (`РК_ЭтоОбменС_Crm3Dev`).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.43 (2026-07-21)
|
||||
|
||||
### Серии номенклатуры — подбор по владельцу вида и сроку
|
||||
|
||||
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
|
||||
|
||||
- Для ПКО `Справочник_СерииНоменклатуры` добавлен подбор существующей серии с учетом
|
||||
владельца серий вида номенклатуры в целевой ИБ:
|
||||
- `ВладелецВида + Номер + ГоденДо`,
|
||||
- `ВладелецВида + Номер`,
|
||||
- при пустом номере: `ВладелецВида + ГоденДо`.
|
||||
- Поиск теперь опирается на маппинг видов номенклатуры на target (через
|
||||
`РК_ВладелецСерийДляВидаНоменклатуры`), что снимает конфликт, когда вид в source и target различается.
|
||||
- При найденной серии с другим GUID создается предупреждение и запись из пакета пропускается
|
||||
(без создания дубликата).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.42 (2026-07-15)
|
||||
|
||||
### Обмен — этапы графика оплаты ЗаказКлиента (Д1.2)
|
||||
|
||||
База: **1.3.0.41** (ws-rhana + объекты расчётов 1.3.0.40).
|
||||
|
||||
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
|
||||
|
||||
- `&После("ОтложеннаяОбработка_ЗаказыПоставщикуКлиента")` — `РК_ОтложеннаяОбработка_ЗаказыПоставщикуКлиента_ЭтапыОплаты`.
|
||||
- При «бедных» этапах из XDTO (пустые `ДатаПлатежа` / `ВариантОтсчета`) ТЧ очищается и перезаполняется типовым `ЭтапыОплатыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты` по соглашению / графику оплаты / договору.
|
||||
- При пустых реквизитах шапки из соглашения подставляются `ГрафикОплаты`, `ФормаОплаты`.
|
||||
- Только для узла **«Рабочая CRM3»** (`РК_ЭтоОбменС_Crm3Dev`).
|
||||
|
||||
Данные уже загруженных заказов: `docs/transfer/Код_дозаполнения_этапов_оплаты_заказов_crm3-26.bsl` (монорепозиторий).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.41 (2026-07-09)
|
||||
|
||||
### HTTP Transfer API перенесён в ws-rhana
|
||||
|
||||
Удалены объекты `РК_TransferAPI` и связанные модули/константы/роль.
|
||||
Read-only HTTP API — в универсальном расширении [`ws-rhana`](https://git.p7net.ru/1c/ws-rhana.git) (`РВС_TransferAPI`).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.40 (2026-07-08)
|
||||
|
||||
### Обмен — объекты расчётов по договорам
|
||||
|
||||
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
|
||||
|
||||
В UT 11.5 `ОбъектыРасчетов` — отдельный справочник; в XDTO 1.8 не передаётся. Типовой `ВзаиморасчетыСервер.ПередЗаписью` при обмене crm3-dev → crm3-26 может не создать ОР (пустой партнёр на договоре, сбой `СоздатьПоКлючу`).
|
||||
|
||||
| Процедура/функция | Назначение |
|
||||
|-------------------|------------|
|
||||
| `РК_ПартнерКонтрагентДляДоговора` | партнёр/контрагент из договора, подсказок заказа или последнего заказа |
|
||||
| `РК_ОбеспечитьОбъектРасчетовПоДоговору` | создание ОР через `СоздатьЭлемент`, если не найден |
|
||||
| `РК_ПКО_ДоговорыКонтрагентов_ДозаполнитьПартнера` | `&После` ПКО договора — дозаполнение партнёра из контрагента |
|
||||
| `РК_ОтложеннаяОбработка_ДосоздатьОбъектыРасчетов` | `&После` типовой отложенной обработки — досоздание ОР по договорам из пакета |
|
||||
|
||||
Применяется только к узлу «Рабочая CRM3» (`РК_ЭтоОбменС_Crm3Dev`).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.39 (2026-07-06)
|
||||
|
||||
### Контрагенты — уникальность ИНН/КПП
|
||||
|
||||
Модуль: `ПартнерыИКонтрагентыЛокализация` (заимствован).
|
||||
|
||||
В целевой конфигурации (crm3-26) проверка уникальности ИНН/КПП реализована в модуле локализации, а не в `ПартнерыИКонтрагенты` (как в crm3-dev). Функция возвращает структуру `НайденныеСовпадения` / `ДоступноСоздание` и учитывает `ЮрФизЛицо` (различение ИП и физлица).
|
||||
|
||||
| Процедура/функция | Изменение |
|
||||
|-------------------|-----------|
|
||||
| `ИННКППУжеИспользуетсяВИнформационнойБазе` | при поиске дублей исключаются контрагенты с `ПометкаУдаления = Истина` |
|
||||
| `ПроверитьКорректностьЗаполненияКонтрагента` | для записываемого контрагента с `ПометкаУдаления` проверка уникальности ИНН/КПП **не выполняется** |
|
||||
|
||||
**Поведение** — аналогично `crm3-dev.rhana` v1.0.1.333:
|
||||
|
||||
- обычная запись — уникальность среди непомеченных на удаление;
|
||||
- запись с пометкой удаления — проверка уникальности ИНН/КПП пропускается;
|
||||
- дубль только у помеченного контрагента не блокирует активную карточку.
|
||||
|
||||
**Примечание:** отдельная CRM-функция `CRM_КлиентыСервер.ИННКППУжеИспользуетсяВИнформационнойБазе` (поиск по `Партнеры.CRM_ИНН`) не затронута — она относится к сценариям CRM, не к типовой записи справочника `Контрагенты`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
# crm3-26.rhana
|
||||
|
||||
Расширение РАНА для целевой конфигурации **crm3-26** (ИБ `crm3`, сервер `1c-srv.rhana.local`).
|
||||
|
||||
Текущая версия: **1.3.1.55** — см. [`VERSION`](VERSION) и `src/Configuration.xml`.
|
||||
|
||||
Префикс новых объектов расширения: **`РК_`**.
|
||||
|
||||
## Назначение
|
||||
|
||||
Доработки целевой CRM3 редакции 3.1, не входящие в типовую конфигурацию:
|
||||
|
||||
- **приём данных** при синхронизации **crm3-dev → crm3-26** (защита учётных настроек целевой ИБ);
|
||||
- **НСИ и бизнес-логика** РАНА (контрагенты, договоры, реализация, заказы, отладка);
|
||||
- **совместимость обмена** с исходной базой (EnterpriseData 1.8, ставки НДС 22%).
|
||||
|
||||
Парное расширение исходной ИБ: [`crm3-dev.rhana`](../crm3-dev.rhana).
|
||||
|
||||
## Документация
|
||||
|
||||
| Документ | Содержание |
|
||||
|----------|------------|
|
||||
| [`CHANGELOG.md`](CHANGELOG.md) | история версий и описание доработок |
|
||||
| [`../docs/transfer/Анализ_синхронизации_crm3-dev_crm3-26.md`](../docs/transfer/Анализ_синхронизации_crm3-dev_crm3-26.md) | полный анализ синхронизации (монорепозиторий crm3-26) |
|
||||
| [`../docs/meta/REPOSITORIES.md`](../docs/meta/REPOSITORIES.md) | связанные git-репозитории конфигураций |
|
||||
|
||||
## Синхронизация crm3-dev → crm3-26
|
||||
|
||||
### Разделение ответственности
|
||||
|
||||
| Сторона | Расширение | Роль |
|
||||
|---------|------------|------|
|
||||
| **Исходная** (`crm3_placentapharm`) | `crm3-dev.rhana` | совместимость **отправки** (XDTO 1.8, валюта банк.счетов, фильтр узла CRM3-26) |
|
||||
| **Целевая** (`crm3`) | `crm3-26.rhana` | защита **приёма** (учёт номенклатуры, склады, виды, серии) |
|
||||
|
||||
Доработки обмена на каждой стороне применяются **только к узлу CRM3**, без влияния на обмен с Бухгалтерией.
|
||||
|
||||
### Ключевые функции (целевая ИБ)
|
||||
|
||||
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`, область `Синхронизация_crm3_dev_crm3_26`.
|
||||
|
||||
| Функция | Назначение |
|
||||
|---------|------------|
|
||||
| `РК_УзелCrm3Dev_GUID()` | GUID узла «Рабочая CRM3» (`97cd20ee-bb06-11f0-8dac-0cc47a7d055f`) |
|
||||
| `РК_ЭтоОбменС_Crm3Dev(КомпонентыОбмена)` | Истина только для обмена с исходной CRM |
|
||||
|
||||
### Защита при получении (v1.3.0.37+)
|
||||
|
||||
| Объект | Поведение |
|
||||
|--------|-----------|
|
||||
| **Номенклатура** (существует) | снимок и восстановление учётных реквизитов целевой ИБ после типового `ПередЗаписью` и отложенной обработки |
|
||||
| **Номенклатура** (новая) | заполнение учёта по виду номенклатуры **целевой** ИБ |
|
||||
| **Виды номенклатуры** (существует) | пропуск обновления (сопоставление по GUID сохраняется) |
|
||||
| **Склады** (существует) | пропуск перезаписи реквизитов |
|
||||
| **Серии номенклатуры** | проверка владельца + подбор по `Номер/ГоденДо` в рамках владельца вида (v1.3.0.43+) |
|
||||
| **Ставки НДС** | ПКПД: `НДС22`, `НДС22_122` |
|
||||
|
||||
Защищаемые реквизиты номенклатуры: `ВидНоменклатуры`, `ОсобенностьУчета`, `ТипНоменклатуры`, `ИспользованиеХарактеристик`, `ВладелецСерий`, `ВладелецХарактеристик`, `ГруппаФинансовогоУчета`, `СкладскаяГруппа`.
|
||||
|
||||
## Контрагенты — уникальность ИНН/КПП (v1.3.0.39)
|
||||
|
||||
В crm3-26 проверка реализована в **`ПартнерыИКонтрагентыЛокализация`** (не в `ПартнерыИКонтрагенты`, как в crm3-dev).
|
||||
|
||||
| Процедура/функция | Изменение |
|
||||
|-------------------|-----------|
|
||||
| `ИННКППУжеИспользуетсяВИнформационнойБазе` | дубли ищутся только среди контрагентов **без** пометки удаления |
|
||||
| `ПроверитьКорректностьЗаполненияКонтрагента` | для контрагента с `ПометкаУдаления` проверка уникальности **не выполняется** |
|
||||
|
||||
Поведение согласовано с `crm3-dev.rhana` v1.0.1.333. Отдельная CRM-функция `CRM_КлиентыСервер.ИННКППУжеИспользуетсяВИнформационнойБазе` (поиск по `Партнеры.CRM_ИНН`) не затронута.
|
||||
|
||||
## Состав расширения (основное)
|
||||
|
||||
### Общие модули
|
||||
|
||||
| Модуль | Назначение |
|
||||
|--------|------------|
|
||||
| `МенеджерОбменаЧерезУниверсальныйФормат` | синхронизация crm3-dev, защита учёта при получении |
|
||||
| `ПартнерыИКонтрагентыЛокализация` | уникальность ИНН/КПП контрагентов |
|
||||
| `РК_ОбменСВнешнейБазой` | HTTP-клиент Transfer API (`ws-rhana`) по настройкам справочника |
|
||||
| `РК_ОбщегоНазначения` / `РК_ОбщегоНазначенияВызовСервера` / `РК_ОбщегоНазначенияКлиентСервер` | инфраструктура РАНА (режим отладки и др.) |
|
||||
| `ОбщегоНазначенияКлиентСервер` | доработки отборов динамических списков |
|
||||
|
||||
### Справочники и HTTP к исходной ИБ (v1.3.1.49+)
|
||||
|
||||
| Объект | Назначение |
|
||||
|--------|------------|
|
||||
| `РК_НастройкиПодключенияКВнешнейБазе` | адрес `/hs/transfer`, токен, логин/пароль, таймаут, `ИмяТекущейБазы`, `Активно` |
|
||||
| Менеджер справочника | `ПроверитьСоединение(Источник)`, `СоединениеАктивно(Ссылка)`, `ИмяТекущейИнформационнойБазы()` |
|
||||
| `РК_РабочееПодключениеЧерезАПИ` | константа — текущая рабочая настройка |
|
||||
| `РК_ЗагрузкаОстатков` | подбор складов / загрузка / сопоставление остатков из исходной ИБ |
|
||||
|
||||
**Проверка соединения** (форма элемента или любой код):
|
||||
|
||||
```bsl
|
||||
// по ссылке
|
||||
Р = Справочники.РК_НастройкиПодключенияКВнешнейБазе.ПроверитьСоединение(СсылкаНастройки);
|
||||
// по полям формы / структуре (АдресПодключения|Адрес, Токен, …)
|
||||
Р = Справочники.РК_НастройкиПодключенияКВнешнейБазе.ПроверитьСоединение(СтруктураПолей);
|
||||
// Р.Успех, Р.Текст, Р.Ответ, Р.Ошибка — GET /v1/health через РК_ОбменСВнешнейБазой
|
||||
```
|
||||
|
||||
HTTP-клиент передаёт `IBSession: start` (публикация с повторным использованием сеансов) и `X-Transfer-Token`.
|
||||
|
||||
Пара: расширение **`ws-rhana`** на исходной ИБ (≥ 0.0.0.30 для складов/остатков; health — с ранних версий).
|
||||
|
||||
### Обработки и формы
|
||||
|
||||
| Объект | Назначение |
|
||||
|--------|------------|
|
||||
| `РК_ЗагрузкаОстатков` | загрузка складских остатков из исходной ИБ через Transfer API |
|
||||
| `РК_ОбработкаПарнеровКонтрагентов` | работа с партнёрами и контрагентами |
|
||||
| `РК_ФормаНастроекРана` | настройки расширения |
|
||||
| `ЗагрузкаДанныхИзФайла` | доработки загрузки НСИ |
|
||||
|
||||
### Подсистемы
|
||||
|
||||
- `РК_РАНА` — общие доработки РАНА
|
||||
- `РК_РАНА326` — доработки, специфичные для целевой конфигурации
|
||||
|
||||
## Репозиторий
|
||||
|
||||
```text
|
||||
https://git.p7net.ru/1c/crm3_26.rhana.git
|
||||
```
|
||||
|
||||
Каталог в монорепозитории: `crm3-26.rhana/`.
|
||||
|
||||
## Обновление из конфигуратора
|
||||
|
||||
После выгрузки из 1С EDT / конфигуратора:
|
||||
|
||||
```bash
|
||||
scripts/normalize_1c_export.sh crm3-26.rhana # из корня crm3-26
|
||||
cd crm3-26.rhana && git add -A && git status
|
||||
```
|
||||
|
||||
Синхронизация `.gitattributes` / `.editorconfig`: `scripts/sync_git_1c_config.sh` (см. [`tools/git_1c/README.md`](../tools/git_1c/README.md)).
|
||||
|
||||
## Связанные конфигурации
|
||||
|
||||
| Сторона | Конфигурация | ИБ | Расширение |
|
||||
|---------|--------------|-----|------------|
|
||||
| Исходная | `crm3-dev` | `crm3_placentapharm` | `crm3-dev.rhana` |
|
||||
| Целевая | `crm3-26` | `crm3` | **`crm3-26.rhana`** |
|
||||
@@ -0,0 +1,442 @@
|
||||
<?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">
|
||||
<Catalog uuid="9a372d93-d522-4e3c-9242-3f69517e7b43">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="CatalogObject.РК_НастройкиПодключенияКВнешнейБазе" category="Object">
|
||||
<xr:TypeId>a62ececd-a3e8-4735-b5df-bf53a976ed21</xr:TypeId>
|
||||
<xr:ValueId>586f67a4-b615-434a-bd76-f85eb2952384</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogRef.РК_НастройкиПодключенияКВнешнейБазе" category="Ref">
|
||||
<xr:TypeId>f294ac9c-0cd9-479f-a972-a5d0049fd73a</xr:TypeId>
|
||||
<xr:ValueId>d83b73c7-78df-454c-8cbf-7e353ad6f7fe</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogSelection.РК_НастройкиПодключенияКВнешнейБазе" category="Selection">
|
||||
<xr:TypeId>fc1b1689-ffe2-4b03-9252-a2ef4d82410f</xr:TypeId>
|
||||
<xr:ValueId>f5d76395-b07b-4383-833a-eb7f2eb92320</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogList.РК_НастройкиПодключенияКВнешнейБазе" category="List">
|
||||
<xr:TypeId>bd3013e4-54d6-441f-8fe5-ee9eab62bdfb</xr:TypeId>
|
||||
<xr:ValueId>cea2628f-8ce9-4e38-9ef3-db15bd5d0232</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogManager.РК_НастройкиПодключенияКВнешнейБазе" category="Manager">
|
||||
<xr:TypeId>335fe1bd-3aae-4362-9e37-38b5bdcce92f</xr:TypeId>
|
||||
<xr:ValueId>5cd69658-7c18-4cd1-a4e1-e635f4461659</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>РК_НастройкиПодключенияКВнешнейБазе</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Настройка подключения к внешней базе</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Hierarchical>false</Hierarchical>
|
||||
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
|
||||
<LimitLevelCount>false</LimitLevelCount>
|
||||
<LevelCount>2</LevelCount>
|
||||
<FoldersOnTop>true</FoldersOnTop>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<Owners/>
|
||||
<SubordinationUse>ToItems</SubordinationUse>
|
||||
<CodeLength>9</CodeLength>
|
||||
<DescriptionLength>25</DescriptionLength>
|
||||
<CodeType>String</CodeType>
|
||||
<CodeAllowedLength>Variable</CodeAllowedLength>
|
||||
<CodeSeries>WholeCatalog</CodeSeries>
|
||||
<CheckUnique>true</CheckUnique>
|
||||
<Autonumbering>true</Autonumbering>
|
||||
<DefaultPresentation>AsDescription</DefaultPresentation>
|
||||
<Characteristics/>
|
||||
<PredefinedDataUpdate>Auto</PredefinedDataUpdate>
|
||||
<EditType>InDialog</EditType>
|
||||
<QuickChoice>false</QuickChoice>
|
||||
<ChoiceMode>BothWays</ChoiceMode>
|
||||
<InputByString>
|
||||
<xr:Field>Catalog.РК_НастройкиПодключенияКВнешнейБазе.StandardAttribute.Description</xr:Field>
|
||||
<xr:Field>Catalog.РК_НастройкиПодключенияКВнешнейБазе.StandardAttribute.Code</xr:Field>
|
||||
</InputByString>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<DefaultObjectForm>Catalog.РК_НастройкиПодключенияКВнешнейБазе.Form.ФормаЭлемента</DefaultObjectForm>
|
||||
<DefaultFolderForm/>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<DefaultFolderChoiceForm/>
|
||||
<AuxiliaryObjectForm/>
|
||||
<AuxiliaryFolderForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<AuxiliaryChoiceForm/>
|
||||
<AuxiliaryFolderChoiceForm/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<BasedOn/>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<CreateOnInput>Use</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DataHistory>DontUse</DataHistory>
|
||||
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
|
||||
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Attribute uuid="9fa4f82a-4345-4772-b2dc-f8d892fc8e82">
|
||||
<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>ShowError</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="f46fb546-fca7-4f92-9a0b-a380ea73dca9">
|
||||
<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>ShowError</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="73d37e7f-a7ee-494e-a946-d3d706e9f037">
|
||||
<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>10</v8:Digits>
|
||||
<v8:FractionDigits>0</v8:FractionDigits>
|
||||
<v8:AllowedSign>Nonnegative</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:nil="true"/>
|
||||
<FillChecking>ShowError</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="af91404e-d0ef-4b3d-9819-0027b61e8834">
|
||||
<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>ShowError</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="33e4efd1-caed-46ef-b9f8-892f4bb69def">
|
||||
<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>true</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>ShowError</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="8c13a155-b2b2-4648-b623-e03cb49ee1ee">
|
||||
<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:nil="true"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="55b271fd-588b-4b24-bb35-480535766533">
|
||||
<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>0</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>true</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>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="ca043818-4250-4082-8d09-b6fce389c953">
|
||||
<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>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Form>ФормаЭлемента</Form>
|
||||
</ChildObjects>
|
||||
</Catalog>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,254 @@
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Признак, что настройку можно использовать в текущей ИБ.
|
||||
//
|
||||
Функция СоединениеАктивно(НастройкаСсылка) Экспорт
|
||||
|
||||
Если ТипЗнч(НастройкаСсылка) <> Тип("СправочникСсылка.РК_НастройкиПодключенияКВнешнейБазе") Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(НастройкаСсылка) Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(НастройкаСсылка, "Активно, ИмяТекущейБазы");
|
||||
Если Реквизиты.Активно <> Истина Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяВНастройке = СокрЛП(Строка(Реквизиты.ИмяТекущейБазы));
|
||||
Если ПустаяСтрока(ИмяВНастройке) Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ВРег(ИмяВНастройке) = ВРег(ИмяТекущейИнформационнойБазы());
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверка Transfer API (GET /v1/health).
|
||||
//
|
||||
// Параметры:
|
||||
// Источник - СправочникСсылка.РК_НастройкиПодключенияКВнешнейБазе,
|
||||
// СправочникОбъект.РК_НастройкиПодключенияКВнешнейБазе
|
||||
// или Структура с полями Адрес/АдресПодключения, Токен, Таймаут, Логин, Пароль.
|
||||
// Для ссылки «Активно» не проверяется (можно тестировать черновик).
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * Успех - Булево
|
||||
// * Текст - Строка (для показа пользователю)
|
||||
// * Ответ - Структура/Соответствие ответа health или Неопределено
|
||||
// * Ошибка - Строка
|
||||
//
|
||||
Функция ПроверитьСоединение(Источник) Экспорт
|
||||
|
||||
Результат = Новый Структура("Успех, Текст, Ответ, Ошибка", Ложь, "", Неопределено, "");
|
||||
|
||||
Попытка
|
||||
Настройки = НастройкиДляПроверки(Источник);
|
||||
ОтветHealth = РК_ОбменСВнешнейБазой.ПроверитьСоединение(Настройки);
|
||||
Исключение
|
||||
Результат.Ошибка = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
Результат.Текст = НСтр("ru = 'Ошибка соединения:'") + Символы.ПС + Результат.Ошибка;
|
||||
Возврат Результат;
|
||||
КонецПопытки;
|
||||
|
||||
Результат.Ответ = ОтветHealth;
|
||||
Статус = ЗначениеПоляОтвета(ОтветHealth, "status");
|
||||
Если НРег(СокрЛП(Строка(Статус))) <> "ok" Тогда
|
||||
Результат.Ошибка = НСтр("ru = 'Неожиданный ответ health:'") + " " + Строка(Статус);
|
||||
Результат.Текст = Результат.Ошибка;
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Успех = Истина;
|
||||
Результат.Текст = ТекстУспешнойПроверки(ОтветHealth);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Имя текущей ИБ из строки соединения (Ref= / File=).
|
||||
//
|
||||
Функция ИмяТекущейИнформационнойБазы() Экспорт
|
||||
|
||||
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
|
||||
|
||||
Позиция = СтрНайти(СтрокаСоединения, "Ref=""");
|
||||
Если Позиция > 0 Тогда
|
||||
Хвост = Сред(СтрокаСоединения, Позиция + 5);
|
||||
ПозицияКонец = СтрНайти(Хвост, """");
|
||||
Если ПозицияКонец > 0 Тогда
|
||||
Возврат Лев(Хвост, ПозицияКонец - 1);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Позиция = СтрНайти(СтрокаСоединения, "File=""");
|
||||
Если Позиция > 0 Тогда
|
||||
Хвост = Сред(СтрокаСоединения, Позиция + 6);
|
||||
ПозицияКонец = СтрНайти(Хвост, """");
|
||||
Если ПозицияКонец > 0 Тогда
|
||||
Путь = СтрЗаменить(Лев(Хвост, ПозицияКонец - 1), "\", "/");
|
||||
Пока Прав(Путь, 1) = "/" Цикл
|
||||
Путь = Лев(Путь, СтрДлина(Путь) - 1);
|
||||
КонецЦикла;
|
||||
Пока СтрНайти(Путь, "/") > 0 Цикл
|
||||
Путь = Сред(Путь, СтрНайти(Путь, "/") + 1);
|
||||
КонецЦикла;
|
||||
Возврат Путь;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат "";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция НастройкиДляПроверки(Источник)
|
||||
|
||||
Если ТипЗнч(Источник) = Тип("СправочникСсылка.РК_НастройкиПодключенияКВнешнейБазе") Тогда
|
||||
|
||||
Если Не ЗначениеЗаполнено(Источник) Тогда
|
||||
ВызватьИсключение НСтр("ru = 'Не указана настройка подключения'");
|
||||
КонецЕсли;
|
||||
|
||||
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник,
|
||||
"АдресПодключения, Токен, Таймаут, Логин, Пароль");
|
||||
Возврат СтруктураНастроекHTTP(
|
||||
Реквизиты.АдресПодключения,
|
||||
Реквизиты.Токен,
|
||||
Реквизиты.Таймаут,
|
||||
Реквизиты.Логин,
|
||||
Реквизиты.Пароль);
|
||||
|
||||
ИначеЕсли ТипЗнч(Источник) = Тип("СправочникОбъект.РК_НастройкиПодключенияКВнешнейБазе") Тогда
|
||||
|
||||
Возврат СтруктураНастроекHTTP(
|
||||
Источник.АдресПодключения,
|
||||
Источник.Токен,
|
||||
Источник.Таймаут,
|
||||
Источник.Логин,
|
||||
Источник.Пароль);
|
||||
|
||||
ИначеЕсли ТипЗнч(Источник) = Тип("Структура") Тогда
|
||||
|
||||
Адрес = "";
|
||||
Если Источник.Свойство("Адрес") Тогда
|
||||
Адрес = Источник.Адрес;
|
||||
ИначеЕсли Источник.Свойство("АдресПодключения") Тогда
|
||||
Адрес = Источник.АдресПодключения;
|
||||
КонецЕсли;
|
||||
|
||||
Токен = "";
|
||||
Если Источник.Свойство("Токен") Тогда
|
||||
Токен = Источник.Токен;
|
||||
КонецЕсли;
|
||||
|
||||
Таймаут = 120;
|
||||
Если Источник.Свойство("Таймаут") Тогда
|
||||
Таймаут = Источник.Таймаут;
|
||||
КонецЕсли;
|
||||
|
||||
Логин = "";
|
||||
Если Источник.Свойство("Логин") Тогда
|
||||
Логин = Источник.Логин;
|
||||
КонецЕсли;
|
||||
|
||||
Пароль = "";
|
||||
Если Источник.Свойство("Пароль") Тогда
|
||||
Пароль = Источник.Пароль;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтруктураНастроекHTTP(Адрес, Токен, Таймаут, Логин, Пароль);
|
||||
|
||||
Иначе
|
||||
ВызватьИсключение НСтр("ru = 'Недопустимый тип источника настройки подключения'");
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СтруктураНастроекHTTP(Адрес, Токен, Таймаут, Логин, Пароль)
|
||||
|
||||
ТаймаутЧисло = 120;
|
||||
Попытка
|
||||
ТаймаутЧисло = Число(Таймаут);
|
||||
Исключение
|
||||
ТаймаутЧисло = 120;
|
||||
КонецПопытки;
|
||||
Если ТаймаутЧисло <= 0 Тогда
|
||||
ТаймаутЧисло = 120;
|
||||
КонецЕсли;
|
||||
|
||||
Настройки = Новый Структура;
|
||||
Настройки.Вставить("Адрес", СокрЛП(Строка(Адрес)));
|
||||
Настройки.Вставить("Токен", СокрЛП(Строка(Токен)));
|
||||
Настройки.Вставить("Таймаут", ТаймаутЧисло);
|
||||
Настройки.Вставить("Логин", СокрЛП(Строка(Логин)));
|
||||
Настройки.Вставить("Пароль", Строка(Пароль));
|
||||
Возврат Настройки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстУспешнойПроверки(ОтветHealth)
|
||||
|
||||
ИБ = ЗначениеПоляОтвета(ОтветHealth, "ib");
|
||||
Расширение = ЗначениеПоляОтвета(ОтветHealth, "extension");
|
||||
ВерсияРасширения = ЗначениеПоляОтвета(ОтветHealth, "extension_version");
|
||||
Конфигурация = ЗначениеПоляОтвета(ОтветHealth, "configuration_name");
|
||||
ВерсияКонфигурации = ЗначениеПоляОтвета(ОтветHealth, "configuration_version");
|
||||
ВремяСервера = ЗначениеПоляОтвета(ОтветHealth, "server_time");
|
||||
|
||||
Части = Новый Массив;
|
||||
Части.Добавить(НСтр("ru = 'Соединение успешно.'"));
|
||||
Если Не ПустаяСтрока(Строка(ИБ)) Тогда
|
||||
Части.Добавить(НСтр("ru = 'ИБ:'") + " " + Строка(ИБ));
|
||||
КонецЕсли;
|
||||
Если Не ПустаяСтрока(Строка(Конфигурация)) Тогда
|
||||
Части.Добавить(НСтр("ru = 'Конфигурация:'") + " " + Строка(Конфигурация)
|
||||
+ ?(ПустаяСтрока(Строка(ВерсияКонфигурации)), "", " " + Строка(ВерсияКонфигурации)));
|
||||
КонецЕсли;
|
||||
Если Не ПустаяСтрока(Строка(Расширение)) Тогда
|
||||
Части.Добавить(НСтр("ru = 'Transfer API:'") + " " + Строка(Расширение)
|
||||
+ ?(ПустаяСтрока(Строка(ВерсияРасширения)), "", " " + Строка(ВерсияРасширения)));
|
||||
КонецЕсли;
|
||||
Если Не ПустаяСтрока(Строка(ВремяСервера)) Тогда
|
||||
Части.Добавить(НСтр("ru = 'Время сервера:'") + " " + Строка(ВремяСервера));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСоединить(Части, Символы.ПС);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеПоляОтвета(Источник, ИмяПоля)
|
||||
|
||||
Если Источник = Неопределено Тогда
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Источник) = Тип("Структура") Тогда
|
||||
Значение = Неопределено;
|
||||
Если Источник.Свойство(ИмяПоля, Значение) Тогда
|
||||
Возврат Значение;
|
||||
КонецЕсли;
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Источник) = Тип("Соответствие") Тогда
|
||||
Значение = Источник.Получить(ИмяПоля);
|
||||
Если Значение = Неопределено Тогда
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
Возврат Значение;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат "";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецЕсли
|
||||
@@ -0,0 +1,21 @@
|
||||
<?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">
|
||||
<Form uuid="5897541c-e081-4d49-b4cd-dc5418aa113a">
|
||||
<Properties>
|
||||
<Name>ФормаЭлемента</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Форма элемента</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,182 @@
|
||||
<?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">
|
||||
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
|
||||
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
|
||||
<ChildItems>
|
||||
<Button name="ФормаКомандаПроверитьСоединение" id="35">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.КомандаПроверитьСоединение</CommandName>
|
||||
<ExtendedTooltip name="ФормаКомандаПроверитьСоединениеРасширеннаяПодсказка" id="36"/>
|
||||
</Button>
|
||||
</ChildItems>
|
||||
</AutoCommandBar>
|
||||
<ChildItems>
|
||||
<InputField name="Код" id="1">
|
||||
<DataPath>Объект.Code</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="КодКонтекстноеМеню" id="2"/>
|
||||
<ExtendedTooltip name="КодРасширеннаяПодсказка" id="3"/>
|
||||
</InputField>
|
||||
<InputField name="Наименование" id="4">
|
||||
<DataPath>Объект.Description</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="НаименованиеКонтекстноеМеню" id="5"/>
|
||||
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="6"/>
|
||||
</InputField>
|
||||
<UsualGroup name="ГруппаПодлючение" id="30">
|
||||
<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>
|
||||
<ExtendedTooltip name="ГруппаПодлючениеРасширеннаяПодсказка" id="31"/>
|
||||
<ChildItems>
|
||||
<InputField name="АдресПодключения" id="7">
|
||||
<DataPath>Объект.АдресПодключения</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="АдресПодключенияКонтекстноеМеню" id="8"/>
|
||||
<ExtendedTooltip name="АдресПодключенияРасширеннаяПодсказка" id="9"/>
|
||||
</InputField>
|
||||
<InputField name="Токен" id="10">
|
||||
<DataPath>Объект.Токен</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ТокенКонтекстноеМеню" id="11"/>
|
||||
<ExtendedTooltip name="ТокенРасширеннаяПодсказка" id="12"/>
|
||||
</InputField>
|
||||
<InputField name="Таймаут" id="13">
|
||||
<DataPath>Объект.Таймаут</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ТаймаутКонтекстноеМеню" id="14"/>
|
||||
<ExtendedTooltip name="ТаймаутРасширеннаяПодсказка" id="15"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
</UsualGroup>
|
||||
<UsualGroup name="ГруппаПользователь" id="28">
|
||||
<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>
|
||||
<ExtendedTooltip name="ГруппаПользовательРасширеннаяПодсказка" id="29"/>
|
||||
<ChildItems>
|
||||
<InputField name="Логин" id="16">
|
||||
<DataPath>Объект.Логин</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ЛогинКонтекстноеМеню" id="17"/>
|
||||
<ExtendedTooltip name="ЛогинРасширеннаяПодсказка" id="18"/>
|
||||
</InputField>
|
||||
<InputField name="Пароль" id="19">
|
||||
<DataPath>Объект.Пароль</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ПарольКонтекстноеМеню" id="20"/>
|
||||
<ExtendedTooltip name="ПарольРасширеннаяПодсказка" id="21"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
</UsualGroup>
|
||||
<UsualGroup name="Группа1" id="37">
|
||||
<Group>AlwaysHorizontal</Group>
|
||||
<ExtendedTooltip name="Группа1РасширеннаяПодсказка" id="38"/>
|
||||
<ChildItems>
|
||||
<InputField name="ИмяТекущейБазы" id="32">
|
||||
<DataPath>Объект.ИмяТекущейБазы</DataPath>
|
||||
<AutoMaxWidth>false</AutoMaxWidth>
|
||||
<ClearButton>true</ClearButton>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ИмяТекущейБазыКонтекстноеМеню" id="33"/>
|
||||
<ExtendedTooltip name="ИмяТекущейБазыРасширеннаяПодсказка" id="34"/>
|
||||
</InputField>
|
||||
<Button name="ОбновитьИмяТекущейБазы" id="39">
|
||||
<Type>UsualButton</Type>
|
||||
<Representation>Picture</Representation>
|
||||
<CommandName>Form.Command.ОбновитьИмяТекущейБазы</CommandName>
|
||||
<ExtendedTooltip name="ОбновитьИмяТекущейБазыРасширеннаяПодсказка" id="40"/>
|
||||
</Button>
|
||||
</ChildItems>
|
||||
</UsualGroup>
|
||||
<CheckBoxField name="Активно" id="22">
|
||||
<DataPath>Объект.Активно</DataPath>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
<ContextMenu name="АктивноКонтекстноеМеню" id="23"/>
|
||||
<ExtendedTooltip name="АктивноРасширеннаяПодсказка" id="24"/>
|
||||
</CheckBoxField>
|
||||
<InputField name="Коментарий" id="25">
|
||||
<DataPath>Объект.Коментарий</DataPath>
|
||||
<AutoMaxWidth>false</AutoMaxWidth>
|
||||
<Height>2</Height>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="КоментарийКонтекстноеМеню" id="26"/>
|
||||
<ExtendedTooltip name="КоментарийРасширеннаяПодсказка" id="27"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="1">
|
||||
<Type>
|
||||
<v8:Type>cfg:CatalogObject.РК_НастройкиПодключенияКВнешнейБазе</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
<SavedData>true</SavedData>
|
||||
</Attribute>
|
||||
</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>
|
||||
<Picture>
|
||||
<xr:Ref>CommonPicture.ЗаполнитьФорму</xr:Ref>
|
||||
<xr:LoadTransparent>true</xr:LoadTransparent>
|
||||
</Picture>
|
||||
<Action>ОбновитьИмяТекущейБазы</Action>
|
||||
</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>
|
||||
<Picture>
|
||||
<xr:Ref>StdPicture.AppearanceCheckIcon</xr:Ref>
|
||||
<xr:LoadTransparent>true</xr:LoadTransparent>
|
||||
</Picture>
|
||||
<Action>КомандаПроверитьСоединение</Action>
|
||||
</Command>
|
||||
</Commands>
|
||||
</Form>
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
#Область ОбработчикиСобытийФормы
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиСобытийЭлементовШапкиФормы
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиКомандФормы
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбновитьИмяТекущейБазы(Команда)
|
||||
|
||||
ОбновитьИмяТекущейБазыНаСервере();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура КомандаПроверитьСоединение(Команда)
|
||||
|
||||
ТекстРезультата = КомандаПроверитьСоединениеНаСервере();
|
||||
ПоказатьПредупреждение(, ТекстРезультата);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
&НаСервере
|
||||
Процедура ОбновитьИмяТекущейБазыНаСервере()
|
||||
|
||||
Объект.ИмяТекущейБазы = Справочники.РК_НастройкиПодключенияКВнешнейБазе.ИмяТекущейИнформационнойБазы();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Функция КомандаПроверитьСоединениеНаСервере()
|
||||
|
||||
Настройки = Новый Структура;
|
||||
Настройки.Вставить("АдресПодключения", Объект.АдресПодключения);
|
||||
Настройки.Вставить("Токен", Объект.Токен);
|
||||
Настройки.Вставить("Таймаут", Объект.Таймаут);
|
||||
Настройки.Вставить("Логин", Объект.Логин);
|
||||
Настройки.Вставить("Пароль", Объект.Пароль);
|
||||
|
||||
РезультатПроверки = Справочники.РК_НастройкиПодключенияКВнешнейБазе.ПроверитьСоединение(Настройки);
|
||||
Возврат РезультатПроверки.Текст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -6,7 +6,7 @@
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Форма настроек рана</v8:content>
|
||||
<v8:content>Настройки РАНА</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
<?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">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Настройки РАНА</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
|
||||
<AutoCommandBar name="" id="-1"/>
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||
<Events>
|
||||
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||
</Events>
|
||||
<ChildItems>
|
||||
<CheckBoxField name="РК_РежимОтладкиРана" id="1">
|
||||
<DataPath>НаборКонстант.РК_РежимОтладкиРана</DataPath>
|
||||
@@ -10,6 +19,26 @@
|
||||
<ContextMenu name="РК_РежимОтладкиРанаКонтекстноеМеню" id="2"/>
|
||||
<ExtendedTooltip name="РК_РежимОтладкиРанаРасширеннаяПодсказка" id="3"/>
|
||||
</CheckBoxField>
|
||||
<InputField name="РК_РабочееПодключениеЧерезАПИ" id="4">
|
||||
<DataPath>НаборКонстант.РК_РабочееПодключениеЧерезАПИ</DataPath>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="РК_РабочееПодключениеЧерезАПИКонтекстноеМеню" id="5"/>
|
||||
<ExtendedTooltip name="РК_РабочееПодключениеЧерезАПИРасширеннаяПодсказка" id="6"/>
|
||||
<Events>
|
||||
<Event name="OnChange">РК_РабочееПодключениеЧерезАПИПриИзменении</Event>
|
||||
</Events>
|
||||
</InputField>
|
||||
<LabelDecoration name="ДекорацияПодключениеНеСработает" id="7">
|
||||
<Visible>false</Visible>
|
||||
<Title formatted="false">
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Данное подключение не активно или отключено для данной базы.</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ContextMenu name="ДекорацияПодключениеНеСработаетКонтекстноеМеню" id="8"/>
|
||||
<ExtendedTooltip name="ДекорацияПодключениеНеСработаетРасширеннаяПодсказка" id="9"/>
|
||||
</LabelDecoration>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="НаборКонстант" id="1">
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
#Область ОбработчикиСобытийФормы
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
ПроверитьДоступностьПодключения();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиСобытийЭлементовШапкиФормы
|
||||
|
||||
&НаКлиенте
|
||||
Процедура РК_РабочееПодключениеЧерезАПИПриИзменении(Элемент)
|
||||
|
||||
ПроверитьДоступностьПодключения();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Показывает предупреждение, если выбранное подключение неактивно
|
||||
// или имя текущей ИБ не совпадает с ИмяТекущейБазы в настройке
|
||||
// (пустое ИмяТекущейБазы в настройке — ограничение по имени не действует).
|
||||
//
|
||||
&НаСервере
|
||||
Процедура ПроверитьДоступностьПодключения()
|
||||
|
||||
ПодключениеАктивно = Справочники.РК_НастройкиПодключенияКВнешнейБазе.СоединениеАктивно(
|
||||
НаборКонстант.РК_РабочееПодключениеЧерезАПИ);
|
||||
|
||||
Элементы.ДекорацияПодключениеНеСработает.Видимость = (ПодключениеАктивно <> Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -170,14 +170,13 @@
|
||||
Если ЗначениеЗаполнено(ПолученныеДанные.ВидНоменклатуры) Тогда
|
||||
Справочники.Номенклатура.ЗаполнитьРеквизитыПоВидуНоменклатуры(ПолученныеДанные);
|
||||
КонецЕсли;
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ПолученныеДанные.ДополнительныеСвойства.Свойство("РК_СнимокУчетаНоменклатуры") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
Если ПолученныеДанные.ДополнительныеСвойства.Свойство("РК_СнимокУчетаНоменклатуры") Тогда
|
||||
ЗаполнитьЗначенияСвойств(ДанныеИБ, ПолученныеДанные.ДополнительныеСвойства.РК_СнимокУчетаНоменклатуры);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
РК_ПрименитьВидНоменклатурыCRM326ИзДополнительныхСвойств(ПолученныеДанные, ДанныеИБ);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -329,6 +328,85 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Подбор существующей серии в целевой ИБ по владельцу вида номенклатуры.
|
||||
// Приоритет:
|
||||
// 1) Вид + Номер + СрокГодности (если номер и срок заполнены)
|
||||
// 2) Вид + Номер (если номер заполнен)
|
||||
// 3) Вид + СрокГодности (если номер пустой и срок заполнен)
|
||||
//
|
||||
// Параметры:
|
||||
// ВладелецСерий - СправочникСсылка.ВидыНоменклатуры
|
||||
// НомерСерии - Строка
|
||||
// СрокГодности - Дата, Неопределено
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// СправочникСсылка.СерииНоменклатуры, Неопределено
|
||||
//
|
||||
Функция РК_НайтиСериюПоВладельцуНомерСроку(ВладелецСерий, НомерСерии, СрокГодности)
|
||||
|
||||
Если Не ЗначениеЗаполнено(ВладелецСерий) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
НомерСерии = СокрЛП(Строка(НомерСерии));
|
||||
СрокЗаполнен = ЗначениеЗаполнено(СрокГодности) И СрокГодности <> '00010101';
|
||||
|
||||
Если Не ПустаяСтрока(НомерСерии) Тогда
|
||||
Запрос = Новый Запрос;
|
||||
Если СрокЗаполнен Тогда
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| Серии.Ссылка КАК Ссылка
|
||||
|ИЗ
|
||||
| Справочник.СерииНоменклатуры КАК Серии
|
||||
|ГДЕ
|
||||
| Серии.ВидНоменклатуры = &Владелец
|
||||
| И НЕ Серии.ПометкаУдаления
|
||||
| И Серии.Номер = &Номер
|
||||
| И Серии.ГоденДо = &Срок";
|
||||
Запрос.УстановитьПараметр("Срок", СрокГодности);
|
||||
Иначе
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| Серии.Ссылка КАК Ссылка
|
||||
|ИЗ
|
||||
| Справочник.СерииНоменклатуры КАК Серии
|
||||
|ГДЕ
|
||||
| Серии.ВидНоменклатуры = &Владелец
|
||||
| И НЕ Серии.ПометкаУдаления
|
||||
| И Серии.Номер = &Номер";
|
||||
КонецЕсли;
|
||||
Запрос.УстановитьПараметр("Владелец", ВладелецСерий);
|
||||
Запрос.УстановитьПараметр("Номер", НомерСерии);
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Если Выборка.Следующий() Тогда
|
||||
Возврат Выборка.Ссылка;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если СрокЗаполнен Тогда
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| Серии.Ссылка КАК Ссылка
|
||||
|ИЗ
|
||||
| Справочник.СерииНоменклатуры КАК Серии
|
||||
|ГДЕ
|
||||
| Серии.ВидНоменклатуры = &Владелец
|
||||
| И НЕ Серии.ПометкаУдаления
|
||||
| И Серии.ГоденДо = &Срок";
|
||||
Запрос.УстановитьПараметр("Владелец", ВладелецСерий);
|
||||
Запрос.УстановитьПараметр("Срок", СрокГодности);
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Если Выборка.Следующий() Тогда
|
||||
Возврат Выборка.Ссылка;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// &После ДобавитьПКО_Справочник_СерииНоменклатуры.
|
||||
// Подключает обработчик проверки владельца серии при получении из пакета обмена.
|
||||
//
|
||||
@@ -377,6 +455,8 @@
|
||||
КонецЕсли;
|
||||
|
||||
СсылкаДляЖурнала = ?(ДанныеИБ = Неопределено, ПолученныеДанные.ПолучитьСсылкуНового(), ДанныеИБ.Ссылка);
|
||||
НомерСерии = СокрЛП(Строка(ПолученныеДанные.Номер));
|
||||
СрокГодности = ПолученныеДанные.ГоденДо;
|
||||
|
||||
Если ДанныеИБ <> Неопределено Тогда
|
||||
|
||||
@@ -406,33 +486,16 @@
|
||||
Иначе
|
||||
|
||||
ПолученныеДанные.ВидНоменклатуры = КорректныйВладелец;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| Серии.Ссылка КАК Ссылка
|
||||
|ИЗ
|
||||
| Справочник.СерииНоменклатуры КАК Серии
|
||||
|ГДЕ
|
||||
| Серии.ВидНоменклатуры = &Владелец
|
||||
| И НЕ Серии.ПометкаУдаления
|
||||
| И (Серии.Наименование = &Наименование
|
||||
| ИЛИ Серии.Номер = &Номер
|
||||
| И &НомерЗаполнен)";
|
||||
Запрос.УстановитьПараметр("Владелец", КорректныйВладелец);
|
||||
Запрос.УстановитьПараметр("Наименование", ПолученныеДанные.Наименование);
|
||||
Запрос.УстановитьПараметр("Номер", ПолученныеДанные.Номер);
|
||||
Запрос.УстановитьПараметр("НомерЗаполнен", ЗначениеЗаполнено(ПолученныеДанные.Номер));
|
||||
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Если Выборка.Следующий()
|
||||
И Выборка.Ссылка <> СсылкаДляЖурнала Тогда
|
||||
СуществующаяСерия = РК_НайтиСериюПоВладельцуНомерСроку(КорректныйВладелец, НомерСерии, СрокГодности);
|
||||
Если ЗначениеЗаполнено(СуществующаяСерия)
|
||||
И СуществующаяСерия <> СсылкаДляЖурнала Тогда
|
||||
|
||||
ТекстОшибки = СтрШаблон(
|
||||
"Серия с наименованием ""%1"" уже существует у владельца %2 (%3), GUID отличается от пакета.",
|
||||
ПолученныеДанные.Наименование,
|
||||
"Серия уже существует у владельца %1 (%2), GUID отличается от пакета. Номер=""%3"", годен до=""%4"".",
|
||||
КорректныйВладелец,
|
||||
Выборка.Ссылка);
|
||||
СуществующаяСерия,
|
||||
НомерСерии,
|
||||
?(ЗначениеЗаполнено(СрокГодности), Формат(СрокГодности, "ДФ=yyyy-MM-dd"), ""));
|
||||
ЗаписатьОшибкуВЖурналРегистрации(СсылкаДляЖурнала, ТекстОшибки, КомпонентыОбмена,
|
||||
НСтр("ru = 'создать серию номенклатуры'"), УровеньЖурналаРегистрации.Предупреждение);
|
||||
ПолученныеДанные = Неопределено;
|
||||
@@ -443,4 +506,609 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// --- Объекты расчётов (crm3-dev → crm3-26) ---
|
||||
// В UT 11.5 ОбъектыРасчетов — отдельный справочник; в XDTO 1.8 не передаётся.
|
||||
// Типовой ВзаиморасчетыСервер.ПередЗаписью может не создать ОР (СоздатьПоКлючу, пустой партнёр).
|
||||
// См. docs/transfer/План_синхронизации_2026-07-06_Учет.md (У1.1), Код_создания_объектов_расчетов_договоров.bsl.
|
||||
|
||||
// Возвращает партнёра и контрагента для договора: из договора, подсказок или последнего заказа.
|
||||
//
|
||||
// Параметры:
|
||||
// ДоговорСсылка - СправочникСсылка.ДоговорыКонтрагентов.
|
||||
// ПартнерПодсказка - СправочникСсылка.Партнеры, Неопределено.
|
||||
// КонтрагентПодсказка - СправочникСсылка.Контрагенты, Неопределено.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Партнер, Контрагент (могут остаться пустыми).
|
||||
//
|
||||
Функция РК_ПартнерКонтрагентДляДоговора(ДоговорСсылка, ПартнерПодсказка = Неопределено, КонтрагентПодсказка = Неопределено)
|
||||
|
||||
Результат = Новый Структура("Партнер, Контрагент");
|
||||
|
||||
Если Не ЗначениеЗаполнено(ДоговорСсылка) Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДоговорСсылка, "Партнер, Контрагент");
|
||||
Партнер = РеквизитыДоговора.Партнер;
|
||||
Контрагент = РеквизитыДоговора.Контрагент;
|
||||
|
||||
Если ЗначениеЗаполнено(ПартнерПодсказка) Тогда
|
||||
Партнер = ПартнерПодсказка;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(КонтрагентПодсказка) Тогда
|
||||
Контрагент = КонтрагентПодсказка;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Контрагент) И ЗначениеЗаполнено(Партнер) Тогда
|
||||
Контрагент = ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(Партнер);
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Партнер) И ЗначениеЗаполнено(Контрагент) Тогда
|
||||
Партнер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "Партнер");
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Партнер) ИЛИ Не ЗначениеЗаполнено(Контрагент) Тогда
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| Зак.Партнер КАК Партнер,
|
||||
| Зак.Контрагент КАК Контрагент
|
||||
|ИЗ
|
||||
| Документ.ЗаказКлиента КАК Зак
|
||||
|ГДЕ
|
||||
| Зак.Договор = &Договор
|
||||
| И НЕ Зак.ПометкаУдаления
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| Зак.Дата УБЫВ";
|
||||
Запрос.УстановитьПараметр("Договор", ДоговорСсылка);
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Если Выборка.Следующий() Тогда
|
||||
Если Не ЗначениеЗаполнено(Партнер) Тогда
|
||||
Партнер = Выборка.Партнер;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Контрагент) Тогда
|
||||
Контрагент = Выборка.Контрагент;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Контрагент) И ЗначениеЗаполнено(Партнер) Тогда
|
||||
Контрагент = ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(Партнер);
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Партнер = Партнер;
|
||||
Результат.Контрагент = Контрагент;
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создаёт элемент справочника ОбъектыРасчетов для договора, если его ещё нет.
|
||||
// Использует СоздатьЭлемент (не СоздатьПоКлючу — падает на договорах из обмена).
|
||||
//
|
||||
// Параметры:
|
||||
// ДоговорСсылка - СправочникСсылка.ДоговорыКонтрагентов.
|
||||
// Партнер - СправочникСсылка.Партнеры.
|
||||
// Контрагент - СправочникСсылка.Контрагенты.
|
||||
// КомпонентыОбмена - Структура - контекст обмена (для журнала).
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// СправочникСсылка.ОбъектыРасчетов - созданный или найденный ОР; пустая ссылка при ошибке.
|
||||
//
|
||||
Функция РК_ОбеспечитьОбъектРасчетовПоДоговору(ДоговорСсылка, Партнер, Контрагент, КомпонентыОбмена)
|
||||
|
||||
ПустаяСсылкаОР = Справочники.ОбъектыРасчетов.ПустаяСсылка();
|
||||
|
||||
Если Не ЗначениеЗаполнено(ДоговорСсылка) Или Не ОбщегоНазначения.СсылкаСуществует(ДоговорСсылка) Тогда
|
||||
Возврат ПустаяСсылкаОР;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Партнер) Или Не ЗначениеЗаполнено(Контрагент) Тогда
|
||||
Возврат ПустаяСсылкаОР;
|
||||
КонецЕсли;
|
||||
|
||||
Организация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДоговорСсылка, "Организация");
|
||||
Если Не ЗначениеЗаполнено(Организация) Тогда
|
||||
Возврат ПустаяСсылкаОР;
|
||||
КонецЕсли;
|
||||
|
||||
Валюта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДоговорСсылка, "ВалютаВзаиморасчетов");
|
||||
Если Не ЗначениеЗаполнено(Валюта) Тогда
|
||||
Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
|
||||
КонецЕсли;
|
||||
|
||||
КритерииОР = ОбъектыРасчетовСервер.ДополнительныеКритерииПоиска();
|
||||
КритерииОР.Партнер = Партнер;
|
||||
КритерииОР.Контрагент = Контрагент;
|
||||
КритерииОР.ВалютаВзаиморасчетов = Валюта;
|
||||
КритерииОР.ВернутьПервый = Истина;
|
||||
|
||||
СсылкаОР = ОбъектыРасчетовСервер.ПолучитьОбъектРасчетовПоСсылке(
|
||||
ДоговорСсылка,
|
||||
Организация,
|
||||
Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом,
|
||||
КритерииОР);
|
||||
|
||||
Если ЗначениеЗаполнено(СсылкаОР) Тогда
|
||||
Возврат СсылкаОР;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
НовыйОР = Справочники.ОбъектыРасчетов.СоздатьЭлемент();
|
||||
НовыйОР.Объект = ДоговорСсылка;
|
||||
НовыйОР.Организация = Организация;
|
||||
НовыйОР.Контрагент = Контрагент;
|
||||
НовыйОР.Партнер = Партнер;
|
||||
НовыйОР.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
|
||||
НовыйОР.ВалютаВзаиморасчетов = Валюта;
|
||||
НовыйОР.Договор = ДоговорСсылка;
|
||||
НовыйОР.Записать();
|
||||
Возврат НовыйОР.Ссылка;
|
||||
Исключение
|
||||
ТекстОшибки = СтрШаблон(
|
||||
"Не удалось создать объект расчётов для договора %1: %2",
|
||||
ДоговорСсылка,
|
||||
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
ЗаписатьОшибкуВЖурналРегистрации(ДоговорСсылка, ТекстОшибки, КомпонентыОбмена,
|
||||
НСтр("ru = 'создать объект расчётов по договору'"), УровеньЖурналаРегистрации.Предупреждение);
|
||||
Возврат ПустаяСсылкаОР;
|
||||
КонецПопытки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// &После ПКО_Справочник_ДоговорыКонтрагентов_Получение_ПередЗаписьюПолученныхДанных.
|
||||
// Дозаполняет партнёра на договоре из контрагента до записи в ИБ.
|
||||
//
|
||||
&После("ПКО_Справочник_ДоговорыКонтрагентов_Получение_ПередЗаписьюПолученныхДанных")
|
||||
Процедура РК_ПКО_ДоговорыКонтрагентов_ДозаполнитьПартнера(ПолученныеДанные, ДанныеИБ, КонвертацияСвойств, КомпонентыОбмена)
|
||||
|
||||
Если Не РК_ЭтоОбменС_Crm3Dev(КомпонентыОбмена) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПолученныеДанные = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ПолученныеДанные.Партнер) И ЗначениеЗаполнено(ПолученныеДанные.Контрагент) Тогда
|
||||
ПолученныеДанные.Партнер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПолученныеДанные.Контрагент, "Партнер");
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ПолученныеДанные.Контрагент) И ЗначениеЗаполнено(ПолученныеДанные.Партнер) Тогда
|
||||
ПолученныеДанные.Контрагент = ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(ПолученныеДанные.Партнер);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// &После ОтложеннаяОбработка_СоздатьОбновитьОбъектыРасчетов.
|
||||
// Досоздаёт объекты расчётов по договорам из пакета обмена, если типовой механизм их пропустил.
|
||||
//
|
||||
&После("ОтложеннаяОбработка_СоздатьОбновитьОбъектыРасчетов")
|
||||
Процедура РК_ОтложеннаяОбработка_ДосоздатьОбъектыРасчетов(КомпонентыОбмена)
|
||||
|
||||
Если Не РК_ЭтоОбменС_Crm3Dev(КомпонентыОбмена) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ДоговорыКОбработке = Новый Соответствие;
|
||||
|
||||
Для Каждого ЗагруженныйОбъект Из КомпонентыОбмена.ЗагруженныеОбъекты Цикл
|
||||
|
||||
СсылкаНаОбъект = ЗагруженныйОбъект.СсылкаНаОбъект;
|
||||
ТипСсылки = ТипЗнч(СсылкаНаОбъект);
|
||||
|
||||
Если ТипСсылки = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
|
||||
ДоговорыКОбработке.Вставить(СсылкаНаОбъект, Новый Структура("Партнер, Контрагент"));
|
||||
ИначеЕсли ТипСсылки = Тип("ДокументСсылка.ЗаказКлиента") Тогда
|
||||
РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаОбъект, "Договор, Партнер, Контрагент");
|
||||
Если ЗначениеЗаполнено(РеквизитыЗаказа.Договор) Тогда
|
||||
Подсказки = Новый Структура("Партнер, Контрагент", РеквизитыЗаказа.Партнер, РеквизитыЗаказа.Контрагент);
|
||||
ДоговорыКОбработке.Вставить(РеквизитыЗаказа.Договор, Подсказки);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого КлючИЗначение Из ДоговорыКОбработке Цикл
|
||||
|
||||
ДоговорСсылка = КлючИЗначение.Ключ;
|
||||
Подсказки = КлючИЗначение.Значение;
|
||||
|
||||
Участники = РК_ПартнерКонтрагентДляДоговора(
|
||||
ДоговорСсылка,
|
||||
Подсказки.Партнер,
|
||||
Подсказки.Контрагент);
|
||||
|
||||
РК_ОбеспечитьОбъектРасчетовПоДоговору(
|
||||
ДоговорСсылка,
|
||||
Участники.Партнер,
|
||||
Участники.Контрагент,
|
||||
КомпонентыОбмена);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Д1.2: этапы графика оплаты из соглашения/договора при загрузке ЗаказКлиента.
|
||||
// XDTO 1.8 не передаёт ВариантОтсчета; ДатаПлатежа часто пустая.
|
||||
// Типовой ОтложеннаяОбработка_ЗаказыПоставщикуКлиента вызывает
|
||||
// ЭтапыОплатыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты только при пустой ТЧ —
|
||||
// при «бедных» строках из пакета пересчёт не выполняется.
|
||||
//
|
||||
&После("ОтложеннаяОбработка_ЗаказыПоставщикуКлиента")
|
||||
Процедура РК_ОтложеннаяОбработка_ЗаказыПоставщикуКлиента_ЭтапыОплаты(Объект, КомпонентыОбмена)
|
||||
|
||||
Если Не РК_ЭтоОбменС_Crm3Dev(КомпонентыОбмена) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РК_ДозаполнитьЭтапыГрафикаОплатыПоСоглашению(Объект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Перезаполняет ТЧ ЭтапыГрафикаОплаты, если есть строки без ДатаПлатежа / ВариантОтсчета.
|
||||
// Иначе вызывает типовое заполнение из соглашения / графика оплаты / договора.
|
||||
//
|
||||
Процедура РК_ДозаполнитьЭтапыГрафикаОплатыПоСоглашению(Объект) Экспорт
|
||||
|
||||
Если Объект = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
МетаОбъекта = Объект.Метаданные();
|
||||
Если МетаОбъекта.ТабличныеЧасти.Найти("ЭтапыГрафикаОплаты") = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если МетаОбъекта.Реквизиты.Найти("Соглашение") = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НужноПерезаполнить = Ложь;
|
||||
Если Объект.ЭтапыГрафикаОплаты.Количество() = 0 Тогда
|
||||
НужноПерезаполнить = ЗначениеЗаполнено(Объект.Соглашение)
|
||||
Или (МетаОбъекта.Реквизиты.Найти("ГрафикОплаты") <> Неопределено
|
||||
И ЗначениеЗаполнено(Объект.ГрафикОплаты))
|
||||
Или (МетаОбъекта.Реквизиты.Найти("Договор") <> Неопределено
|
||||
И ЗначениеЗаполнено(Объект.Договор));
|
||||
Иначе
|
||||
Для Каждого СтрокаЭтапа Из Объект.ЭтапыГрафикаОплаты Цикл
|
||||
Если Не ЗначениеЗаполнено(СтрокаЭтапа.ДатаПлатежа)
|
||||
Или Не ЗначениеЗаполнено(СтрокаЭтапа.ВариантОтсчета) Тогда
|
||||
НужноПерезаполнить = Истина;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не НужноПерезаполнить Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// Условия из соглашения (как при перевыборе на форме): график и форма оплаты.
|
||||
Если ЗначениеЗаполнено(Объект.Соглашение)
|
||||
И ТипЗнч(Объект.Соглашение) = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
|
||||
|
||||
РеквизитыСоглашения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Соглашение,
|
||||
"ГрафикОплаты,ФормаОплаты");
|
||||
|
||||
Если МетаОбъекта.Реквизиты.Найти("ГрафикОплаты") <> Неопределено
|
||||
И Не ЗначениеЗаполнено(Объект.ГрафикОплаты)
|
||||
И ЗначениеЗаполнено(РеквизитыСоглашения.ГрафикОплаты) Тогда
|
||||
Объект.ГрафикОплаты = РеквизитыСоглашения.ГрафикОплаты;
|
||||
КонецЕсли;
|
||||
|
||||
Если МетаОбъекта.Реквизиты.Найти("ФормаОплаты") <> Неопределено
|
||||
И Не ЗначениеЗаполнено(Объект.ФормаОплаты)
|
||||
И ЗначениеЗаполнено(РеквизитыСоглашения.ФормаОплаты) Тогда
|
||||
Объект.ФормаОплаты = РеквизитыСоглашения.ФормаОплаты;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Объект.ЭтапыГрафикаОплаты.Очистить();
|
||||
ЭтапыОплатыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты(Объект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Д1.3 / issue #10: ВидЦены строк из AdditionalInfo.РК_ВидыЦенСтрок (не из соглашения).
|
||||
// 1) ПриКонвертацииДанныхXDTO — сохранить карту в ДополнительныеСвойства и ПараметрыКонвертации.
|
||||
// 2) ОтложеннаяОбработка_* — применить к ТЧ документа (пустые в источнике остаются пустыми).
|
||||
//
|
||||
&После("ВыполнитьПроцедуруМодуляМенеджера")
|
||||
Процедура РК_ВыполнитьПроцедуруМодуляМенеджера_ВидыЦенИзAdditionalInfo(ИмяПроцедуры, Параметры)
|
||||
|
||||
Если Параметры = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
КомпонентыОбмена = Неопределено;
|
||||
Параметры.Свойство("КомпонентыОбмена", КомпонентыОбмена);
|
||||
|
||||
Если Не РК_ЭтоОбменС_Crm3Dev(КомпонентыОбмена) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрЗаканчиваетсяНа(ИмяПроцедуры, "_ПриКонвертацииДанныхXDTO") Тогда
|
||||
|
||||
ДанныеXDTO = Неопределено;
|
||||
ПолученныеДанные = Неопределено;
|
||||
Параметры.Свойство("ДанныеXDTO", ДанныеXDTO);
|
||||
Параметры.Свойство("ПолученныеДанные", ПолученныеДанные);
|
||||
РК_СохранитьВидыЦенСтрокИзAdditionalInfo(ДанныеXDTO, ПолученныеДанные, КомпонентыОбмена);
|
||||
РК_СохранитьВидНоменклатурыCRM326ИзAdditionalInfo(ДанныеXDTO, ПолученныеДанные);
|
||||
|
||||
ИначеЕсли СтрНачинаетсяС(ИмяПроцедуры, "ОтложеннаяОбработка_") Тогда
|
||||
|
||||
Объект = Неопределено;
|
||||
Если Не Параметры.Свойство("Объект", Объект) Или Объект = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
РК_ПрименитьВидыЦенСтрокИзДополнительныхСвойств(Объект, КомпонентыОбмена);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура РК_ИнициализироватьКешВидовЦенСтрок(КомпонентыОбмена)
|
||||
|
||||
Если КомпонентыОбмена = Неопределено Или Не КомпонентыОбмена.Свойство("ПараметрыКонвертации") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не КомпонентыОбмена.ПараметрыКонвертации.Свойство("РК_ВидыЦенСтрокПоОбъектам") Тогда
|
||||
КомпонентыОбмена.ПараметрыКонвертации.Вставить("РК_ВидыЦенСтрокПоОбъектам", Новый Соответствие);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция РК_КлючКешаВидовЦенСтрок(Объект)
|
||||
|
||||
Попытка
|
||||
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
|
||||
Возврат НРег(XMLСтрока(Объект.Ссылка.УникальныйИдентификатор()));
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
|
||||
Попытка
|
||||
СсылкаНового = Объект.ПолучитьСсылкуНового();
|
||||
Если ЗначениеЗаполнено(СсылкаНового) Тогда
|
||||
Возврат НРег(XMLСтрока(СсылкаНового.УникальныйИдентификатор()));
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
|
||||
Возврат "";
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Копирует РК_ВидыЦенСтрок из AdditionalInfo пакета в ДополнительныеСвойства и кеш сессии обмена.
|
||||
//
|
||||
Процедура РК_СохранитьВидыЦенСтрокИзAdditionalInfo(ДанныеXDTO, ПолученныеДанные, КомпонентыОбмена)
|
||||
|
||||
Если ДанныеXDTO = Неопределено Или ПолученныеДанные = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ДанныеXDTO.Свойство("AdditionalInfo")
|
||||
Или ТипЗнч(ДанныеXDTO.AdditionalInfo) <> Тип("Структура") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ВидыЦенСтрок = Неопределено;
|
||||
Если Не ДанныеXDTO.AdditionalInfo.Свойство("РК_ВидыЦенСтрок", ВидыЦенСтрок)
|
||||
Или ВидыЦенСтрок = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ПолученныеДанные.ДополнительныеСвойства.Вставить("РК_ВидыЦенСтрок", ВидыЦенСтрок);
|
||||
Исключение
|
||||
// ПолученныеДанные может быть структурой без ДополнительныеСвойства.
|
||||
КонецПопытки;
|
||||
|
||||
РК_ИнициализироватьКешВидовЦенСтрок(КомпонентыОбмена);
|
||||
Ключ = РК_КлючКешаВидовЦенСтрок(ПолученныеДанные);
|
||||
Если ЗначениеЗаполнено(Ключ)
|
||||
И КомпонентыОбмена <> Неопределено
|
||||
И КомпонентыОбмена.Свойство("ПараметрыКонвертации")
|
||||
И КомпонентыОбмена.ПараметрыКонвертации.Свойство("РК_ВидыЦенСтрокПоОбъектам") Тогда
|
||||
КомпонентыОбмена.ПараметрыКонвертации.РК_ВидыЦенСтрокПоОбъектам.Вставить(Ключ, ВидыЦенСтрок);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Проставляет ВидЦены / ВидЦеныПоставщика в строках ТЧ по карте из AdditionalInfo.
|
||||
//
|
||||
Процедура РК_ПрименитьВидыЦенСтрокИзДополнительныхСвойств(Объект, КомпонентыОбмена = Неопределено) Экспорт
|
||||
|
||||
Если Объект = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ВидыЦенСтрок = Неопределено;
|
||||
Попытка
|
||||
Объект.ДополнительныеСвойства.Свойство("РК_ВидыЦенСтрок", ВидыЦенСтрок);
|
||||
Исключение
|
||||
ВидыЦенСтрок = Неопределено;
|
||||
КонецПопытки;
|
||||
|
||||
Если ВидыЦенСтрок = Неопределено И КомпонентыОбмена <> Неопределено Тогда
|
||||
РК_ИнициализироватьКешВидовЦенСтрок(КомпонентыОбмена);
|
||||
Ключ = РК_КлючКешаВидовЦенСтрок(Объект);
|
||||
Если ЗначениеЗаполнено(Ключ)
|
||||
И КомпонентыОбмена.ПараметрыКонвертации.Свойство("РК_ВидыЦенСтрокПоОбъектам") Тогда
|
||||
ВидыЦенСтрок = КомпонентыОбмена.ПараметрыКонвертации.РК_ВидыЦенСтрокПоОбъектам.Получить(Ключ);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ВидыЦенСтрок = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
МетаОбъекта = Объект.Метаданные();
|
||||
|
||||
Для Каждого ОписаниеСтроки Из ВидыЦенСтрок Цикл
|
||||
|
||||
Если ТипЗнч(ОписаниеСтроки) <> Тип("Структура") Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяТЧ = Неопределено;
|
||||
НомерСтроки = Неопределено;
|
||||
ОписаниеСтроки.Свойство("ТЧ", ИмяТЧ);
|
||||
ОписаниеСтроки.Свойство("НомерСтроки", НомерСтроки);
|
||||
|
||||
Если Не ЗначениеЗаполнено(ИмяТЧ) Или Не ЗначениеЗаполнено(НомерСтроки) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
МетаТЧ = МетаОбъекта.ТабличныеЧасти.Найти(ИмяТЧ);
|
||||
Если МетаТЧ = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ТабличнаяЧасть = Объект[ИмяТЧ];
|
||||
СтрокаТЧ = Неопределено;
|
||||
|
||||
ИндексВТЧ = Неопределено;
|
||||
Если ОписаниеСтроки.Свойство("ИндексВТЧ", ИндексВТЧ)
|
||||
И ТипЗнч(ИндексВТЧ) = Тип("Число")
|
||||
И ИндексВТЧ >= 0
|
||||
И ИндексВТЧ < ТабличнаяЧасть.Количество() Тогда
|
||||
СтрокаТЧ = ТабличнаяЧасть[ИндексВТЧ];
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрокаТЧ = Неопределено Тогда
|
||||
СтрокаТЧ = ТабличнаяЧасть.Найти(НомерСтроки, "НомерСтроки");
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрокаТЧ = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если МетаТЧ.Реквизиты.Найти("ВидЦены") <> Неопределено
|
||||
И ОписаниеСтроки.Свойство("ВидЦены") Тогда
|
||||
|
||||
СтрокаТЧ.ВидЦены = РК_НайтиВидЦеныПоОписанию(
|
||||
ОписаниеСтроки, "ВидЦены", "ВидЦеныИмя", Ложь);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если МетаТЧ.Реквизиты.Найти("ВидЦеныПоставщика") <> Неопределено
|
||||
И ОписаниеСтроки.Свойство("ВидЦеныПоставщика") Тогда
|
||||
|
||||
СтрокаТЧ.ВидЦеныПоставщика = РК_НайтиВидЦеныПоОписанию(
|
||||
ОписаниеСтроки, "ВидЦеныПоставщика", "ВидЦеныПоставщикаИмя", Истина);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Разрешает ссылку вида цены: GUID (если объект есть в ИБ), иначе наименование; пусто → пустая ссылка.
|
||||
//
|
||||
Функция РК_НайтиВидЦеныПоОписанию(ОписаниеСтроки, ИмяGUID, ИмяНаименования, ЭтоПоставщика)
|
||||
|
||||
Если ЭтоПоставщика Тогда
|
||||
МенеджерВидовЦен = Справочники.ВидыЦенПоставщиков;
|
||||
Иначе
|
||||
МенеджерВидовЦен = Справочники.ВидыЦен;
|
||||
КонецЕсли;
|
||||
|
||||
GUIDСтрока = "";
|
||||
Наименование = "";
|
||||
ОписаниеСтроки.Свойство(ИмяGUID, GUIDСтрока);
|
||||
ОписаниеСтроки.Свойство(ИмяНаименования, Наименование);
|
||||
|
||||
Если ЗначениеЗаполнено(GUIDСтрока) Тогда
|
||||
Попытка
|
||||
СсылкаПоGUID = МенеджерВидовЦен.ПолучитьСсылку(Новый УникальныйИдентификатор(GUIDСтрока));
|
||||
Если ОбщегоНазначения.СсылкаСуществует(СсылкаПоGUID) Тогда
|
||||
Возврат СсылкаПоGUID;
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
// Некорректный GUID — пробуем наименование.
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Наименование) Тогда
|
||||
СсылкаПоИмени = МенеджерВидовЦен.НайтиПоНаименованию(Наименование, Истина);
|
||||
Если ЗначениеЗаполнено(СсылкаПоИмени) Тогда
|
||||
Возврат СсылкаПоИмени;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат МенеджерВидовЦен.ПустаяСсылка();
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Ключ AdditionalInfo для вида номенклатуры CRM3-26 (доп. реквизит ра_ВидНоменклатурыCRM326 в исходной ИБ).
|
||||
//
|
||||
Функция РК_КлючAdditionalInfoВидНоменклатурыCRM326()
|
||||
Возврат "РК_ВидНоменклатурыCRM326";
|
||||
КонецФункции
|
||||
|
||||
// Сохраняет наименование вида номенклатуры из AdditionalInfo пакета в ДополнительныеСвойства номенклатуры.
|
||||
//
|
||||
Процедура РК_СохранитьВидНоменклатурыCRM326ИзAdditionalInfo(ДанныеXDTO, ПолученныеДанные)
|
||||
|
||||
Если ДанныеXDTO = Неопределено Или ПолученныеДанные = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ДанныеXDTO.Свойство("AdditionalInfo")
|
||||
Или ТипЗнч(ДанныеXDTO.AdditionalInfo) <> Тип("Структура") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НаименованиеВида = "";
|
||||
Если Не ДанныеXDTO.AdditionalInfo.Свойство(РК_КлючAdditionalInfoВидНоменклатурыCRM326(), НаименованиеВида)
|
||||
Или Не ЗначениеЗаполнено(НаименованиеВида) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ПолученныеДанные.ДополнительныеСвойства.Вставить(РК_КлючAdditionalInfoВидНоменклатурыCRM326(), СокрЛП(Строка(НаименованиеВида)));
|
||||
Исключение
|
||||
// ПолученныеДанные может быть структурой без ДополнительныеСвойства.
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Приоритетно сопоставляет ВидНоменклатуры целевой ИБ по наименованию из ра_ВидНоменклатурыCRM326.
|
||||
// Если значение не передано — остаётся текущий механизм обмена (в т.ч. защита учётных реквизитов).
|
||||
//
|
||||
Процедура РК_ПрименитьВидНоменклатурыCRM326ИзДополнительныхСвойств(ПолученныеДанные, ДанныеИБ)
|
||||
|
||||
Если ПолученныеДанные = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НаименованиеВида = "";
|
||||
Попытка
|
||||
Если Не ПолученныеДанные.ДополнительныеСвойства.Свойство(РК_КлючAdditionalInfoВидНоменклатурыCRM326(), НаименованиеВида)
|
||||
Или Не ЗначениеЗаполнено(НаименованиеВида) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
|
||||
ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(СокрЛП(Строка(НаименованиеВида)), Истина);
|
||||
Если Не ЗначениеЗаполнено(ВидНоменклатуры) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПолученныеДанные.ВидНоменклатуры = ВидНоменклатуры;
|
||||
|
||||
Если ДанныеИБ <> Неопределено Тогда
|
||||
ДанныеИБ.ВидНоменклатуры = ВидНоменклатуры;
|
||||
Иначе
|
||||
Справочники.Номенклатура.ЗаполнитьРеквизитыПоВидуНоменклатуры(ПолученныеДанные);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -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="392bf65e-0667-4464-ab9f-98e9af6de114">
|
||||
<InternalInfo>
|
||||
<xr:PropertyState>
|
||||
<xr:Property>Module</xr:Property>
|
||||
<xr:State>Extended</xr:State>
|
||||
</xr:PropertyState>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||
<Name>ОбменДаннымиXDTOСервер</Name>
|
||||
<Comment/>
|
||||
<ExtendedConfigurationObject>4c8eb34e-0bb6-487a-a2ae-24083b1f6d2e</ExtendedConfigurationObject>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>false</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>true</ExternalConnection>
|
||||
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
|
||||
<ServerCall>false</ServerCall>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,162 @@
|
||||
// Исправление падения приёма XDTO: отсутствующие свойства формата в строке ТЧ.
|
||||
// Типовой код пишет в ПриемникДанных.ДополнительныеСвойства, но у строки ТЧ этого поля нет
|
||||
// (типичный кейс: СчетФактураВыданный.ПлатежноРасчетныеДокументы из crm3-dev без полей аванса).
|
||||
|
||||
&ИзменениеИКонтроль("КонвертацияСвойстваСтруктурыОбъектаXDTO")
|
||||
Процедура РК_КонвертацияСвойстваСтруктурыОбъектаXDTO(
|
||||
КомпонентыОбмена,
|
||||
ДанныеXDTO,
|
||||
ДополнительныеСвойства,
|
||||
ПриемникДанных,
|
||||
ПКС,
|
||||
НомерЭтапа = 1,
|
||||
ИмяТЧ = "")
|
||||
// Обрабатывается ПКС где указано только свойство формата - оно используется только при выгрузке.
|
||||
Если СокрЛП(ПКС.СвойствоКонфигурации) = "" Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПравилоКонвертацииСвойства = ПКС.ПравилоКонвертацииСвойства;
|
||||
|
||||
ЗначениеСвойства = "";
|
||||
Попытка
|
||||
Если НомерЭтапа = 1 Тогда
|
||||
|
||||
Если Не ЗначениеЗаполнено(ПКС.СвойствоФормата) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПКС.ОбработкаКлючевогоСвойства
|
||||
И Не ДанныеXDTO.Свойство("ЭтоНаборКлючевыхСвойств") Тогда
|
||||
ИсточникДанных = ДанныеXDTO[КлассКлючевыеСвойства()];
|
||||
Иначе
|
||||
ИсточникДанных = ДанныеXDTO;
|
||||
КонецЕсли;
|
||||
|
||||
СвойствоФормата_Имя = СокрЛП(ПКС.СвойствоФормата);
|
||||
ПозицияТочки = СтрНайти(СвойствоФормата_Имя, ".");
|
||||
// Указано полное имя свойства, входящего в группу общих свойств.
|
||||
Если ПозицияТочки > 0 Тогда
|
||||
ВложенныеСвойства = СтрРазделить(СвойствоФормата_Имя,".",Ложь);
|
||||
ПолучитьЗначениеВложенныхСвойств(ИсточникДанных, ВложенныеСвойства, ЗначениеСвойства);
|
||||
Иначе
|
||||
|
||||
Если НЕ ИсточникДанных.Свойство(СвойствоФормата_Имя, ЗначениеСвойства)
|
||||
И НЕ ПКС.ОбработкаКлючевогоСвойства
|
||||
И НЕ ПКС.ИспользуетсяАлгоритмКонвертации
|
||||
Тогда
|
||||
|
||||
#Удаление
|
||||
Если ПриемникДанных.ДополнительныеСвойства.Свойство("СвойстваОтсутствующиеВПолученныхДанных") Тогда
|
||||
|
||||
ПриемникДанных.ДополнительныеСвойства.СвойстваОтсутствующиеВПолученныхДанных = ПриемникДанных.ДополнительныеСвойства.СвойстваОтсутствующиеВПолученныхДанных + "," + СвойствоФормата_Имя;
|
||||
|
||||
Иначе
|
||||
|
||||
ПриемникДанных.ДополнительныеСвойства.Вставить("СвойстваОтсутствующиеВПолученныхДанных", СвойствоФормата_Имя);
|
||||
|
||||
КонецЕсли;
|
||||
#КонецУдаления
|
||||
#Вставка
|
||||
// === [РК] НАЧАЛО БЛОКА ВСТАВКИ ===
|
||||
// У строки ТЧ нет ДополнительныеСвойства (пакет без опциональных полей формата,
|
||||
// например ДатаИсправленияСчетаФактурыНаАванс из crm3-dev).
|
||||
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ПриемникДанных, "ДополнительныеСвойства") Тогда
|
||||
|
||||
Если ПриемникДанных.ДополнительныеСвойства.Свойство("СвойстваОтсутствующиеВПолученныхДанных") Тогда
|
||||
|
||||
ПриемникДанных.ДополнительныеСвойства.СвойстваОтсутствующиеВПолученныхДанных =
|
||||
ПриемникДанных.ДополнительныеСвойства.СвойстваОтсутствующиеВПолученныхДанных + "," + СвойствоФормата_Имя;
|
||||
|
||||
Иначе
|
||||
|
||||
ПриемникДанных.ДополнительныеСвойства.Вставить("СвойстваОтсутствующиеВПолученныхДанных", СвойствоФормата_Имя);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
// === [РК] КОНЕЦ БЛОКА ВСТАВКИ ===
|
||||
#КонецВставки
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли НомерЭтапа = 2 Тогда
|
||||
|
||||
Если НомерЭтапа = 2 И Не ПКС.ИспользуетсяАлгоритмКонвертации Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// На 2-м этапе значения свойств получаются из дополнительных свойств объекта полученных данных
|
||||
// и представляют из себя структуру, содержащую инструкцию для конвертации, либо значение XDTO.
|
||||
// Если приемником значения является строка табличной части, то значение свойства располагается
|
||||
// в ДополнительныеСвойства[ИмяТабличнойЧасти][ИндексСтроки].
|
||||
Если ЗначениеЗаполнено(ИмяТЧ) Тогда
|
||||
ИсточникДанных = ДополнительныеСвойства[ИмяТЧ][ПриемникДанных.НомерСтроки - 1];
|
||||
Иначе
|
||||
ИсточникДанных = ДополнительныеСвойства;
|
||||
КонецЕсли;
|
||||
|
||||
Если ИсточникДанных.Свойство(ПКС.СвойствоКонфигурации) Тогда
|
||||
ЗначениеСвойства = ИсточникДанных[ПКС.СвойствоКонфигурации];
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ЗначениеСвойства) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
УдалятьСозданныеПоКлючевымСвойствам = КомпонентыОбмена.УдалятьСозданныеПоКлючевымСвойствам;
|
||||
Если ТипЗнч(ЗначениеСвойства) = Тип("Структура")
|
||||
И ЗначениеСвойства.Свойство("ИмяПКО")
|
||||
И ЗначениеСвойства.Свойство("Значение") Тогда
|
||||
|
||||
// Значением является инструкция.
|
||||
Если ЗначениеСвойства.Свойство("УдалятьСозданныеПоКлючевымСвойствам") Тогда
|
||||
УдалятьСозданныеПоКлючевымСвойствам = ЗначениеСвойства.УдалятьСозданныеПоКлючевымСвойствам;
|
||||
КонецЕсли;
|
||||
|
||||
ПравилоКонвертацииСвойства = ЗначениеСвойства.ИмяПКО;
|
||||
ЗначениеСвойства = ЗначениеСвойства.Значение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(ЗначениеСвойства) = Тип("Структура") Тогда
|
||||
Если Не ЗначениеЗаполнено(ПравилоКонвертацииСвойства) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПКПД = КомпонентыОбмена.ПравилаКонвертацииПредопределенныхДанных.Найти(ПравилоКонвертацииСвойства, "ИмяПКПД");
|
||||
Если ПКПД <> Неопределено Тогда
|
||||
|
||||
Значение = ПКПД.КонвертацииЗначенийПриПолучении.Получить(ЗначениеСвойства.Значение);
|
||||
ПриемникДанных[ПКС.СвойствоКонфигурации] = Значение;
|
||||
Возврат;
|
||||
|
||||
Иначе
|
||||
ПравилоКонвертацииСвойства = ПКОПоИмени(КомпонентыОбмена, ПравилоКонвертацииСвойства);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
// Конвертацию простых свойств выполняем только на 1-м этапе.
|
||||
ПриемникДанных[ПКС.СвойствоКонфигурации] = ЗначениеСвойства;
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПравилоКонвертации = Новый Структура("ПравилоКонвертации, УдалятьСозданныеПоКлючевымСвойствам",
|
||||
ПравилоКонвертацииСвойства, УдалятьСозданныеПоКлючевымСвойствам);
|
||||
ДанныеДляЗаписиВИБ = СтруктураОбъектаXDTOВДанныеИБ(КомпонентыОбмена, ЗначениеСвойства, ПравилоКонвертации, "ПолучитьСсылку");
|
||||
|
||||
Если ДанныеДляЗаписиВИБ <> Неопределено Тогда
|
||||
ПриемникДанных[ПКС.СвойствоКонфигурации] = ДанныеДляЗаписиВИБ.Ссылка;
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Ошибка конвертации свойства объекта XDTO, имя свойства: <%1>.'"), ПКС.СвойствоКонфигурации)
|
||||
+ Символы.ПС + Символы.ПС + ПредставлениеОшибки;
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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="c7bc6cfd-24e8-45cc-abb6-36516b716cb5">
|
||||
<InternalInfo/>
|
||||
<Properties>
|
||||
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||
<Name>ОбщегоНазначения</Name>
|
||||
<Comment/>
|
||||
<ExtendedConfigurationObject>ee1b4c39-8e14-4eda-9b3b-27ac089017bc</ExtendedConfigurationObject>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>false</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>true</ExternalConnection>
|
||||
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
|
||||
<ServerCall>false</ServerCall>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
||||
@@ -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="204641bf-09d1-470a-9d72-3eb46439556d">
|
||||
<InternalInfo>
|
||||
<xr:PropertyState>
|
||||
<xr:Property>Module</xr:Property>
|
||||
<xr:State>Extended</xr:State>
|
||||
</xr:PropertyState>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||
<Name>ПартнерыИКонтрагентыЛокализация</Name>
|
||||
<Comment/>
|
||||
<ExtendedConfigurationObject>c7ca240a-541d-4f86-8e30-0e63aafcd5fa</ExtendedConfigurationObject>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>false</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>true</ExternalConnection>
|
||||
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
|
||||
<ServerCall>false</ServerCall>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,175 @@
|
||||
|
||||
&ИзменениеИКонтроль("ИННКППУжеИспользуетсяВИнформационнойБазе")
|
||||
Функция РК_ИННКППУжеИспользуетсяВИнформационнойБазе(ИНН, КПП, ИсключаяСсылку = Неопределено, ЮрФизЛицо = Неопределено) Экспорт
|
||||
|
||||
РезультатПоиска = Новый Структура;
|
||||
РезультатПоиска.Вставить("НайденныеСовпадения", Новый Массив);
|
||||
РезультатПоиска.Вставить("ДоступноСоздание", Истина);
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
#Удаление
|
||||
Запрос.Текст = "
|
||||
|ВЫБРАТЬ
|
||||
| Контрагенты.Ссылка КАК Ссылка,
|
||||
| Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
|
||||
| Партнеры.Ссылка КАК Партнер,
|
||||
| Партнеры.Код КАК Код,
|
||||
| ПРЕДСТАВЛЕНИЕ(Партнеры.ОсновнойМенеджер) КАК ОсновнойМенеджер
|
||||
|ИЗ
|
||||
| Справочник.Контрагенты КАК Контрагенты
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
|
||||
| ПО Контрагенты.Партнер = Партнеры.Ссылка
|
||||
|ГДЕ
|
||||
| Контрагенты.ИНН = &ИНН
|
||||
| И Контрагенты.КПП = &КПП
|
||||
| И Контрагенты.Ссылка <> &Ссылка";
|
||||
#КонецУдаления
|
||||
#Вставка
|
||||
// {{ [+] (фрагмент ДОБАВЛЕН), уникальность ИНН/КПП только среди непомеченных на удаление контрагентов
|
||||
Запрос.Текст = "
|
||||
|ВЫБРАТЬ
|
||||
| Контрагенты.Ссылка КАК Ссылка,
|
||||
| Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
|
||||
| Партнеры.Ссылка КАК Партнер,
|
||||
| Партнеры.Код КАК Код,
|
||||
| ПРЕДСТАВЛЕНИЕ(Партнеры.ОсновнойМенеджер) КАК ОсновнойМенеджер
|
||||
|ИЗ
|
||||
| Справочник.Контрагенты КАК Контрагенты
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
|
||||
| ПО Контрагенты.Партнер = Партнеры.Ссылка
|
||||
|ГДЕ
|
||||
| Контрагенты.ИНН = &ИНН
|
||||
| И Контрагенты.КПП = &КПП
|
||||
| И Контрагенты.Ссылка <> &Ссылка
|
||||
| И НЕ Контрагенты.ПометкаУдаления";
|
||||
// }}
|
||||
#КонецВставки
|
||||
|
||||
Запрос.УстановитьПараметр("ИНН",ИНН);
|
||||
Запрос.УстановитьПараметр("КПП",КПП);
|
||||
Запрос.УстановитьПараметр("Ссылка",ИсключаяСсылку);
|
||||
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
|
||||
Если Выборка.Количество() = 1 Тогда
|
||||
|
||||
Выборка.Следующий();
|
||||
|
||||
Если ЗначениеЗаполнено(ИсключаяСсылку)
|
||||
И Выборка.Ссылка = ИсключаяСсылку Тогда
|
||||
|
||||
Возврат РезультатПоиска;
|
||||
|
||||
ИначеЕсли ЗначениеЗаполнено(ЮрФизЛицо) Тогда
|
||||
|
||||
Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель
|
||||
И Выборка.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
|
||||
|
||||
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||
|
||||
ИначеЕсли ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо
|
||||
И Выборка.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель Тогда
|
||||
|
||||
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||
|
||||
Иначе
|
||||
|
||||
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||
РезультатПоиска.ДоступноСоздание = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||
РезультатПоиска.ДоступноСоздание = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли Выборка.Количество() > 1 Тогда
|
||||
|
||||
РезультатПоиска.ДоступноСоздание = Ложь;
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
|
||||
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат РезультатПоиска;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&ИзменениеИКонтроль("ПроверитьКорректностьЗаполненияКонтрагента")
|
||||
Процедура РК_ПроверитьКорректностьЗаполненияКонтрагента(Объект, Контрагент, Отказ) Экспорт
|
||||
//++ Локализация
|
||||
КлючДанных = ?(ТипЗнч(Объект) = Тип("ФормаКлиентскогоПриложения"), Неопределено, Объект);
|
||||
Если Объект.ОбособленноеПодразделение И ЗначениеЗаполнено(Объект.ГоловнойКонтрагент) Тогда
|
||||
|
||||
Если Объект.ГоловнойКонтрагент <> Контрагент Тогда
|
||||
|
||||
СвойстваГоловногоКонтрагента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
|
||||
Объект.ГоловнойКонтрагент, "Наименование, ИНН");
|
||||
|
||||
Если ЗначениеЗаполнено(СвойстваГоловногоКонтрагента.ИНН) И СвойстваГоловногоКонтрагента.ИНН <> Объект.ИНН Тогда
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'ИНН контрагента не равен указанному в головном подразделении'"),
|
||||
СвойстваГоловногоКонтрагента.Наименование);
|
||||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, КлючДанных, "ИНН", , Отказ);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Объект.ИНН) Тогда
|
||||
|
||||
#Вставка
|
||||
// {{ [+] (фрагмент ДОБАВЛЕН), для помеченных на удаление уникальность ИНН/КПП не проверяется
|
||||
Если НЕ Объект.ПометкаУдаления Тогда
|
||||
// }}
|
||||
#КонецВставки
|
||||
|
||||
РезультатПоиска = ИННКППУжеИспользуетсяВИнформационнойБазе(Объект.ИНН, Объект.КПП, Контрагент, Объект.ЮрФизЛицо) ;
|
||||
|
||||
Если Не РезультатПоиска.ДоступноСоздание Тогда
|
||||
|
||||
ДанныеКонтрагента = РезультатПоиска.НайденныеСовпадения[0];
|
||||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Данные ИНН и КПП уже указаны для другого контрагента, ответственный - %1.'"),
|
||||
ДанныеКонтрагента.ОсновнойМенеджер),
|
||||
КлючДанных,
|
||||
"ИНН",
|
||||
,
|
||||
Отказ);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
#Вставка
|
||||
КонецЕсли;
|
||||
// }}
|
||||
#КонецВставки
|
||||
|
||||
Иначе
|
||||
|
||||
Если НЕ ПартнерыИКонтрагенты.УпрощенныйВводДоступен() Тогда
|
||||
|
||||
Если (Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель
|
||||
ИЛИ Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо) Тогда
|
||||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
|
||||
НСтр("ru = 'Не указан ИНН'"),
|
||||
КлючДанных,
|
||||
"ИНН",
|
||||
,
|
||||
Отказ);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
//-- Локализация
|
||||
КонецПроцедуры
|
||||
@@ -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,253 @@
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Настройки подключения из элемента справочника РК_НастройкиПодключенияКВнешнейБазе.
|
||||
//
|
||||
Функция НастройкиПодключения(Подключение) Экспорт
|
||||
|
||||
Если Не ЗначениеЗаполнено(Подключение) Тогда
|
||||
ВызватьИсключение "Не указано подключение к сторонней базе";
|
||||
КонецЕсли;
|
||||
|
||||
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Подключение,
|
||||
"АдресПодключения, Токен, Таймаут, Логин, Пароль, Активно, ИмяТекущейБазы");
|
||||
|
||||
Если Реквизиты.Активно = Ложь Тогда
|
||||
ВызватьИсключение "Подключение к сторонней базе отключено (Активно = Ложь)";
|
||||
КонецЕсли;
|
||||
|
||||
Адрес = СокрЛП(Строка(Реквизиты.АдресПодключения));
|
||||
Если ПустаяСтрока(Адрес) Тогда
|
||||
ВызватьИсключение "В настройке подключения не заполнен АдресПодключения";
|
||||
КонецЕсли;
|
||||
|
||||
Таймаут = 120;
|
||||
Попытка
|
||||
Таймаут = Число(Реквизиты.Таймаут);
|
||||
Исключение
|
||||
Таймаут = 120;
|
||||
КонецПопытки;
|
||||
Если Таймаут <= 0 Тогда
|
||||
Таймаут = 120;
|
||||
КонецЕсли;
|
||||
|
||||
Настройки = Новый Структура;
|
||||
Настройки.Вставить("Адрес", Адрес);
|
||||
Настройки.Вставить("Токен", СокрЛП(Строка(Реквизиты.Токен)));
|
||||
Настройки.Вставить("Таймаут", Таймаут);
|
||||
Настройки.Вставить("Логин", СокрЛП(Строка(Реквизиты.Логин)));
|
||||
Настройки.Вставить("Пароль", Строка(Реквизиты.Пароль));
|
||||
Настройки.Вставить("ИмяТекущейБазы", СокрЛП(Строка(Реквизиты.ИмяТекущейБазы)));
|
||||
Возврат Настройки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// GET /v1/health — проверка доступности Transfer API по явным настройкам формы/структуры.
|
||||
// НастройкиПодключения: Адрес, Токен, Таймаут, Логин, Пароль (без проверки Активно).
|
||||
//
|
||||
Функция ПроверитьСоединение(НастройкиПодключения) Экспорт
|
||||
|
||||
Адрес = "";
|
||||
Если НастройкиПодключения.Свойство("Адрес") Тогда
|
||||
Адрес = СокрЛП(Строка(НастройкиПодключения.Адрес));
|
||||
КонецЕсли;
|
||||
Если ПустаяСтрока(Адрес) Тогда
|
||||
ВызватьИсключение "Не заполнен адрес подключения";
|
||||
КонецЕсли;
|
||||
|
||||
Токен = "";
|
||||
Если НастройкиПодключения.Свойство("Токен") Тогда
|
||||
Токен = СокрЛП(Строка(НастройкиПодключения.Токен));
|
||||
КонецЕсли;
|
||||
Если ПустаяСтрока(Токен) Тогда
|
||||
ВызватьИсключение "Не заполнен токен Transfer API";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ВыполнитьGET(НастройкиПодключения, "v1/health");
|
||||
|
||||
КонецФункции
|
||||
|
||||
// POST /v1/stock/warehouses на исходной ИБ.
|
||||
//
|
||||
Функция СписокСкладовВнешнейБазы(Подключение, ПараметрыЗапроса = Неопределено) Экспорт
|
||||
|
||||
Если ПараметрыЗапроса = Неопределено Тогда
|
||||
ПараметрыЗапроса = Новый Структура;
|
||||
КонецЕсли;
|
||||
Настройки = НастройкиПодключения(Подключение);
|
||||
Возврат ВыполнитьPOST(Настройки, "v1/stock/warehouses", ПараметрыЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// POST /v1/stock/balances на исходной ИБ.
|
||||
//
|
||||
Функция ОстаткиВнешнейБазы(Подключение, ПараметрыЗапроса) Экспорт
|
||||
|
||||
Если ПараметрыЗапроса = Неопределено Тогда
|
||||
ПараметрыЗапроса = Новый Структура;
|
||||
КонецЕсли;
|
||||
Настройки = НастройкиПодключения(Подключение);
|
||||
Возврат ВыполнитьPOST(Настройки, "v1/stock/balances", ПараметрыЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Универсальный GET к Transfer API.
|
||||
//
|
||||
Функция ВыполнитьGET(НастройкиПодключения, ОтносительныйПуть) Экспорт
|
||||
|
||||
Возврат ВыполнитьHTTPЗапросЛокально(НастройкиПодключения, ОтносительныйПуть, Неопределено, "GET");
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Универсальный POST к Transfer API.
|
||||
//
|
||||
Функция ВыполнитьPOST(НастройкиПодключения, ОтносительныйПуть, Тело) Экспорт
|
||||
|
||||
Возврат ВыполнитьHTTPЗапросЛокально(НастройкиПодключения, ОтносительныйПуть, Тело, "POST");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ВыполнитьHTTPЗапросЛокально(НастройкиПодключения, ОтносительныйПуть, Тело, Метод)
|
||||
|
||||
АдресБазы = СокрЛП(Строка(НастройкиПодключения.Адрес));
|
||||
Ключ = СокрЛП(Строка(НастройкиПодключения.Токен));
|
||||
Таймаут = 120;
|
||||
Попытка
|
||||
Таймаут = Число(НастройкиПодключения.Таймаут);
|
||||
Исключение
|
||||
Таймаут = 120;
|
||||
КонецПопытки;
|
||||
Если Таймаут <= 0 Тогда
|
||||
Таймаут = 120;
|
||||
КонецЕсли;
|
||||
|
||||
Логин = "";
|
||||
Пароль = "";
|
||||
Если НастройкиПодключения.Свойство("Логин") Тогда
|
||||
Логин = СокрЛП(Строка(НастройкиПодключения.Логин));
|
||||
КонецЕсли;
|
||||
Если НастройкиПодключения.Свойство("Пароль") Тогда
|
||||
Пароль = Строка(НастройкиПодключения.Пароль);
|
||||
КонецЕсли;
|
||||
|
||||
Разбор = РазобратьURL(АдресБазы);
|
||||
ПутьЗапроса = Разбор.Путь;
|
||||
Если Не СтрЗаканчиваетсяНа(ПутьЗапроса, "/") Тогда
|
||||
ПутьЗапроса = ПутьЗапроса + "/";
|
||||
КонецЕсли;
|
||||
Относительный = СокрЛП(ОтносительныйПуть);
|
||||
Если СтрНачинаетсяС(Относительный, "/") Тогда
|
||||
Относительный = Сред(Относительный, 2);
|
||||
КонецЕсли;
|
||||
ПутьЗапроса = ПутьЗапроса + Относительный;
|
||||
|
||||
ПользовательHTTP = ?(ПустаяСтрока(Логин), Разбор.Пользователь, Логин);
|
||||
ПарольHTTP = ?(ПустаяСтрока(Логин), Разбор.Пароль, Пароль);
|
||||
|
||||
Соединение = Новый HTTPСоединение(
|
||||
Разбор.Хост,
|
||||
Разбор.Порт,
|
||||
ПользовательHTTP,
|
||||
ПарольHTTP,
|
||||
,
|
||||
Таймаут,
|
||||
?(Разбор.HTTPS, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено));
|
||||
|
||||
ЗапросHTTP = Новый HTTPЗапрос(ПутьЗапроса);
|
||||
// Повторное использование сеансов HTTP на публикации 1С (иначе HTTP 400 без IBSession).
|
||||
ЗапросHTTP.Заголовки.Вставить("IBSession", "start");
|
||||
// X-Transfer-Token не конфликтует с Basic Auth пользователя публикации (см. README ws-rhana).
|
||||
Если Не ПустаяСтрока(Ключ) Тогда
|
||||
ЗапросHTTP.Заголовки.Вставить("X-Transfer-Token", Ключ);
|
||||
КонецЕсли;
|
||||
|
||||
МетодВР = ВРег(СокрЛП(Метод));
|
||||
Если ПустаяСтрока(МетодВР) Тогда
|
||||
МетодВР = "POST";
|
||||
КонецЕсли;
|
||||
Если МетодВР = "GET" Тогда
|
||||
ОтветHTTP = Соединение.Получить(ЗапросHTTP);
|
||||
Иначе
|
||||
Если Тело = Неопределено Тогда
|
||||
Тело = Новый Структура;
|
||||
КонецЕсли;
|
||||
Запись = Новый ЗаписьJSON;
|
||||
Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет));
|
||||
ЗаписатьJSON(Запись, Тело);
|
||||
ТекстТела = Запись.Закрыть();
|
||||
Запрос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);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КраткийТекстОшибкиHTTP(КодСостояния, ТекстОтвета)
|
||||
|
||||
Описание = СокрЛП(Строка(ТекстОтвета));
|
||||
ПозицияDescr = СтрНайти(Описание, "<descr>");
|
||||
Если ПозицияDescr > 0 Тогда
|
||||
Хвост = Сред(Описание, ПозицияDescr + 7);
|
||||
ПозицияКонец = СтрНайти(Хвост, "</descr>");
|
||||
Если ПозицияКонец > 0 Тогда
|
||||
Описание = СокрЛП(Лев(Хвост, ПозицияКонец - 1));
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрДлина(Описание) > 500 Тогда
|
||||
Описание = Лев(Описание, 500) + "…";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат "Ошибка HTTP " + КодСостояния + ": " + Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
+83
-24
@@ -3,19 +3,39 @@
|
||||
<ConfigVersions>
|
||||
<Metadata name="Catalog.ДоговорыКонтрагентов" id="993b58b5-d228-4a08-92ac-6fd12cc60deb" configVersion="912a34da471ed07a2324f175789cdfcd3a7157f7"/>
|
||||
<Metadata name="Catalog.ДоговорыКонтрагентов.Form.ФормаВыбора" id="d82ae63b-06bd-4463-a414-0fcdc8794703" configVersion="2ab274696219a21b932eff70ee518ff44c5a2f8f"/>
|
||||
<Metadata name="Catalog.ДоговорыКонтрагентов.Form.ФормаВыбора.Form" id="d82ae63b-06bd-4463-a414-0fcdc8794703.0" configVersion="c8c1a42aabd1042697d4290ceef596b8e7a64061"/>
|
||||
<Metadata name="Catalog.ДоговорыКонтрагентов.Form.ФормаВыбора.Form" id="d82ae63b-06bd-4463-a414-0fcdc8794703.0" configVersion="feeed4e9ae733a451f2e3ea89d0d62fab8a86b26"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе" id="9a372d93-d522-4e3c-9242-3f69517e7b43" configVersion="93c1b6169033e887ef971d62dfc1a35c7195e92f">
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Attribute.Пароль" id="33e4efd1-caed-46ef-b9f8-892f4bb69def"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Attribute.Коментарий" id="55b271fd-588b-4b24-bb35-480535766533"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Attribute.Таймаут" id="73d37e7f-a7ee-494e-a946-d3d706e9f037"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Attribute.Активно" id="8c13a155-b2b2-4648-b623-e03cb49ee1ee"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Attribute.АдресПодключения" id="9fa4f82a-4345-4772-b2dc-f8d892fc8e82"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Attribute.Логин" id="af91404e-d0ef-4b3d-9819-0027b61e8834"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Attribute.ИмяТекущейБазы" id="ca043818-4250-4082-8d09-b6fce389c953"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Attribute.Токен" id="f46fb546-fca7-4f92-9a0b-a380ea73dca9"/>
|
||||
</Metadata>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Form.ФормаЭлемента" id="5897541c-e081-4d49-b4cd-dc5418aa113a" configVersion="8d606d44be0b6de449c396208025c05c75a555ab"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.Form.ФормаЭлемента.Form" id="5897541c-e081-4d49-b4cd-dc5418aa113a.0" configVersion="7662dbdf5866e1a03004e924478e25858b3b523f"/>
|
||||
<Metadata name="Catalog.РК_НастройкиПодключенияКВнешнейБазе.ManagerModule" id="9a372d93-d522-4e3c-9242-3f69517e7b43.3" configVersion="bc5533b84f7d5199e71661443b8fc189bbeac64a"/>
|
||||
<Metadata name="ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения" id="e8b79bd5-f8ca-47e3-bcfd-1d84a4a64ee2" configVersion="3cadb32ee44e159e252e947f116f05b8f99ae1c4"/>
|
||||
<Metadata name="CommonForm.РК_ФормаНастроекРана" id="5688e1b9-1552-45cc-b539-1f4cc3765e8a" configVersion="8ac3163937f01f9604c7a57e9dc814b6d466b5ac"/>
|
||||
<Metadata name="CommonForm.РК_ФормаНастроекРана.Form" id="5688e1b9-1552-45cc-b539-1f4cc3765e8a.0" configVersion="ea9a4ab0f585a6af14dc4941cc5fd2e48f221b6a"/>
|
||||
<Metadata name="CommonModule.МенеджерОбменаЧерезУниверсальныйФормат" id="46adff34-2644-4eb3-99a7-e969dbdf8496" configVersion="0e38e0f4d63c0c4783d0c8935de492efee1e4863"/>
|
||||
<Metadata name="CommonModule.МенеджерОбменаЧерезУниверсальныйФормат.Module" id="46adff34-2644-4eb3-99a7-e969dbdf8496.0" configVersion="89e8efb209d7477a14ca8b50b3aa0065918e53b7"/>
|
||||
<Metadata name="CommonForm.РК_ФормаНастроекРана" id="5688e1b9-1552-45cc-b539-1f4cc3765e8a" configVersion="1c5e7beb0918c494f3732b0d00f7307e66a1c41e"/>
|
||||
<Metadata name="CommonForm.РК_ФормаНастроекРана.Form" id="5688e1b9-1552-45cc-b539-1f4cc3765e8a.0" configVersion="c4b0797038efba9d7de13b98621d64d466305150"/>
|
||||
<Metadata name="CommonModule.МенеджерОбменаЧерезУниверсальныйФормат" id="46adff34-2644-4eb3-99a7-e969dbdf8496" configVersion="0184b2e80fe6a38b38ac012a2caed089baaa509b"/>
|
||||
<Metadata name="CommonModule.МенеджерОбменаЧерезУниверсальныйФормат.Module" id="46adff34-2644-4eb3-99a7-e969dbdf8496.0" configVersion="538818d7cffacdb1f4cd44f13416901144f3279d"/>
|
||||
<Metadata name="CommonModule.ОбменДаннымиXDTOСервер" id="392bf65e-0667-4464-ab9f-98e9af6de114" configVersion="f81d070e896c334187a4dabd7aab144557404e14"/>
|
||||
<Metadata name="CommonModule.ОбменДаннымиXDTOСервер.Module" id="392bf65e-0667-4464-ab9f-98e9af6de114.0" configVersion="b4ced9229978788dca2420df443531932b4822c9"/>
|
||||
<Metadata name="CommonModule.ОбщегоНазначения" id="c7bc6cfd-24e8-45cc-abb6-36516b716cb5" configVersion="10db0bd8664f5c69e30eb3abe5c837a05968e0ae"/>
|
||||
<Metadata name="CommonModule.ОбщегоНазначенияКлиентСервер" id="1afe1653-696f-47e3-9bea-df7b84bd077c" configVersion="a3b2d57b152d8cd275a412ddf1479ac90b35402d"/>
|
||||
<Metadata name="CommonModule.ОбщегоНазначенияКлиентСервер.Module" id="1afe1653-696f-47e3-9bea-df7b84bd077c.0" configVersion="74e1779aaae2e2e61a3957d284da0d61b1e34d41"/>
|
||||
<Metadata name="CommonModule.ОбщегоНазначенияКлиентСервер.Module" id="1afe1653-696f-47e3-9bea-df7b84bd077c.0" configVersion="391544553ff7457895fc19270a0e8362bc866ee0"/>
|
||||
<Metadata name="CommonModule.ПартнерыИКонтрагентыЛокализация" id="204641bf-09d1-470a-9d72-3eb46439556d" configVersion="1d1ab54a348ef06148f77bcf0e5a66998b9e54ed"/>
|
||||
<Metadata name="CommonModule.ПартнерыИКонтрагентыЛокализация.Module" id="204641bf-09d1-470a-9d72-3eb46439556d.0" configVersion="c7c146948aa8436d387a80cf03a40295b9b84351"/>
|
||||
<Metadata name="CommonModule.РК_ОбменСВнешнейБазой" id="c0610707-f5d6-4026-9679-2330d831a986" configVersion="08b9643947e617a6ef11e3623794f371fba45283"/>
|
||||
<Metadata name="CommonModule.РК_ОбменСВнешнейБазой.Module" id="c0610707-f5d6-4026-9679-2330d831a986.0" configVersion="b3d0bada7f75b0a419b009cf3c36cb1b1cba6309"/>
|
||||
<Metadata name="CommonModule.РК_ОбщегоНазначения" id="6bfc7b15-6995-43ad-96c6-a97569f2d5a4" configVersion="c11a335f853a42165758cfe7995f2ee06a9010f7"/>
|
||||
<Metadata name="CommonModule.РК_ОбщегоНазначенияВызовСервера" id="845d7b2e-e411-4515-98ba-cf4f9fa2cb0f" configVersion="9a84ca5309ab5d1f2ea6331e02ac19191b2ae8d1"/>
|
||||
<Metadata name="CommonModule.РК_ОбщегоНазначенияВызовСервера.Module" id="845d7b2e-e411-4515-98ba-cf4f9fa2cb0f.0" configVersion="3da56c93dc782c896847dba5acb46c67f50f497b"/>
|
||||
<Metadata name="CommonModule.РК_ОбщегоНазначенияВызовСервера.Module" id="845d7b2e-e411-4515-98ba-cf4f9fa2cb0f.0" configVersion="90a43dbd4335302e2ba6482225461cf419586324"/>
|
||||
<Metadata name="CommonModule.РК_ОбщегоНазначенияКлиентСервер" id="2b52814a-55be-4ad7-ac91-8b0e81c8d6f3" configVersion="03032527bc080e2cf758a92ab6d272d0f332a9f8"/>
|
||||
<Metadata name="CommonModule.РК_ОбщегоНазначенияКлиентСервер.Module" id="2b52814a-55be-4ad7-ac91-8b0e81c8d6f3.0" configVersion="2f287bc705113022ad190f50fb1668665e62755a"/>
|
||||
<Metadata name="CommonModule.РК_ОбщегоНазначенияКлиентСервер.Module" id="2b52814a-55be-4ad7-ac91-8b0e81c8d6f3.0" configVersion="d7bf8f7f08d258231cb71b19afd87f835fbbc7d3"/>
|
||||
<Metadata name="CommonPicture.ВУпаковочныйЛист" id="366e09d0-bf1c-4209-bc4b-93eb10df6af5" configVersion="18a9588b13c3df2a86aeedfd831deefc62543fdb"/>
|
||||
<Metadata name="CommonPicture.ЗаполнитьПоШаблону" id="a86c26ab-ab38-4d45-affb-4affa174f581" configVersion="552207f911e393416bb94788d3985eac96efc083"/>
|
||||
<Metadata name="CommonPicture.ЗаполнитьФорму" id="089dd079-be61-4b45-bb54-4de0840a0426" configVersion="8f81f42104cdf220d78e2d2b8ba39f1437cc3846"/>
|
||||
@@ -26,31 +46,71 @@
|
||||
<Metadata name="CommonPicture.ПодписанЗашифрованСостояния" id="a0bd1007-a115-4d79-8160-d4f59cd57ffb" configVersion="08ed86b1653fc955004b703d7dce5d947956fdda"/>
|
||||
<Metadata name="CommonPicture.СерииНоменклатурыКолонкаСтатусов" id="f2badc5e-4af7-4c05-be31-b4d5b7642ab5" configVersion="d070fbc999630568abec9d83770ed805666a24d9"/>
|
||||
<Metadata name="CommonPicture.СтатусыУказанияСерий" id="cc5cab6d-e293-4890-a422-6e8cd2fb58bb" configVersion="17b11a4c6ec74254745177f7c136d38af0214bdf"/>
|
||||
<Metadata name="Configuration.crm326RHANA" id="ef31d55b-3788-4972-affb-b7aefd3838aa" configVersion="2910b5ccbb9d930f0716a494a2b44068db7db4d4"/>
|
||||
<Metadata name="Configuration.crm326RHANA.CommandInterface" id="39a8728d-cfaf-46d0-959f-980e396b5018.a" configVersion="fdaec039eea90396e8275a4185f01ff2ce9f09af"/>
|
||||
<Metadata name="Configuration.crm326RHANA.MainSectionCommandInterface" id="39a8728d-cfaf-46d0-959f-980e396b5018.9" configVersion="fdaec039eea90396e8275a4185f01ff2ce9f09af"/>
|
||||
<Metadata name="Configuration.crm326RHANA" id="ef31d55b-3788-4972-affb-b7aefd3838aa" configVersion="0ab7e5d843097580ac4f3a3d1c630f15a44345fa"/>
|
||||
<Metadata name="Constant.РК_РабочееПодключениеЧерезАПИ" id="47f107f1-41f6-4f00-bb8a-aa1cf8b60191" configVersion="132678198dbf6e5b884c9ba219f5523cb63f7f8a"/>
|
||||
<Metadata name="Constant.РК_РежимОтладкиРана" id="32d682cc-7aeb-45c8-abc6-68fef7f36011" configVersion="a12fe879a2594e605228c43059bb3a72d30fa471"/>
|
||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла" id="b6fd11ac-f702-4d13-b328-9a78b0874483" configVersion="c39312c21ebce9b1bb7a4df34e3e489203b3f8a8"/>
|
||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.Form.ЗагрузкаДанныхИзФайла" id="f47d02ff-17f2-4764-a151-627f4067a479" configVersion="247298ad849a4d46b1f412e90c0184fe64756489"/>
|
||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.Form.ЗагрузкаДанныхИзФайла.Form" id="f47d02ff-17f2-4764-a151-627f4067a479.0" configVersion="e853a6b3591994346f9ce1d3b7d5cf0daf864fb8"/>
|
||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.ManagerModule" id="b6fd11ac-f702-4d13-b328-9a78b0874483.2" configVersion="f450f4daf08ba37ced20d9f1b18f5f1eb8b5f027"/>
|
||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзФайла.ManagerModule" id="b6fd11ac-f702-4d13-b328-9a78b0874483.2" configVersion="1efb72f921b0e14eecaf61915ed4cb8cc58b53fa"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков" id="5922bda8-8f69-487c-823a-8b09e343f59a" configVersion="a75f86e09457ac4862a7eb51ee3700f9c455ce61">
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.СкладИдентификатор" id="086673fd-91b2-4966-8472-144da87650e6"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.КомментарийСопоставления" id="09d80a73-1aa6-4ecc-a39a-c667e99e3084"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные" id="11e438df-e73c-44d2-b3ed-08c04b320d8e"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.НомерГТДСсылка" id="13c8d651-954c-444e-9e3a-bfae61c7f1b4"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.КоличествоКОтгрузке" id="153af227-1988-4f97-bb00-30c138e01e11"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.Характеристика" id="25ff0379-7e93-4930-a29e-97bb9c77c235"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ОрганизацияИдентификатор" id="4eef5276-30ac-40dd-bc7d-19e708da43e8"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.НоменклатураНаименование" id="56d7a5f1-92e5-41eb-bf65-e77db27abfba"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ПолитикаСерии" id="57232515-7ec2-46b9-9c00-5f5dfd8f799c"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.СерияСсылка" id="5ac27167-fc94-42ea-81cb-a29ff122415d"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.НоменклатураКод" id="6212b2dc-a55b-48bb-9437-075e5502a1c5"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Attribute.ДатаОстатков" id="646059bd-f290-4888-aec1-991b5ea3cc79"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Attribute.ДатаДокументовВвода" id="69a4692c-f48e-4d6c-b8e3-a37fe4757a18"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ОрганизацияНаименование" id="6c30b7db-dbb7-4564-8e6c-d3b17ba55bd3"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ЕдИзм" id="6ff9dfd3-39a1-413b-86d1-d3e5ead111da"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ЕдИзмИдентификатор" id="78602e20-5003-44ea-92ec-3c5f64d5c04d"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.Серия" id="7b2b88b1-f1d7-463f-9b69-f2a049dc6287"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.Количество" id="7b95a661-e588-4388-ab7a-906c5dba8326"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ХарактеристикаНаименование" id="8fa984e4-bbf2-4d38-a80d-33827c3645da"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.СерияИдентификатор" id="a0b08c20-f11b-47bb-ab41-3c80166deab5"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ВидНоменклатурыНаименование" id="a1896aca-6eaf-46df-87dc-2e9f3ea8ae64"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.Сопоставлено" id="a5532d88-c81a-46f9-adb0-b76a04205ccc"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.НоменклатураИдентификатор" id="a649bec4-d629-42a2-aeb4-d3d0b43c3e7a"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ГТД" id="ab9a4fce-0d9b-4ac5-a109-a0c29d8e76d7"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ГТДИдентификатор" id="b037736f-f398-4863-8734-45f0e88ee3c9"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ХарактеристикаИдентификатор" id="bf93ecc1-fb65-4ba9-be07-78575a66384b"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ВидНоменклатурыИдентификатор" id="c1085a20-3350-4ac3-924e-4f165c416542"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.КоличествоОрганизации" id="d290bd6f-5309-493b-ad6e-32ca05ba5757"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Attribute.ПодключениеКСтороннейБазе" id="d8202194-9b79-46e4-b922-34f7c3add55c"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.Склад" id="ee5deed3-c67c-4411-9069-1ee4c51b7776"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.СкладНаименование" id="f1ddafd7-debe-42fb-9313-e024b16aac31"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.Номенклатура" id="f8bd1e77-bfbf-4bd4-8779-3a04f7be0bea"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.Артикул" id="fc18b487-eee5-4116-80e7-a57f1afafa44"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.TabularSection.ВходящиеДанные.Attribute.ПолитикаХарактеристик" id="fe5d2e6d-6039-46ed-9277-3ec8fd31ae16"/>
|
||||
</Metadata>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.ПодборСкладов" id="9dfcb2a8-bf22-44c3-97a7-a69f70ca4d61" configVersion="3bf7d51ed9ee398e1704b692c5cf543de885b35d"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.ПодборСкладов.Form" id="9dfcb2a8-bf22-44c3-97a7-a69f70ca4d61.0" configVersion="8cddcd809beef075b470c32dd5564aebb81e405c"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма" id="dc49348d-9257-4545-9c29-70c138312177" configVersion="4541c8c382171c6c02021bcc8f500135f4358aa8"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.Form.Форма.Form" id="dc49348d-9257-4545-9c29-70c138312177.0" configVersion="c3b99751d377b930533b5531c15fb72236e70216"/>
|
||||
<Metadata name="DataProcessor.РК_ЗагрузкаОстатков.ObjectModule" id="5922bda8-8f69-487c-823a-8b09e343f59a.0" configVersion="8b2998566b1bf925274c77ed1da82aa76d66916c"/>
|
||||
<Metadata name="DataProcessor.РК_ОбработкаПарнеровКонтрагентов" id="323c24ca-5279-461a-b03a-9571cb4f0911" configVersion="61642f5832ac2ff8e4ddfeebbb89bcf83e000868"/>
|
||||
<Metadata name="DataProcessor.РК_ОбработкаПарнеровКонтрагентов.ManagerModule" id="323c24ca-5279-461a-b03a-9571cb4f0911.2" configVersion="cd2fa8461c48c496bf36dda7a8862b28b0712771"/>
|
||||
<Metadata name="DataProcessor.РК_ОбработкаПарнеровКонтрагентов.ManagerModule" id="323c24ca-5279-461a-b03a-9571cb4f0911.2" configVersion="bd9480c5b5e30bfba12e31cd19220a496429cf0c"/>
|
||||
<Metadata name="DefinedType.РаспоряжениеНаОтгрузку" id="afb3288b-968a-4b19-8b67-721e50974db4" configVersion="b4e7b9549112d57eb9da5a9947237f4f601039e7"/>
|
||||
<Metadata name="Document.ЗаказКлиента" id="83c6bfba-2c6d-4fe7-a05b-1b54e8208966" configVersion="0f1941010a3f2e5c6ace2f57e4dab142a17f8f20"/>
|
||||
<Metadata name="Document.РасходныйОрдерНаТовары" id="3d303157-526b-4725-8f94-4077b108b463" configVersion="ead1a662035e72717ecbd4a581b489cd932bb0d2">
|
||||
<Metadata name="Document.РасходныйОрдерНаТовары" id="3d303157-526b-4725-8f94-4077b108b463" configVersion="43ce890f8166575f8e201b20e1bea4cf341f6e47">
|
||||
<Metadata name="Document.РасходныйОрдерНаТовары.TabularSection.ТоварыПоРаспоряжениям.Attribute.Распоряжение" id="f189fc59-8635-4c7d-bb98-120ed8da4000"/>
|
||||
<Metadata name="Document.РасходныйОрдерНаТовары.TabularSection.ТоварыПоРаспоряжениям" id="fc7fa2cf-10f9-4100-aef4-9aee19b897ff"/>
|
||||
</Metadata>
|
||||
<Metadata name="Document.РасходныйОрдерНаТовары.Form.ФормаДокумента" id="f5a26ea1-198f-42b0-ba3f-056950385af4" configVersion="1474e568157498c81975ac65d4f5d3620949d9a6"/>
|
||||
<Metadata name="Document.РасходныйОрдерНаТовары.Form.ФормаДокумента.Form" id="f5a26ea1-198f-42b0-ba3f-056950385af4.0" configVersion="a77f02de96512461bcd4d84fbbbf8ddf5a9f93fc"/>
|
||||
<Metadata name="Document.РеализацияТоваровУслуг" id="a7641638-efca-42a4-9641-ad3095a03331" configVersion="3e91375dbc26d239cf0f56178c877961ad4f289a">
|
||||
<Metadata name="Document.РасходныйОрдерНаТовары.Form.ФормаДокумента.Form" id="f5a26ea1-198f-42b0-ba3f-056950385af4.0" configVersion="7c8ac8917c33998ba125b1907f233a4f8a1a0120"/>
|
||||
<Metadata name="Document.РеализацияТоваровУслуг" id="a7641638-efca-42a4-9641-ad3095a03331" configVersion="0da80d80db18edb4da090d68a8d1f4c90bbf2c1b">
|
||||
<Metadata name="Document.РеализацияТоваровУслуг.TabularSection.ДополнительныеРеквизиты" id="1b0c662b-7e61-47d5-9b4b-ed8d6b77ae7b"/>
|
||||
<Metadata name="Document.РеализацияТоваровУслуг.TabularSection.ДополнительныеРеквизиты.Attribute.Значение" id="31cdf55c-fc5f-4d41-80f8-083aa61f0387"/>
|
||||
<Metadata name="Document.РеализацияТоваровУслуг.TabularSection.ДополнительныеРеквизиты.Attribute.ТекстоваяСтрока" id="58ea3d1a-b77b-4563-88d1-c11aeef9619f"/>
|
||||
<Metadata name="Document.РеализацияТоваровУслуг.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство" id="d17094b3-ba3b-4fe9-886e-d7bb23bc22be"/>
|
||||
</Metadata>
|
||||
<Metadata name="Document.РеализацияТоваровУслуг.ObjectModule" id="a7641638-efca-42a4-9641-ad3095a03331.0" configVersion="fe73fe48d72d80cc22e9b648db6453b619b9f14d"/>
|
||||
<Metadata name="Document.РеализацияТоваровУслуг.ObjectModule" id="a7641638-efca-42a4-9641-ad3095a03331.0" configVersion="3ad53d992c345055f2b145d142157787ae07eddc"/>
|
||||
<Metadata name="Enum.ВариантыВыбытияМаркируемойПродукции" id="1d37bf86-8ac0-43ca-95ce-6df0dc42b205" configVersion="b735e18b59a5e8003b5b3fecdc7b580181deef1b">
|
||||
<Metadata name="Enum.ВариантыВыбытияМаркируемойПродукции.EnumValue.ИспользованиеПокупателемДляСобственныхНужд" id="750a1fe1-80f8-4146-ba2a-4019a8f6cb4c"/>
|
||||
</Metadata>
|
||||
@@ -87,20 +147,19 @@
|
||||
<Metadata name="FunctionalOption.РК_ФункциональнаяОпцияРежимаОтладки" id="5a2768ce-cddd-4126-bc6f-aa9aee904fee" configVersion="ec037b80c784d83ef696365788eddc3f9f5a2963"/>
|
||||
<Metadata name="Language.Русский" id="4f6908d0-adbb-4ee7-a6d9-c0ff144e81da" configVersion="58c550359e219a4f54f6b31ee61d09a83fc82ee1"/>
|
||||
<Metadata name="Role.РК_ОбщаяРольРасширения" id="0bf63003-e58b-47cb-9385-0a5ca6de3a6d" configVersion="e8bdeb55dc91ddc07237757365e36383d7372bbd"/>
|
||||
<Metadata name="Role.РК_ОбщаяРольРасширения.Rights" id="0bf63003-e58b-47cb-9385-0a5ca6de3a6d.0" configVersion="2e5b130236068e6f058371ef8ee803e79eebb8b9"/>
|
||||
<Metadata name="Role.РК_ОбщаяРольРасширения.Rights" id="0bf63003-e58b-47cb-9385-0a5ca6de3a6d.0" configVersion="8f18dc83818c11b5d5d94399bacb4763c0e5d32f"/>
|
||||
<Metadata name="Role.РК_ОсновнаяРоль" id="9cf7026c-635c-4a6b-bb98-cc4d34018fe0" configVersion="c535cfb29ef4378b5e1d64c91c81dbdd785b239c"/>
|
||||
<Metadata name="Role.РК_ОсновнаяРоль.Rights" id="9cf7026c-635c-4a6b-bb98-cc4d34018fe0.0" configVersion="945ca08e5fa00dd442aaa42b9afe0f4ca7f73d26"/>
|
||||
<Metadata name="Role.РК_ОтладкаОтображение" id="df2cfcd4-a4fe-44bf-9666-a564d9ce27e1" configVersion="4c0e2ffc2530eb52add9e96ecb1e0c40f7bfb68b"/>
|
||||
<Metadata name="Role.РК_ОтладкаОтображение.Rights" id="df2cfcd4-a4fe-44bf-9666-a564d9ce27e1.0" configVersion="2e5b130236068e6f058371ef8ee803e79eebb8b9"/>
|
||||
<Metadata name="Role.РК_ОтладкаОтображение.Rights" id="df2cfcd4-a4fe-44bf-9666-a564d9ce27e1.0" configVersion="8f18dc83818c11b5d5d94399bacb4763c0e5d32f"/>
|
||||
<Metadata name="Role.РК_ОтладкаУправление" id="b5325e35-72ba-49f6-a223-4209a963b7b2" configVersion="3a2ffc92f96d8f88d875cb55eb1a10d9312318fe"/>
|
||||
<Metadata name="Role.РК_ОтладкаУправление.Rights" id="b5325e35-72ba-49f6-a223-4209a963b7b2.0" configVersion="2e5b130236068e6f058371ef8ee803e79eebb8b9"/>
|
||||
<Metadata name="Role.РК_ОтладкаУправление.Rights" id="b5325e35-72ba-49f6-a223-4209a963b7b2.0" configVersion="8f18dc83818c11b5d5d94399bacb4763c0e5d32f"/>
|
||||
<Metadata name="StyleItem.ПоясняющийТекст" id="f8d4cce2-c61a-4b17-a37c-37b73301d9be" configVersion="d1dd8a215ae36042bc326384743f3599e6a27493"/>
|
||||
<Metadata name="Subsystem.РК_РАНА" id="01566022-7bd2-4d26-92f0-98f53c96a7d4" configVersion="7dff4fa49022434602b80d2ed0ce77024a9126a3"/>
|
||||
<Metadata name="Subsystem.РК_РАНА.CommandInterface" id="01566022-7bd2-4d26-92f0-98f53c96a7d4.1" configVersion="fdaec039eea90396e8275a4185f01ff2ce9f09af"/>
|
||||
<Metadata name="Subsystem.РК_РАНА" id="01566022-7bd2-4d26-92f0-98f53c96a7d4" configVersion="cf0646f7466b6b2b8bf9861267ed5072fdd136a1"/>
|
||||
<Metadata name="Subsystem.РК_РАНА.Subsystem.РК_ОбменСВнешнейБазой" id="ac0fe2bc-d524-4b39-a345-04ec06dca5b8" configVersion="bde2e77da4dcdf9ff6584936aa606a237afe80ee"/>
|
||||
<Metadata name="Subsystem.РК_РАНА.Subsystem.РК_Справочники" id="a5a628ff-57bb-404b-bcda-a14f7aafadfd" configVersion="84464576c2ecec7a3cee09ffe05bf0e1f1e1bdb7"/>
|
||||
<Metadata name="Subsystem.РК_РАНА326" id="ca0c3a8e-d83f-42db-8de1-f9dd53a928f5" configVersion="fa0e7e981a97c6baec3e14aed39a223b2ab45454"/>
|
||||
<Metadata name="Subsystem.РК_РАНА326.CommandInterface" id="ca0c3a8e-d83f-42db-8de1-f9dd53a928f5.1" configVersion="fdaec039eea90396e8275a4185f01ff2ce9f09af"/>
|
||||
<Metadata name="XDTOPackage.EnterpriseData_1_8_6" id="8279d677-ce87-4de6-8b71-13730d992e02" configVersion="204040b4a4a28a931cf247cc8622256544515ace"/>
|
||||
<Metadata name="XDTOPackage.EnterpriseData_1_8_6" id="8279d677-ce87-4de6-8b71-13730d992e02" configVersion="34ae5b2d268535913553e2f23a8428ffa9cc36e8"/>
|
||||
<Metadata name="XDTOPackage.EnterpriseData_1_8_7" id="0ead7002-62ff-4b0e-907b-112c906d2b48" configVersion="1ec2419c83e675661b0b72baad5e41b8b5d898b2"/>
|
||||
<Metadata name="XDTOPackage.EnterpriseData_1_8_7.Package" id="0ead7002-62ff-4b0e-907b-112c906d2b48.0" configVersion="0ba1eb0b35d568d1cafd7f6e030ea1d56e81fea3"/>
|
||||
</ConfigVersions>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?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">
|
||||
<Configuration uuid="ef31d55b-3788-4972-affb-b7aefd3838aa">
|
||||
<InternalInfo>
|
||||
@@ -62,7 +62,7 @@
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
|
||||
</DefaultRoles>
|
||||
<Vendor/>
|
||||
<Version>1.3.0.38</Version>
|
||||
<Version>1.3.1.55</Version>
|
||||
<DefaultStyle/>
|
||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||
<BriefInformation/>
|
||||
@@ -95,15 +95,21 @@
|
||||
<CommonModule>РК_ОбщегоНазначения</CommonModule>
|
||||
<CommonModule>РК_ОбщегоНазначенияКлиентСервер</CommonModule>
|
||||
<CommonModule>РК_ОбщегоНазначенияВызовСервера</CommonModule>
|
||||
<CommonModule>РК_ОбменСВнешнейБазой</CommonModule>
|
||||
<CommonModule>ОбщегоНазначения</CommonModule>
|
||||
<CommonModule>ОбщегоНазначенияКлиентСервер</CommonModule>
|
||||
<CommonModule>МенеджерОбменаЧерезУниверсальныйФормат</CommonModule>
|
||||
<CommonModule>ОбменДаннымиXDTOСервер</CommonModule>
|
||||
<CommonModule>ПартнерыИКонтрагентыЛокализация</CommonModule>
|
||||
<XDTOPackage>EnterpriseData_1_8_7</XDTOPackage>
|
||||
<XDTOPackage>EnterpriseData_1_8_6</XDTOPackage>
|
||||
<FunctionalOption>РК_ФункциональнаяОпцияРежимаОтладки</FunctionalOption>
|
||||
<DefinedType>РаспоряжениеНаОтгрузку</DefinedType>
|
||||
<Constant>РК_РежимОтладкиРана</Constant>
|
||||
<Constant>РК_РабочееПодключениеЧерезАПИ</Constant>
|
||||
<CommonForm>РК_ФормаНастроекРана</CommonForm>
|
||||
<Catalog>ДоговорыКонтрагентов</Catalog>
|
||||
<Catalog>РК_НастройкиПодключенияКВнешнейБазе</Catalog>
|
||||
<Document>РеализацияТоваровУслуг</Document>
|
||||
<Document>ЗаказКлиента</Document>
|
||||
<Document>РасходныйОрдерНаТовары</Document>
|
||||
@@ -117,6 +123,7 @@
|
||||
<Enum>СтавкиНДС</Enum>
|
||||
<DataProcessor>ЗагрузкаДанныхИзФайла</DataProcessor>
|
||||
<DataProcessor>РК_ОбработкаПарнеровКонтрагентов</DataProcessor>
|
||||
<DataProcessor>РК_ЗагрузкаОстатков</DataProcessor>
|
||||
<ChartOfCharacteristicTypes>ДополнительныеРеквизитыИСведения</ChartOfCharacteristicTypes>
|
||||
</ChildObjects>
|
||||
</Configuration>
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
<?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">
|
||||
<Constant uuid="47f107f1-41f6-4f00-bb8a-aa1cf8b60191">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="ConstantManager.РК_РабочееПодключениеЧерезАПИ" category="Manager">
|
||||
<xr:TypeId>2d7fe591-0b1c-4f19-8465-14e56ddf1547</xr:TypeId>
|
||||
<xr:ValueId>a5182e14-8697-4d2d-b5b4-99db4089e005</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ConstantValueManager.РК_РабочееПодключениеЧерезАПИ" category="ValueManager">
|
||||
<xr:TypeId>d4d8c39b-daeb-4061-b302-9b60d0e1efdd</xr:TypeId>
|
||||
<xr:ValueId>ea5eb6d7-e2cf-488f-92b3-8d712c391b7b</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ConstantValueKey.РК_РабочееПодключениеЧерезАПИ" category="ValueKey">
|
||||
<xr:TypeId>b9032f0a-ecc8-4b82-9126-e66884c17046</xr:TypeId>
|
||||
<xr:ValueId>f139eded-74a0-422f-b29e-15e79f9483ad</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>РК_РабочееПодключениеЧерезАПИ</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Подключение через API</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>cfg:CatalogRef.РК_НастройкиПодключенияКВнешнейБазе</v8:Type>
|
||||
</Type>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<DefaultForm>CommonForm.РК_ФормаНастроекРана</DefaultForm>
|
||||
<ExtendedPresentation/>
|
||||
<Explanation/>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<DataHistory>DontUse</DataHistory>
|
||||
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
|
||||
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
|
||||
</Properties>
|
||||
</Constant>
|
||||
</MetaDataObject>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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 Тогда
|
||||
Возврат ПоУмолчанию;
|
||||
КонецЕсли;
|
||||
Попытка
|
||||
Возврат Число(Значение);
|
||||
Исключение
|
||||
Возврат ПоУмолчанию;
|
||||
КонецПопытки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецЕсли
|
||||
@@ -0,0 +1,22 @@
|
||||
<?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">
|
||||
<Form uuid="9dfcb2a8-bf22-44c3-97a7-a69f70ca4d61">
|
||||
<Properties>
|
||||
<Name>ПодборСкладов</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Подбор складов</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
<ExtendedPresentation/>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,178 @@
|
||||
<?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">
|
||||
<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>
|
||||
<CheckBoxField name="Добавление" id="23">
|
||||
<DataPath>Добавление</DataPath>
|
||||
<ToolTip>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Добавление (отмечено) или перезаполнить (не отмечено)</v8:content>
|
||||
</v8:item>
|
||||
</ToolTip>
|
||||
<ToolTipRepresentation>ShowRight</ToolTipRepresentation>
|
||||
<CheckBoxType>Switcher</CheckBoxType>
|
||||
<ContextMenu name="ДобавлениеКонтекстноеМеню" id="24"/>
|
||||
<ExtendedTooltip name="ДобавлениеРасширеннаяПодсказка" id="25"/>
|
||||
</CheckBoxField>
|
||||
<Table name="СписокСкладовВнешнейБазы" id="1">
|
||||
<Representation>List</Representation>
|
||||
<ChangeRowSet>false</ChangeRowSet>
|
||||
<ChangeRowOrder>false</ChangeRowOrder>
|
||||
<ChoiceMode>true</ChoiceMode>
|
||||
<MultipleChoice>true</MultipleChoice>
|
||||
<AutoInsertNewRow>true</AutoInsertNewRow>
|
||||
<EnableStartDrag>true</EnableStartDrag>
|
||||
<EnableDrag>true</EnableDrag>
|
||||
<DataPath>СписокСкладовВнешнейБазы</DataPath>
|
||||
<RowFilter xsi:nil="true"/>
|
||||
<ContextMenu name="СписокСкладовВнешнейБазыКонтекстноеМеню" id="2"/>
|
||||
<AutoCommandBar name="СписокСкладовВнешнейБазыКоманднаяПанель" id="3"/>
|
||||
<ExtendedTooltip name="СписокСкладовВнешнейБазыРасширеннаяПодсказка" id="4"/>
|
||||
<SearchStringAddition name="СписокСкладовВнешнейБазыСтрокаПоиска" id="5">
|
||||
<AdditionSource>
|
||||
<Item>СписокСкладовВнешнейБазы</Item>
|
||||
<Type>SearchStringRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СписокСкладовВнешнейБазыСтрокаПоискаКонтекстноеМеню" id="6"/>
|
||||
<ExtendedTooltip name="СписокСкладовВнешнейБазыСтрокаПоискаРасширеннаяПодсказка" id="7"/>
|
||||
</SearchStringAddition>
|
||||
<ViewStatusAddition name="СписокСкладовВнешнейБазыСостояниеПросмотра" id="8">
|
||||
<AdditionSource>
|
||||
<Item>СписокСкладовВнешнейБазы</Item>
|
||||
<Type>ViewStatusRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СписокСкладовВнешнейБазыСостояниеПросмотраКонтекстноеМеню" id="9"/>
|
||||
<ExtendedTooltip name="СписокСкладовВнешнейБазыСостояниеПросмотраРасширеннаяПодсказка" id="10"/>
|
||||
</ViewStatusAddition>
|
||||
<SearchControlAddition name="СписокСкладовВнешнейБазыУправлениеПоиском" id="11">
|
||||
<AdditionSource>
|
||||
<Item>СписокСкладовВнешнейБазы</Item>
|
||||
<Type>SearchControl</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СписокСкладовВнешнейБазыУправлениеПоискомКонтекстноеМеню" id="12"/>
|
||||
<ExtendedTooltip name="СписокСкладовВнешнейБазыУправлениеПоискомРасширеннаяПодсказка" id="13"/>
|
||||
</SearchControlAddition>
|
||||
<ChildItems>
|
||||
<InputField name="СписокСкладовВнешнейБазыНаименование" id="14">
|
||||
<DataPath>СписокСкладовВнешнейБазы.Наименование</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="СписокСкладовВнешнейБазыНаименованиеКонтекстноеМеню" id="15"/>
|
||||
<ExtendedTooltip name="СписокСкладовВнешнейБазыНаименованиеРасширеннаяПодсказка" id="16"/>
|
||||
</InputField>
|
||||
<LabelField name="СписокСкладовВнешнейБазыИдентификатор" id="17">
|
||||
<DataPath>СписокСкладовВнешнейБазы.Идентификатор</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="СписокСкладовВнешнейБазыИдентификаторКонтекстноеМеню" id="18"/>
|
||||
<ExtendedTooltip name="СписокСкладовВнешнейБазыИдентификаторРасширеннаяПодсказка" id="19"/>
|
||||
</LabelField>
|
||||
<CheckBoxField name="СписокСкладовВнешнейБазыОтметка" id="20">
|
||||
<DataPath>СписокСкладовВнешнейБазы.Отметка</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
<ContextMenu name="СписокСкладовВнешнейБазыОтметкаКонтекстноеМеню" id="21"/>
|
||||
<ExtendedTooltip name="СписокСкладовВнешнейБазыОтметкаРасширеннаяПодсказка" id="22"/>
|
||||
</CheckBoxField>
|
||||
</ChildItems>
|
||||
</Table>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="1">
|
||||
<Type>
|
||||
<v8:Type>cfg:DataProcessorObject.РК_ЗагрузкаОстатков</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
</Attribute>
|
||||
<Attribute name="СписокСкладовВнешнейБазы" id="2">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Список складов внешней базы</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>v8:ValueTable</v8:Type>
|
||||
</Type>
|
||||
<Columns>
|
||||
<Column name="Наименование" id="1">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Наименование</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>0</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
</Type>
|
||||
</Column>
|
||||
<Column name="Идентификатор" id="2">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Идентификатор</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>v8:UUID</v8:Type>
|
||||
</Type>
|
||||
</Column>
|
||||
<Column name="Отметка" id="3">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Отметка</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>xs:boolean</v8:Type>
|
||||
</Type>
|
||||
</Column>
|
||||
</Columns>
|
||||
</Attribute>
|
||||
<Attribute name="Добавление" id="3">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Добавление</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>xs:boolean</v8:Type>
|
||||
</Type>
|
||||
</Attribute>
|
||||
</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>
|
||||
@@ -0,0 +1,78 @@
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
Добавление = Истина;
|
||||
Подключение = Неопределено;
|
||||
Если Параметры.Свойство("ПодключениеКСтороннейБазе", Подключение) Тогда
|
||||
Объект.ПодключениеКСтороннейБазе = Подключение;
|
||||
КонецЕсли;
|
||||
ЗаполнитьСписокСкладовНаСервере();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПеренестиВОтбор(Команда)
|
||||
|
||||
Выбранные = Новый Массив;
|
||||
Для Каждого Стр Из СписокСкладовВнешнейБазы Цикл
|
||||
Если Стр.Отметка Тогда
|
||||
Выбранные.Добавить(Новый Структура("Наименование, Идентификатор, Отметка",
|
||||
Стр.Наименование, Стр.Идентификатор, Истина));
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Закрыть(Новый Структура("Добавление, Склады", Добавление, Выбранные));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаполнитьСписокСкладовНаСервере()
|
||||
|
||||
Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Ответ = РК_ОбменСВнешнейБазой.СписокСкладовВнешнейБазы(Объект.ПодключениеКСтороннейБазе);
|
||||
Строки = Неопределено;
|
||||
Если ТипЗнч(Ответ) = Тип("Структура") Или ТипЗнч(Ответ) = Тип("Соответствие") Тогда
|
||||
Если ТипЗнч(Ответ) = Тип("Структура") Тогда
|
||||
Если Ответ.Свойство("rows") Тогда
|
||||
Строки = Ответ.rows;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Строки = Ответ.Получить("rows");
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(Строки) <> Тип("Массив") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СписокСкладовВнешнейБазы.Очистить();
|
||||
Для Каждого СтрокаAPI Из Строки Цикл
|
||||
ГуидТекст = "";
|
||||
Имя = "";
|
||||
Если ТипЗнч(СтрокаAPI) = Тип("Структура") Тогда
|
||||
Если СтрокаAPI.Свойство("guid") Тогда
|
||||
ГуидТекст = СокрЛП(Строка(СтрокаAPI.guid));
|
||||
КонецЕсли;
|
||||
Если СтрокаAPI.Свойство("name") Тогда
|
||||
Имя = СокрЛП(Строка(СтрокаAPI.name));
|
||||
КонецЕсли;
|
||||
ИначеЕсли ТипЗнч(СтрокаAPI) = Тип("Соответствие") Тогда
|
||||
ГуидТекст = СокрЛП(Строка(СтрокаAPI.Получить("guid")));
|
||||
Имя = СокрЛП(Строка(СтрокаAPI.Получить("name")));
|
||||
КонецЕсли;
|
||||
Если ПустаяСтрока(ГуидТекст) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
НовСтр = СписокСкладовВнешнейБазы.Добавить();
|
||||
НовСтр.Наименование = Имя;
|
||||
Попытка
|
||||
НовСтр.Идентификатор = Новый УникальныйИдентификатор(ГуидТекст);
|
||||
Исключение
|
||||
Продолжить;
|
||||
КонецПопытки;
|
||||
НовСтр.Отметка = Ложь;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -0,0 +1,22 @@
|
||||
<?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">
|
||||
<Form uuid="dc49348d-9257-4545-9c29-70c138312177">
|
||||
<Properties>
|
||||
<Name>Форма</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Форма</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
<ExtendedPresentation/>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,443 @@
|
||||
<?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">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Загрузка остатков из внешней базы</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<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>
|
||||
<InputField name="ПодключениеКСтороннейБазе" id="30">
|
||||
<DataPath>Объект.ПодключениеКСтороннейБазе</DataPath>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ПодключениеКСтороннейБазеКонтекстноеМеню" id="31"/>
|
||||
<ExtendedTooltip name="ПодключениеКСтороннейБазеРасширеннаяПодсказка" id="32"/>
|
||||
</InputField>
|
||||
<InputField name="ДатаОстатков" id="33">
|
||||
<DataPath>Объект.ДатаОстатков</DataPath>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ДатаОстатковКонтекстноеМеню" id="34"/>
|
||||
<ExtendedTooltip name="ДатаОстатковРасширеннаяПодсказка" id="35"/>
|
||||
</InputField>
|
||||
<InputField name="ДатаДокументовВвода" id="36">
|
||||
<DataPath>Объект.ДатаДокументовВвода</DataPath>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ДатаДокументовВводаКонтекстноеМеню" id="37"/>
|
||||
<ExtendedTooltip name="ДатаДокументовВводаРасширеннаяПодсказка" id="38"/>
|
||||
</InputField>
|
||||
<Pages 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>
|
||||
<ExtendedTooltip name="ГруппаСтраницыРасширеннаяПодсказка" id="2"/>
|
||||
<ChildItems>
|
||||
<Page 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>
|
||||
<ExtendedTooltip name="ГруппаВходящиеДанныеРасширеннаяПодсказка" id="4"/>
|
||||
<ChildItems>
|
||||
<Table name="ВходящиеДанные" id="5">
|
||||
<AutoInsertNewRow>true</AutoInsertNewRow>
|
||||
<EnableStartDrag>true</EnableStartDrag>
|
||||
<EnableDrag>true</EnableDrag>
|
||||
<DataPath>Объект.ВходящиеДанные</DataPath>
|
||||
<RowFilter xsi:nil="true"/>
|
||||
<ContextMenu name="ВходящиеДанныеКонтекстноеМеню" id="6"/>
|
||||
<AutoCommandBar name="ВходящиеДанныеКоманднаяПанель" id="7"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеРасширеннаяПодсказка" id="8"/>
|
||||
<SearchStringAddition name="ВходящиеДанныеСтрокаПоиска" id="9">
|
||||
<AdditionSource>
|
||||
<Item>ВходящиеДанные</Item>
|
||||
<Type>SearchStringRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВходящиеДанныеСтрокаПоискаКонтекстноеМеню" id="10"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеСтрокаПоискаРасширеннаяПодсказка" id="11"/>
|
||||
</SearchStringAddition>
|
||||
<ViewStatusAddition name="ВходящиеДанныеСостояниеПросмотра" id="12">
|
||||
<AdditionSource>
|
||||
<Item>ВходящиеДанные</Item>
|
||||
<Type>ViewStatusRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВходящиеДанныеСостояниеПросмотраКонтекстноеМеню" id="13"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеСостояниеПросмотраРасширеннаяПодсказка" id="14"/>
|
||||
</ViewStatusAddition>
|
||||
<SearchControlAddition name="ВходящиеДанныеУправлениеПоиском" id="15">
|
||||
<AdditionSource>
|
||||
<Item>ВходящиеДанные</Item>
|
||||
<Type>SearchControl</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВходящиеДанныеУправлениеПоискомКонтекстноеМеню" id="16"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеУправлениеПоискомРасширеннаяПодсказка" id="17"/>
|
||||
</SearchControlAddition>
|
||||
<ChildItems>
|
||||
<LabelField name="ВходящиеДанныеНомерСтроки" id="18">
|
||||
<DataPath>Объект.ВходящиеДанные.LineNumber</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="ВходящиеДанныеНомерСтрокиКонтекстноеМеню" id="19"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеНомерСтрокиРасширеннаяПодсказка" id="20"/>
|
||||
</LabelField>
|
||||
<InputField name="ВходящиеДанныеНоменклатураНаименование" id="21">
|
||||
<DataPath>Объект.ВходящиеДанные.НоменклатураНаименование</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ВходящиеДанныеНоменклатураНаименованиеКонтекстноеМеню" id="22"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеНоменклатураНаименованиеРасширеннаяПодсказка" id="23"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеДанныеЕдИзм" id="27">
|
||||
<DataPath>Объект.ВходящиеДанные.ЕдИзм</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ВходящиеДанныеЕдИзмКонтекстноеМеню" id="28"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеЕдИзмРасширеннаяПодсказка" id="29"/>
|
||||
</InputField>
|
||||
<LabelField name="ВходящиеДанныеЕдИзмИдентификатор" id="76">
|
||||
<DataPath>Объект.ВходящиеДанные.ЕдИзмИдентификатор</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="ВходящиеДанныеЕдИзмИдентификаторКонтекстноеМеню" id="77"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеЕдИзмИдентификаторРасширеннаяПодсказка" id="78"/>
|
||||
</LabelField>
|
||||
<InputField name="ВходящиеДанныеСкладНаименование" id="24">
|
||||
<DataPath>Объект.ВходящиеДанные.СкладНаименование</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ВходящиеДанныеСкладНаименованиеКонтекстноеМеню" id="25"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеСкладНаименованиеРасширеннаяПодсказка" id="26"/>
|
||||
</InputField>
|
||||
<LabelField name="ВходящиеДанныеСкладИдентификатор" id="73">
|
||||
<DataPath>Объект.ВходящиеДанные.СкладИдентификатор</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="ВходящиеДанныеСкладИдентификаторКонтекстноеМеню" id="74"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеСкладИдентификаторРасширеннаяПодсказка" id="75"/>
|
||||
</LabelField>
|
||||
<InputField name="ВходящиеДанныеГТД" id="70">
|
||||
<DataPath>Объект.ВходящиеДанные.ГТД</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ВходящиеДанныеГТДКонтекстноеМеню" id="71"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеГТДРасширеннаяПодсказка" id="72"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеДанныеСерия" id="67">
|
||||
<DataPath>Объект.ВходящиеДанные.Серия</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ВходящиеДанныеСерияКонтекстноеМеню" id="68"/>
|
||||
<ExtendedTooltip name="ВходящиеДанныеСерияРасширеннаяПодсказка" id="69"/>
|
||||
</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>
|
||||
</Table>
|
||||
</ChildItems>
|
||||
</Page>
|
||||
<Page name="ГруппаОтбор" id="39">
|
||||
<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>
|
||||
<ExtendedTooltip name="ГруппаОтборРасширеннаяПодсказка" id="40"/>
|
||||
<ChildItems>
|
||||
<UsualGroup name="Склады" id="41">
|
||||
<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>
|
||||
<ExtendedTooltip name="СкладыРасширеннаяПодсказка" id="42"/>
|
||||
<ChildItems>
|
||||
<Table name="ОтборСкладовВнешнейБазы" id="43">
|
||||
<Representation>List</Representation>
|
||||
<ChangeRowSet>false</ChangeRowSet>
|
||||
<ChangeRowOrder>false</ChangeRowOrder>
|
||||
<AutoInsertNewRow>true</AutoInsertNewRow>
|
||||
<EnableStartDrag>true</EnableStartDrag>
|
||||
<EnableDrag>true</EnableDrag>
|
||||
<DataPath>ОтборСкладовВнешнейБазы</DataPath>
|
||||
<RowFilter xsi:nil="true"/>
|
||||
<ContextMenu name="ОтборСкладовВнешнейБазыКонтекстноеМеню" id="44"/>
|
||||
<AutoCommandBar name="ОтборСкладовВнешнейБазыКоманднаяПанель" id="45">
|
||||
<ChildItems>
|
||||
<Button name="ОтборСкладовВнешнейБазыПодобратьСклады" id="65">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.ПодобратьСклады</CommandName>
|
||||
<ExtendedTooltip name="ОтборСкладовВнешнейБазыПодобратьСкладыРасширеннаяПодсказка" id="66"/>
|
||||
</Button>
|
||||
</ChildItems>
|
||||
</AutoCommandBar>
|
||||
<ExtendedTooltip name="ОтборСкладовВнешнейБазыРасширеннаяПодсказка" id="46"/>
|
||||
<SearchStringAddition name="ОтборСкладовВнешнейБазыСтрокаПоиска" id="47">
|
||||
<AdditionSource>
|
||||
<Item>ОтборСкладовВнешнейБазы</Item>
|
||||
<Type>SearchStringRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ОтборСкладовВнешнейБазыСтрокаПоискаКонтекстноеМеню" id="48"/>
|
||||
<ExtendedTooltip name="ОтборСкладовВнешнейБазыСтрокаПоискаРасширеннаяПодсказка" id="49"/>
|
||||
</SearchStringAddition>
|
||||
<ViewStatusAddition name="ОтборСкладовВнешнейБазыСостояниеПросмотра" id="50">
|
||||
<AdditionSource>
|
||||
<Item>ОтборСкладовВнешнейБазы</Item>
|
||||
<Type>ViewStatusRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ОтборСкладовВнешнейБазыСостояниеПросмотраКонтекстноеМеню" id="51"/>
|
||||
<ExtendedTooltip name="ОтборСкладовВнешнейБазыСостояниеПросмотраРасширеннаяПодсказка" id="52"/>
|
||||
</ViewStatusAddition>
|
||||
<SearchControlAddition name="ОтборСкладовВнешнейБазыУправлениеПоиском" id="53">
|
||||
<AdditionSource>
|
||||
<Item>ОтборСкладовВнешнейБазы</Item>
|
||||
<Type>SearchControl</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ОтборСкладовВнешнейБазыУправлениеПоискомКонтекстноеМеню" id="54"/>
|
||||
<ExtendedTooltip name="ОтборСкладовВнешнейБазыУправлениеПоискомРасширеннаяПодсказка" id="55"/>
|
||||
</SearchControlAddition>
|
||||
<ChildItems>
|
||||
<InputField name="ОтборСкладовВнешнейБазыНаименование" id="56">
|
||||
<DataPath>ОтборСкладовВнешнейБазы.Наименование</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ОтборСкладовВнешнейБазыНаименованиеКонтекстноеМеню" id="57"/>
|
||||
<ExtendedTooltip name="ОтборСкладовВнешнейБазыНаименованиеРасширеннаяПодсказка" id="58"/>
|
||||
</InputField>
|
||||
<LabelField name="ОтборСкладовВнешнейБазыИдентификатор" id="59">
|
||||
<DataPath>ОтборСкладовВнешнейБазы.Идентификатор</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="ОтборСкладовВнешнейБазыИдентификаторКонтекстноеМеню" id="60"/>
|
||||
<ExtendedTooltip name="ОтборСкладовВнешнейБазыИдентификаторРасширеннаяПодсказка" id="61"/>
|
||||
</LabelField>
|
||||
<CheckBoxField name="ОтборСкладовВнешнейБазыОтметка" id="62">
|
||||
<DataPath>ОтборСкладовВнешнейБазы.Отметка</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
<ContextMenu name="ОтборСкладовВнешнейБазыОтметкаКонтекстноеМеню" id="63"/>
|
||||
<ExtendedTooltip name="ОтборСкладовВнешнейБазыОтметкаРасширеннаяПодсказка" id="64"/>
|
||||
</CheckBoxField>
|
||||
</ChildItems>
|
||||
</Table>
|
||||
</ChildItems>
|
||||
</UsualGroup>
|
||||
</ChildItems>
|
||||
</Page>
|
||||
</ChildItems>
|
||||
</Pages>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="1">
|
||||
<Type>
|
||||
<v8:Type>cfg:DataProcessorObject.РК_ЗагрузкаОстатков</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
</Attribute>
|
||||
<Attribute name="ОтборСкладовВнешнейБазы" id="3">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Отбор складов внешней базы</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>v8:ValueTable</v8:Type>
|
||||
</Type>
|
||||
<Columns>
|
||||
<Column name="Наименование" id="1">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Наименование</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>0</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
</Type>
|
||||
</Column>
|
||||
<Column name="Идентификатор" id="2">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Идентификатор</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>v8:UUID</v8:Type>
|
||||
</Type>
|
||||
</Column>
|
||||
<Column name="Отметка" id="3">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Отметка</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>xs:boolean</v8:Type>
|
||||
</Type>
|
||||
</Column>
|
||||
</Columns>
|
||||
</Attribute>
|
||||
</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>
|
||||
<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>
|
||||
</Form>
|
||||
@@ -0,0 +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"),
|
||||
?(РежимТест, " (тест)", ""));
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ЗначениеСвойстваОтвета(Источник, Имя)
|
||||
|
||||
Если Источник = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(Источник) = Тип("Структура") Или ТипЗнч(Источник) = Тип("ФиксированнаяСтруктура") Тогда
|
||||
Если Источник.Свойство(Имя) Тогда
|
||||
Возврат Источник[Имя];
|
||||
КонецЕсли;
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(Источник) = Тип("Соответствие") Или ТипЗнч(Источник) = Тип("ФиксированноеСоответствие") Тогда
|
||||
Возврат Источник.Получить(Имя);
|
||||
КонецЕсли;
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -22,6 +22,7 @@
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Subsystem>РК_Справочники</Subsystem>
|
||||
<Subsystem>РК_ОбменСВнешнейБазой</Subsystem>
|
||||
</ChildObjects>
|
||||
</Subsystem>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?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">
|
||||
<Subsystem uuid="ac0fe2bc-d524-4b39-a345-04ec06dca5b8">
|
||||
<Properties>
|
||||
<Name>РК_ОбменСВнешнейБазой</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Обмен с внешней базой</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<IncludeHelpInContents>true</IncludeHelpInContents>
|
||||
<IncludeInCommandInterface>true</IncludeInCommandInterface>
|
||||
<UseOneCommand>false</UseOneCommand>
|
||||
<Explanation/>
|
||||
<Picture/>
|
||||
<Content>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Catalog.РК_НастройкиПодключенияКВнешнейБазе</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>
|
||||
</Content>
|
||||
</Properties>
|
||||
<ChildObjects/>
|
||||
</Subsystem>
|
||||
</MetaDataObject>
|
||||
Reference in New Issue
Block a user