none
EditForm.aspx со вложением -> отредактировать attachment онлайн -> нажать "Save" на форме --> и всё, "Save Conflict error" RRS feed

  • Вопрос

  • Привет!

    Если есть EditForm.aspx форма с аттачментом, и аттачмент отредактировать в новой вкладке(SpOnline2013, правой кнопкой на аттачменте - открыть в новой вкладке, отредактировать что-нибудь), то форма уже не сохранится:

    "Save Conflict. Your changes conflict with those made concurrently by another user."

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

    Вот тут люди меняют какую-то мифическую настройку "unprotected", которой нет. Смена настройки "Read/Edit all items" оттуда тоже не помогает
    https://social.technet.microsoft.com/Forums/en-US/dd1a1437-769c-4fc3-9346-4cdcbbb3289c/save-conflict-when-editing-or-uploading-attachments-to-list-item?forum=sharepointgeneralprevious

    Как можно обойти? Может как вариант попробовать включить "AllowUnsafeUpdates", но не уверен смогу ли её включить в Online. но не думаю что поможет. Или может быть можно как-то проверять или рефрешить аттачменты перед срабатыванием кнопки Save? 

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

    upd.: Попробовал обновить элемент в PreSaveAction, получаю ту же ошибку(ну в данном случае понятно - я сам и спровоцировал конфликтное изменение). Но как же разрешить нормально редактировать вложения не портя Edit форму


    function PreSaveAction() {
    // Get current iten and list ID
    JSRequest.EnsureSetup();
    var itemId = JSRequest.QueryString["ID"];
    var listId = _spPageContextInfo.pageListId;

    // Update current item
    var context = SP.ClientContext.get_current();
    var web = context.get_web();
    var list = context.get_web().get_lists().getById(listId);
    var item = list.getItemById(itemId);
    item.update();

    context.executeQueryAsync(function() {
    console.log("Item updated successfully");
    }, function() {
    console.log("Error updating item");
    });

    // delay here
    // ..
    return true;
    }

    • Изменено Rockie_ 23 марта 2017 г. 13:00 updated
    23 марта 2017 г. 11:01

Ответы

  • . Но как же разрешить нормально редактировать вложения не портя Edit форму

    Добрый день.

    мне видится только один вариант - выносить вложения в библиотеку.

    1. можно редактировать и не будет конфликта сохранения

    2. можно хранить версию по файлу.


    мой блог Немного о SharePoint

    • Помечено в качестве ответа Rockie_ 23 марта 2017 г. 15:50
    23 марта 2017 г. 13:21
    Модератор

Все ответы

  • . Но как же разрешить нормально редактировать вложения не портя Edit форму

    Добрый день.

    мне видится только один вариант - выносить вложения в библиотеку.

    1. можно редактировать и не будет конфликта сохранения

    2. можно хранить версию по файлу.


    мой блог Немного о SharePoint

    • Помечено в качестве ответа Rockie_ 23 марта 2017 г. 15:50
    23 марта 2017 г. 13:21
    Модератор
  • Добрый день Владимир!

    Да, lookup поле для документов решает вопрос, правда в отличие от аттачментов они не отображаются кликабельно на Edit формах(да и на Disp тоже..), так что для этого придётся городить "костыли"..

    Эх, жаль какая была хорошая идея с аттачментами но SharePoint подсунул "котлету")

    Спасибо вам за ответ, к сожалению это скорее всего это действительно единственный вариант для

    нормально редактировать вложения не портя Edit форму



    Independent SharePoint Developer, freelancer http://blog.sharepoint-develop.com/

    23 марта 2017 г. 15:50