Совместное редактирование word 2010
Добрый день. Последний год я занимаюсь в проекте «МойОфис» вопросами совместного редактирования (collaboration). Оглядываясь назад, могу констатировать, что это непростая и очень интересная задача. Поэтому я хотел бы подробно рассказать о ней и дать ответы на следующие вопросы:
- Какие существуют подходы к обеспечению совместного редактирования?
- Насколько они сложны в реализации?
- Можно ли взять готовую библиотеку и использовать ее в своем проекте?
- Можно ли вести разработку без оглядки на совместное редактирование?
Для того чтобы подробно и аргументированно ответить на них, необходимо написать довольно много материала, поэтому статей будет несколько, присаживайтесь поудобнее, мы начинаем.
Как только мы начинаем хранить файлы на сервере (в облаке), возникает естественное желание обеспечить их редактирование несколькими людьми. Особенно это актуально для офисных документов, над которыми работают сразу несколько человек и каждый из них вносит правки.
Но «нельзя просто так взять и…» предоставить всем доступ для правки одного документа. Необходим механизм, который обеспечит удобное и корректное изменение одного файла несколькими пользователями. Давайте рассмотрим варианты, как это можно сделать.
Блокировка всего документа при редактировании
Это самый тривиальный метод. Преимуществами такого решения являются простота реализации и возможность работы со всеми типами данных. На этом преимущества заканчиваются и начинаются сплошные неудобства для пользователя:
Блокировка части документа
Для текстового документа такой единицей деления может стать абзац или таблица. Это улучшает весь процесс работы, а именно:
- Теперь можно одновременно редактировать один документ, при условии, что правки вносятся в разные его части.
- Заблокировать документ полностью нельзя. Несмотря на неснятую блокировку, с остальным документом можно продолжать работать.
- По-прежнему нельзя обеспечить офлайн-работу. Для блокировки любой из частей документа необходимо связаться с сервером.
- Часть документа, заблокированная при редактировании, может быть значительной. Действительно, абзац может быть довольно большим и содержать несколько сотен или тысяч знаков текста. Еще больше сложностей возникает при работе с таблицами. Без дополнительных ухищрений нельзя одновременно разрешить менять содержимое ячеек и структуру таблицы — вставлять и удалять строки или столбцы. Это означает, что при любом изменении одной из ячеек требуется блокировать всю таблицу. В офисных документах таблицы могут быть разного уровня вложенности или же очень большого размера. Особенно неприятным этот момент становится при работе с табличными документами, где рабочий лист и вовсе состоит из одной таблицы, а значит при любых изменениях надо его блокировать полностью.
- С точки зрения структуры, документ можно упрощенно представить как последовательность абзацев и таблиц. И когда мы вставляем или удаляем таблицы и абзацы, то мы редактируем эту последовательность. А это значит, что корректность совместного редактирования такой последовательности также необходимо обеспечить (кстати, принципиальной разницы между редактированием списка абзацев или списка букв нет, разве что первое происходит реже). Без введения принципиально другого метода синхронизации это должна быть опять же блокировка, только на этот раз объект блокировки будет один на весь документ.
- Merge. Во-первых, для пользователей офисных пакетов это понятие как правило незнакомо. Во-вторых, объединение разных версий документа становится принципиально более трудным при переходе от простого текста к документу со сложной (как правило иерархической) структурой, где есть текст, вложенные таблицы, изображения и различные настройки форматирования. Просто представьте себе подобный 3-way merge.
- Даже при использовании kdiff3 или winmerge случаются ошибки, а ведь они работают с простым текстом.
- Обычному пользователю офисных приложений будет непросто вникнуть в мир ветвлений и слияний. А вникнув, использовать будет не очень быстро и удобно.
Для нас это диктует дополнительные требования:
1. Использование оптимистичной стратегии внесения изменений. К локальной копии документа правки должны применяться сразу. И независимо от этого они отправляются на сервер, а от него к другим клиентам, при этом то, как быстро они будут получены и применены, никак не влияет на скорость работы с локальной версией.
Отсюда следует, что состояния документа у клиентов и на сервере могут отличаться. Это формирует следующее требование:
2. Сходимость (convergence). Когда все пользователи закончат свою работу и все уведомления о правках будут доставлены, как на сервере, так и у клиентов должно быть одно и то же состояние документа.
Но это еще не все. Первые два требования можно выполнить с помощью простого, но явно не устраивающего пользователей алгоритма. Если на сервер приходят два конкурирующих изменения, то можно просто игнорировать то, что пришло позже, уведомив соответствующим образом клиентов. Этого будет достаточно, чтобы удовлетворить первые два требования, но явно недостаточно, чтобы сделать счастливым того, чьи изменения были выкинуты. А это значит, что нужно задекларировать еще одно требование:
3. Принцип сохранения намерений (intention preservation). Мы должны обеспечить максимальное сохранение намерений всех пользователей, даже если правки вносятся одновременно и они конкурируют друг с другом.
Мы декларируем, что каждая правка от каждого из пользователей важна для нас и мы не будем отменять ее без необходимости. Необходимость отменить все же может возникнуть. Например, в таких ситуациях, когда один пользователь отредактировал абзац, который параллельно был удален кем-то другим. В этом случае изменения уже просто нельзя применить, так как абзац более не существует.
Второй момент, который стоит упомянуть в контексте этого принципа, — формализация. Понятие «намерение» достаточно абстрактно. Представим, что в тексте есть слово «оптека», которое параллельно исправляют два пользователя, причем по-разному: «аптека» и «оптика». Большинство известных алгоритмов (и наш тоже) работают на уровне букв, и в результате получится «аптика», что не соответствует «высокоуровневым» намерениям обоих авторов. Существуют формализации намерений пользователей на уровне слабых порядков букв («хочу вставить букву “и” после буквы “т”, но перед “к”»). Для некоторых алгоритмов сохранение выраженных таким образом намерений является неотъемлемой их частью (об этом можно почитать здесь).
В нашем случае мы не формализуем намерения пользователей и тем более не даем строгих гарантий их соблюдения, но декларируем, что будем максимально придерживаться этого принципа.
Существуют два алгоритма, которые удовлетворяют всем нашим требованиям: оптимистичное внесение изменений, сходимость и сохранение намерений.
Первый. Differential synchronization. Который в итоге нам не подошел
Алгоритм предполагает постоянный 3-way merge на стороне клиента и сервера, который сопровождается пересылкой патчей в обе стороны. На схеме представлена общая идея.
Более подробное описание можно увидеть на сайте автора.
Вероятно, вы уже догадались, по какой причине этот алгоритм нам не подходит. Правильно, как уже упоминалось, 3-way merge для документа со сложной структурой нетривиален. При этом необходимо иметь формальную гарантию того, что он даст одинаковые результаты при слияниях в разных порядках и направлениях… Это ставит крест на перспективе применения у нас данного подхода.
Второй. Operation Transformation (OT)
Это скорее общий подход, на основе которого разработаны различные алгоритмы.
В основе OT лежит довольно простая идея. Все изменения данных мы описываем как операции, которые пересылаем и преобразуем относительно других без самого документа. Когда операция приходит от одного пользователя к другому, мы ее трансформируем таким образом, чтобы она стала валидной относительно разницы между документами этих двух пользователей, выраженной в операциях. Звучит заумно, но на самом деле принцип довольно простой.
Давайте посмотрим на еще одну схему, которая популярна в статьях об OT.
- Пользователю 1 приходит операция О2 del[2, “c”] от пользователя 2.
- Операция О2 трансформируется относительно операции О1, которой не было у пользователя 2 на момент создания О2.
- В результате получается del[3, “c”], так как перед позицией 2 уже успели вставить один символ и у “с” позиция стала 3.
- Пользователю 2 от пользователя 1 приходит операция О1 ins[0, “x”].
- O1 трансформируется относительно О2, но на этот раз при трансформации операция не меняется и применяется в таком же виде, как и у автора операции — пользователя 1.
Основное требование, которому должны удовлетворять трансформации включения (известное как Transition Property 1), — это:
Inc(O2, O1) * O1 = Inc(O1, O2) * O2,
где * — последовательное применение, справа налево. Для простоты понимания посмотрите на изображение:
Приведенное выше равенство в применении к этой картинке означает, что, начав с одного состояния документа и двигаясь по правой или левой ветке, мы получим одно и то же итоговое состояние. Принципиальным моментом является то, что начинать «движение» мы должны из одного и того же состояния. Если это условие не соблюдать, то результатом будет рассогласованное состояние документов либо трансформированная операция может просто не иметь смысла. Например, вставка символа в неверную или несуществующую позицию документа.
Как я указал выше, существует несколько различных алгоритмов на основе ОТ. Их главным отличием является решение ключевого вопроса: как производить трансформации таким образом, чтобы любые операции, участвующие в трансформации, были над одним и тем же состоянием документа, и, если такой возможности нет, то с помощью каких еще преобразований можно изменить порядок применения операций.
Дело в том, что первые алгоритмы на основе ОТ не предусматривали использования центрального сервера. Все клиенты связывались между собой peer-to-peer. Соответственно, текущее состояние документа у пользователей выражалось последовательностью операций (О1, О2… ОN), при этом в каждый момент времени количество, состав и порядок этих операций у каждого клиента может быть свой. В этом случае нельзя определить единый строгий порядок среди всех генерируемых операций, можно ввести только слабый порядок по happens before критерию. Операции, между которыми нет такого отношения, считаются конкурирующими или параллельными (concurrent).
Подобный подход также несет с собой определенные сложности:
- Производительность. Количество трансформаций может быть очень большим, клиентам приходится хранить всю историю, так как в любой момент может прийти сколь угодно «древняя» операция от другого пользователя.
- Для корректной реализации требования TP-1 уже недостаточно. Приходится требовать еще и как минимум TP-2: Inc(O3, Inc(O1, O2) * O2) = Inc(O3, Inc(O2, O1) * O1). В зависимости от конкретного алгоритма может понадобиться выполнение других требований к трансформациям и обратным операциям (полный список здесь). Если у вас есть набор операций, то эти требования должны быть выполнены для любой пары или тройки, а это далеко не всегда так. При этом, чтобы иметь уверенность в сходимости алгоритма, эти требования необходимо формально верифицировать, то есть доказать, как теорему.
- Сложность. Подобные алгоритмы действительно непростые, и порой в них находят ошибки. Например, один из случаев, потенциально приводящий к ошибке, выглядит вот так:
Интересующиеся классическими peer-to-peer алгоритмами могут найти подробный их обзор и сравнение тут.
Перечисленные выше трудности можно разрешить, если отказаться от равноправности всех клиентов и peer-to-peer соединений. При добавлении центрального сервера состояние документов можно описывать простой ревизией и требовать выполнения не более чем TP-1… Но этой теме будет посвящена уже следующая статья. Обещаю, что для любителей алгоритмов там будет больше интересного.
Первая статья из цикла тем временем подошла к финалу. Буду рад увидеть в комментариях ваши вопросы и пожелания по поводу содержания следующих статей.
При использовании Office и OneDrive или SharePoint можно работать над документами Word, таблицами Excel и презентациями PowerPoint вместе с другими людьми. Совместное редактирование означает, что над документом одновременно работают несколько авторов.
Совет: Check out these YouTube videos from Microsoft Creators to learn more about working in SharePoint. If you’re managing a library, you may also find these videos on documents and libraries helpful
Что нужно для совместного редактирования?
Совместное редактирование поддерживается для документов, сохраненных в OneDrive или SharePoint.
Для совместной работы с другими пользователями требуется следующее:
Общие хранилища, OneDrive, OneDrive для работы и учебы, SharePoint и SharePoint Server, являются общими областями хранения, которые позволяют совместное авторство.
Приложения, поддерживаюющие совместное Word и PowerPoint на всех устройствах и в более последних версиях, чем Office 2010, поддерживают совместное. Совместное Excel мобильных приложений и последней версии Excel для Microsoft 365 поддерживается.
Подходящий документ. Совместное форматирование поддерживается только в современных форматах файлов, включая .docx (Word ), .pptx (PowerPoint ) и .xlsx (Excel ).
Разрешения на редактирование. у всех авторов должно быть разрешение на чтение и изменение документов.
Создание и открытие документов для совместного редактирования
Эти статьи помогут вам научиться совместно работать сOffice документами.
Предоставление общего доступа к документам для совместной работы
Прежде чем начинать совместную работу над документами, необходимо предоставить к ним общий доступ. В приложениях SharePoint, OneDrive и Office можно делиться файлами с другими пользователями.
Дополнительные сведения об общем доступе к документам в OneDrive и SharePoint см. в следующих статьях:
Если вы открываете общий документ в классическом или мобильном приложении, вы можете работать над ним, даже если нет подключения к сети. Другие авторы не будут видеть изменения, которые вы вносите в автономном режиме. Когда вы подключитесь к Интернету, вы получите уведомления о любых новых правках, а ваши изменения станут доступны другим.
Если вы работаете над файлом, который находится в папке синхронизации (такой как OneDrive или OneDrive для работы и учебы), он синхронизируется при восстановлении подключения к Интернету независимо от того, запущено ли приложение (Word, PowerPoint). При повторном подключении файл автоматически синхронизируется. При наличии конфликтов вы получите оповещение. Дополнительные сведения см. в статье Синхронизация файлов с помощью OneDrive в Windows.
По умолчанию в SharePoint группы и разрешения, назначенные для библиотеки, в которой хранится или создается документ, наследуются всеми документами в ней. Например, на сайте группы, где у всех пользователей есть разрешения на чтение и запись, любой из них может участвовать в совместном редактировании. Хотя библиотека SharePoint документов с разрешениями только на чтение, позволяет пользователям только просматривать документы, хотя никто, кроме автора, не может вносить изменения без явного приглашения.
Разрешения SharePoint наследуются, но вы можете задать другие разрешения для определенных пользователей. Если к библиотеке SharePoint открыт общий доступ только на чтение, вы можете предоставить разрешение на изменение некоторым пользователям. Однако если в библиотеке разрешено редактирование для всех пользователей, вы не сможете ограничить разрешения некоторых из них только просмотром. Унаследованные разрешения можно переопределить с помощью разрешения более высокого, но не более низкого уровня. Дополнительные сведения о разрешениях см. вSharePoint.
Файлы, хранимыеOneDrive должны быть явно делиться. По умолчанию их может изменять и просматривать только владелец библиотеки. Вы можете решить, кто сможет редактировать отдельные файлы, предоставив общий доступ на изменение пользователям или группам. Дополнительные о совместном использовании см. в разделе Общий доступ к файлам и папок в Microsoft 365.
Можно ли редактировать документы совместно с пользователями Office 2007 и более ранних версий? Можно ли использовать другое хранилище вместо SharePoint или OneDrive?Да, корпорация Майкрософт совместно работает с десятками партнеров по всему миру (включая Box, Citrix ShareFile, Dropbox и Egnyte), чтобы вы могли совместно работать с Office в Интернете. Обратитесь к поставщику хранилища, чтобы узнать, поддерживается ли совместное Office в Интернете. Однако эти сторонние поставщики хранилищ не поддерживают совместное Office классическими приложениями и другими платформами. Совместное авторство поддерживается в Office в Интернете.
Корпорация Майкрософт не поддерживает совместное авторство документов, хранимых в Google Диск.
Мобильных: Совместное Office файлов также поддерживается в Office для iOS с другими поставщиками хранилищ, включая Box и Dropbox. Совместное Office для Android также поддерживается в Dropbox.
Устранение неполадок совместного редактирования в SharePoint, OneDrive и OfficeЕсли совместное редактирование работает неправильно, это может быть вызвано различными причинами. Сведения о том, как решить проблемы, возникающие при использовании и настройке совместного редактирования, см. в статье Устранение неполадок совместного редактирования в Office.
Как определить, не изменил ли другой автор документ, над которым мы работаем?Другие разделы
Для администраторов SharePoint:
Примечание: Совместное редактирование не поддерживается для документов, защищенных с помощью управления правами на доступ данным (IRM) или службы управления правами (RMS).
Сэкономьте время и ресурсы, работая над документами совместно в Интернете. После публикации документа Word в службе SharePoint или OneDrive любые участники группы могут открывать его и вносить изменения, причем не только по очереди, но и одновременно.
Если файл сохранен на OneDrive или Microsoft SharePoint Server 2013, вы можете работать над ним в Word в Интернете, выбрав команду изменить документ > изменить вWord в Интернете.
Когда другой пользователь открывает документ, приложение Word сообщает об этом и выводит соответствующее уведомление в строке состояния. Чтобы узнать, кто работает над документом вместе с вами, щелкните это уведомление.
Можно узнать, над какими местами документа работают другие пользователи.
Каждый раз, когда вы сохраняете документ, ваши изменения становятся доступны другим людям, которые работают над ним. Изменения отображаются сразу же после того, как они будут сохранены. И все изменения, внесенные ими на экране, выделены зеленым фоном. Фон исчезает при следующем сохранении и не появляется при печати документа.
Редактирование осуществляется в порядке очередности. Когда один пользователь начинает изменять текст, эта область блокируется и никто другой не может перезаписать вносимые изменения. Но если кто-то начинает редактирование в точности в то же время или работает над документом в автономном режиме, приложение Word отображает при следующем сохранении имеющиеся конфликты. В этом случае нужно выбрать изменения, которые следует сохранить.
Когда нужно приложение Word
Иногда вы не сможете редактировать документ в Word в Интернете.
Например, если документ содержит примечания или исправления, Word в Интернете предложит открыть документ в Word, прежде чем можно будет вносить изменения.
Дополнительные сведения о ситуациях, в которых может потребоваться открыть документ в Word, см. в статье Различия при работе с документом через браузер и в приложении Word.
Если функция совместного редактирования не работает
Если поработать над документом совместно не удается, проверьте указанные ниже параметры.
Версия Word
Может быть, другой пользователь работает с Word 2007? Совместное редактирование поддерживается в Word 2013, Word 2010 и Word для Mac 2011, но не в более ранних версиях Word.
Тип файла
Документ сохранен в формате DOC? Если да, над документом можно поработать совместно, преобразовав его в формат DOCX.
Пометка окончательной версии
Помечен ли документ как окончательный? Если да, но в него нужно внести изменения, выберите пункт Все равно редактировать в строке в верхней части документа.
Параметры сохранения
Установлен ли для документа флажок Сохранять случайные числа для улучшения точности объединения? Выберите пункт Файл > Параметры > Центр управления безопасностью > Параметры центра управления безопасностью > Параметры конфиденциальности. В разделе Параметры для конкретного документа проверьте состояние флажка Сохранять случайные числа для улучшения точности объединения.
Параметры политики
Какие параметры политики действуют? Некоторые параметры политики Microsoft Office, такие как "Отключить клиентскую политику автообъединения", "Отключить клиентскую политику совместного редактирования" и "Отключить серверную политику совместного редактирования", делают совместное редактирование невозможным.
Содержимое документа
Содержит ли документ объекты OLE, макросы или наборы фреймов HTML? Имеются ли в документе элементы управления ActiveX? Является ли документ главным или вложенным? Если хотя бы на один вопрос вы ответили утвердительно, совместное редактирование невозможно.
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).
«Корпорация Зла» (joke) осваивает нишу совместной работы с документами уже второе десятилетие. Начиналось всё с ранних версий SharePoint, при упоминании которых котики поопытнее сразу начинают плакать – уж больно специфичен с точки зрения и настроек, и возможностей был в те далекие годы MS SP. Ладно, не будем больше травмировать друг друга воспоминаниями о том неуклюжем монстре…
Но упорства у Microsoft не занимать – работа по улучшению ситуации велась все это время, причем сразу на нескольких фронтах. В результате сейчас можно говорить о сложившейся инфраструктуре совместной работы с документами, которую предлагает Microsoft. В ней выделяются два класса софта:
- Средства коллективного доступа к документам, включающие в себя каталогизацию, управление версиями, раздачу прав и тому подобные серверные фичи. Эти средства, в свою очередь, подразделяются на облачные (OneDrive, SharePoint Online) и on-premise, то есть разворачиваемые в инфраструктуре самого заказчика — сервер SharePoint 2016.
- Средства редактирования документов. К ним относятся: десктопное семейство Microsoft Office (тоже сильно переработанное за последнее время), свежесочиненные мобильные версии Office, изначально ориентированные на совместную работу с документами, и, вишенкой на торте – собственная реализация сервера онлайн-редактирования документов Office Online apps (несколько ранее известного под именем Office Web Apps).
В итоге у нас появилась идея рассказать, как собственно об этих возможностях, так и о том, как все это хозяйство установить и настроить. Попробуем добраться и до сравнения с альтернативными сервисами. Поскольку понятно, что такой лонгрид и писать долго, и читать его осилит не каждый, мы решили разделить это на несколько статей. Эта – первая. И в ней дальше мы пройдемся по тем фичам и особенностям, которые есть у каждого из продуктов Microsoft, обеспечивающих совместное редактирование документов: Office Online, MS Office на десктопах и он же на мобильных устройствах. Сразу предупреждаю – дальше будет много внимания к деталям и разжевывания мелких особенностей, нетерпеливый читатель может сразу прочитать «выводы» в конце заметки, для остальных – поехали.
Office Online
Office Online Server – это довольно интересное приложение, про которое не все еще хорошо знают. Во-первых, это возможность сократить количество лицензий и установок MS Office. Во-вторых, расширение возможности доступа и редактирования документа, грубо говоря – нужен только браузер. В-третьих, это самые лучшие на сегодня у Microsoft возможности совместной работы. Давайте посмотрим, о чем я.
Word Online
Excel Online
В Excel Online изменения в ячейке отобразятся у других соавторов только при переходе первого на следующую ячейку. При этом ячейки не блокируются и вносить изменения могут сразу несколько пользователей.
PowerPoint Online
PowerPoint Online позволяет работать одновременно над одним слайдом, но лучше работать над разными элементами, иначе пользователи не видят real time изменений друг друга.
Настольная версия Office
Опыт совместной работы с документами через Office Online оставляет приятные впечатления, когда речь идет о правках текста без необходимости значительных изменений форматирования. Если вам захочется вставить диаграммы, smart art, оглавление, макросы, форматировать таблицы, использовать формулы и т.д. тут придётся использовать настольную версию программ. О разнице функционала настольной версии и online можно писать отдельную статью. Здесь же рассмотрим отличия, связанные с совместной работой.
MS Word
При редактировании в настольной версии программы блокируется абзац, над которым работает другой пользователь.
Вносимые изменения станут видны другим соавторам только после их сохранения автором и обновления документа остальными пользователями.
Сохранение-обновление объединено в кнопке Save (Ctrl+S) Наличие обновлений индицируется иконкой напротив имени автора.
MS Excel
В случае с Excel возможности одновременной работы над документом нет. Нам предлагают либо всем перейти в онлайн версию –
либо встать в очередь —
MS PowerPoint
Напротив, в PowerPoint ни блокировки, ни обозначения элемента, над которым работает другой пользователь нет. Так что, о том, что кто-то ещё работает над той же презентацией, вы можете понять разве что через панель Share.
Наличие обновлений сигнализируется малоприметным статусом Updates Available. Статус появляется только после сохранения изменений автором, сами изменения появляются после обновления документа с помощью Save (Ctrl+S).
Мобильные устройства
Microsoft Word App и Microsoft PowerPoint App
При работе на Android абзац или элемент, над которым работает пользователь, не блокируется и возможна одновременная работа с ним, но и ничего не подсвечивается для других соавторов, Правки отображаются без дополнительных действий с небольшой задержкой. То, что кто-то другой работает над этим же элементом, можно видеть в меню “Share”.
Интересно было бы ещё протестировать на Windows Phone с Windows 10. Но в компании таких не нашлось.
Microsoft Excel App
Совместная работа real time в Excel App не поддерживается.
Выводы
В целом, функциональность совместного редактирования документов от Microsoft можно считать состоявшейся, хотя разные компоненты реализуют ее по-разному. Сам по себе процесс совместного редактирования лучше всего реализован в Office Online – это реальный co-working. В список вещей, на которые можно смотреть вечно, добавлю себе движущиеся по экрану флажки с именами коллег и постепенно заполняющийся сам по себе документ. Но, к сожалению, за полноценным функционалом редактирования как такового по-прежнему придётся обращаться к настольным версиям программ, в которых ещё осталась и нужна кнопка сохранения, а также не так удобно реализован процесс совместной работы (больше всего пока страдает Excel, где все так и осталось на уровне чекина-чекаута).
В следующей заметке мы расскажем, как осуществить процесс разворачивания on-premise компонент совместного доступа в корпоративной инфраструктуре. Ферма SharePoint 2016, Office Online Server, публикация – вот это все. Не отключайтесь.
Читайте также: