Полная синхронизация {#sec.offline_full_synchronization}
--------------------

Под полной синхронизацией будем понимать синхронизацию следующих данных:

*   по модулю "Работы":

    -   [список фильтров потоков работ](#sec.workflow_filters):

        -   загружаются все основные фильтры;
        -   загружаются все остальные подфильтры пользователя любого 
            уровня вложенности;

    -   [список работ](#sec.workflow_works):

        -   загружаются весь список работ пользователя всех его корневых
            фильтров;
        -   загружаются последние 30 работ каждого из остальных 
            подфильтров;
        -   загружается вся информация с плашки загружаемой работы;
        -   дочерние работы не загружаются;

    -   [информация о работе](#sec.workflow_workinfo):

        -   панель с параметрами работы;
        -   панель формы завершения;
        -   панель комментариев;
        -   панель вложений;
        -   управляющие кнопки;

*   по модулю "Документы":

    -   [список фильтров документов](#sec.documents_filters):

        -   загружаются все основные фильтры;
        -   загружаются все остальные подфильтры пользователя любого 
            уровня вложенности;

    -   список документов [для смартфона](#sec.documents_list), 
        [для планшета](#sec.documents_list_tablet):

        -   загружаются последние 30 документов каждого из основных 
            фильтров и всех остальных подфильтров;
        -   загружается вся информация с плашки загружаемого документа;
        -   дочерние документы не загружаются;

    -   [информация о документе](#sec.documents_docinfo):

        -   панель с параметрами документа;
        -   панель с параметрами работ по документу;
        -   панель формы завершения;
        -   панель комментариев;
        -   панель вложений;
        -   управляющие кнопки;

*   по модулю "Файлы":

    -   [список папок хранилища](#sec.documents_filters):

        -   загружаются все папки хранилища любого уровня вложенности;

    -   [список файлов](#sec.workflow_works):

        -   загружается весь список файлов всех папок;
        -   загружается вся информация с плашки загружаемого файла.

Данные в *панели с параметрами документа* должны синхронизироваться
полностью: все формулировки, пользователи и прочие данные (которые 
аналогичны плашке документа смартфона).

Данные в *панели с параметрами работы* должны синхронизироваться
полностью: полная формулировка работы, автор и ответственный, сроки и
прогресс работы.

Данные в *панели формы завершения* должны синхронизироваться следующим
образом - форма завершения должна синхронизироваться полностью, а
результат завершения:

-   "комментарий" - должен синхронизироваться полностью;

-   "файл" - иконка и название файла должны синхронизироваться
    всегда и полностью, а сам файл - согласно настройки загрузки
    вложений;

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

Данные в *панели комментариев* должны синхронизироваться полностью:
иконки, автор, текст и время написания комментария, а также их общее
количество с возможностью перейти ко всем комментариям. Должны
синхронизироваться все комментарии из всех категорий.

Данные в *панели вложений* должны синхронизироваться следующим образом:

-   иконка и название файла должны синхронизироваться всегда и
    полностью, а также их общее количество с возможностью перейти ко
    всем вложениям;

-   сами файлы (исключая файлы по форме) - согласно настройки загрузки 
    вложений.

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

> *Примечание.*
> 
> Файлы в модуле "Файлы" не должны синхронизироваться, независимо от 
> настроек приложения.

Данные *управляющих кнопок* должны синхронизироваться полностью: ее
наличие, название и цвет. По их нажатию в режиме оффлайн ничего
происходить не должно.

Полная синхронизация должна происходить в следующих случаях:

-   по заданному периоду синхронизации (период рассчитывается
    относительно последней успешной синхронизации);

-   при ручном запуске синхронизации через навигатор.

Запуск процесса синхронизации никакими сообщениями пользователя не 
уведомляет. Прогресс можно видеть только в нижней панели навигатора 
любого модуля. Сам же процесс синхронизации должен 
[логироваться](#sec.offline_journal_synchronization).

![Прогресс процесса синхронизации](resources/img/offline/navigator_in_process.png)

В случае неуспешного завершения процесса (в т.ч. обрыв соединения /
отказ сервера / отказ устройства) нижняя панель навигатора должна
отобразить предыдущее сообщение, какие-либо уведомления отсутствуют.

В случае же успешного завершения процесса синхронизации нижняя панель
навигатора должна отобразить новое сообщение, какие-либо уведомления 
также отсутствуют.

