Заполнить таблицу через форму Dialog

Автор Кот, 8 декабря 2022, 13:15

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

bigor

У всех свое понятие "правильности" и не всех можно убедить, что их путь не оптимален. Поэтому я просто отвечаю на вопросы ТС. Учу плохому :)
Для меня лично проще вводить все в таблицу, меньше телодвижений по переходам между полями формы :)  Но как понял ТС это делает не для себя, и может ему ТЗ прописали именно так, для каждого класса свой лист, ввод через форму.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

eeigor

#31
@bigor, вся вина на вопрошающем.
Класс – одна сущность, одна сущность – это одна таблица, одна таблица может размещаться только на одном листе.
Зачем плодить листы по количеству классов, если просматривать их можно только по очереди? Ведь это можно организовать на одном листе. Извлечь из таблицы можно любой класс и переместить, если надо, на отдельный лист (временно). Но данные должны храниться один раз в одном месте, чтобы гарантировать их достоверность.

UPD. И нет никакого ТЗ. Наша автоматизация на местах – дело рук отдельных энтузиастов. Предлагаю автору сформулировать задачу целиком.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

Кот

Цитата: eeigor от 24 декабря 2022, 22:33Желательно, конечно, видеть задачу целиком, а не "выдергивать по нитке"... В сказке про Репку надо начинать с репки (с того, что дано), а не с внучки и не с жучки.
Доброго вечера всем!
Создавал и делал свой самострой со слов учителей (которые занимались этим неблагодарным делом), кто, что и как делал, как им было бы удобно. Да, действительно задача была сложная и не понятная для меня совсем. Ну ничего, втянулся во все хотелки и сделал.
Рабочий вариант имеется в EXCELe, и с ним дочка работает уже полгода, но получился этот самострой очень большой. Пришлось даже разбить на несколько файлов.
В связи с тем, что есть вероятность ухода от Excel, решили заранее подготовиться и переделать в LO.
Могу выслать рабочий вариант, но форум не позволяет отправить большой размер файла.
Спасибо всем за сочувствие!

bigor

Цитата: Кот от 25 декабря 2022, 17:48Могу выслать рабочий вариант,
что бы по его формулам и макросам понять что нужно делать с данными :) Опишите лучше словами.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Кот

Цитата: bigor от 25 декабря 2022, 17:55что бы по его формулам и макросам понять что нужно делать с данными :) Опишите лучше словами.

Заполняется "Табель учета" в электронном виде (руководителем кружка), отправляет готовый файл по эл.почте или как модно сейчас по ВатЦапу.
Принявший, копирует файл в папку, где хранятся все поступившие файлы "Табель учета" (у нас их 60 файлов).
Далее принявший может не открывать поступившие файлы, т.к. данные автоматически поступают в основной рабочий файл со всеми формулами и данными.
Принявший файлы заполняет страницу с оплатой или не оплатой, подготавливает для вывода на печать.
В рабочем файле записаны все фамилии учащихся, учителей, наименование кружков и их стоимость.
А также созданы квитанции на каждого учащегося (всего 1540).
Расчет брали из 1540 учащихся (44 класса по 35 человек в каждом), 60 табелей учета.
Как-то так, если совсем коротко. Мог что-то упустить, не был готов к поставленному Вами вопросу.
Спасибо!

sokol92

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

Кот

Цитата: sokol92 от 25 декабря 2022, 18:48На мой взгляд подобные задачи должны решаться во взаимосвязи с системами бухгалтерского учета, поскольку нужно отслеживать возникновение и погашение дебиторской задолженности.
Возможно Вы правы, но до прошлого года учителя писали все это руками в Табелях и Квитанциях, а я чем смог, тем помог. На сердце осталось приятное, т.к. это работает (пока).

eeigor

#37
Приведите что ли примеры выходных документов: табель, квитанция и пр., форм ввода данных. Атрибуты (свойства) класса, учителя... Попробуем построить ER-диаграмму

@Кот, разумно при переходе на LO что-то и переделать. Это напрашивается само собой, поскольку размеры ваших файлов просто огромные для такой задачи. Надо описать задачу ещё подробнее.

UPD. @Кот, вышлите мне рабочий вариант на почту eeigor@inbox.ru
Я посмотрю как будет время. Но поскольку файлов больше одного, то потребуется пояснение, как осуществляется взаимообмен данными.

Очевидно, координировать деятельность четырёх сложнее, чем одного работника. Поскольку теперь это одно лицо, то многие процессы, которые вы автоматизировали, больше не нужны! Количество файлов должно резко сократиться.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#38
Я нашел что-то из уже предоставленной автором информации. Трудно разобраться без диаграммы. Но одна особенность архитектуры приложения ясна: даже если из всех 1540 учащихся только один будет посещать всего один кружок, объем приложения не уменьшится, потому что это  статичная "мега-заготовка" под максимум учащихся, посещающих кружки. Свёрстаны все классы с фиксированным количеством учеников (Как двигаться влево? А вправо? :)), но фамилий "кот наплакал" *. Вот эти мега-пустоты с формулами, да еще и со ссылками на другой файл, и съедают мегабайты. Монстр еле ворочается. Даже не надо тешить себя иллюзиями, что Calc справится с этим массивом. Excel пошустрее будет в разы. Поэтому перевод приложения в Calc однозначно требует переработки структуры всего приложения. Все ваши манипуляции со скрытием "пустышек" (или, возможно, лишних записей) в табелях - это полный бред. ИМХО. Зато честно. И заставляет задуматься уже сейчас, а не пытаться сделать перевод типа "один в один". Так не получится. Даже если в Excel работает.

О кружковых группах учащихся. Они выстроены по столбцам. Их великое множество. На разных листах. Им присвоены имена (диапазонов). Их (имён) великое множество (292, см. следующий пост с файлом). Это нонсенс. Неужели нельзя организовать группы в виде обычной перекрестной таблицы (таблицы декомпозиции - впрочем, здесь вам не СУБД, и это это обычная "плоская" таблица)?

Все прежние посты автора по этой теме и ответы форумчан - это "бег на месте" или "путь в никуда".

А много ли у нас данных? Кружков: 18, учителей: 42, учащихся: 1540. Ну, можете перемножить... хотя используемых комбинаций значительно меньше. Кружковых групп всего, если верить количеству созданных имен диапазонов: 292.
Но вот в "пустотелом" табеле учета значится строк: с 12 по 7711. И, похоже, в каждом из 60. Да, именно так. Открывается с ощутимой задержкой. При этом ссылки на внешний файл не обновлены. Обновление приводит к эффекту "зависания", и хочется перегрузить компьютер.
Почему табелей 60, я не понял.

UPD.
* Возможно, у меня не были вычислены ссылки на внешние файлы, и ячейки с формулами остались пустыми. Но каждый из 60 табелей, весом под мегабайт, с количество строк свыше 7 тысяч - это нонсенс.
ОФФТОПИК
А форумчане помогают автору скрывать пустые строки, оптимизировать быстродействие, обновлять ссылки на внешние файлы и т.д. и т.п. Ау, форумчане, поменяйте концепцию. Здесь вам не Ask. К черту толерантность! Иначе это помощь... из-за угла
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#39
Файл с перечислением используемых диапазонов здесь ниже.

Цитата: eeigor от 26 декабря 2022, 06:53Но вот в "пустотелом" табеле учета значится строк: с 12 по 7711. И, похоже, в каждом из 60. Да, именно так.

Общее время загрузки файла "Платные услуги": 5 мин. 30 с. (ноутбук с усеченным i8).
UPD. Работаю с файлом. Вдруг запустился процесс автосохранения. Периодически вылазит окно с предложением остановить процесс и закрыть приложение (потому что долго). Другими словами, работать, сохранять данные в процессе абсолютно невозможно.

Перечень листов:
No   Name   CodeName   State
01.   М Е Н Ю   Лист1   
02.   Списки   Списки   
03.   Оглавление   Оглавление   
04.   Кружок_Учитель   Кружок_Учитель     Hidden
05.   Кружок_Стоимость   Кружок_Стоимость     Hidden
06.   Формулы   Формулы   
07.   Учителя   Лист59     Hidden
08.   Группы_H   Лист13     Hidden
09.   Группы_I   Лист12     Hidden
10.   Группы_J   Лист11     Hidden
11.   Группы_K   Лист10     Hidden
12.   Группы_L   Лист9     Hidden
13.   Выбор_Группы   Лист14     Hidden
14.   1А   Лист18     Hidden
15.   1Б   1А_2     Hidden
16.   1В   1Б_2     Hidden
17.   1Г   1В_2     Hidden
18.   2А   1А_2     Hidden
19.   2Б   1Б_2     Hidden
20.   2В   1В_2     Hidden
21.   2Г   1Г_2     Hidden
22.   3А   1А_2     Hidden
23.   3Б   1Б_2     Hidden
24.   3В   1В_2     Hidden
25.   3Г   1Г_2     Hidden
26.   4А   2А_2     Hidden
27.   4Б   2Б_2     Hidden
28.   4В   2В_2     Hidden
29.   4Г   2Г_2     Hidden
30.   5А   1А_2     Hidden
31.   5Б   1Б_2     Hidden
32.   5В   1В_2     Hidden
33.   5Г   1Г_2     Hidden
34.   6А   2А_2     Hidden
35.   6Б   2Б_2     Hidden
36.   6В   2В_2     Hidden
37.   6Г   2Г_2     Hidden
38.   7А   3А_2     Hidden
39.   7Б   3Б_2     Hidden
40.   7В   3В_2     Hidden
41.   7Г   3Г_2     Hidden
42.   8А   4А_2     Hidden
43.   8Б   4Б_2     Hidden
44.   8В   4В_2     Hidden
45.   8Г   4Г_2     Hidden
46.   9А   1А_2     Hidden
47.   9Б   1Б_2     Hidden
48.   9В   1В_2     Hidden
49.   9Г   1Г_2     Hidden
50.   10А   2А_2     Hidden
51.   10Б   2Б_2     Hidden
52.   10В   2В_2     Hidden
53.   10Г   2Г_2     Hidden
54.   11А   3А_2     Hidden
55.   11Б   3Б_2     Hidden
56.   11В   3В_2     Hidden
57.   11Г   3Г_2     Hidden
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#40
Нет, без ER-диаграммы разобраться невозможно. Многие диапазоны с формулами вообще не подписаны.
Разбираться с формулами автора очень трудоемко.
Но если не сделать то, о чем я автора попросил (построить диаграмму или подробно описать словами), то уверяю, что в LibreOffice Calc эта задача РАБОТАТЬ НЕ БУДЕТ. И Calc здесь не причем.

UPD. Замечание. У автора данные в основном прирастают вправо (по столбцам). Для баз данных (таблиц) принято хранить данные в записях. Таким образом у автора нарушается сразу 1 форма нормализации данных (1НФ): не должно быть повторяющихся групп (массива значений атрибута). Такие данные не подлежат цивилизованной обработке ни в базах данных, ни в электронных таблицах (в электронных таблицах их таки можно обрабатывать). Специально для автора сообщаю, что нормальных форм 5, и надо обеспечить соблюдение хотя бы первых трех.
Да, мы все знаем, что "правильное" хранение данных в электронной таблице имеет неприятную особенность, связанную с избыточностью данных (в БД данные связаны по ключам и это проявляется меньше, в электронных таблицах мы чаще "тянем" не ключи, а смысловую информацию). И надо аккуратно вводить повторяющиеся данные (не ручками, а выбором из списка или копированием-вставкой). Иногда, правда, создают что-то вроде перекрестной таблицы для облегчения ввода данных и уменьшения их избыточности. Так у автора организован лист "Кружок_Учитель". Но такой выбор должен быть обоснован (когда атрибут содержит практически неизменный массив значений: например, всего и всегда 11 классов; эти данные не надо анализировать средствами сводных таблиц и пр. - в общем, статика). Это можно отнести и к преимуществу электронных таблиц по сравнению с базами данных: свободы больше... ВПР и ГПР сделают свое дело.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#41
@Кот, это что? Почему при выборе группы (их 60, как и табелей учета) мы их раскидываем по пяти столбцам (результат выбора отображается на пяти листах (Группы_H - Группы_L)? Группы в группах.
Поясняю. У автора так: выбираем (комплектуем по приказу) группы на листе "Выбор_Группы", а чтобы посмотреть (читай: отфильтровать), что выбрано в итоге и, видимо, убедиться в отсутствии ошибок, созданы 5 листов "поддержки" (Группы_H - Группы_L), куда и извлекается эта информация. Причем вся. Сразу. И под максимальное количество групп (их 60, но живых, судя по файлу, всего 44). И в каждом столбце-группе - максимальное количество учащихся (1540) с формулами, большая часть из которых, понимаете, выполняет мертвую нагрузку. В общем, опупео опупеоз. Это я описываю своё состояние от увиденного. Автору не в обиду: учиться никогда не поздно, не взирая на возраст. Предлагаю помощь, но недостаточно информации. Деваться Вам всё равно некуда: школы закупили Linux, переход неизбежен. Или оставлять Excel, или переходить. Проще описать задачу в виде некоторой её постановки. Хотя бы так. Файлы в моем распоряжение поковерканы (предпринята попытка заместить персональные данные всякой ерундой).

@bigor, тут пока не до формул и диалогов: надо бы определиться с порядком хранения исходных данных. Потом с тем, как их туда вводить. А потом - с формулами и выходными документами. Впрочем выходных документов два: табель учета и квитанция.
@economist, у вас ведь большой опыт проектирования приложений. Выскажитесь по существу вопроса.

UPD. В моем распоряжении файл Проба1.rar, скачанный где-то отсюда. Но повторно загрузить его не могу: 3,8 МБ (надо не более 2,5 МБ).

@Кот, непонятно:
1) Как сформированная приказом группа (ей присвоен номер и, видимо, определен состав) связана с кружком? И если я правильно понял, под каждую группу составляется отдельный табель.
2) Из представленных данных видно, что один кружок ведет один учитель. Но ведь это не обязательно? Если да, то как понять, кто провел занятие в конкретный день месяца? -- Так, вижу: табель составляется под конкретного учителя (лист "Оглавление", "Выбери название курсов и кто проводит"). Но вопрос не снят.
3) Поскольку теперь всем занимается 1 человек (вместо 4), то Табель учета можно вернуть в основной файл, так? Связи с внешним файлом отмирают...
4) Выбор классного руководителя, номер анкеты - это все туманно.
5) При добавлении нового ученика в класс вы хотите, чтобы он встал на свое место (сортировкой). Вопрос: как это отразится на табеле, в котором уже проставлена посещаемость в строке ученика? Ведь данные по ученикам могут сместиться из-за сортировки. Или табель блокируется на месяц. Или как?

Предварительно, я создал бы следующие таблицы на отдельных листах:
1. "Класс - Ученик (с номером счета) - Номер группы" - под расширенный фильтр для ввода-вывода данных
2. "Номер группы - Кружок - Учитель" - под расширенный фильтр аналогично
3. "Кружки" (со стоимостью занятия) - под списки выбора и извлечение стоимости. Автор так запутал стоимость своих кружков, рассовав их по разным спискам, извлекая что-то сложными формулами, что я даже не стал разбираться. Автор, с чем связана стоимость кружка?!
4. "Учителя" - под списки выбора
5. "Табель". Это отдельная форма, как у автора, для учета посещаемости в течение месяца (дни 1-31) с возможностью фильтрации и печати по группам (то есть мини-табелям)
6. "Ученики" (?) - под список выбора (с отсечкой по классу) и извлечение номера счета
Итого: 6 листов, включая табель, плюс ещё парочку вместо 57.

Что плохо? Если ученик записан в несколько групп, то при такой структуре надо дублировать всю запись (с номером счета ученика). Можно создать отдельную таблицу "Ученики" (с классом и номером счета) для извлечения дополнительных данных. Тогда "Номер счета" - поле вычисляемое (и "Класс" тоже). Здесь я не сторонник введения идентификаторов по типу БД для связывания таблиц: теряется наглядность, возникает риск нарушения целостности данных. Выбираем ученика по ФИО из класса.

Примечание. Номер группы соответствует номеру табеля учета посещаемости для ввода-вывода данных
Первые две таблицы обеспечивают ввод и хранение данных. При этом используется расширенный фильтр на месте (через макрос) для удобства операций с данными (фильтрация с целью сужения набора данных - у автора этой цели служат отдельные листы). Информацию из таблицы 2 можно извлечь формулами и добавить к таблице 1. Тогда таблица 1 будет содержать всю необходимую информацию. Ну, кроме стоимости одного занятия в кружке (можно и ее извлечь, но она нужна только в табеле). Как-то так. Такие данные можно анализировать в дальнейшем в сводной таблице и другими средствами. Какие будут соображения?
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#42
Цитата: eeigor от 26 декабря 2022, 12:26под расширенный фильтр для ввода-вывода данных
@Кот, выше я писал "под расширенный фильтр". Это вот так, только по-русски, или так (скриншот 2, усечен).
Диапазон условий сверху, данные снизу. Фильтрация мгновенная по любым полям. Регулярные выражения можно не использовать.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

Бесплатное Инфо-предприятие - самое то для подобной задачи.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

sokol92

Владимир.