Перейти к основному содержимому
Версия: v1.6

Архитектура решения для работы продуктов на платформе Mobile SMARTS с «1С: Предприятием»

Сердцем обработки 1С от «Клеверенс» является так называемое ядро обработки — программный интерфейс для взаимодействия между товарно-учетными системами на базе 1С и программами на платформе Mobile SMARTS («Склад 15»). В нем заложены принципы функционирования всех основных операций, выполняемых с помощью обработки 1С: выгрузка справочников, выгрузка/загрузка документов, различные настройки.

Ядро недоступно для редактирования — для его интеграции с конфигурацией 1С нужно вносить изменения в интеграционную обработку.

Для того, чтобы помочь вам разобраться с принципами построения ядра (следовательно, и с принципами функционирования самой обработки 1С), был создан этот раздел.

Ядро и формы обработки 1С

Ядро

Ядро обработки представляет собой программный интерфейс для взаимодействия между товарно-учетными системами на базе 1С и программами «Магазин 15»/ «Склад 15» на платформе Mobile SMARTS.

Ядро полностью отвязано (абстрагировано, независимо) от конкретной конфигурации 1С. Для интеграции с конкретной конфигурацией предназначена отдельно поставляемая интеграционная обработка, содержащая в себе запросы для выгрузки справочников и обработчики загрузки документов из Mobile SMARTS в 1С.

Предполагается, что вносить изменения в ядро могут ТОЛЬКО разработчики «Клеверенс». Для интеграции ядра с конфигурацией 1С нужно вносить изменения в интеграционную обработку. Поэтому всегда используется одна и та же версия ядра, а разница лишь в интеграционных обработках и настройках Mobile SMARTS. Аналогично у платформы и конфигураций «1С: Предприятия» — платформа 1С предоставляет интерфейс для разработки конфигураций и закрыта от изменений разработчиками.

Весь функционал ядра разбит на глобальное ядро/ контекст (исполняется на сервере 1С) и локальное ядро/ контекст (исполняется на тонком клиенте):

  • Глобальное ядро (контекст). Это модуль обработки, реквизиты и табличные части обработки. Здесь хранится основная часть ядра – механизмы работы с базой Mobile SMARTS, механизмы работы с настройками, универсальные и вспомогательные механизмы работы с данными. При работе в онлайн-режиме здесь же (в реквизитах) хранятся текущие настройки системы.
  • Локальное ядро (контекст). Специально созданная форма обработки, в которой хранится мини-копия ядра – экспортные методы и функции, отвечающие ТОЛЬКО за работу с компонентой (обращение к методам COM-объекта Mobile SMARTS).

Для каждого из контекстов существует кэш — структуры данных, которые при запуске ядро получает из баз 1С и Mobile SMARTS, необходимые для дальнейшей работы ядра.

Локальное ядро необходимо только в случаях, когда сервер Mobile SMARTS (COM-компонента) установлен на локальной машине (там же, откуда запускается 1С). В иных случаях (файловая база 1С, сервер Mobile SMARTS установлен на сервере 1С) — используется глобальное ядро.

Техническая реализация данного механизма проста — в реквизитах объекта и в КАЖДОЙ форме создаются обязательные реквизиты «ЯдроОбщее» и «ЯдроКомпоненты» произвольного типа. Данные реквизиты содержат «транзитные» ссылки на используемый контекст.

  • Реквизит «ЯдроОбщее» всегда содержит в себе значение «ОбработкаОбъект» для доступа к глобальному контексту.
  • Реквизит «ЯдроКомпоненты» содержит в себе либо значение «ОбработкаОбъект» (в случае, если компонента установлена на сервере 1С), либо ссылку на форму с мини-копией ядра (в случае использования клиент-серверного варианта работы и компоненты, установленной на локальной машине).

Для исключения «перекрестного» обращения к контекстам в связи с идентичными именами реквизитов, содержащих в себе ссылки на контексты, жестко регламентируется обращение к ним:

  • Из модуля объекта обращение к ядру производится только через предикат «ЭтотОбъект.»: «ЭтотОбъект.ЯдроОбщее» или «ЭтотОбъект.ЯдроКомпоненты».
  • Из всех остальных модулей форм обращение производится только через предикат «ЭтаФорма.»: «ЭтаФорма.ЯдроОбщее» или «ЭтаФорма.ЯдроКомпоненты».

Процедуры и функции мини-ядра клиентского контекста полностью идентичны аналогичным процедурам и функциям серверного контекста (можно их просто копипастить). Разница будет только в их вызове, например «ЭтотОбъект.ЯдроОбщее.ПолучитьНастройку(ИмяНастройки)» или «ЭтаФорма.ЯдроКомпоненты.СохранитьДокументНаСервереSMARTS()».

Все процессы передачи данных между глобальным контекстом и остальными субъектами (формами и даже локальным контекстом, вне зависимости от месторасположения последнего) производятся строго через механизм временного хранилища 1С.

Порядок инициализации контекстов:

  1. При запуске системы из модуля объекта инициализируется глобальный контекст«ЭтотОбъект.ЯдроОбщее = ЭтотОбъект»

  2. Считывается настройка «Место установки сервера SMARTS».

    Если место установки компоненты – на сервере, тогда инициализируется локальный контекст «ЭтотОбъект.ЯдроКомпоненты = ЭтотОбъект».

    Если место установки компоненты – на клиенте, тогда локальный контекст не инициализируется, и будет инициализирован только при открытии главной формы обработки.

  3. Если локальный контекст инициализирован – в кэш глобального контекста считываются все настройки из базы Mobile SMARTS («ЯдроОбщее.Настройки = ЯдроКомпоненты.ИнициализироватьНастройки»).

  4. В случае работы в онлайн-режиме инициализация на этом заканчивается, ибо онлайн-режим может работать только в случае, когда компонента установлена на сервере (либо использование файлового варианта). В противном случае, при батч-режиме или при режиме автообмена – инициализация продолжается.

  5. При открытии главной формы обработки мы повторно инициализируем глобальный контекст, но уже применительно к реквизитам формы – «ЭтаФорма.ЯдроОбщее = ЭтотОбъект».

  6. Считывается настройка «Место установки сервера Mobile SMARTS».

    Если место установки компоненты – на сервере, тогда инициализируется локальный контекст «ЭтаФорма.ЯдроКомпоненты = ЭтотОбъект».

    Если место установки компоненты – на клиенте, тогда локальный контекст инициализируется как «ЭтаФорма.ЯдроКомпоненты = ПолучитьФорму(«ФормаЛокальногоКонтекста»)».

