Документы

Примечание

Данный раздел написан для варианта когда Документы хранятся на стороне 1С, но по большей части это соответствует и варианту когда они хранятс янапример в PostgreSQL. В разделе REST написано как это организовать в облаке Postgre.

Помимо off-line режима в виде работы с SQL таблицами есть еще один способ организации off-line хранения, обработки и синхронизации – Документы

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

Документы одновременно являются средством хранения и объектом синхронизации.

Жизненный цикл документов состоит из экземпляров документов на мобильном устройстве и их двойников в базе 1С и определяется структурой

_images/docs_pic1.jpg

Структура документов

Структура документа задается в конфигурации, в справочнике «Структуры документов». Чтобы документ был доступен в приложении его надо включить в конфигурацию на закладке «Документы»

_images/docs_pic2.jpg

После синхронизации с приложением структура храниться автономно и в случае отсутствия связи приложение берет данные из хранилища. В БД приложения это таблица templates Документы могут содержать различное количество постоянных и переменных полей. Постоянные поля всегда присутствуют на экране, переменные – добавляются пользователем по необходимости. На экране есть кнопка котрая позволяет добавлять поле

_images/docs_pic3.jpg

Также у полей можно выбрать «Выводить в списке» - эта галка отвечает за вывод поля в карточку документа в списке документов. Всего может быть до 5 полей в карточке списка.

Также в карточке списка выводится дата создания документа и признак синхронизации

Поля документа – справочник. Их можно использовать между разными типами документов. Это сделано просто для удобства. Значение имеет «имя поля» - английскими буквами и «Заголовок поля» - заголовок в приложении

Поля могут быть типов:

  • Строка

  • Число

  • Галочка

  • Документ

Если выбирается «Документ», то необходимо указать тип документа. Таким образом в документе можно указывать другие документы. Например в Заказе можно выбирать «покупателя»

В документе можно задать поле типа Флажок с именем done (заголовок может быть любой) – это поле сейчас используется для того чтобы подкрасить карточку в списке в серый цвет. В дальнейшем будут добавляться другие сценарии использования.

В документе можно использовать одну таблицу

Для этого нужно задать структуру табличной части документа и указать в поле «Структура табличной части»

_images/docs_pic4.jpg

Также можно указать процент занимаемый таблицей на форме (по умолчанию она занимает половину экрана)

В структуре табличной части можно задать ширину колонок в закладке «Настройка таблицы»

Таблицу документа можно будет вывести в виде списка карточек. При этом названия полей если задана настройка таблицы будут взяты из нее. Такой режим удобен с таблицами с большим количеством колонок

_images/docs_pic5.jpg

Также у документа можно включить возможность иметь коллекцию прикрепляемых изображений – горизонтальный список прокрутки. Изображения можно добавлять с камеры или из галереи

Для этого надо включить галку «Прикрепляемые картинки»

Также к документу можно добавлять список прикрепляемых файлов (галочка «Прикрепляемые файлы»)

У документа могут обрабатываться события. В данный момент событие только одно – ввод штрихкода. Оно обрабатывается только оффлайн.

При этом оно может использоваться для добавления строки таблицы и для установки реквизита. Например можно открыть документ в котром есть реквизит сотрудник и его можно сосканировать в этот реквизит. Либо в примере в структуре Таблица товары определено действие для заполнение переменной товара – тут подразумевается что строка будет добавлена или открыта на редактирование и в форме строки произойдет сканирование (не в форме документа а в форме строки)

В данном случае для реализации использованы команды «SQLЧтение в переменные» - полностью аналогична команде из OFFline режима. При этому в примере я использую запрос к таблице documents – это запрос где хранятся все документы. Т.е. выбираю товар из списка товаров по штрихкоду

При этом есть такой нюанс: можно написать в запросе конкретное поле где храниться штрихкод

А можно написать select * from documents where type=? and doc like ? – тут идет поиск по подстроке в поле doc а в поле doc храниться весь json всего объекта – т.е. штрихкод ищется среди всех полей документа.

