Удалить дубликаты

Автор kompilainenn, 8 сентября 2018, 12:18

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

kompilainenn

Расширение "Удалить дубликаты" должно полностью повторять одноименный функционал в MS Excel.

1. Нужен одноименный диалог, в котором можно будет выбирать нужные столбцы, в которых есть данные
2. Пункт, запускающий диалог, нужно будет поместить в меню Данные (Data)

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

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

Доступна версия 1.0.2 расширения, выкладываю
Доступна версия 1.0.4 расширения, выкладываю
Доступна версия 1.0.5 расширения, выкладываю

Выложил расширение на оф.сайт https://extensions.libreoffice.org/extensions/remove-duplicates-fast

Бага: если в удаляемом диапазоне было задано условное форматирование, то после отмены действия расширения, диапазон УФ разбивается на части и естественно УФ ломается. Я поймал на Гистограммах

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

Цитата: kompilainenn от  8 сентября 2018, 12:18
Расширение "Удалить дубликаты" должно полностью повторять
и, возможно, дополнять (если уж вешаться, то на самом высоком дереве - повторять существуещее не очень-то интересно)
Цитата: kompilainenn от  8 сентября 2018, 12:18
одноименный функционал в MS Excel.
1. Нужен одноименный диалог, в котором можно будет выбирать нужные столбцы, в которых есть данные
уточнять диапазон (если автомаически выбралось больше или меньше, чем хотелось), задавать параметры "неточного соответствия" (по первым N символам, по тексту до/после какого-то символа-разделителя, по маске)
Цитата: kompilainenn от  8 сентября 2018, 12:18
2. Пункт, запускающий диалог, нужно будет поместить в меню Данные (Data)
после пункта Ещё фильтры, или в меню Правка после Найти и заменить, или в меню Лист перед Очистить ячейки
Цитата: kompilainenn от  8 сентября 2018, 12:18
Сам процесс пиления щас подумаем, как организовать
Ага, щас...
Пилить не сложно. Ограничений просто много. И вот тут пока не понятно, как с ними быть:
1. Объединенные ячейки - останавливать процесс, типа, плохие данные? Проверять все ли ячейки в диапазоне объединены одинаково и все-таки пытаться удалить дубли (Excel, похоже, именно так пытается поступать)? Разобъединять, удалять, и опять объединять (если не удалились)?
2. Значения - работаем с текстом в ячейке или с содержимым?
08.09.18; 8 Сентябрь, 2018; 2018-09-08 00:00:00; 43351 - это дубли или разные значения?
3. Формулы - оставляем формулы или подменяем результатом вычислений? А ссылки в формулах не поплывут после удаления предыдущих строк? А что делать с #REF!, если удалена строка, на которую формула раньше ссылалась?
4. Форматы - ну, здесь-то, вроде бы, всё просто: оставляем родной формат ячейки. Вот только какой из родных ячеек - той, что и была на этом месте до удаления и сдвига всех строк, или той, данные из которой в это место переползли?

(Приготовься, список ещё не полный - просто не хочу много писать за один раз)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от  8 сентября 2018, 11:51Приготовься, список ещё не полный - просто не хочу много писать за один раз
Держите JohnSUN-а семеро, а то он нам тут напишет списков ;D

Дубликаты легко удаляются стандартным фильтром (в любом офисе), расширение проще не будет.

kompilainenn

Цитата: rami от  8 сентября 2018, 12:37Дубликаты легко удаляются стандартным фильтром (в любом офисе)
это тебе легко, а я вчера парился и ругался матом, как же неочевидно в либре и как элементарно в МС Эксель
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

Цитата: rami от  8 сентября 2018, 14:37
Дубликаты легко удаляются стандартным фильтром (в любом офисе), расширение проще не будет.
+1. Но это при условии, что функционал расширения просто продублирует работу фильтра.
И вот тут-то можно развернуться, дополнительные опции - возможно, точно так же скрывающиеся в диалоге за кнопочкой Параметры - могут дать свежую струю (Кто сказал "Хи-хи?" - выйди из класса)