Реквизиты форм «ЯдроОбщее» и «ЯдроКомпоненты» являются наследуемыми, и должны всегда передаваться в подчиненную форму при ее открытии (например, при открытии формы обмена документами из главной формы обработки).

Локальная обработка не имеет доступа к глобальной, соответственно, все необходимые данные настроек (из глобальной обработки) для работы методов локального контекста должны передаваться непосредственно при их вызове.

Формы

Формы не являются непосредственной частью ядра. Они являются пользовательским интерфейсом для использования 3 главных функций ядра: работа с настройками, обмен справочниками, обмен документами.

Формы делятся на:

  • ключевые формы — главная форма, форма обмена документами, форма списка отборов справочников, локальный контекст
  • формы списков(для различных таблиц, т.е. сериализуемых настроек) — узлы, бп, отборы документов, глобальные параметры, произвольные коды, произвольные отборы документов. Содержимое этих форм хранится в настройках базы MS, далее, при старте обработке, помещается в кэш и хранится там до завершения работы обработки. Эти формы доступны только для просмотра (за исключением формы списка отборов справочников) + опционально можно экспортировать/импортировать содержимое список во внешние файлы.
  • формы настроек (формы карточек) — узла, бп, отбора справочников, отбора документов, правила выгрузки полей, правила загрузки полей, правила выгрузки ТЧ, правила загрузки ТЧ, связи выгрузки ТЧ, произвольный код, произвольный отбор документов. При открытии в данные формы передаётся содержимое текущей строки того списка, из которого она была открыта. Форма позволяет редактировать данные и сохранять их.
  • формы просмотра (ReadOnly) — документа MS и шапки/строки документа MS
  • служебные формы — выбор строки из таблицы, загрузки новых ШК, настройки подключения, выбор документа для загрузки в 1С, выбор пользователя или группы, редактирования текста запроса

Формы обработки НЕ ДОЛЖНЫ содержать никаких методов работы с объектными данными 1С или Mobile SMARTS. Вся работа с данными 1С происходит в глобальной обработке, а с данными Mobile SMARTS – в локальной обработке. Все промежуточные методы подготовки, обработки и прочего с полученными данными – находятся только в глобальной обработке.

Функционал ядра обработки 1С

Функционал ядра разбит на 3 крупных блока:

  1. Работа с настройками обмена (настройки бизнес-процессов, торговых объектов, глобальных параметров, отборов документов и справочников в разрезе торговых объектов и типов обмена и т.д.).
  2. Выгрузка справочников в режимах онлайн, оффлайн и по регламенту согласно настройкам обмена.
  3. Выгрузка/загрузка документов из 1С в Mobile SMARTS согласно настройкам обмена.

Все остальные блоки являются вспомогательными для работы с этими 3 блоками.

архитектура решения
  1. Транзитный блок — расположен на клиенте, нужен для передачи управления на сервер (при необходимости), параметры и результат функции передаются через временное хранилище

  2. Блок сохранения/восстановления настроек подключения и параметров текущего узла в хранилище общих настроек (далее ХОН) — доступно только на сервере, с клиента доступны через транзитный блок.

  3. Программный интерфейс для работы напрямую с MS (API) — полностью дублируются на клиенте и на сервере, т.к. база Mobile SMARTS может быть зарегистрирована на клиенте либо на сервере 1С. Фактически, это обмен данными с Mobile SMARTS непосредственно через COM-объекты и вызовы их методов: терминал коннектор, база, настройки, сторадж коннектор, среда.

    • сохранение/восстановление настроек, удаление настроек, получение настроек по умолчанию;
    • выгрузка справочников (номенклатуры и доп.таблиц);
    • обмен документами — выгрузка, загрузка, удаление, получение списков документов;
    • служебные — получение списка баз, базы по ид, настроек базы, получение текста ошибки, метаданных документов, пользователей, шаблонов весового товара.
  4. Клиентские и серверные обёртки для работы с настройками MS:

    • вызывают соответствующие методы API MS (инициализация кэшей, чтение, установка настроек, запись/чтение из кэша, получение настроек по умолчанию);
    • вспомогательные механизмы;
    • ТОЛЬКО КЛИЕНТСКИЕ МЕТОДЫ: сохранения/восстановления из файла таблиц из форм список, либо отдельных элементов таблиц из форм настроек.
  5. Клиентские и серверные методы выгрузки справочников и номенклатуры:

    • методы для получения данных из 1С есть ТОЛЬКО НА СЕРВЕРЕ, т.к. только оттуда можно получить данные из базы, поэтому они вызываются с клиента через транзитный блок;
    • также методы для формирования текстов запроса, работы с СКД, постобработка таблиц данных выполняются ТОЛЬКО НА СЕРВЕРЕ;
    • методы для взаимодействия с API MS одинаковые на клиенте и сервере.
  6. Работа с документами 1С— аналогично п.5, получение документов из 1С, запись в 1С, получение списка документов и т.д. выполняется ТОЛЬКО НА СЕРВЕРЕ, с клиента вызываются через транзитный блок

  7. Внешние вызовы — выполняются только на сервере или внешнем соединении, нужны для работы ТСД в онлайн-режиме. В свою очередь, решают следующие задачи:

    • получение актуальных данных справочников из 1С согласно настройкам отборов,
    • получение списка документов 1С согласно настройкам отборов,
    • выгрузка документа 1С в Mobile SMARTS для его набора на терминале,
    • загрузка (завершение) документа из Mobile SMARTS в 1C.

Хранение объектов и переменных

Переменные ядра

Переменные ядра хранят данные, к которым требуется часто обращаться во многих методах ядра (фактически, это кэш). Необходимы для быстрого доступа к часто используемым данным, чтобы не получать их из баз Mobile SMARTS 1С при каждом обращении к ним.

Все данные, которые помещаются в переменные ядра при инициализации обработки (интерактивно или онлайн) откуда-то загружаются — из метаданных базы Mobile SMARTS, настроек базы Mobile SMARTS, из хранилища общих настроек 1С (ХОН), из метаданных конфигурации 1С или создаются программно и заполняются постоянными значениями-константами.

Для локального ядра это:

  • клиентские переменные формы «ЛокальныйКонтекст», которые доступны в любых, но только клиентских методах формы
  • реквизиты формы «ЛокальныйКонтекст», которые доступны в любых и клиентских, и серверных методах формы.
