Блог
psql: предупреждение: лишний аргумент "-c" проигнорирован. Ошибка при восстановлении БД Creatio из бэкапа в Windows
- Информация о материале
- Категория: Ошибки
- Опубликовано: 20 сентября 2022
- Просмотров: 1141
В инструкции по восстановлению БД Creatio в СУБД Postgres есть инструкция по восстановлению БД:
psql.exe --host pg_server_address --port pg_server_port --username=pg_sysadmin --dbname=pg_dbname –c "CREATE DATABASE pg_dbname_system WITH OWNER = pg_user ENCODING = 'UTF8' CONNECTION LIMIT = -1"
Ошибка
Однако на Windows эта команда падает с ошибкой psql: предупреждение: лишний аргумент "-c" проигнорирован
Решение
Это возникает из-за того, что при работе с psql в консоли Windows важен порядок аргументов и параметр --dbname должен идти последним. Поэтому строка восстановления БД должна выглядеть следующим образом:
psql.exe --host pg_server_address --port pg_server_port --username=pg_sysadmin –c "CREATE DATABASE pg_dbname_system WITH OWNER = pg_user ENCODING = 'UTF8' CONNECTION LIMIT = -1" --dbname=template1
Надо обратить внимание, что для подключения к СУБД должна быть указана существующая БД. При установке СУБД всегда создаётся служебная БД: template1, которую можно использовать для подключения (в неё не будут вноситься никакие изменения).
Обсудить в Телеграм
Остановка ранее запущенных экземпляров процесса
- Информация о материале
- Категория: Хаутушки
- Опубликовано: 18 августа 2021
- Просмотров: 1475
Зачастую процессы, запускаемые по таймеру, обрабатывает множество записей и в некоторых случаях их количество настолько велико, что процесс не успевает завершиться до запуска следующего экземпляра. Это чревато нестабильным поведением системы, т.к. фильтры на процессах одинаковые, может запуститься обработка одной и той же записи, могут сбиться счётчики и возникнуть прочие проблемы.
Чтобы этого избежать необходимо сделать так, чтобы одновременно в системе работал только один экземпляр интересующего нас процесса.

Задача
Принудительно завершить ранее запущенные экземпляры процесса при запуске текущего процесса
Решение
- Ожидание требования остановки
- Одновременно с запуском процесса запускаем ветку ожидания сигнала прерывания. Называть сигнал лучше по названию процесса. Например, процесс называется
ProcessImportOrdersUpdateOpen, тогда сигнал назватьStopProcessImportOrdersUpdateOpen
- Ставим таймер задержки прерывания, чтобы процесс не остановил сам себя;
- Одновременно с запуском процесса запускаем ветку ожидания сигнала прерывания. Называть сигнал лучше по названию процесса. Например, процесс называется
- Генерация требования остановки
- Добавляем генерацию сигнала по всей системе на остановку прочих экземпляров

- Добавляем генерацию сигнала по всей системе на остановку прочих экземпляров
Описание
Процесс идёт по всем безусловным веткам управления одновременно. А дальше останавливается на элементе, который необходимо выполнить. Если это системное действие, оно будет выполнено автоматически, если пользовательское, процесс на нём остановится в ожидании реакции пользователя. На ожидании промежуточного сигнала процесс тоже остановится. Как только в системе будет сгенерирован нужный промежуточный сигнал, продолжит выполняться параллельная ветка процесса и процесс перейдёт к сигналу завершения. В результате процесс будет завершён вне зависимости от статуса выполнения прочих шагов (они будут отменены).
Обсудить в Telegram
Как сделать кликабельной ссылку в текстовом поле
- Информация о материале
- Категория: Хаутушки
- Опубликовано: 17 августа 2021
- Просмотров: 1422
Если на карточке в текстовом поле вставить ссылку на веб-страницу, она будет отображаться как обычный текст. Чтобы сделать ссылку кликабельной, надо добавить несколько блоков кода в схему карточки (подразумеваем, что текстовое поле уже добавлено в объект и выведено на карточку).
Например, надо сделать кликабельной ссылку на собрание в zoom.

Задача
Кликабельная ссылка в текстовом поле
Решение
- Добавить поле на карточку через мастер раздела. Для примера пусть это будет поле
gglpZoomLink - Добавить следующий код в блок кода
valuesнашего поля:"showValueAsLink": true,"href": {"bindTo": "UsrUrlFieldName","bindConfig": {"converter": "getLinkFormat"}},"controlConfig": {"className": "Terrasoft.TextEdit","linkclick": { bindTo: "onLinkClick"}} - Добавить следующий код в блок кода
methods:getLinkFormat: function(value) {return {"url": value,"caption": value};},onLinkClick: function(url) {var link = document.createElement("a");link.href = url;link.target = "_blank";document.body.appendChild(link);link.click();document.body.removeChild(link);return false;}
Объяснение
Итоговый вид кода страницы получился примерно такой:

Из метода getLinkFormat возвращаются значения двух переменных (можно задавать отдельно ссылку и текст ссылки), но мы используем ссылку для отображения без преобразований.
В методе onLinkClick использовано динамическое формирование элемента <a>, чтобы избежать блокировки всплывающих окон браузером.
Что интересно, если указывать ссылку без протокола (https://), она будет отображаться как относительная, добавляя в начале адрес приложения.
Оригинал решения: How to Format a URL as a Clickable Link in a Text Field in Creatio
Обсудить в Telegram
Отключение процессов на системе заказчика
- Информация о материале
- Категория: Хаутушки
- Опубликовано: 16 августа 2021
- Просмотров: 1555
В проектах бывает необходимость отключить штатный ("коробочный") процесс - заменить его на свой или перенести функциональность в Кейс. Есть варианты быстрый и правильный:
- Быстрый - это в дизайнере процессов выключить процесс (снять признак Активный). Однако это надо будет делать на каждом окружении (и клиентских тоже), что само по себе уже неудобно. К тому же со временем необходимость выключения процесса забывается и можно получить нестабильное поведение системы при отработке сигнала.
- Правильный - это создать замещающий процесс и заменить в нём стартовый сигнал на обычный.
Первый можно использовать для быстрого тестирования или проверки гипотезы на одном из окружений. Если же требуется совсем отключить процесс, то надо использовать второй.

Задача
Автоматически отключить штатный процесс на всех окружениях.
Например, мы хотим отключить процесс дисквалификации Лида.
Решение
Опубликовать новую версию штатного процесса с привязкой его в проектный пакет:
- В Библиотеке процессов находим процесс, стартующий по сигналу от объекта системы

- Изменяем в нём стартовый сигнал на обычный (как в первом изображении заметки) и сохраняем новую версию (конечно перед выполнением задачи надо было проверить текущий пакет в системных настройках).

Описание
Изменения между системами переносятся пакетами. В современных версиях Creatio есть отличный механизм версионирования процессов, позволяющий, при необходимости, возвращаться к предыдущим версиям.
Обсудить в Telegram
Чек лист начала настройки
- Информация о материале
- Категория: Правила жизни
- Опубликовано: 13 августа 2021
- Просмотров: 1392
Периодически случаются оказии, что выполнил настройку, поменял с десяток схем, создал пару разделов и справочников, а потом видишь, что они созданы не в том пакете или при попытке зафиксировать их в svn возникает конфликт блокировки.
Чтобы избежать таких проблем перед началом выполнения каждой задачи нужен исполнить ритуал "проверки обновлений и текущего пакета" :)

- Обновить пакет из svn
- Это, во-первых, поверит активность сессии аутентификации в хранилище
- А, во-вторых, подгрузит новые изменения в приложении при многопользовательской работе
- Выбрать / проверить Текущий пакет в системных настройках
- Опционально проверить в системных настройках Издателя и Префикс схем. Если в них будет ошибка, система ругнётся на различия с текущим пакетом при сохранении схем.
Обсудить в Telegram