Writer. Рассылка писем

Автор Roadroller, 19 августа 2020, 11:42

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

Roadroller

Доброго времени суток.
Возник следующий вопрос:
Есть документ Calc, в котором я написал макрос(функцию) результат выполнения записан в ячейку.
Этот документ Calc я использую в документе Writer в качестве источника данных.
Все нужные места заполняются данными из документа Calc, кроме данных полученных в результате выполнения макроса(функции).
При этом если открыть документ Calc, данные на месте.
Каким образом заставить отрабатывать макрос в таблице, которая используется источником данных для документа?

mikekaganski

Возможно, стоит попробовать с режимом безопасности, где все макросы разрешены. Если там работает, то тогда нужно добиться автоматического разрешения макросов в нужном документе - например, помещением его в доверенную локацию. Либо переносом макроса из документа в общую библиотеку.

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

Roadroller

Режим безопасности минимальный, добавление в в доверенную локацию не помогло. При помещении макроса в общую библиотеку вызывает ошибку исполнения макроса в таблице Calc.
Проблема видимо разрешениях

mikekaganski

У меня Ваш макрос отсюда, помещённый в My Macros & Dialogs/Standard/Module1, работает в Calc без ошибок... (если речь о нём.)
С уважением,
Михаил Каганский

economist

Макрос сохраняет сам ODS? У меня после работы макроса и сохранения ODS - повторное Ctrl+Shift+F4 отражает добавленное макросом в ODB, а значит и в ODT.  
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Цитата: mikekaganski от 19 августа 2020, 12:11
У меня Ваш макрос отсюда, помещённый в My Macros & Dialogs/Standard/Module1, работает в Calc без ошибок... (если речь о нём.)

Хотя нет, после перезагрузки документа, конечно, ругается на некорректный ThisComponent при открытии... забыл совсем.
С уважением,
Михаил Каганский

Roadroller

Цитата: mikekaganski от 19 августа 2020, 12:11
У меня Ваш макрос отсюда, помещённый в My Macros & Dialogs/Standard/Module1, работает в Calc без ошибок... (если речь о нём.)
Макрос от туда :)

Roadroller

Цитата: economist от 19 августа 2020, 12:25повторное Ctrl+Shift+F4
в ODT результат выполнения макроса 0.
Макрос в ODS

mikekaganski

Кстати, а для чего Вам пользовательская функция? Это ведь можно сделать формулой типа

=TEXTJOIN(";";1;OFFSET($Роли.$B$3;0;MATCH(C7;$Роли.$B$1:$CV$1;0)-1;58;1))
С уважением,
Михаил Каганский

economist

Цитата: Roadroller от 19 августа 2020, 12:46в ODT результат выполнения макроса 0.

Наверно вы используете в ODT Сервис - Рассылка писем - Добавить ODS. Это очень ограниченный режим рассылки.

Лучше так. Создаем ODB, слинкованную с ODS и используем ODB в ODT, по нажатию Ctrl+Shift+F4, перетаскиваем поля вручную, дальше кнопки Слияния или Данные в поля для одного документа.

Тогда все сохранения (ручные, макросом итд) в ODS - обновят данные по повторному нажатию Ctrl+Shift+F4 и в ODB, и в ODT (в полях слияния). Чтобы ODS был доступен для записи - окно Диспетчера данных нужно закрывать (Ctrl+Shift+F4).  
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Roadroller

Цитата: mikekaganski от 19 августа 2020, 13:00
Кстати, а для чего Вам пользовательская функция? Это ведь можно сделать формулой типа

=TEXTJOIN(";";1;OFFSET($Роли.$B$3;0;MATCH(C7;$Роли.$B$1:$CV$1;0)-1;58;1))
Роли это матрица доступа, где перечислены пользователи(по оси Х) и весь перечень ролей(по оси У) на пересечении стоит "ДА" если данная роль выдана пользователю. Зная пользователя я составляю строку из выданных ролей, дабы внести ее в документ.
Насколько я понимаю MATCH вернет только первое встретившееся значение.
Функцию я написал потому что ее проще осмыслить, чем собирать конструкцию, которую я через пол года не вспомню

Roadroller

Цитата: economist от 19 августа 2020, 13:10Наверно вы используете в ODT Сервис - Рассылка писем - Добавить ODS. Это очень ограниченный режим рассылки.
Для моей задачи вполне годится, иначе мне проще выкурить мануал MVC Core и настрогать вэб морду под базу. Но спасибо погляжу в сторону ODB, но там то же есть свои особенности, хотя бы постоянная ругань на отсутствие java.

mikekaganski

#12
Цитата: Roadroller от 19 августа 2020, 13:29
Роли это матрица доступа, где перечислены пользователи(по оси Х) и весь перечень ролей(по оси У) на пересечении стоит "ДА" если данная роль выдана пользователю. Зная пользователя я составляю строку из выданных ролей, дабы внести ее в документ.
Ну, в Вашей функции с AskLibO Вы просто собирали несколько "ДА" вместе, что не давало никакого представления о том, откуда это ДА пришло.
Цитата: Roadroller от 19 августа 2020, 13:29
Насколько я понимаю MATCH вернет только первое встретившееся значение.
Да, первое значение ФИО. Затем OFFSET вернёт полный столбец под ним.
Цитата: Roadroller от 19 августа 2020, 13:29
Функцию я написал потому что ее проще осмыслить, чем собирать конструкцию, которую я через пол года не вспомню
Ну, это конечно Вам решать. Но похоже, проблема есть с обработкой пользовательских функций.
С уважением,
Михаил Каганский

Roadroller

Цитата: mikekaganski от 19 августа 2020, 13:34Ну, в Вашей вункции с AskLibO Вы просто собирали несколько "ДА" вместе
ага, это потому что с номерами строк и столбцов запутался. В текущей реализации функция собирает роли выданные пользователю, все как и задумано.

Цитата: mikekaganski от 19 августа 2020, 13:34Но похоже, проблема есть с обработкой пользовательских функций.
Решил копированием "как текст" результата работы функции в соседную ячейку. Неудобно, но несомненно удобнее чем набирать все в ручную.

economist

Цитата: mikekaganski от 19 августа 2020, 13:34постоянная ругань на отсутствие java.

jPortable с portableapps.com решает проблему с JAVA навсегда.

Java нужна хотя бы ради LanguageTools. Для рассылки она не нужна. 


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