Имя переменнойДля чего нужнаОткуда загружаетсяМожет ли изменяться
Клиентские переменные формы «Локальный контекст»
РасположениеКомпонентТип — Строка, значения — «НаКлиенте» или «НаСервере». Означает, что с клиента 1С или с сервера 1С будет осуществляться взаимодействие с
базой Mobile SMARTS. Для обмена через COM обязательно наличие зарегистрированной внешней компоненты на соответствующей стороне (клиент/сервер). Для REST API ничего дополнительно делать не
нужно.
ХОНДа, в форме настройки подключения
ДанныеТекущегоУзлаТип — Структура. Содержит в себе
ID узла, наименование (например, «Магазин на Ленина») и ID базы Mobile SMARTS, которая привязана
к этому узлу. При этом, к узлу может быть привязана либо частная база, либо основная база. Необходимо для случая, когда к текущей базе
1С привязан определенный узел (торговый объект – магазин, склад) и необходимо осуществлять
обмен документами и справочниками
не с основной базой Mobile SMARTS, а с частной. В этом случае, в основной базе Mobile SMARTS хранятся только настройки, а справочники и документы – в частной базе.
Настройки базы Mobile SMARTSДа, на главной
форме при
выборе узла (торгового
объекта) Категории
НастроекMS
КатегорииНастроекMSТип – Структура. Содержит метадан-
ные о настройках, сгруппированные
по определенным критериям:

- сериализуемые настройки

это настройки, которые являются таблицами. Нужны только для

того чтобы знать, нужно ли сериализовывать/десериализо-вывать при экспорте/импорте настроек в файл/из файла
- узловые настройки – это
настройки, которые можно сохранять в разрезе узлов (магазинов, складов), например, настройки обмена справочниками – т.к. для каждого узла может быть необходимость выгружать только «свою» номенклатуру, склады, остатки и т.д.
- настройки подключения– нужны,

в первую очередь, для подключения к базе Mobile SMARTS – ID базы, имя базы, строка подключения, имя

ИО, ID текущего узла, данные о конфигурации 1С
- настройки справочников – хранит флажки, означающие, какие справочники нужно выгружать – номенклатура, склады, остатки и т.д.
- настройки номенклатуры – хранит настройки выгрузки справочника «номенклатура» – использовать шаблоны весового товара, префикс кода весового товара, длина кода весового товара, переписывать номенклатуру при выгрузке и т.д.
ПрограммноНет
НастройкиИнициализированыТип – Булево. Означает, что настройки успешно загружены из базы Mobile SMARTS. Если флаг = Ложь, значит, необходимо перезагрузить настройки из базыПрограммноДа, если потеряна связь
с сервером MS
ПараметрыПодключенияMSТип – Структура. Хранит настройки подключения к базе Mobile SMARTS — ID базы, Имя базы, ID приложения, Строка подключения, QR, Логин, Токен, имя ИО, путь ИО, тип ИО, тип установленного продукта, уровень приложенияХОНДа, в форме настройки подключения
СтруктураМетаданныхТип – Структура. Хранит метаданные документов 1С, метаданные документов MS, пользователи MS, устройства MS, таблицы MS, UniПолейНоменклатурыМетаданные базы 1С, метаданные базы MS, Настройки базы MSНет
COMЧастнойБазыMSТип – Структура. Хранит COM-объекты для работы с частной базой – TerminalConnector и StorageConnector. Заполняется, только если подключение к базе Mobile SMARTS осуществляется через COM. Для REST API не заполняется.ПрограммноДа, если изменим базу, к которой будем подключаться для обмена
COMВременнойБазыMSАналогично COMЧастнойБазыMS,
но используется только в форме подключения для проверки соединения, чтобы не затирать соединение с существующими базами
ПрограммноДа, т.к. служебная переменная
COMБазыMSАналогично COMЧастнойБазыMS,
но используется для взаимодействия с основной базой MS
ПрограммноДа, если изменим базу, к которой будем подключаться для обмена
ТекущиеНастройкиMSТип – Структура. Содержит все настройки текущей базы MS в виде пар Ключ-Значение, например, ВыгружатьНоменклатуруСразу = Истина и т.д.Настройки базы MSДа, из всех форм, где могут редактироваться настройки
ПутьКОбработкеНЕ ИСПОЛЬЗУЕТСЯ!!! Путь хранится в переменной ядра
ПараметрыПодключенияMS.
ПутьИнтеграционнойОбработки
КОМсозданТип – Булево. Означает, что успешно созданы COM-объекты для работы с базами MS – TerminalConnector и StorageConnector и помещены в структуры COMЧастнойБазыMS/ COMБазыMSПрограммноДа, если потеряна связь
с сервером MS
ПраваПользователяТип – Строка. Хранит роль пользователя в 1С – «Администратор», «Пользователь», влияет на отображение некоторых кнопок на главной форме – кнопки настройки, кнопки выбора ИОМетаданные базы 1СНет
ФормаИнтеграционной
Обработки
Тип – ФормаКлиентскогоПриложения. Используется для вызова клиентского обработчика «После открытия формы документа 1С»ПрограммноДа, в форме настройки ИО
Реквизиты формы «Локальный контекст»
_ИнтеграционнаяОбработка
Адрес
Тип – Строка. Хранит адрес интеграционной обработки во временном хранилище. Впоследствии, интеграционная обработка извлекается из временного хранилища на стороне сервера и из нее вызываются экспортные методы – обработчики загрузки документа и т.д.ПрограммноДа, в форме настройки ИО
АдресаПеременныхТип – Структура. Хранит в себе
адреса во временном хранилище других переменных ядра. При изменении значений в самих переменных ядра параллельно изменяются эти же значения и во временном хранилище. Эту
структуру можно передавать в глобальное ядро и оттуда иметь
доступ практически ко всем переменным локального ядра.
Состав структуры, жирным и подчеркнутым выделены пере- менные, хранящие адреса аналогичных переменных ядра:

- ДанныеТекущегоУзла
- ИдентификаторФормы – служебный УИД для хранения данных во временном храни-

лище, пока открыта обработка
- ИнтеграционнаяОбработка -

см. _ИнтеграционнаяОбработка
- Адрес
- ИнформацияСовместимости– версия ИО, поддерживаемые конфигурации 1С, поддерживаемые версии конфигураций 1С, использу-