Вот вопрос тебе на засыпку: а слабо не подглядывая в работу реального фильтра ответить на мой вопрос из п.2? И - каким бы не был ответ - а почему именно так?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

>уточнять диапазон (если автомаически выбралось больше или меньше, чем хотелось), - в список столбцов попадают ВСЕ столбцы, в которых есть данные. При этом ни один столбец не выбран по умолчанию.

>задавать параметры "неточного соответствия" (по первым N символам, по тексту до/после какого-то символа-разделителя, по маске) – тут хз, надо подумать

>Объединенные ячейки - останавливать процесс, типа, плохие данные? Проверять все ли ячейки в диапазоне объединены одинаково и все-таки пытаться удалить дубли (Excel, похоже, именно так пытается поступать)?  Разобъединять, удалять, и опять объединять (если не удалились)? - эксель останавливает операцию и выдает ошибку, что все ячейки должны иметь одинаковый размер. Считаю, что нам надо так же

>Значения - работаем с текстом в ячейке или с содержимым? 
08.09.18; 8 Сентябрь, 2018; 2018-09-08 00:00:00; 43351 - это дубли или разные значения? - дубли

>Формулы - оставляем формулы или подменяем результатом вычислений? А ссылки в формулах не поплывут после удаления предыдущих строк? А что делать с #REF!, если удалена строка, на которую формула раньше ссылалась? - а надо посмотреть, что делает Эксель и обсудить с товарищами.

>Форматы - ну, здесь-то, вроде бы, всё просто: оставляем родной формат ячейки. Вот только какой из родных ячеек - той, что и была на этом месте до удаления и сдвига всех строк, или той, данные из которой в это место переползли? - тут тоже надо подумать
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: JohnSUN от  8 сентября 2018, 13:08Вот вопрос тебе на засыпку: а слабо не подглядывая в работу реального фильтра ответить на мой вопрос из п.2? И - каким бы не был ответ - а почему именно так?
Цитата: JohnSUN от  8 сентября 2018, 11:512. Значения - работаем с текстом в ячейке или с содержимым?
08.09.18; 8 Сентябрь, 2018; 2018-09-08 00:00:00; 43351 - это дубли или разные значения?
Содержимое ячейки имеет как числовое так и строковое значение. Фильтрует по строковому значению, если строковые значения в ячейках одинаковые, а числовые разные, фильтр считает их дубликатами, если наоборот, строковые разные, а числовые одинаковые, то не дубликаты. В твоём примере все значения разные. Но вообще весь столбец должен иметь один формат, иначе будет "ой".

Расширение имеет смысл делать если оно будет отличаться от существующих инструментов дополнительным востребованным функционалом.

kompilainenn

Цитата: rami от  8 сентября 2018, 14:11Расширение имеет смысл делать если оно будет отличаться от существующих инструментов дополнительным востребованным функционалом.
оно будет отличаться как минимум более простым применением, чем настройка фильтра, в большинстве случаев
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: kompilainenn от  8 сентября 2018, 14:21оно будет отличаться как минимум более простым применением, чем настройка фильтра, в большинстве случаев
Не будет. Можно сделать проще за счёт предустановленных параметров фильтра, пользователь будет делать минимум движений, но это будет не универсальный инструмент, не для большинства случаев.

Для LibreOffice было бы наилучшим попросить разработчиков добавить опцию "Удалить дубликаты" в Стандартный фильтр.

kompilainenn

Цитата: rami от  8 сентября 2018, 15:00Для LibreOffice было бы наилучшим попросить разработчиков добавить опцию "Удалить дубликаты" в Стандартный фильтр.
Попросили, толку? Есть бага на эту тему, висит бог знает сколько. Если не мы, то кто же?!

Джон, ты готов залезть в код Либры? Я сомневаюсь. А расширение сделать наверное можно, так ведь?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

mikekaganski

Цитата: kompilainenn от  8 сентября 2018, 18:12
Джон, ты готов залезть в код Либры? Я сомневаюсь.