И «Заполнение атрибута документа» - устанавливается конкретная переменная(переменные) из выборки по таблице.

А команда «Добавление строки документа» добавляет строку.

Для документа можно определить свою форму вместо автогенерируемой (этот режим на данный момент несколько ограничен)

_images/docs_pic6.jpg

Для этого надо указать процесс и экран который будет являться оформлением. При открытии/редактировании/создании будет запускаться эта форма

Создание формы экрана – как обычно, единственное – нужно помнить о двух нюансах:

  • Поля ввода должны называться также как поля документа (переменные)

  • Работа происходит в offline и поведение такое же как в документах – данные пишутся сразу в базу

  • Поля надо сделать через контейнер (это естественно)

Т.е. это не экран в привычном понимании а такое представление формы.

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

Документы могут быть добавлены в основное меню операций наряду с процессами

_images/docs_pic7.jpg

Работа с документами и синхронизация

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

Совет

Сами документы хранятся в базе в таблице documents и в принципе с ними можно работать через веб сервис , через консоль как и с остальными таблицами. Например что то подправить. Документ представляет из себя запись json записанную в строку в поле doc таблицы. Эта запись включает в себя все что есть в документе включая картинки. Поля filed1-5 и captionfield1-5 это выносные поля для реквизитов отображения в списке и поиска. Для быстроты, чтобы не распаковывать json

Поле send – отвечает за состояние синхронизации Поле done – признак «выполнения» - необязательный реквизит Поле type – тип документа

Работа ведется оффлайн. Попытка отправки данных о документе происходит в фоне при закрытии карточки документа. Также можно запустить синхронизацию вручную. Также можно в настройках отключить попытки синхронизации при закрытии карточки При изменении любого поля данные сразу же пишутся в базу. При этом признак синхронизации сбрасывается. Если синхронизация прошла успешно – тучка окрасится в зеленый цвет

_images/docs_pic8.jpg

При запуске программы и при ручной синхронизации происходит скачивание документов с сервера

Вообще есть 2 направления синхронизации:

  • Получение документов с сервера (команда documents_download)

  • Отправка документов (команда documents_upload)

Отправка как было написано выше происходит либо вручную либо при люом изменении. Отправляется все что не синхронизировано

Получение (загрузка) также происходит по несинхронизированным экземплярам документов.

Документы в базе хранятся в экземплярах документов. Их можно создавать в 1С (в демо базе есть подписка на справочник номенклатура которая создает экземпляры при записи Номенклатуры) либо их можно получать из мобильного приложения.

В каждом экземпляре есть реквизит для связи с элементом – в нем устанавливается связь через УИД. Таким образом если элемент создан в 1С то устройство получит его УИД при первом скачивании, если он создан на устройстве то при первой отправке в ответе об успешной доставке он получить УИД.

Чтобы экземпляры попали на устройство нужно чтобы не стояла галка Синхронизирован и Пользователь был равен пользователю мобильного устройства. Кстати данную особенность можно использовать чтобы рассылать пользователям адресную корреспонденцию

_images/docs_pic9.jpg

Для взаимодействия с данными учетной системы нужно читать/записывать json реквизита ДанныеJSON – там храниться все, включая дату создания.

Если данные будут отправляться на устройство (создаются в 1С) то нужно не забыть поставить поля и заголовки иначе в списке они будут выглядеть некрасиво.

Т.е. другими словами взаимодействие c мобильным устройством через Документы сводится к взаимодействию с документами «Экземпляр документа». Все остальное полностью автоматическое.

Функции списка документов

_images/docs_pic10.jpg
В списке документов возможен поиск различными способами:
  • По подстроке в строке поиска

  • По штрихкоду (для этого необходимо определить запрос поиска по штрихкоду)

  • По голосу (для этого необходимо определить запрос поиска по голосу). При этом если в выдачи будет несколкьо похожих объектов то будут выведены они все, если толкьо один – открыта карточка

  • Распознавание текста. Для этого необходимо определить настройку распознавания (описана в разделе «Распознавание текста»)