ется для сообщения на главной форме о успешном/неуспешном подключении ИО и её совместимости с текущей базой 1С
- ИспользоватьREST_API– флаг, означает возможность использования REST API
- НастройкиИнициализированы
- ПараметрыПодключенияMS
- РасположениеКомпоненты
- СтруктураМетаданных
- СтруктураПодключения
- БазыMS – аналог ПараметрыПодключенияMS
- ТекущиеНастройкиMS
- ТипИнтерфейса
Программно,
т.к. в нее просто сохраняются
другие, уже инициализи-
рованные, переменные ядра
ЕстьЧастнаяБазаТип – Булево. Означает, что к текущей базе 1С привязан какой-либо узел и этот узел будет использовать частную базу для обмена документами и справочникамиПрограммноДа, на главной форме при выборе узла (торгового объекта)
ИмяИнтеграционнойОбра-
ботки
Тип – Строка, СправочникСсылка
Для внешней ИО – путь к файлу внешней обработки.
Для встроенной в конфигурацию 1С ИО – имя метаданных встроенной обработки.
Для ИО из справочника «Дополнительные отчеты и обработки» — ссылку на элемент справочника
ХОНДа, в форме настройки ИО
ИнтеграционнаяОбработка
Подключена
Тип – Булево. Означает, что интеграционная
обработка успешно подключена.
Флаг взводится при инициализации ядра
ПрограммноДа, если потеряна связь
с сервером MS
П олноеИмяОбъектаТип – Строка. Полное имя обработки-ядра,
например, «ВнешняяОбработка.КлеверенсТСД_
ОсновнаяОбработка»
ПрограммноНет
ТипОбработкиТип – Строка. Определяет расположение ИО — «ФайлНаДиске», «Встроенная» или «СправочникСсылка»Настройки базы MSДа, в форме настройки ИО

Для глобального ядра это:

  • реквизиты обработки, доступны из любого метода модуля объекта;

    • ЭтоWebСервис – флаг, означающий работу ядра из веб-сервиса;
    • COMЧастнойБазыMS, COMВременнойБазыMS, COMБазыMS – аналоги одноименных переменных локального ядра.
  • серверные переменные модуля объекта, доступны из любого метода модуля объекта;

    • КэшАдресаПеременных– копия переменной АдресаПеременных, но используется только для онлайн-режима, когда между вызовами ядра нужно сохранять значения переменных ядра.
  • переменная локального ядра АдресаПеременных, передающаяся в методы глобального ядра в качестве параметра, посредством которой есть доступ к большинству переменных локального ядра.

Что хранится в хранилище общих настроек 1С (ХОН)

Принцип сохранения/ загрузки данных в ХОН

Если у пользователя 1С есть право доступа «Администрирование данных», то сохраняется и индивидуальная настройка по имени пользователя, и общая (глобальная) настройка для всей базы 1С, с именем пользователя, равным пустой строке «».

Иначе сохраняется только индивидуальная настройка по имени пользователя.

Аналогичный принцип при загрузке данных из ХОН, но можно при загрузке указывать, загружать только пользовательскую настройку или дополнительно еще и общую настройку

КлючЗначение
Cleverence_ПараметрыПодключенияMSСтруктура, содержащая Ид базы, имя базы, Ид приложения, строку подключения, путь и имя ИО, версию приложения и т.д.
Cleverence_РасположениеКомпонентыРасположение внешней COM-компоненты для работы из 1С с базой MS: на клиенте 1С или на сервере 1С (файлы Cleverence.MobileSMARTS.ComConnector.dll, Cleverence.Infrastructure.dll, Cleverence.Warehouse.TerminalConnector.dll).
При этом, сама база MS может быть расположена где угодно, главное, чтобы к ней был доступ
Cleverence_ДатаАктуальностиКэшаДата и время, когда в последний раз из MS (файл customsettings.xml) в кэш были считаны настройки базы.
Используется только для веб-сервиса либо внешнего соединения.
Если прошло более 15 минут после последнего получения настроек, то нужно перечитать настройки из MS, т.к. за это время настройки могли поменять интерактивно из 1С или из панели MS
Cleverence_СтруктураМетаданныхДокументы1СMетаданные документов 1С – имена документов, их реквизиты, табличные части, реквизиты табличных частей
Cleverence_СтруктураНастроекВсе настройки базы MS, такие как: настройки отборов документов и справочников, бизнес-процесы, произвольные коды и т.д.
Cleverence_СтруктураНастроек_ + ID_ТекущегоУзлаВсе настройки базы MS, но уже для конкретного торгового объекта
Cleverence_СтруктураМетаданныхДокументыMSМетаданные документов MS – имена документов, их реквизиты, табличные части, реквизиты табличных частей
Cleverence_ПользователиMSПользователи и группы пользователей, которые заведены в подключенной базе MS
Cleverence_ТаблицыMSТаблицы MS (имена таблиц, имена полей таблиц) таких как: «Склады», «Остатки», «Цены» и т.д.
Cleverence_УстройстваMSИд и имена устройств, подключенных к базе
Cleverence_ИмяИнтеграционнойОбработкиИмя ИО, например, «ИнтеграционнаяОбработка_УТ_11_4»
Cleverence_РежимВыбораБазыПо строке подключения ИЛИ из списка
Cleverence_ТипИнтерфейсаREST_API ИЛИ COM
Cleverence_REST_API_ДатаАктуальностиСое-диненияДата и время последнего подключения по REST API к базе MS. Используется только для веб-сервиса либо внешнего соединения
Cleverence_ДатаАктуальностиНастроек_ + ПостфиксБазыДата, когда были сохранены/изменены настройки пользователем.
Обновляется в методах КомЯдро_ЗаписатьНастройкиSMARTS.
Проверка даты осуществляется в онлайн-вызовах со стороны MS, если настройки изменились, то происходит переинициализация настроек

Описание хранения настроек в базе

В каждом шаблоне базы Mobile SMARTS (например «Клеверенс Магазин 15 Полный.mstmpl») в папке «\Обработки 1С\Настройки по умолчанию\» располагаются файлы с настройками по умолчанию (они же — типовые настройки) для разных конфигураций 1С:

архитектура решения архитектура решения

В мастере создания новой базы из шаблона мы выбираем, с какой конфигурацией 1С будет обмениваться данными новая база Mobile SMARTS. Соответствие конфигураций 1С и файлов настроек хранится в файле шаблона «1CConfigs.xml»:

архитектура решения

После распаковки данных из шаблона в папку базы Mobile SMARTS копируется папка «Обработки 1С» с файлами настроек для всех конфигураций 1С, копируется файл «1CConfigs.xml», а также копируется файл, соответствующий выбранной конфигурации 1С, и сохраняется с именем «default_customsettings.xml». Например, мы выбрали конфигурацию «Управление торговлей 11.4», поэтому в файле «default_customsettings.xml» хранятся данные из файла «ut114.xml» (на скриншоте можно увидеть, что размеры файлов совпадают с точностью до байта).

архитектура решения

В файле «default_customsettings.xml» хранятся все настройки базы, которые будут использованы по умолчанию. Так как это типовые настройки, то их нельзя изменять программно в коде 1С.

архитектура решения

После первого запуска обработки 1С в базу Mobile SMARTS записывается еще ряд настроек, которые уже считаются не типовыми, а пользовательскими, поэтому они сохраняются в отдельный файл — «customsettings.xml». Часть из них создает мастер первого запуска Mobile SMARTS, другая часть настроек создается из обработки 1С при первом запуске.

архитектура решения

Когда мы запрашиваем у сервера Mobile SMARTS какую-то настройку по ее ключу, то сперва данная настройка ищется в пользовательских настройках, и если там не была найдена, то ищется в типовых. Если нигде не найдена, то возвращается значение «Неопределено».

В обработке 1С явно указывается доступный список настроек, которые будут считаны из базы Mobile SMARTS (они же - метаданные настроек MS, структура настроек MS). Делается это в методе ГлЯдро_ПолучитьПустуюСтруктуруНастроекSMARTS(), поэтому, если в новом релизе того или иного продукта Mobile SMARTS (например, «Склад 15», «Магазин 15») обновляются метаданные настроек (добавляются новые настройки, удаляются существующие настройки, меняется тип значений существующих настроек), их также нужно явно модифицировать в этом методе для возможности корректной работы с ними в обработке:

архитектура решения

Также, существует категория сериализуемых настроек, которые не являются значениями примитивного типа («Число», «Строка», «Дата», «Булево», «Ссылка»), и которые необходимо сериализовывать в строку определенного формата для возможности хранения их в текстовом файле и десериализовывать при загрузке из файла. Это могут быть таблицы значений, списки значений и другие составные типы данных. В обработке для целей сериализации/десериализации используются методы ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр(). Для сериализуемых настроек существует метод, в котором описывается состав сериализуемых настроек — ГлЯдро_ПолучитьКатегорииНастроекMS() и метод, который описывает, какие колонки в какой таблице могут существовать — ГлЯдро_СформироватьМетаданныеНастроекMS(), например, для таблицы с настройками обмена справочниками могут быть только 2 поля — «ИмяТаблицы» и «НастройкаКомпоновщикаСтрокой». Для таблицы с настройками обмена документами это могут быть поля «ID_БизнесПроцесса», «Название», «НастройкаКомпоновщикаСтрокой» и т.д. Пример:

архитектура решения

Для того чтобы в процессе работы с обработкой каждый раз не обращаться к базе Mobile SMARTS за получением значения настройки, все настройки при запуске обработки кэшируются в переменную ядра АдресаПеременных.ТекущиеНастройкиMS, а для онлайн-режима — дополнительно в хранилище общих настроек 1С по ключу Cleverence_СтруктураНастроек. Впоследствии, если какая-то настройка изменилась, она сохраняется и в базу Mobile SMARTS и обновляется в кэше, чтобы поддерживать актуальность настроек в кэше. Для онлайн-режима дополнительно существует механизм обновления настроек: если кто-то параллельно работает с базой Mobile SMARTS из 1С, то этот пользователь может изменить настройки, поэтому каждые 900 секунд происходит проверка актуальности настроек в кэше. Если они стали неактуальными, они перечитываются из базы Mobile SMARTS в кэш. Для этого в хранилище общих настроек 1С сохраняются следующие данные:

  • Cleverence_ДатаАктуальностиНастроек — дата, когда настройки были сохранены/изменены пользователем.
  • Cleverence_ДатаАктуальностиКэша — дата, когда данные были загружены в кэш. Если дата кэша старше даты настроек, то запускается обновление кэша.

Например, вы поменяли глобальный параметр у какого-то узла, от которого зависит отбор документов. При работе в режиме онлайн он никак не обновится в кэше, пока соединение не будет перезапущено. Это и есть проверка на актуальность.

Иначе говоря, Cleverence_ДатаАктуальностиНастроек — это дата последней записи настроек в Mobile SMARTS, а Cleverence_ДатаАктуальностиКэша — это дата последнего считывания настроек из Mobile SMARTS в кэш. И если Cleverence_ДатаАктуальностиКэша <= Cleverence_ДатаАктуальностиНастроек , т.е. если после того как считали настройки, что-то еще изменили, то нужно перечитать настройки.

Во всех формах, в которых возможен просмотр или редактирование настроек, например, бизнес-процессов, произвольных кодов, отборов документов и т.д. существует функционал по экспорту/импорту настроек в/из файла. Это может понадобится для создания резервной копии настроек или для переноса настроек в другую базу Mobile SMARTS.

Формат хранения настроек бизнес-процессов и произвольных кодов

Бизнес-процессы хранятся в 3х ключах:

  • НастройкиБизнесПроцессов_ПоУмолчанию.
  • НастройкиБизнесПроцессов_Пользовательские.
  • НастройкиБизнесПроцессов_ПользовательскиеНастройки.

НастройкиБизнесПроцессов_ПоУмолчанию — это наши типовые настройки, которые недоступны для редактирования. Они разворачиваются вместе с базой Mobile SMARTS и обновляются в файле default_customsettings.xml. Пользователь может только поменять некоторые параметры, например, «Использование», «Контроль количества», «Режим записи», «Выбор пользователя» и т.д.

НастройкиБизнесПроцессов_ПользовательскиеНастройки — сюда сохраняются те самые параметры, которые разрешено менять пользователю в типовых настройках. Они сохраняются в файл customsettings.xml. Если по этому ключу отсутствует настройка, значит, пользователь ничего не менял в типовых бизнес-процессах.

НастройкиБизнесПроцессов_Пользовательские — сохраняются бизнес-процессы, которые создал пользователь. Они сохраняются в файл « customsettings.xml».

При инициализации настройки бизнес-процессы собираются из этих трех ключей в единую таблицу (метод ГлЯдро_СобратьОбщуюСтруктуруБизнесПроцессов()) + проходит обновление настроек, если версия настроек ниже используемой в ядре.

Если пользователю надо что-то поменять в типовом бизнес-процессе, он может скопировать его, поменять что нужно и отключить типовой. Его скопированный бизнес-процесс будет иметь другой ID.

Главный вопрос — как мы обновляем наши типовые БП?

  1. Разворачиваем базу Mobile SMARTS с типовыми настройками.

  2. Открываем обработку, заходим в настройки бизнес-процессов.

  3. В чистой базе будут только типовые, недоступные для редактирования бизнес-процессы. Сохраняем их в файл.

  4. Заходим в папку с базой Mobile SMARTS.

  5. Удаляем, переименовываем или меняем расширение у файла default_customsettings.xml.

  6. Перезапускаем обработку, заходим в настройки бизнес-процессов.

  7. Видим пустой список, загружаем настройки из файла, в который сохраняли типовые.

  8. Настройки загрузились, теперь они доступны как пользовательские.

  9. Меняем всё что душе угодно.

  10. Открываем файл « customsettings.xml», форматируем в нормальный вид. Находим ключ НастройкиБизнесПроцессов_Пользовательские.

  11. Переименовываем этот ключ в НастройкиБизнесПроцессов_ПоУмолчанию.

  12. Если менялись произвольные коды, аналогично находим ключ ПроизвольныеКоды_Пользовательские и переименовываем в ПроизвольныеКоды_ПоУмолчанию.

  13. Копируем с заменой эти ключи в нужный файл настроек в зависимости от конфигурации —

«\Git\2.Git_m15\Общий\Обработки 1С\Настройки по-умолчанию».

Аналогичная ситуация с произвольными кодами:

  1. ПроизвольныеКоды_ПоУмолчанию— по этому ключу в файле «default_customsettings.xml» хранятся типовые произвольные коды. Они недоступны для изменения из обработки.
  2. ПроизвольныеКоды_Пользовательские — по этому ключу в файле «customsettings.xml» хранятся пользовательские произвольные коды. Они доступны для изменения из обработки.

При инициализации произвольные коды собираются из этих двух ключей в единую таблицу (метод ГлЯдро_СобратьОбщуюСтруктуруПроизвольныхКодов()) + проходит обновление настроек, если версия настроек ниже используемой в ядре. При экспорте бизнес-процессов в файл также экспортируются и произвольные коды

В прошлых релизах обработки пользовательские произвольные коды сохранялись в 4 ключа:

  • ПроизвольныеКоды_Выгрузка_ШапкаДокумента.
  • ПроизвольныеКоды_Выгрузка_ТабличнаяЧастьДокумента.
  • ПроизвольныеКоды_Загрузка_ШапкаДокумента.
  • ПроизвольныеКоды_Загрузка_ТабличнаяЧастьДокумента, но потом стали храниться в одном ключе ПроизвольныеКоды_Пользовательские, поэтому, для обратной совместимости с прошлыми релизами обработки, существует метод ГлЯдро_ОбъединитьПроизвольныеКоды(), который объединяет все пользовательские произвольные коды в один ключ ПроизвольныеКоды_Пользовательские.

Обновление версии структуры настроек

В типовых настройках (файл «default_customsettings.xml») хранится отдельная служебная настройка по имени «ВерсияНастроек_ПоУмолчанию» (ее значение представляет собой строку, например, «1.0.1.2»). При выходе нового релиза возможна ситуация, когда изменится структура настроек (добавляются новые настройки, удаляются существующие настройки, меняется тип значений существующих настроек). В этом случае версия настроек по умолчанию будет иметь другое значение, например, «1.0.1.3». Поэтому, чтобы обеспечить работоспособность уже существующих у пользователя настроек в новом релизе, предусмотрен механизм обновления структуры настроек.

В некоторых случах, при обновлении своей текущей базы Mobile SMARTS до нового релиза, пользователь только копирует новые файлы обработки-ядра и интеграционной обработки, а файл «default_customsettings.xml» не копирует, он остается тем же, каким он был при первом разворачивании текущей базы Mobile SMARTS из шаблона. Поэтому в самой обработке-ядре существует переменная, отвечающая за версию настроек - ВерсияОбработки, например, «1.3.0.1», она получается из метода СведенияОВнешнейОбработке().ВерсияСтруктурыНастроек.

В кэше хранятся:

  • ВерсияОбработки — версия из модуля обработки;
  • ВерсияОбработкиКлеверенсТСД, она же ВерсияНастроек_ПоУмолчанию — версия обработки по умолчанию из «default_customsettings.xml»;
  • ВерсияОбработкиНастроек — версия из « customsettings.xml»;
  • ВерсияНастроек — из «customsettings.xml», нужна для хранения версии типовых бизнес-процессов.

Обновление настроек при инициализации ядра

Краткий стек вызовов при инициализации ядра:

ГлЯдро_ПолучитьДанныеДляИнициализации => ГлЯдро_ВыполнитьОбновлениеСтруктурыНастроек => ГлЯдро_ВыполнитьОбработчикОбновления => ГлЯдро_ОбновлениеНастроекДоВерсии_1_0_1_1 …………………………………………………………………... => ГлЯдро_ОбновлениеНастроекДоВерсии_х_х_х_х => ГлЯдро_ПроверитьОбновлениеТиповыхБизнесПроцессов - конвертация будет выполняться для обратной совместимости, независимо от версии настроек => ГлЯдро_ОбновитьСтруктуруНастроекБизнесПроцессов => ГлЯдро_КонвертироватьВыгрузкуПолей - вызывается 2 раза для шапки и для ТЧ => ГлЯдро_КонвертироватьЗагрузкуПолей - вызывается 2 раза для шапки и для ТЧ

Подробный стек вызовов при инициализации ядра:

=> ГлЯдро_ПолучитьДанныеДляИнициализации() пСтруктураНастроек = Новый Структура("ВерсияОбработкиНастроек,ВерсияОбработкиКлеверенсТСД",Неопределено,Неопределено); пСтруктураНастроек = ГлЯдро_ПолучитьНастройкиНаСервереSMARTS(пСтруктураНастроек,,,АдресаПеременных); // пСтруктураНастроек.ВерсияОбработкиНастроек = 1 003 000 001 (берется из customsettings.xml) // пСтруктураНастроек.ВерсияОбработкиКлеверенсТСД = Ложь (откуда? из default? в customsettings такого ключа нет) => ГлЯдро_ВыполнитьОбновлениеСтруктурыНастроек() ВерсияНастроек_ПоУмолчанию = пСтруктураНастроек.ВерсияОбработкиКлеверенсТСД // ВерсияНастроек_ПоУмолчанию = 0 ВерсияОбработки = СведенияОВнешнейОбработке().ВерсияСтруктурыНастроек; // ВерсияОбработки = 1 003 000 001 (берется из модуля обработки) ВерсияНастроек = пСтруктураНастроек.ВерсияОбработкиНастроек; // ВерсияНастроек = 1 003 000 001

  1. Если КлючНастройки = Неопределено, Тогда // т.е. обновляем все настройки ИзмененияВКэше = Новый

    Структура("ВерсияОбработки,ВерсияОбработкиНастроек,ВерсияОбработкиКлеверенсТСД",ВерсияОбработки, ВерсияНастроек,ВерсияНастроек_ПоУмолчанию); // версия из модуля обработки, версия из кастом, версия из дефолта ИзменениеВНастройках = Новый Структура(“ВерсияОбработкиНастроек, ВерсияОбработкиКлеверенсТСД”); // + хранит ключи настроек, которые необходимо записать в настройки MS Если версия из модуля обработки > версия из кастом сеттингс, тогда => ГлЯдро_ВыполнитьОбработчикОбновления() // Обновление настроек, которые после реструктуризации отправятся в базу SMARTS и сохранится версия настроек (customsettings) (в структуре изменится только ИзменениеВНастройках.ВерсияОбработкиНастроек)

    Если версия из модуля обработки > Версия по умолчанию (из default?) тогда =>

    ГлЯдро_ВыполнитьОбработчикОбновления() // Обновление настроек, которые сохранить нет возможности, а все изменения возвращаются в кэш без сохранения (default_customsettings) (в структуре изменится ВерсияОбработкиКлеверенсТСД) в цикле вызываем все обработчики обновления ИзмененияВСтруктуре.Вставить(?(ОбновлениеКэша,"ВерсияОбработкиКлеверенсТСД","ВерсияОбработкиНастроек"),МассивПереходныхВерсий[ИндексВерсии].Значение); // последняя версия, на которую удалось перейти без ошибок ИзмененияВКэше.Вставить("ВерсияОбработкиНастроек",ИзменениеВНастройках.ВерсияОбработкиНастроек); Возврат Новый Структура("ИзмененияВКэше,ИзменениеВНастройках",ИзмененияВКэше,ИзменениеВНастройках);

  2. Реструктуризация по ключу настройки.

    Если версия из модуля обработки > версия настроек по умолчанию, тогда

    ГлЯдро_ВыполнитьОбработчикОбновления() // Обновление настроек, которые сохранить нет возможности, а все изменения возвращаются в кэш без сохранения (default_customsettings) Возврат Структура.ВерсияОбработкиКлеверенсТСД => ГлЯдро_ПроверитьОбновлениеТиповыхБизнесПроцессов - конвертация будет выполняться для обратной совместимости, независимо от версии настроек СтруктураНастроек = Новый Структура("ВерсияНастроек, ВерсияНастроек_ПоУмолчанию ",Неопределено,Неопределено); СтруктураНастроек = ГлЯдро_ПолучитьНастройкиНаСервереSMARTS(СтруктураНастроек,,,АдресаПеременных); … преобразование типовых бизнес-процессов из таблицы значений в массив структур и сохранение, но только в кэш … ГлЯдро_СохранитьНастройкуВБазеSMARTS("ВерсияНастроек", СтруктураНастроек.ВерсияНастроек_ПоУмолчанию ,,АдресаПеременных); ГлЯдро_ЗаписатьВКэшНастройкуSMARTS("ВерсияНастроек", СтруктураНастроек.ВерсияНастроек_ПоУмолчанию ,АдресаПеременных); … перенос пользовательских бизнес-процессов из ключа “НастройкиБизнесПроцессов” в ключ “НастройкиБизнесПроцессов_Пользовательские” … => ГлЯдро_ОбновитьСтруктуруНастроекБизнесПроцессов - изменение, добавление, удаление колонок из таблицы бизнес-процессов и т.д. => ГлЯдро_КонвертироватьВыгрузкуПолей - вызывается 2 раза для шапки и для ТЧ => ГлЯдро_КонвертироватьЗагрузкуПолей - вызывается 2 раза для шапки и для ТЧ … преобразование типовых произвольных кодов из таблицы значений в массив структур и сохранение, но только в кэш … … преобразование пользовательских произвольных кодов и сохранение в настройки и в кэш ...

Обновление настроек при получении настроек по умолчанию

ЛокЯдро_ПолучитьНастройкиПоУмолчаниюНаСервереSMARTS , если версия обработки из модуля > версии по умолчанию, то вызываем: => ГлЯдро_ВыполнитьОбновлениеНастроек - для каждого ключа из структуры настроек и записывает новое значение настройки по ключу, вызывает: => ГлЯдро_ВыполнитьОбработчикОбновления - вызывает по порядку все обработчики настроек вида ГлЯдро_ОбновлениеНастроекДоВерсии _1_0_1_1

Действия при экспорте настройки в файл

Вызывается при экспорте настройки в файл в формах списков «Узлы», «ГлобальныеПараметры», «БизнесПроцессы», «ОтборыСправочников», «ПроизвольныеКоды», «ПроизвольныеОтборыДокументов».

