Вопрос

Коллеги, подскажите.

Как убрать данное всплывающее окошко, просто убрать из всей системы, что бы оно нигде не выскакивало.

Появляется в полях типа "справочник" если ввести значение, которого нет, то платформа предлагает это значение создать, что нам не нужно.

Нужно именно убрать данную опцию, а не отключить права.

У меня такой же вопрос

5 комментариев

как вариант заместить BasePageV2, код

define("BasePageV2", [],
	function() {
		return {
			messages: {},
			mixins: {},
			attributes: {},
			modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
			methods: {
				onLookupDataLoaded: function(config) {
					config.collection.each(function (item) {
						var key = item.get("value");
						config.objects[key] = item.model.attributes;
					}, this);
				}
			},
			diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
		};
	});

 

В своё время получили ответ, что убрать невозможно.
В итоге сделали в карточках (не в справочниках) хоть одно обязательное поле кроме главного. Тогда хотя бы не "по-тихому" создается новая запись, а пользователь осознанно и ответственно нажимает Save

Варфоломеев Данила пишет:
как вариант заместить BasePageV2, код

А это можно сделать для конкретных  lookup'ов?

Владимир Соколов пишет:
А это можно сделать для конкретных lookup'ов?

В config.columnName приходит название колонки, так что в теории - да.

Варфоломеев Данила,

 Большое спасибо, все получилось

 

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

Есть кастомный раздел "Каталог услуг".

Есть БП, в котором ставится Активность "Согласовать Каталог услуг" как в этой Активности указать связь с "Каталогом услуг" по аналогии с "контактами" "контрагентами" и т.д.

Какие объекты нужно заместить?

В какие из замещенных объектов нужно изменить?

и что нужно изменить?

У меня такой же вопрос

3 комментария

Евгений, здравствуйте.

Необходимо добавить с помощью мастера раздела на страницу Активности справочное поле, которое будет указывать на объект Каталог Услуг. Поскольку в элементе Выполнить задачу в качестве параметров можно указывать предопределенный набор полей, для решения задачи необходимо использовать такой подход:

- добавить элемент Добавить данные, объект = Активность, для созданного поля заполнить Каталог услуг

- с помощью элемента Открыть страницу редактирования для существующей записи открыть созданную запись.

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

Логвин Андрей Витальевич,

Спасибо, понимаю, что решение рабочее.

А если мне нужно в мини карточку активности выводить это связанное поле? + по результату активности, процесс выполняет тот или иной шаг, как с этим быть?

Евгений.,

По поводу миникраточки - для этого необходимо замещать карточку ActivityMiniPage, выводя на нее созданное поле.
Информацию можно по работе с миникарточкой можно найти на Академии.
По второму вопросу - исходящие потоки с условием на результат Активности можно добавить только в рамках элемента Выполнить задачу.
Для того, чтобы в этом элементе отображалась колонка (в блоке Связи), необходимо в БД явно указать связь. Реализация рассматривалась на community.
Запись связи вносится в таблицу entityConnection, где SysEntitySchemaUid - uid объекта Активности (можно определить в sysschema по колонке name),
ColumnUid - uid кастомной колонки в объекта Активности (например, можно найти в метаданных объекта).

После добавления связи, для того, чтобы новое поле отобразилось в элементе Выполнить задачу, может понадобиться очистка redis.

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Коллеги, а вы знаете о том, что на Академии Terrasoft есть запись вебинара для разработчиков приложений marketplace?

Информация о том, с чего начать разработку приложений, собрана в удобном формате в 2-часовом ролике:

  • Общие сведения о bpm'online marketplace
  • Настройка профиля для разработчика
  • Заказ сайта для разработки
  • Рекомендации по созданию приложений
  • Выполнение разработки приложения
  • Проверка на тестовом сайте
  • Регистрация решения в Личном кабинете
  • Публикация приложения в marketplace

Надеемся, он будет вам полезен!

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Друзья, коллеги-разработчики Marketplace обратились c вопросом. Подскажите, кто-нибудь, куда копать? :)

 

Нужно получить доступ к ConfigurationConstants

в коде раздела добавили

