Форум русскоязычного сообщества Ubuntu


Автор Тема: LibreOffice Calc. Защита листа с возможностью скрытия строк  (Прочитано 1774 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн luu

  • Автор темы
  • Активист
  • *
  • Сообщений: 674
  • шта?
    • Просмотр профиля
Возможно ли сделать так, чтобы Лист был защищен. Несколько ячеек в нем - открыты для редактирования. Но при этом пользователь мог бы скрывать/отображать необходимые ему строки/столбцы?
Если да, то как?

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5659
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Начните с постановки самой задачи, а не обсуждения метода её решения(возможно следует выбрать другой путь достижения цели)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн luu

  • Автор темы
  • Активист
  • *
  • Сообщений: 674
  • шта?
    • Просмотр профиля
Azure, Ok.

Итак, имеется таблица в диапазоне A1:D40. Необходимо заполнить ее данными.
Данные для этой таблицы берутся от разных пользователей. Например:
Пользователь 1 заполняет строки 1-10
Пользователь 2 заполняет строки 11-20
Пользователь 3 заполняет строки 21-30
Пользователь 4 заполняет строки 31-40.

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

И все бы ничего, но Пользователю 1 очень неудобно работать со всей таблицей, он хочет скрыть лишние строки, которые ему нет необходимости заполнять.
Аналогично со всеми остальными пользователями. Осложняется все тем, что необходимые к заполнению строки могут меняться. Например, сегодня Пользователь 1 заполняет 1-10 строки таблицы, а завтра ему понадобится дополнительно указать данные в строках 15-17.

Собссно, сабж. Как улучшить?
« Последнее редактирование: 26 Июль 2016, 11:37:16 от luu »

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5659
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Например каждый пользователь заполняет таблицу на отдельном листе (в отдельном файле) где только его данные (можно даже через форму). Для получения итоговой таблицы выполняется Сводная таблица либо просто объединение.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн luu

  • Автор темы
  • Активист
  • *
  • Сообщений: 674
  • шта?
    • Просмотр профиля
Например каждый пользователь заполняет таблицу на отдельном листе (в отдельном файле) где только его данные (можно даже через форму).
Не вариант. Невозможно определить жестко какие данные к какому пользователю относятся. Сегодня определенную часть таблицы заполняет один, завтра - другой, послезавтра - третий. Это происходит без участия "Администратора", определяется, по сути, самими пользователями. А "Администратору" - нужно свести воедино.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11891
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
luu, у вас в требованиях (не сколько я понял) разделение полномочий и авторизованность доступа к данным.
Просто таблицами такое решить практически не возмможно.

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

Но вообще - задача уже для нормальной реляционной базы данных.....
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн tagezi

  • Оператор IRC
  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
Например каждый пользователь заполняет таблицу на отдельном листе (в отдельном файле) где только его данные (можно даже через форму). Для получения итоговой таблицы выполняется Сводная таблица либо просто объединение.
+1

Не вариант. Невозможно определить жестко какие данные к какому пользователю относятся. Сегодня определенную часть таблицы заполняет один, завтра - другой, послезавтра - третий. Это происходит без участия "Администратора", определяется, по сути, самими пользователями. А "Администратору" - нужно свести воедино.
Вы просто не понимаете что у вас происходит.
Либо вы заполняете таблицу рандомно, и тогда не имеет значения в какие поля что попадает... и пользователя можно вообще исключить, достаточно =RANDBETWEEN(начало_множества, конец_множества)
Либо у вас есть структура начального и конечного документов, тогда вам всё равно кто что заполнит, в итоговой таблице вы просто всё собираете в кучу по порядку.
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

Оффлайн luu

  • Автор темы
  • Активист
  • *
  • Сообщений: 674
  • шта?
    • Просмотр профиля
Sly_tom_cat,
Ни о каких линках не может быть и речи. Пользователи вносят данные в свои файлы на разных машинах с разными ОС. Потом это просто пересылается по е-почте "Администратору", который ручками это все сводит.

В том и суть. Про БД тоже речь не идет - слишком сложно.

Пользователь добавил сообщение 26 Июль 2016, 13:55:52:
tagezi, не-не. никаких рандомов.

Попробую на примере. Нам нужно получить файл с таблицей вида:

Причем все показатели и значения - это вполне реальные вещи. Т.е. показатели каких-то процессов и конкретные значения (изменяющиеся во времени).

Значения каждого показателя берутся от пользователей, которые физически находятся в разных местах и работают на разных машинах. Они заполняют только столбец B, т.е. от них мы получаем данные, в виде:
user 1user 2user 3user 4
После этого столбец B из каждого присланного файла ручками копируется в таблицу "Администратора" с галочкой "Сложить" и получается необходимая таблица. Т.е. набор значений по каждому показателю за определенный период.

Однако, в следующем периоде, файлы могут иметь вот такой вид:
user 1user 2user 3user 4
И точно так же, при копировании всех значений из каждого присланного файла, в итоге получается искомая таблица.
Проблема в том, что реальная таблица состоит отнюдь не из 40 строк. И пользователям неудобно искать нужные им ячейки. Например, если таблица состоит из 300 строк (читай - показателей), а пользователю нужно внести значения только по трем из них.
« Последнее редактирование: 26 Июль 2016, 13:55:55 от luu »

Оффлайн tagezi

  • Оператор IRC
  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
... многобукв...
Именно так я себе всё и представлял.
Защита ячеек тут вообще не причем. У вас есть входящий документ, в котором есть имя показателя и его значение, и исходящий документ, с именем показателя и ячейкой, куда нужно подставить значение. Число пользователей у вас ограничено (да даже если и нет)... вы просто собираете свои 100500 документов в один итоговый... Сделать это можно разными способами, при помощи формул или при помощи макросов.Используйте то что лучше понимаете. Макрос там будет строк 50 от силы, если с песнями и плясками на костылях. А вообще строк 15. Я бы наверное решал макросом, так как можно использовать циклы, а не только разветвления.

(Нажмите, чтобы показать/скрыть)
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

Оффлайн luu

  • Автор темы
  • Активист
  • *
  • Сообщений: 674
  • шта?
    • Просмотр профиля
tagezi, Не совсем все так. Т.е. да, можно просто копировать из почтового ящика присланные заполненные файлы, администратору дать отдельный файл, в котором будут собираться данные из присланных файлов и собираться в одну общую таблицу. Это вопрос отдельной темы.
Но вопрос сейчас не про то, как автоматизировать сбор данных из присланных пользователями, а про то, как этим самым пользователям облегчить жизнь.
Пример:
User 1 сегодня должен предоставить данные по показателям 3, 7 и 12.
ОжидаемоеВариант 1Вариант 2
Соответственно, мы ожидаем увидеть вот это:Однако в результате получаем вот это:Или вот это:
Т.е. в первом варианте пользователь, ввиду того, что ему неудобно искать разнесенные показатели, просто вписал их и значения в соседние строки. С первого взгляда - вполне себе жизнеспособно. Можно смотреть на наименование показателя и в заполняемой таблице подставлять значение, соответствующее этому показателю. Но затем получаем второй вариант, где пользователь изменил наименование показателя на удобное ему. Но наименования показателей - достаточно специфичные и должны быть в первозданном варианте.
Поэтому реализован такой вариант: Лист защищен, с ячеек в столбце B защита снята, чтобы пользователи могли вносить значения показателей, не меняя при этом наименования показателей. Но при таком варианте пользователь не может скрыть "лишние" для него строки. Вот и вопрос - как ему (пользователю) помочь, не добавляя головной боли администратору?

(Нажмите, чтобы показать/скрыть)

Оффлайн tagezi

  • Оператор IRC
  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
пользователям облегчить жизнь.
Делается шаблон, в первой колонке делаете выпадающий список с параметрами, из которого пользователь выбирает их. Если пользователю очень сложно смотреть в 40 параметров, что бывает не так часто, то можно сделать первой колонкой Категории параметров (40 параметров всегда можно разделить естественным образом хотя бы на 2 категории, обычно больше), второй параметры. Тот же принцип, пользователь выбирает категорию, по этой категории формируется список для второй колонки, выбирает параметр и заполняет поле со значением.
Всё это решается без программирования, стандартными средствами. Данные -> Проверка -> Диапазон ячеек
Справочник:

Два выпадающих списка как описано выше:

Настойка второго списка:


OFFSET($Номенклатура.$B$1:$CA$1;MATCH(A162;$Номенклатура.$A$2:$A$100;0);0)Лист справочника можно скрыть.

Отдельно по поводу защиты ячеек: Я бы вам рекомендовал никогда этим не пользоваться... Поо личному опыту, всё равно всё сломают... лучше организовывать работу так, чтобы человеку было проще и удобнее сделать, чем тратить время и ломать.
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

Оффлайн luu

  • Автор темы
  • Активист
  • *
  • Сообщений: 674
  • шта?
    • Просмотр профиля
tagezi, За идею формирования списка проверки исходя из значения ячейки - большое спасибо. Пригодится.

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

После этого был выбран вариант с указанием всех возможных показателей (около 300). Но здесь появилась проблема Варианта 2.

Вот как это победить без защиты ячеек - не знаю.



Оффлайн tagezi

  • Оператор IRC
  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
Вот как это победить без защиты ячеек - не знаю.
При вашей постановке задачи, защита ячеек вам вообще не нужна.
Ваш вариант - найти IT-специалиста, который сможет грамотно проанализировать комплекс задач и решить его, сделав вам шаблон.

После этого был выбран вариант с указанием всех возможных показателей (около 300). Но здесь появилась проблема Варианта 2.
Если вы всё таки настаиваете на решении своей задачи таким способом, пишите макрос. Общий алгоритм: Слушаем есть ли скрытие/показ столбцов -> снимаем защиту -> Скрываем/показывает столбцы -> Ставим защиту
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

Оффлайн luu

  • Автор темы
  • Активист
  • *
  • Сообщений: 674
  • шта?
    • Просмотр профиля
Если вы всё таки настаиваете на решении своей задачи таким способом, пишите макрос. Общий алгоритм: Слушаем есть ли скрытие/показ столбцов -> снимаем защиту -> Скрываем/показывает столбцы -> Ставим защиту

Хм... ОК. А если пользователи используют разные офисные пакеты (LO, MSO) и могут сохранять файлы в разных форматах, соответственно - можно добиться того, что макрос будет одинаково отрабатывать у всех пользователей? Или это нереально?

Оффлайн tagezi

  • Оператор IRC
  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
Хм... ОК. А если пользователи используют разные офисные пакеты (LO, MSO) и могут сохранять файлы в разных форматах, соответственно - можно добиться того, что макрос будет одинаково отрабатывать у всех пользователей? Или это нереально?
В-принципе, нереальных вещей не существует, существует ограничение ресурсов.
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

 

Страница сгенерирована за 0.07 секунд. Запросов: 24.