Неужели Компи прав???
С уважением,
Михаил Каганский

JohnSUN

Прикинь! В этот раз - абсолютно прав... Может, просто повезло и он просто угадал?..
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

JohnSUN

Ну, давай рожать истину... В смысле - спорить
Цитата: kompilainenn от  8 сентября 2018, 15:18
>уточнять диапазон (если автоматически выбралось больше или меньше, чем хотелось), - в список столбцов попадают ВСЕ столбцы, в которых есть данные. При этом ни один столбец не выбран по умолчанию.
Здесь я больше переживал за количество строк... Это мы с тобой такие умные, по одной таблице на лист кладём. А сплошь и рядом встречаются книги, где может быть и десяток табличек бок о бок (или в шахматном порядке, квадратно-гнездовым способом). И в этом случае работу расширения следует ограничить только одной, текущей таблицей, а не всеми колонками и всеми строками. А то и только выделенной частью таблицы. И не стоит начинать разговор о том, что такая организация данных не правильная - если аналитику удобно видеть десяток регионов (магазинов, учеников) одновременно, значит так и будет.
И насчет "не выбран по умолчанию" - тоже спорно. Тут же раздастся вопль "А вот в Эксель!.."
А вот дополнить форму RefEdit или его аналогом - сложно, но можно.
Кстати, Михаил, ты не в курсе, почему в формах интерфейса такой элемент управления есть, а в редакторе диалогов его не видно? Чисто техническая проблема или идеологическая?
Цитата: kompilainenn от  8 сентября 2018, 15:18
>Объединенные ячейки - останавливать процесс, типа, плохие данные? Проверять все ли ячейки в диапазоне объединены одинаково и все-таки пытаться удалить дубли (Excel, похоже, именно так пытается поступать)?  Разобъединять, удалять, и опять объединять (если не удалились)? - эксель останавливает операцию и выдает ошибку, что все ячейки должны иметь одинаковый размер. Считаю, что нам надо так же
А здесь ты наступил на больной мозоль - тупость Майкрософтовцев иногда просто бесит. И это как раз один из таких случаев. Если вы, гады такие, видите, что не сможете выполнить операцию, то почему вы не сделали кнопку недоступной? Вывели форму, разрешили в ней клацать мышью, отмечать разные колонки, жать ОК... И всё для того, чтобы сообщить, мол, ничего не выйдет? Если честно - не считаю, что "нам надо так же"
Цитата: kompilainenn от  8 сентября 2018, 15:18
>Значения - работаем с текстом в ячейке или с содержимым? 
08.09.18; 8 Сентябрь, 2018; 2018-09-08 00:00:00; 43351 - это дубли или разные значения? - дубли
Или все-таки дать пользователю переключатель "По значению"-"По отображению"-"Автоматически" (третий вариант по алгоритму rami)?
Цитата: kompilainenn от  8 сентября 2018, 15:18
>Формулы - оставляем формулы или подменяем результатом вычислений? А ссылки в формулах не поплывут после удаления предыдущих строк? А что делать с #REF!, если удалена строка, на которую формула раньше ссылалась? - а надо посмотреть, что делает Эксель и обсудить с товарищами.
Ты нарочно, да?
Я посмотрел "что делает Эксель". Он тупо ломает формулы. Причем так, что даже "Ой, блин!" (Ctrl+Z) уже не может их восстановить. Не можем мы на это равняться

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

mikekaganski

Цитата: JohnSUN от  8 сентября 2018, 21:05
Кстати, Михаил, ты не в курсе, почему в формах интерфейса такой элемент управления есть, а в редакторе диалогов его не видно? Чисто техническая проблема или идеологическая?

Должен признаться, что я вообще дуб в UI, тем более в формах и диалогах... сорри.
С уважением,
Михаил Каганский

JohnSUN

Не извиняйся - это у нас общее, оба знаем, что всего знать нельзя... Я просто так спросил, вдруг где случайно в Багзилле натыкался
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне