Пожелание: отдельное хранение файлов данных для консолей
|
|
KejDatch | Дата: Четверг, 24.02.2022, 16:40 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 3
Статус: Оффлайн
| Предлагаю:
1. Добавить настройку в консоль запросов и в консоль кода "хранить входящие данные в отдельном файле". Под "входящими" данными понимаю все то, что сейчас хранится в общем файле, в сериализованном виде. Это таблицы значений, загруженные из xls/таб. док, а также прочие параметры.
2. При активации настройки предлагать пользователю выбрать путь для хранения файла данных и указать имя. При нажатии кнопки "Сохранить" записывать этот путь внутри "основного" файла сохранения (консоли запросов или кода)
3. Если пользователь не указал путь и имя - сохранять по умолчанию, в профиль пользователя, во временные файлы (аналогично тому, как это делается для временных файлов сохранения, создаваемых перед непосредственным выполнением запроса/алгоритма), либо сохранять файл данных с тем же именем, что и основной (но с другим расширением) в тот же каталог, куда сохраняется основной файл.
4. Собственно разделить хранение запроса/алгоритма и сами входящие данные на 2 файла. Текст запроса/алгоритма пусть хранится в "основном файле". Сериализованнные входящие данные - пусть хранятся в отдельном файле (только при указании вышеописанной настройки).
5. При перевыборе в настройках консоли "файла данных" - автоматически перезаполнять коллекцию "входящие параметры".
6. Также, если перевыбор происходит в консоли запросов - и текст текущего запроса в дереве запросов пустой - автоматически генерировать закомментированный кусок текста запроса, для выборки всех полей из таблицы значений и помещения в ВТ "ВТ_ИмяПараметраТз". Справедливо только для консоли запросов и только в том случае, если среди сериализованных данных есть таблица значений.
Данный функционал породит следующие выгоды и удобства:
- более удобное версионирование запросов/алгоритмов через сторонние СКВ (например git). Версионировать теперь можно будет только изменение самих запросов/алгоритмов, вместо того чтобы версионировать и "внутренние" данные тоже;
- можно будет иметь одни и те же "входящие данные" в виде файла, на которые "натравливать" разные запросы, алгоритмы, что тоже очень удобно (так как сейчас каждый запрос/алгоритм должен иметь свои собственные данные, загруженные непосредственно в него)
|
|
| |
tormozit | Дата: Пятница, 25.02.2022, 08:49 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6201
Репутация: 159
Статус: Оффлайн
| В целом насчет версионирования. Если версии файла использовать для анализа изменений, то кажется его структура и без прикладных таблиц значений не очень подходит, т.к. элементы в дереве могут перемещать/переподчинять как угодно. Но если в списке запросов не менять положение существующих элементов, то наверное будет нормально.
Далее буду писать в основном про консоль запросов. С консолью кода все сложнее, т.к. там большое разнообразие типов больших объектов, поэтому пока не готов по ней ответить.
Хранение параметров в отдельном от запросов файле приведет например к неудобству - При копировании или восстановлении из системы контроля версий файла запросов легко забыть файл с параметрами и тогда параметры заполнятся значениями по умолчанию и может быть не сразу понятно, почему запросы стали давать другой результат. Поэтому кажется для большинства пользователей такой режим больше неудобств принесет и уже точно не стоит все параметры хранить отдельно. Это можно оправдать именно для больших значений (таблиц значений с большим количеством строк). Имеющийся сейчас способ (через обработчик ПередВыполнением) конечно имеет те же недостатки, но тут хотя бы пользователь явно все указывает и осознает последствия.
Также хранение отдельного файла данных в каталоге, отличающемся от каталога основного файла, потребует большой доработки сложного общего для многих консолей механизма авто и ручного сохранения/восстановления файла. Поэтому пока я готов рассматривать только хранение рядом с основным файлом (возможно для каждой такой пары файлов делать свою папку).
6. Так уже делает конструктор запроса ИР причем не для всех таблиц, а только для использованных в запросе. Также сгенерировать и добавить такой запрос в пакет можно сделать кнопкой "Поместить во временную таблицу" над списком параметров.
Попробуй некоторое время использовать классическую схему - загружать в параметр запроса таблицу в обработчике ПередВыполнением (консоли запросов). Обкатай ее с системой контроля версий. Возможно твое видение изменится.
Было бы полезно почитать и другие мнения по путям решения подобных задач.
|
|
| |
KejDatch | Дата: Пятница, 25.02.2022, 10:05 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 3
Статус: Оффлайн
| Может тогда просто сделать кнопки "загрузить таблицу из сохраненного файла" и "выгрузить таблицу в файл" в ТЧ "Параметры", которая актуальна будет только для таблиц значений?
Пусть хранится тогда и дальше так, как сейчас, раз там сложно доработать , кому надо - загрузит ТЗ в "перед выполнением".
А с помощью этих кнопок можно сэкономить время на загрузку ТЗ в другие запросы.
Кстати, если так рассуждать, наверное логично было бы этот функционал прикручивать не в консоль запросов, а в редактор загрузки табличного документа... Хотя такой функционал уже есть вроде бы
Сообщение отредактировал KejDatch - Пятница, 25.02.2022, 16:56 |
|
| |
tormozit | Дата: Воскресенье, 27.02.2022, 10:35 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6201
Репутация: 159
Статус: Оффлайн
| Цитата KejDatch ( ) сделать кнопки "загрузить таблицу из сохраненного файла" и "выгрузить таблицу в файл" в ТЧ "Параметры" Итак слишком много кнопок. Думаю операция не настолько частая, чтобы текущий способ загрузки таблицы значений (кнопкой в редакторе) казался не достаточно удобным.
Цитата KejDatch ( ) сэкономить время на загрузку ТЗ в другие запросы Мне не понятен сценарий работы, в котором требуется использовать одну таблицу в большом числе запросов. Я обычно делаю один пакетный запрос и в нем делаю все нужные запросы, опирающиеся на одну таблицу значений. Почему ты так не делаешь?
|
|
| |
KejDatch | Дата: Воскресенье, 27.02.2022, 10:52 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 3
Статус: Оффлайн
| Я всего лишь хочу версионировать запросы, чтоб это было удобно. То есть, чтобы только текст отслеживался. Чтобы если новые строки добавишь в таблице значений в параметрах - это не отслеживалось. Обработчик "ПередВыполнением" частично решает задачу, но это же надо код писать какой-то, а хочется чтоб как-то более удобно было
|
|
| |
tormozit | Дата: Воскресенье, 27.02.2022, 11:03 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 6201
Репутация: 159
Статус: Оффлайн
| Понял. Тогда можно добавить в таблице параметров колонку с именем файла, из которого будет динамически загружаться таблица значений и при сохранении списка запросов таблица такого параметра будет сохраняться без строк.
|
|
| |
tormozit | Дата: Воскресенье, 27.02.2022, 16:20 | Сообщение # 7 |
Генералиссимус
Группа: Администраторы
Сообщений: 6201
Репутация: 159
Статус: Оффлайн
| Создал задачу https://www.hostedredmine.com/issues/942176
|
|
| |
KejDatch | Дата: Воскресенье, 27.02.2022, 17:01 | Сообщение # 8 |
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 3
Статус: Оффлайн
| Да, такое решение подойдет вполне, файл будет такой же по формату, который создает редактор табличных данных?
|
|
| |
tormozit | Дата: Понедельник, 07.03.2022, 18:33 | Сообщение # 9 |
Генералиссимус
Группа: Администраторы
Сообщений: 6201
Репутация: 159
Статус: Оффлайн
| реализовано в 6.26
|
|
| |