ИЛИ - ИЛИ: выгрузка в Excel
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
ИЛИ - ИЛИ: выгрузка в Excel
Поскольку выяснилось, что острых вопросов накопилось больше, чем может себе позволить обсудить временной регламент конференции, решено часть из них вынести на форум.
"Или - или" - название книги датского философа Кьеркегора (Киркегард). На нашем форуме меткой "ИЛИ - ИЛИ" я буду запускать не технические, но скорее дискуссионные вопросы о том, какой из множества способов реализации функционала стоит предпочесть. Вопросы "ИЛИ - ИЛИ" появляются потому, что Файлмейкер позволяет одну практическую задачу решить несколькими способами, и возникает вопрос - какой способ лучше. Цель дискуссии - не просто определить оптимальный способ из известных, но, может быть, в том, чтобы этот оптимальный способ найти, выработать совместными усилиями.
Итак,
выгрузка в Excel
проблема в том, что мы, разработчики, используем собственные наименования полей в таблицах, понятные нам, подчиняющиеся определенной логике и стандартам (без пробелов, английский язык и т.п.). Пользователи при выгрузке в Excel хотят видеть в итоговом файле нормальные "человеческие" заголовки столбцов на родном языке.
Известные мне варианты решения проблемы:
1) сделать в оригинальной таблице дубликаты полей (калькулируемые нехранимые поля с формулой = original_field), именно их использовать при выгрузке
плюсы: быстро и просто реализуется
минусы: "засоряется" оригинальная таблица, с ней становится сложно работать (так ли это?)
2) для каждого отчета создавать отдельную таблицу с нужными (по названию) полями. Генерация отчета - это заполнение таблицы нужными данными с возможностью представить результат пользователю и выгрузить в Excel
плюсы: логичная организация данных, логика в структуре (назначение служебных таблиц с префиксом report_contacts_of_year понятно любому разработчику)
минусы: время на генерирование отчета увеличивается (нужно считать данные с оригинальной таблицы и заполнить таблицу служебную)
3) универсальная таблица с полями типа text1, text2, text3, number1 и т.д. (по десятку-двум полей каждого типа). При выгрузке в Excel названия столбцов будут браться не из названий полей, а из верхней строки. А это значит - можно задать ЛЮБОЕ название столбцу.
Плюсы: одну и ту же таблицу можно использовать многократно для разных отчетов.
минусы: сложновато выгружать, приходится строго проверять, какое из анонимных полей что обозначает...
минусы: нужно решать проблему периодической чистки данных, например, маркировать записи датой создания и раз в день уничтожать записи, созданные ранее этого дня.
минусы: как и в варианте 2 время на заполнение данными (можно конечно выполнять на сервере это все).
есть и другие варианты. но начало дискуссии положено. Высказывайтесь, коллеги
"Или - или" - название книги датского философа Кьеркегора (Киркегард). На нашем форуме меткой "ИЛИ - ИЛИ" я буду запускать не технические, но скорее дискуссионные вопросы о том, какой из множества способов реализации функционала стоит предпочесть. Вопросы "ИЛИ - ИЛИ" появляются потому, что Файлмейкер позволяет одну практическую задачу решить несколькими способами, и возникает вопрос - какой способ лучше. Цель дискуссии - не просто определить оптимальный способ из известных, но, может быть, в том, чтобы этот оптимальный способ найти, выработать совместными усилиями.
Итак,
выгрузка в Excel
проблема в том, что мы, разработчики, используем собственные наименования полей в таблицах, понятные нам, подчиняющиеся определенной логике и стандартам (без пробелов, английский язык и т.п.). Пользователи при выгрузке в Excel хотят видеть в итоговом файле нормальные "человеческие" заголовки столбцов на родном языке.
Известные мне варианты решения проблемы:
1) сделать в оригинальной таблице дубликаты полей (калькулируемые нехранимые поля с формулой = original_field), именно их использовать при выгрузке
плюсы: быстро и просто реализуется
минусы: "засоряется" оригинальная таблица, с ней становится сложно работать (так ли это?)
2) для каждого отчета создавать отдельную таблицу с нужными (по названию) полями. Генерация отчета - это заполнение таблицы нужными данными с возможностью представить результат пользователю и выгрузить в Excel
плюсы: логичная организация данных, логика в структуре (назначение служебных таблиц с префиксом report_contacts_of_year понятно любому разработчику)
минусы: время на генерирование отчета увеличивается (нужно считать данные с оригинальной таблицы и заполнить таблицу служебную)
3) универсальная таблица с полями типа text1, text2, text3, number1 и т.д. (по десятку-двум полей каждого типа). При выгрузке в Excel названия столбцов будут браться не из названий полей, а из верхней строки. А это значит - можно задать ЛЮБОЕ название столбцу.
Плюсы: одну и ту же таблицу можно использовать многократно для разных отчетов.
минусы: сложновато выгружать, приходится строго проверять, какое из анонимных полей что обозначает...
минусы: нужно решать проблему периодической чистки данных, например, маркировать записи датой создания и раз в день уничтожать записи, созданные ранее этого дня.
минусы: как и в варианте 2 время на заполнение данными (можно конечно выполнять на сервере это все).
есть и другие варианты. но начало дискуссии положено. Высказывайтесь, коллеги
- mihalych_2017
- Сообщения: 39
- Зарегистрирован: 11 сен 2017, 15:36
- Откуда: Подольск
- Контактная информация:
Re: ИЛИ - ИЛИ: выгрузка в Excel
Частный случай способа № 3 (или модификация):
Создаем таблицу с набором полей (как описано в способе №3).
Первой записью отчета вставляем нужные нам имена заголовков таблицы.
Далее следующие строки отчета - это данные.
При экспорте указываем, чтобы НЕ экспортировались имена полей.
Создаем таблицу с набором полей (как описано в способе №3).
Первой записью отчета вставляем нужные нам имена заголовков таблицы.
Далее следующие строки отчета - это данные.
При экспорте указываем, чтобы НЕ экспортировались имена полей.
Re: ИЛИ - ИЛИ: выгрузка в Excel
Хорошая тема - обширная.
Важный момент про который не стоит забывать - формат поля. Если мы хотим использовать первую (или какую-то еще) запись в качестве заголовка, то формат поля должен быть текстовый (иначе не выгрузится). При этом если сами данные цифровые, то в экселе они все будут выглядеть как ячейки с ошибками формата поля (у каждого появится треугольничек, на которой надо нажать и исправить формат поля). Пользователям, конечно не очень нравится эксель, который надо еще и исправлять.
Несмотря на это, я еще иногда использую модификацию способа 1. В таблице делается делается специальная запись, у которого специальное поле-флаг, что это заголовок (например, sign_header = 1). При экспорте кроме записей которые надо экспортировать, "находится" еще и эта специальная запись, и выборка сортируется так, чтобы она была первой.
В самой таблице отдельные поля калькуляции (именно они и выгружаются):
Минус (см. выше) - эти калькулируемые поля должны иметь текстовый формат.
PS. Андрей, "накидайте" еще тем и сделаем отдельную группу "ИЛИ-ИЛИ" и перенесем туда.
Важный момент про который не стоит забывать - формат поля. Если мы хотим использовать первую (или какую-то еще) запись в качестве заголовка, то формат поля должен быть текстовый (иначе не выгрузится). При этом если сами данные цифровые, то в экселе они все будут выглядеть как ячейки с ошибками формата поля (у каждого появится треугольничек, на которой надо нажать и исправить формат поля). Пользователям, конечно не очень нравится эксель, который надо еще и исправлять.
Несмотря на это, я еще иногда использую модификацию способа 1. В таблице делается делается специальная запись, у которого специальное поле-флаг, что это заголовок (например, sign_header = 1). При экспорте кроме записей которые надо экспортировать, "находится" еще и эта специальная запись, и выборка сортируется так, чтобы она была первой.
В самой таблице отдельные поля калькуляции (именно они и выгружаются):
Код: Выделить всё
if ( sign_header = 1; "Название столбца"; Поле для выгрузки )
PS. Андрей, "накидайте" еще тем и сделаем отдельную группу "ИЛИ-ИЛИ" и перенесем туда.
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: ИЛИ - ИЛИ: выгрузка в Excel
Игорь, именно этот способ и подразумевался: первая строка задает произвольные нужные названия столбцов, а в экспорте снимается флаг "экспортировать наименования полей".
Вы практикуете именно такой способ?
Вы практикуете именно такой способ?
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: ИЛИ - ИЛИ: выгрузка в Excel
Аркадий, да. Этот способ рассматривал (добавление на момент выгрузки специальной строки, которая сортировкой двигается в самый верх), но не стал описывать. Пусть будет описан тем не менее как 4-й способ. Для меня проблема здесь именно с выгрузкой калькулируемых полей.
Кстати, мы нащупываем слабые места и в третьем варианте: можно ли текстом задать название поля с типом Дата? Вроде не получится такое. Или же дату записывать в текстовое поле и потом экспортировать как текст?
Если мы остановимся на третьем варианте, то я ставлю задачей итоговой написание универсального скрипта для выгрузки. Который позволит собрать данные с текущей страницы, затем загрузит во временную таблицу. Минимальные усилия чтобы при этом предпринимались разработчиком.
Как мне видится - создать две текстовых метки. Одна будет содержать наименования заголовков списком. Вторая - наименования полей в служебной таблице, списком. При этом полям, которые должны быть выгружены следует присвоить имена object name идентичные названиям заголовков
То есть где-то на макете будут размещены такие два списка
Номер Text1
Наименование Text2
Количество Number1
Цена Number2
Стоимость Number3
Выгрузка будет заключаться в запуске универсального скрипта, который все сделает, используя Design/Logical Functions, и в завершающей команде Экспорт, где будут указаны нужные поля для экспорта....
Да, темы создам.
Кстати, мы нащупываем слабые места и в третьем варианте: можно ли текстом задать название поля с типом Дата? Вроде не получится такое. Или же дату записывать в текстовое поле и потом экспортировать как текст?
Если мы остановимся на третьем варианте, то я ставлю задачей итоговой написание универсального скрипта для выгрузки. Который позволит собрать данные с текущей страницы, затем загрузит во временную таблицу. Минимальные усилия чтобы при этом предпринимались разработчиком.
Как мне видится - создать две текстовых метки. Одна будет содержать наименования заголовков списком. Вторая - наименования полей в служебной таблице, списком. При этом полям, которые должны быть выгружены следует присвоить имена object name идентичные названиям заголовков
То есть где-то на макете будут размещены такие два списка
Номер Text1
Наименование Text2
Количество Number1
Цена Number2
Стоимость Number3
Выгрузка будет заключаться в запуске универсального скрипта, который все сделает, используя Design/Logical Functions, и в завершающей команде Экспорт, где будут указаны нужные поля для экспорта....
Да, темы создам.
- mihalych_2017
- Сообщения: 39
- Зарегистрирован: 11 сен 2017, 15:36
- Откуда: Подольск
- Контактная информация:
Re: ИЛИ - ИЛИ: выгрузка в Excel
Наверное, недостаточно внимательно прочитал.andrey volkov писал(а): ↑04 окт 2017, 09:53Игорь, именно этот способ и подразумевался: первая строка задает произвольные нужные названия столбцов, а в экспорте снимается флаг "экспортировать наименования полей".
Вы практикуете именно такой способ?
Использую в основном либо третий способ, либо чистый экспорт.
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: ИЛИ - ИЛИ: выгрузка в Excel
Игорь, я не пробовал 3 способ, но всерьез задумываюсь.
Как оно? Оправдывает себя? Как быть с экспортом дат, получается?
Как оно? Оправдывает себя? Как быть с экспортом дат, получается?
Re: ИЛИ - ИЛИ: выгрузка в Excel
В действительности эта тема пересекается с другой более обширной задачей - выгрузки отформатированного ("красивого") экселя. С заданной шириной столбцов, возможно подсветкой и очень желательно формулами, там где надо, а не данным (например в строках "итого") и т.п.
- mihalych_2017
- Сообщения: 39
- Зарегистрирован: 11 сен 2017, 15:36
- Откуда: Подольск
- Контактная информация:
Re: ИЛИ - ИЛИ: выгрузка в Excel
Как показывает практика, основное время занимает формирование данных для отчета.andrey volkov писал(а): ↑04 окт 2017, 10:37Игорь, я не пробовал 3 способ, но всерьез задумываюсь.
Как оно? Оправдывает себя? Как быть с экспортом дат, получается?
Формирование доп.таблицы и пересылка данных - практически не влияет на общее время.
Даты - надо записывать в поля даты, экспорт - стандартно.
- mihalych_2017
- Сообщения: 39
- Зарегистрирован: 11 сен 2017, 15:36
- Откуда: Подольск
- Контактная информация:
Re: ИЛИ - ИЛИ: выгрузка в Excel
Тут, я думаю, без VBA не обойтись.Arcady писал(а): ↑04 окт 2017, 11:03В действительности эта тема пересекается с другой более обширной задачей - выгрузки отформатированного ("красивого") экселя. С заданной шириной столбцов, возможно подсветкой и очень желательно формулами, там где надо, а не данным (например в строках "итого") и т.п.