Оформление диалога редактирования данных
От: Legion13  
Дата: 13.04.08 15:53
Оценка:
Здравствуйте!

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

"Перечитать" — отменяет все изменения, заново запрашивает данные с сервера и отображает их, не закрывает диалог.
"Записать" — отправляет изменения на сервер, не закрывает диалог.
"ОК" — отправляет изменения на сервер, закрывает диалог.
"Отмена" — отменяет все изменения, закрывает диалог.

Вопрос — есть ли стандарты на названия оснвных операций? Например, вместо "Записать" всегда использовали "Сохранить", но человек, отвечающий за данный участок работ посчитал, что "Записать" будет понятнее пользователям, и что "Сохранить" привычно только нам, программистам. Мотивировал тем, что знакомый бухгалтер подтвердил, что да, "Записать" понятнее. Ну и в 1С 8.0 используется именно такая терминология.
Также интересует, есть ли более подходящие названия для операции, которая сейчас названа "Перечитать" (так же, как и в 1С).

Интересны ваши мнения, как вы решаете подобные вопросы, правильность терминологии, имеюся ли соответствующие стандарты (приложение для Windows XP/Vista, платформа .NET 2.0)

Спасибо!
Re: Оформление диалога редактирования данных
От: adontz Грузия http://adontz.wordpress.com/
Дата: 13.04.08 16:21
Оценка: 3 (1)
Здравствуйте, Legion13, Вы писали:

Мне этот интерфейс не нравится.

Кнопка "Перечитать" идеологически лишняя и неправильная.
Если идёт борьба с конфликтами версий, то они должны разрешаться в момент записи изменений.
Если речь идёт об обновлении данных, то не ясно зачем принудительно удалять все изменения, когда правильнее сливать новую серверную версию с локальной рабочей, опять таки разрешая конфликты.
Если хочется вернуться в исходное состояние, то можно добавить кнопку "Сброс", хотя на мой взгляд логичнее заново открывать диалог.

Что касается кнопки "Записать", то она на мой взгляд достаточно спорная как сущность. Меня всегда раздражала кнопка "Применить"/"Apply", так как после её нажатия, нажатие на кнопку "Cancel"/"Отмена" по сути ничего не делает. Лучше, чтобы нажатие на кнопку "Отмена" отменяло изменения даже после нажатия кнопки "Сохранить". Да, писать надо именно "Сохранить". Остальные переводы можно посмотреть по следующей ссылке
http://www.microsoft.com/downloads/details.aspx?FamilyId=25018024-2DFD-4229-9763-05F78FEAF2FF&displaylang=en

"OK" по сути своей плохое название. На кнопках надо писать глаголы. Лучше всего сделать кнопку Выход/Закрыть и спрашивать уже там, в диалоговом окне вида Yes/No/Cancel стоит ли записывать изменения.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Оформление диалога редактирования данных
От: grosborn  
Дата: 14.04.08 13:03
Оценка:
> Кнопка "Перечитать" идеологически лишняя и неправильная.

Есть два отработанных варианта: блокировка набора данных (И-объекта) и вариант без блокировки, с кнопкой "Перечитать". Первый вариант не универсален, то есть не везде его можно организовать технически.

> Если идёт борьба с конфликтами версий, то они должны разрешаться в момент записи изменений.


Это никак. Как ты из двух версий соберешь итоговый объект?

> Если речь идёт об обновлении данных, то не ясно зачем принудительно удалять все изменения, когда правильнее сливать новую серверную версию с локальной рабочей, опять таки разрешая конфликты.

> Если хочется вернуться в исходное состояние, то можно добавить кнопку "Сброс", хотя на мой взгляд логичнее заново открывать диалог.

"Перечитать" или "Обновить" это переход к более новой версии объекта. "Сброс, Отмена" — переход к устаревшей версии. Зачем нам устаревшая?

> Что касается кнопки "Записать", то она на мой взгляд достаточно спорная как сущность. Меня всегда раздражала кнопка "Применить"/"Apply", так как после её нажатия, нажатие на кнопку "Cancel"/"Отмена" по сути ничего не делает. Лучше, чтобы нажатие на кнопку "Отмена" отменяло изменения даже после нажатия кнопки "Сохранить". Да, писать надо именно "Сохранить".


Ниче не понял. Мне лично Записать == Сохранить (как кому больше нравится), а вместо Отмена и Cancel в формах использую Close и Закрыть. Как-то противоречий не встречал.
...
Да, Сохранить (Save) несколько более абстрактное понятие, может включать дополнительные операции кроме самой операции записи (Write). Ввообще-то я Сохранить-Save обычно использую. Как-то более по смыслу подходит. Использование Write и Apply ограничено...

> "OK" по сути своей плохое название. На кнопках надо писать глаголы. Лучше всего сделать кнопку Выход/Закрыть и спрашивать уже там, в диалоговом окне вида Yes/No/Cancel стоит ли записывать изменения.


"ОК" соглашусь, не очень хорошо. Но альтернатив пока не нашел.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[3]: Оформление диалога редактирования данных
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.04.08 16:11
Оценка:
Здравствуйте, grosborn, Вы писали:

>> Если идёт борьба с конфликтами версий, то они должны разрешаться в момент записи изменений.

G>Это никак. Как ты из двух версий соберешь итоговый объект?

Спрошу у пользователя какую оставить.

G>Зачем нам устаревшая?


Затем что понял — был не прав

>> "OK" по сути своей плохое название. На кнопках надо писать глаголы. Лучше всего сделать кнопку Выход/Закрыть и спрашивать уже там, в диалоговом окне вида Yes/No/Cancel стоит ли записывать изменения.


G>"ОК" соглашусь, не очень хорошо. Но альтернатив пока не нашел.


"OK" это универсальное решение. Как и всякое чрезмерно универсальное решение — оно плохое. Скажем в диалоге переименования объекта кнопки Rename/Cancel смотрятся лучше, чем OK/Cancel. В диалоге удаления Delete/Cancel, в диалоге создания Create/Cancel и т.д.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Оформление диалога редактирования данных
От: grosborn  
Дата: 15.04.08 12:09
Оценка:
> G>Это никак. Как ты из двух версий соберешь итоговый объект?
>
> Спрошу у пользователя какую оставить.

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

Вот представь: открыл ты документ, поправил дату, сохраняешь — а она тебе: уважаемый пользователь, вот тут у меня образовались две версии документа, какую выберешь??? А документ — вторая часть гражданского кодекса

Поскольку такие случаи бывают, стандартное поведение должно их учитывать.


> G>Зачем нам устаревшая?

>
> Затем что понял — был не прав

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

Более правильным является возможность выбора либо свей уже отредактированной версии, либо сохраненной другим пользователем. Но по результату записи документа другим пользователем, версия по состоянию на момент чтения данных формы, а как следствие и текущая отредактированная версия уже могут стать некорректными. Например — необратимые операции удаления объекта или операции удаления ссылок из текущего объекта и удаления зависящих объектов. поэтому собственно и остается один вариант — Обновить.
Это в общем случае. А конкретная реализаци логики работы может позволять и такое поведение, как у тебя. Может быть и так, что сейчас она позволяет так делать, а завтра логика потребует приведения к типовому поведению. Поэтому лучше не заморачиваться и делать стандартно.

>>> "OK" по сути своей плохое название. На кнопках надо писать глаголы. Лучше всего сделать кнопку Выход/Закрыть и спрашивать уже там, в диалоговом окне вида Yes/No/Cancel стоит ли записывать изменения.

>
> G>"ОК" соглашусь, не очень хорошо. Но альтернатив пока не нашел.
>
> "OK" это универсальное решение. Как и всякое чрезмерно универсальное решение — оно плохое. Скажем в диалоге переименования объекта кнопки Rename/Cancel смотрятся лучше, чем OK/Cancel. В диалоге удаления Delete/Cancel, в диалоге создания Create/Cancel и т.д.

Точно так. Примеры только вот натянутые. Create соглашусь, а удалить и переименовать отдельных форм обычно не требуют.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[5]: Оформление диалога редактирования данных
От: adontz Грузия http://adontz.wordpress.com/
Дата: 15.04.08 18:06
Оценка:
Здравствуйте, grosborn, Вы писали:

G>В общем случае пользователь не может сравнить две версии и сказать, какая корректная.


В общем случае программа это может в ещё меньшей степени. Не давать перезаписать версию более позднюю, чем изначально редактировавшаяся, как и перезаписывать безусловно — не выходы.

G>Вот представь: открыл ты документ, поправил дату, сохраняешь — а она тебе: уважаемый пользователь, вот тут у меня образовались две версии документа, какую выберешь??? А документ — вторая часть гражданского кодекса


Ну править кодекс будет юрист, так что он разберётся что правильнее. Потом проблема абсолютно надуманная. Все пользователи VCS пользуются тем или иным видом Merge и не плачут.

>> G>Зачем нам устаревшая?

>> Затем что понял — был не прав
G>Нет, не так.

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

G>Более правильным является возможность выбора либо свей уже отредактированной версии, либо сохраненной другим пользователем. Но по результату записи документа другим пользователем, версия по состоянию на момент чтения данных формы, а как следствие и текущая отредактированная версия уже могут стать некорректными. Например — необратимые операции удаления объекта или операции удаления ссылок из текущего объекта и удаления зависящих объектов. поэтому собственно и остается один вариант — Обновить.


Это далеко не единственный вариант. Просто правильный вариант всегда сложнее. Скажем объекты можно никогда не удалять, а только помечать как удалённые. Тогда новая, ссылающаяся на ранее удалённые объекты, версия запросто "оживит" их записью одного bool. Ну и т. д.

G>Поэтому лучше не заморачиваться и делать стандартно.


Ну вот пример с объектами выше взят из Active Directory, где БД распределённая и ни один объект сразу не удаляется. Это считается стандартно? Вообще что значит стандартно?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Оформление диалога редактирования данных
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 17.04.08 15:56
Оценка:
Здравствуйте, Legion13, Вы писали:

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


Вроде бы обычный CRUD...

L>"Перечитать" — отменяет все изменения, заново запрашивает данные с сервера и отображает их, не закрывает диалог.

L>"Записать" — отправляет изменения на сервер, не закрывает диалог.
L>"ОК" — отправляет изменения на сервер, закрывает диалог.
L>"Отмена" — отменяет все изменения, закрывает диалог.

L>Вопрос — есть ли стандарты на названия оснвных операций? Например, вместо "Записать" всегда использовали "Сохранить", но человек, отвечающий за данный участок работ посчитал, что "Записать" будет понятнее пользователям, и что "Сохранить" привычно только нам, программистам. Мотивировал тем, что знакомый бухгалтер подтвердил, что да, "Записать" понятнее. Ну и в 1С 8.0 используется именно такая терминология.


Лучше "Сохранить" и "Сохранить и закрыть" — привычно ("интуитивно понятно") и прозрачно. "Записать" и "Записать и закрыть" — будет уже не так красиво/привычно/гладко.

L>Также интересует, есть ли более подходящие названия для операции, которая сейчас названа "Перечитать" (так же, как и в 1С).


На Маках старых часто видел "Revert"/"Вернуть". Вообще, неочевидная для пользователя операция — куда проще нажать "Отменить" и снова щёлкнуть по строке — я сам обычно так делаю, кто его знает этого программиста, что у него за "Перечитать"...

L>Интересны ваши мнения, как вы решаете подобные вопросы, правильность терминологии, имеюся ли соответствующие стандарты (приложение для Windows XP/Vista, платформа .NET 2.0)


У MS есть "Localization Glossary" для различных языков, в котором приведены сообщения и названия пунктов для различных программ.

http://www.microsoft.com/globaldev/tools/MILSGlossary.mspx
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.