СтруктураНастроек = Новый Структура; СтруктураНастроек.Вставить("ТаблицаУзлов", ПолучитьСтруктуруУзловДляВыгрузки(Истина));_ _СтруктураНастроек.Вставить("ВерсияОбработкиНастроек",_ЛокКонтекст.ЛокЯдро_ПолучитьИзКэшаНастройкуSMARTS("ВерсияОбработкиНастроек"); // это версия из кастом сеттингс, сохраняемая в файл, которая, впоследствии, может стать устаревшей, неактуальной_ЛокКонтекст.ЛокЯдро_СохранитьНастройкиВФайл(СтруктураНастроек, "НастройкиУзлов");

Для бизнес-процессов и произвольных кодов делается несколько иные преобразования, т.к. эти настройки хранятся по нескольким ключам, см. код в соответствующих формах списков.

Действия при импорте настройки из файла

Вызывается при импорте из файла настроек в формах списков “Узлы”, “ГлобальныеПараметры”, “БизнесПроцессы”, “ОтборыСправочников”, “ПроизвольныеКоды”, “ПроизвольныеОтборыДокументов” СтруктураНастроек = _ЛокКонтекст.ЛокЯдро_ПолучитьНастройкиИзФайла("НастройкиУзлов"); Если СтруктураНастроек <> Неопределено Тогда //Выполним обновление - Начало ВерсияОбработки =_ЛокКонтекст.ЛокЯдро_ПолучитьИзКэшаНастройкуSMARTS("ВерсияОбработки"); // а это текущая версия настроек, из модуля обработки Если СтруктураНастроек.Свойство("ВерсияОбработкиНастроек") Тогда ВерсияОбработкиНастроек = СтруктураНастроек.ВерсияОбработкиНастроек; Иначе ВерсияОбработкиНастроек = 0; КонецЕсли; Если ВерсияОбработки>ВерсияОбработкиНастроек Тогда // если текущая версия выше, чем версия из файла, тогда выполняем обработчики обновления СтруктураВызова = Новый Структура; СтруктураВызова.Вставить("ТипМетода", "Функция"); СтруктураВызова.Вставить("ИмяМетода", "_ **_ВыполнитьОбновлениеНастроек_** _"); // алгоритм такой же как при получении настроек по умолчанию СтруктураВызова.Вставить("ПараметрыМетода", Новый Структура("ВерсияНастроек,СтруктураНастроек",ВерсияОбработкиНастроек,СтруктураНастроек)); СтруктураНастроек = _ЛокКонтекст.Транзит_ВызватьГлобальныйМетодНаКлиенте(СтруктураВызова,,_ЛокКонтекст.АдресаПеременных); КонецЕсли; //Выполним обновление - Конец

Для бизнес-процессов и произвольных кодов делается несколько иные преобразования, т.к. эти настройки хранятся по нескольким ключам, см. код в соответствующих формах списков.

Алгоритм работы с основной базой

Общее правило:

База для обмена используется в форме обмена документами в процессе загрузки/выгрузки документов и в формах выгрузки справочников и номенклатуры для выгрузки/очистки справочников, во всех остальных случаях используется основная база.

База для обмена определяется при открытии обработки или изменении текущего торгового объекта на главной форме по следующему алгоритму:

  1. Если текущий торговый объект не выбран, то базой для обмена считается основная база.

  2. Если текущий торговый объект выбран, то:

    • Если у него установлен переключатель, «Использовать основное подключение», то базой для обмена считается основная база.
    • Если у него установлен переключатель, «Использовать частную базу», то базой для обмена считается выбранная частная база.

Форма списка бизнес-процессов

- сохранение таблицы настроек бизнес-процессов
- выгрузка доп.таблицы «Бизнес-процессы»
- получение таблицы настроек БП и ТЧ с настройками
- получение списка типов документов MS
- восстановление настроек БП «по умолчанию»
- в основную базу
- во все базы: основная + все частные
- из основной базы
- из основной базы
- из основной базы

Форма настройки бизнес-процесса

- получение списка пользователей- из основной базы

Форма списка настроек обмена документами

- сохранение и восстановление ТЧ с настройками
- восстановление настроек «по умолчанию»
- в основной базе
- из основной базы

Форма списка настроек обмена справочниками

- сохранение и восстановление ТЧ с настройками- в основной базе

Форма списка торговых объектов

- сохранение и восстановление ТЧ с настройками
- выгрузка доп.таблицы «Узлы»
- в основной базе
- во все базы: основная + все частные

Форма настройки выгрузки номенклатуры

- настройки компоновки загружаются/сохраняются
- номенклатура выгружается

- очистка номенклатуры
- из основной базы
- в базу для обмена
- в базе для обмена

Форма настройки выгрузки справочников

- настройки компоновки загружаются/сохраняются
- справочник выгружается
- очистка справочника
- из основной базы
- в базу для обмена
- в базе для обмена

Форма настройки полей обмена

- сохранение и восстановление ТЧ с настройками- в основной базе

Форма настройки произвольного кода

- сохранение и восстановление ТЧ с настройками- в основной базе

Форма выбора табличной части

- получение списка доп.таблиц документа MS
- получение списка полей ТЧ документа MS
- из основной базы
- в основной базе

Форма настройки торгового объекта

- сохранение и восстановление ТЧ с настройками
- получение дерева пользователей
- выгрузка доп.таблицы «Узлы»
- в основной базе
- из основной базы
- во все базы: основная + все частные

Форма выбора параметра торгового объекта

- восстановление ТЧ с настройками- в основной базе

Форма выбора торгового объекта

- восстановление ТЧ с настройками- в основной базе

Форма выбора произвольного кода

- сохранение и восстановление ТЧ с настройками- в основной базе

Форма просмотра документа Mobile SMARTS

- получение данных документа MS
- получение данных шапки документа MS
- из базы для обмена
- из базы для обмена

Форма обмена документами

При открытии:
- получение ТЧ с настройками
- метод «СформироватьДеревоПользователейMS»
- команда «ЗаполнитьСписокДокументовMS» получает

шапки документов
- команда «УдалитьДокументMS»
- команда «ОткрытьФормуДокументаMS» получает

список колонок ТЧ «СтрокиПлан» и «СтрокиФакт»
- из основной базы
- из базы для обмена
- из базы для обмена
- из базы для обмена
- из базы для обмена
Выгрузка документов на ТСД:
- таблицу настроек БП получаем
- выгрузка документа идет
- из основной базы
- в базу для обмена
Загрузка документов с ТСД:
- таблицу настроек БП получаем
- при поиске подходящего БП получаем данные документа

MS и шапку документа MS
- удаление документа после загрузки
- получение списка доп.таблиц, получение данных из доп.таблиц
- получение данных документа MS для загрузки в 1С
- получение данных документа MS для создания новых штрихкодов
- из основной базы
- из базы для обмена
- из базы для обмена
- из базы для обмена
- из базы для обмена
- из базы для обмена

Форма выбора бизнес-процесса

При открытии:
- получение списка типов документов MS- из базы для обмена

Форма главная

- при выборе и очистке текущего узла получаем базу для обмена: «Объект.IDБазыMSДляОбмена = ПолучитьIDБазыMSДляОбмена();»

- при открытии формы и после удачного подключения базы MS в методе «СоздатьОбъектДрайвера»:
- получаем параметры подключения (ид, имя, строка подключения,

имя приложения, ид приложения)
- восстанавливаем настройки в методе «ВосстановитьНастройки»

(здесь восстанавливаются флажки выгрузки справочников и

параметры весового товара)
- восстановление ТЧ с настройками
- из основной базы
- из основной базы
- из основной базы
получаем базу для обмена: «Объект.IDБазыMSДляОбмена = ПолучитьIDБазыMSДляОбмена();»
- при закрытии формы или при скрытии группы настройки справочников

(если есть изменения и нажали «не сохранять изменения»), в методе «СохранитьНастройкиЗавершение» восстанавливаем настройки
- «СохранитьНастройкиВыгрузкиСправочниковMS» - сохраняет флажки

и параметры весового товара
- из основной базы
- в основную базу