define("kitmediaCallhelper1Section", ["performancecountermanager", "ConfigurationConstants","jQuery"], function (performanceManager, ConfigurationConstants,$) {

но ConfigurationConstants не доступен, в то же время остальные модули доступны.

В зависимостях пакета Base, Core, Lead, NUI

 

У меня такой же вопрос

1 комментарий

Алексей, связано это с тем, что если в модуле нигде не используется переменная (в нашем случае ConfigurationConstants), то она и не инициализируется на странице. Если в init прописать использование ConfigurationConstants, то она становится видимой и ее можно использовать.
Однако, обращаю ваше внимание, что в ассинхронных функциях обратного вызова (например, в вашем случае это анонимная функция, которая передается в this.callParent(...)) переменная ConfigurationConstants не будет видна, т.к. выполнение init уже будет завершено без ожидания завершения ассинхронного вызова. В этом случае вы можете использовать код:
var ConfigurationConstants​​​​​​​ = require("ConfigurationConstants"​​​​​​​);

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

Добрый день, коллеги.

Подскажите как можно скрыть (не отображать) кнопку определенным ролям?

У меня такой же вопрос

2 комментария

Добрый день

Задачу можно решить 2-мя вариантами:

1. Больше кода

  • определить роль текущего пользователя, реализовав запрос в БД;
  • обернуть этот запрос в метод, который должен отрабатывать в методе init вашей карточки (раздела). Если работа метода будет асинхронной, то изначальную инициализацию атрибута нужно будет сделать в false;
  • добавить собственный атрибут в модель, к примеру isButtonVisible
  • в diff прописать операцию merge для этой кнопки, указав visible: {bindTo: "isButtonVisible"}
  • в зависимости от результата запроса устанавливать значение атрибута

2. Меньше кода

  • создаем операцию в разделе "Доступ к операциям", к примеру HaseButton;
  • настраиваем доступ к операции по ролям;
  • gовторяем все, что описано в варианте 1 (кроме написания запроса к БД), но с модификациями:

               - создаем метод, который определяет наличие права             

                  (.../RightsService/GetCanExecuteOperations)

               - по результату заполняем атрибут IsButtonVisible

Спасибо, пока реализовали через процесс.

Который считывает входит пользователь в группу или нет, а дальше ветвление, если входит то процесс по кнопке выполнянется, если не входит не выполняется

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

Нужно сделать фильтрацию фильтра.

В выделенную часть нужно вывести только сотрудников, как это реализовать. 

Заранее благодарен.

У меня такой же вопрос

2 комментария

никак, для этого используйте возможности расширенной фильтрации

Или вооружиться напильником и сломать пару модулей (гуглите "simpleFilter" по конфигурации + можно в quickFilter ещё заглянуть). Ну это прям если совсем надо.

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

Добрый день!

Кто поможет решить вопрос с запуском TS 3.3.2 на машине с Windows 10?
После логина выдается ошибка "Automation server can't create object", после чего программа запускается дальше. Запускается As Administrator и пробовал с разными уровнями совместимости.

Вторая проблема - это печать word-отчетов на Word 2016. Библиотеки Office зарегистрировались, Add-Ins'ы Terrasoft в Word показываются, но из самого Terrasoft word-отчеты не запускаются: "Microsoft Word is not setup in your system"

Спасибо за помощь

У меня такой же вопрос

5 комментариев

1. Нужно первый раз запустить с правами администратора Windows.
2. Нужно зайти в TSAdmin и вписать в конфигурации номер версии Office 16.0 , подробнее см. тут.
16.0

"Зверев Александр" написал:1. Нужно первый раз запустить с правами администратора Windows.

Да, так и запускаем - ошибка всё равно появляется.

"Зверев Александр" написал:2. Нужно зайти в TSAdmin и вписать в конфигурации номер версии Office 16.0

Спасибо, часть отчетов начала запускаться. С остальными будем разбираться

"Владимир Соколов" написал:Да, так и запускаем - ошибка всё равно появляется.

Значит, чего-то не хватает на уровне Windows, не создаётся COM-объект.

"Владимир Соколов" написал:С остальными будем разбираться

Это может быть что угодно в самом коде, генерирующем отчёт.
Или неверный формат файла-шаблона. Например, нет листа в Excel с нужным названием или что-то аналогичное в Word.
Лучше всего пошагово пройти в отладчике.

"Зверев Александр" написал:Значит, чего-то не хватает на уровне Windows, не создаётся COM-объект.

А как-то можно понять, чего именно? Или это всё танцы с бубном?

Принципиальных запретов на работу в Windows 10 нет, хотя она и не гарантируется. Ведь разработка 3.Х прекратилась раньше, чем вышла эта версия Windows.

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

Здравствуйте.

На окне редактирования добавила поле типа LookupDataControl.
Данное поле предназначено только для выбора значения из выпадающего списка, чтобы передать выбранное значение как параметр.
DatasetLink этого поля имеет не стандартное название dlData, а dlUsageRange. Данное поле не активно на карточке редактирования.

Фильтрую датасет:

var UsageRangeDataset = Self.ComponentsByName('dlUsageRange').Dataset;
UsageRangeDataset.Close();
ApplyDatasetFilter(UsageRangeDataset, 'ID', 999, true);   // 999-фиктивное значение, чтобы при открытии окна, поле было пустым. ID имеет тип int
UsageRangeDataset.Open();

Когда выбираю значение из списка, генерируется ошибка: Catastrophic failure

Вопрос: Как открыть это поле?

У меня такой же вопрос

2 комментария

Марина, мне кажется, для Ваших целей нужно использовать не LookupDataControl, а LookupControl.
Там указывается LookupDatasetLink, а выбранное из него значение хранится в свойствах Value и DisplayValue компонента.

Здравствуйте Александр. Спасибо.

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

Здравствуйте, Коллеги!:)
В моей работе потребовалось закрыть доступ к ряду справочников(возможен только просмотр). Появилась проблема со справочником ОПФ. Этот справочник открывается особым образом(прикрепил картинку). Пробовал через администрирование, получается, но он блокирует для всех, кроме сис. админов, а мне требуется перекрыть именно всем, даже сис. админу. Помогите, пожалуйста, добрые люди:)

У меня такой же вопрос

2 комментария

Здравствуйте, Артем!

Можно ограничить права на редактирование справочников с помошью права доступа на операцию с кодом CanManageLookup.

"Мотков Илья" написал:

Можно ограничить права на редактирование справочников с помошью права доступа на операцию с кодом CanManageLookup.

Илья, а что делать с другими справочниками, если забрать права на эту операцию у всех? Апдейтить на уровне БД или есть какое-то более адекватное решение?

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

Здравствуйте, Коллеги!:)
В моей работе потребовалось закрыть доступ к ряду справочников(возможен только просмотр). Появилась проблема со справочником ОПФ. Этот справочник открывается особым образом(прикрепил картинку). Пробовал через администрирование, получается, но он блокирует для всех, кроме сис. админов, а мне требуется перекрыть именно всем, даже сис. админу. Помогите, пожалуйста, добрые люди:)

У меня такой же вопрос

3 комментария

Здравствуйте!

Особенность системных администраторов в том, что они могут делать все.
Это администрируется системными операциями:

  • CanDeleteEverything
  • CanInsertEverything
  • CanSelectEverything
  • CanUpdateEverything

Для того, чтобы запретить всем пользователям вносить изменения в справочник необходимо создать соответствующую логику на уровне объекта справочника.

По умолчанию во всех справочниках проверяются права на системную операцию CanManageLookups (логика родительского объекта BaseLookup). Проверка реализована в процессе объекта в методе CanManageLookups.

Можно сделать следующее:
1) Создать новую системную операцию и никому на нее права не давать. Предположим, что ее код CanManageSpecialLookups. Естественно, права на эту операцию мы никому не даем.
2) Заместить объект справочника, в процессе объекта переопределить метод CheckCanManageLookups (установить признак "Переопределен").
Переопределенный метод должен выглядеть следующим образом:
UserConnection.DBSecurityEngine.CheckCanExecuteOperation("CanManageSpecialLookups");

После публикации только пользователи с правами на системную операцию CanManageSpecialLookups (то есть никто) смогут менять/добавлять/изменять данные справочника.

Спасибо, Алексей! Получилось

Так понятно объяснено и в краткие сроки:)

Войдите или зарегистрируйтесь, чтобы комментировать