Проинсталлировала демо-версию BPMonline Realty (5.4.0.732(719)_Realty_DemoInternal_MSSQL_RUS)

При попытке зайти под именем/паролем „Пользователь 1”, получаю ошибку :

Что это? И как это можно исправить?

Нравится

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

Пока писала сюда вопрос, мне уже пришел ответ из тех. поддержки - надо было очистить Redis. После этого все заработало.

Показать все комментарии
Технические вопросы
5.x

На моем компьютере стояла простая BPMonline CRM. Сегодня я установила BPMonline Realty, и при этом старая система исчезла. Осталась база данных, но каталог, веб-сайт на IIS - все удалено. Хотя при этом я указывала везде разные названия для папок. И разные порты для IIS.
Почему так произошло?

Нравится

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

Здравствуйте.
На текущий момент при повторной установке BPMonline (из инсталлятора) ситуация выглядит именно так. Если Вам необходимо установить на одном сервере несколько продуктов, то последующие установки нужно выполнять в ручном режиме (создать сайт, установить базу и т.д.). При наличии соответствующих лицензий необходимые файлы можно получить через менеджера или тех. поддержку.

Дело в том, что сама база остается. Самое главное что исчезает - исчезает фолдер с предыдущими установками. Так что я даже руками не могу создать сайт - нет реальной директории.

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

Я хочу еще раз вернуться к этому вопросу. На данный момент у меня имеются 3 демо версии : простая версия BPMonline, Realty - на русском и на английском.
Мне ОЧЕНЬ хотелось бы иметь все 3 версии на компьютере в рабочем виде. Как я могу это сделать?

Не знаю, как с демо, но несколько обычных версий на одном компьютере установлены быть могут. Инсталлятором не пользовался, проосто копировал папки с бинарниками, прописывал параметры доступа к БД и редактировал конфиг IIS Express. Можно и с IIS.

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

Если у Вас установочные пакеты, а не просто набор файлов BPMonline, то что бы разместить три сайта на одной машине нужно по очереди устанавливать потом сохранять в другом месте каждый сайт. Так как при запуске очередного установщика оп "перезатрёт" предыдущий результат. Если у Вас возникнут трудности обращайтесь в поддержку и я помогу Вам.

Показать все комментарии

В тестовой базе данных создала несколько собственных модулей (со всеми страницами для редактирования и так далее). можно ли это теперь перенести другую базу данных?

Нравится

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

Здравствуйте, Наталия.

Да, перенести модули можно.

Для этого следует выполнить следующие действия:

1. Выгрузить все добавленные Вами на базе разработки схемы, загрузить их в другую БД и опубликовать;

2. Проанализировать таблицы SysModule, SysModuleDetails, SysModuleActions, SysModuleReports и т.д. (в зависимости от того, какую функциональность Вы добавляли в разделы), сформировать запрос, который будет добавлять эту информацию в БД и выполнить его на другой БД.

3. Почистить Redis и перезапустить веб-приложение.

> Выгрузить все добавленные Вами на базе разработки схемы, загрузить их в другую БД и опубликовать

Прощу прощения, но как именно я могу это выгрузить? И как я могу их загрузить? Есть где-то описание/документация/инструкция?
Или речь идет просто о создании таблиц в SQL? Но к каждому объекту/модулю еще страницы с интерфейсами прилагаются.

> сформировать запрос, который будет добавлять эту информацию в БД
какую эту информацию? И что это должен быть за запрос?

И как я могу почистить Redis?

Спасибо.

"Наталия П." написал:Прощу прощения, но как именно я могу это выгрузить? И как я могу их загрузить? Есть где-то описание/документация/инструкция?

Вот она.
"Наталия П." написал:И как я могу почистить Redis?

Вот так.

Спасибо!

"Наталия П." написал:какую эту информацию? И что это должен быть за запрос?

Это самое непростое с непривычки.

Набор SQL insert-запросов, которые на новой базе регистрируют такой же раздел. Какие могут быть варианты:

  • На новой базе после загрузки туда всех файлов со схемами вручную зарегистрировать нужный раздел.
  • Найти по дате создания новые записи в системных таблицах, которые появились после регистрации такого раздела на старой базе и создать в новой БД вручную или автоматически такие же записи.
  • При создании с нуля раздела на старой базе записывать insert-запросы при помощи программы-профайлера БД (он же трекер). Если эти запросы прогнать на новой БД - создастся такой же раздел.
Показать все комментарии
Инциденты
приоритеты
5.x

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

Подскажите пожалуйста как можно реализовать систему приоритетов в системе CRM+SD.

Есть три категории сервисов/инцидентов (внутр. поддержка, поддержка абонентов и инфраструктурные инциденты). В категории "поддержка абонентов", например, есть три варианта сроков реакции и разрешения в зависимости от того, кому предоставляется услуга (физ. лицо, юр. лицо, особый клиент). А в категории "внутренняя поддержка" этих вариантов два, в зависимости от того, на чью работу влияет инцидент (руководство, сотрудники). Мы решили реализовать эту структуру с помощью пакетов обслуживания. Скажем, создаются пакеты "для физ лиц", "для юр. лиц", "вип", а также "руководство", "сотрудники". Каждый сервис включается в соответствующие его категории пакеты и для каждого пакета прописываются сроки реакции/реагирования. Поле выбора приоритета в карточке инцидента делается неактивным. Но в таком случае получается, что в системе любой сторонний клиент получает весь пакет услуг поддержки абонентов.
Как думают специалисты, такую схему можно назвать корректной или хотя бы допустимой?

Спасибо.

Нравится

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

Добрый день, Акмаль.
Логика будет корректна, если создать определенное количество SLA (для каждого клиента) со своим пакетом и объектами обслуживания.
Таким образом Вы обойдете ситуацию, когда любой сторонний клиент получает весь пакет услуг поддержки абонентов.

Показать все комментарии
Технические вопросы
5.x

Знакомлюсь с BPMonline. Создала новый объект (таблицу), создала страницу для редактирования. Делала все это через конфигурацию. Хочу так же создать на странице стандартные кнопки Ok и Cancel. Мне нужно самой для этих кнопок писать функциональность? Или есть возможность, как в TerraSoft, указать, что это кнопки со стандартной функциональностью (типа кнопка Ок имеет ModalResult = wmrOk)? Если самой - то есть какое-нибудь описание функциональности?

И еще вопрос. Как вообще правильно создавать в BPMonline новые объекты (модули)? В TerraSoft это делалось через специальный запрос (C:\Program Files\Terrasoft 3.4.1\Bin\TSClient.exe /wnd=wnd_CreateNewWorkspace). И тогда объект уже имел и все необходимые страницы - и для отображения грида, и страницу редактирования, и рабочее пространство. Даже можно было указать где отображать модуль. Есть нечто похожее для BPMonline?

Нравится

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

Немного разобралась. Для стандартных страниц надо указывать родительный класс - типа базовая страница реестра или базовая страница раздела. Тогда все стандартные кнопки сразу появляются. Но вот где получить точную информацию о том, какие базовые вещи должны быть оформлены при создании нового модуля? При добавлении нового раздела в рабочее места, программа указала, что не может найти элементов мое_имяFolder и мое_имяInFolder... Потыкавшись в стандартные разделы, я создала такие же элементы для своего модуля. Но судя по всему, есть еще куча всяких стандартных вещей. Хорошо бы заранее знать такую информацию. Возможно есть где-то документация?

На данном этапе у меня проблема с кнопкой "Добавить" - в гриде. Т.е. не могу добавить новую запись - выдается ошибка.

Но с другой стороны я нигде и не указывала какую страницу для редактирования открывать. Не могу найти, где это можно указать.

Заодно еще спрошу - я хочу удалить одну страницу. Я некорректно создала ее. Отметила на удаление. Но она не удаляется. Стоит как отмеченная на удаление. Как ее можно окончательно удалить? Потому как есть подозрение, что ошибка именно из-за нее вылетает. Потому как это некорректно созданная страница для редактирования. Новую страницу я создала, а эту не могу удалить.

"Наталия П." написал:На данном этапе у меня проблема с кнопкой "Добавить" - в гриде. Т.е. не могу добавить новую запись - выдается ошибка.

Но с другой стороны я нигде и не указывала какую страницу для редактирования открывать. Не могу найти, где это можно указать.


Наталия, похоже, что это из-за отсутствия страницы. Её можно указать в разделе "Рабочие места" на детали "Карточки редактирования" или же, если этого требуют обстоятельства, хардкодом в процессе грида.


Заодно еще спрошу - я хочу удалить одну страницу. Я некорректно создала ее. Отметила на удаление. Но она не удаляется. Стоит как отмеченная на удаление. Как ее можно окончательно удалить? Потому как есть подозрение, что ошибка именно из-за нее вылетает. Потому как это некорректно созданная страница для редактирования. Новую страницу я создала, а эту не могу удалить.

Если вы разрабатываете в своей конфигурации (а не общей TSBpm) и ещё не переносили изменения на TSBpm, то можно в меню правой кнопки выбрать "отменить изменения" и страница удалится целиком.

Если есть доступ к БД, можно удалить нужные записи из таблицы SysSchemaInSolution. Найти страницу можно по полям Name и Caption. Перед удалением запомнить значение поля SysSchemaId в удаляемой строке и удалить эту строку из таблицы SysSchema. С одной SysSchema может быть связано несколько SysSchemaInSolution, не забыть удалить все их.

Удалённые (перечёркнутые) страницы не должны влиять на ошибки, проблема в другом.

Спасибо. А как насчет этого вопроса :
Но вот где получить точную информацию о том, какие базовые вещи должны быть оформлены при создании нового модуля? При добавлении нового раздела в рабочее места, программа указала, что не может найти элементов мое_имяFolder и мое_имяInFolder... Потыкавшись в стандартные разделы, я создала такие же элементы для своего модуля. Но судя по всему, есть еще куча всяких стандартных вещей. Хорошо бы заранее знать такую информацию. Возможно есть где-то документация?

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

Процедура создания стандартного раздела выполняется в несколько этапов:

1. Создание основного объекта раздела. Например, для раздела “Контрагенты” таким объектом является “Контрагент”, а для раздела “Контакты” – “Контакт”. Объект раздела должен содержать колонки для хранения данных записей раздела.
2. Создание объектов “группа” и “элемент в группе” для корректной работы группировки записей в разделе.
3. Создание страницы карточки раздела, при помощи которой пользователь сможет добавлять новые, а также редактировать добавленные ранее записи раздела.
4. Создание страницы основного реестра раздела, который будет содержать записи раздела.
5. Создание страницы самого раздела, с помощью которой формируется структура раздела, в частности, эта страница содержит основной реестр раздела, дерево групп и область деталей.
6. Регистрация раздела в системе.

Для создания объектов и страниц используются дизайнер объектов и дизайнер страниц, соответственно. Для регистрации раздела в системе используется раздел “Рабочие места”.

Спасибо. Это действительно полезная информация. И я бы сюда еще добавила (для других новичков-разработчиков), что при создании страницы раздела необходимо указать страницу реестра для данного объекта.
А так же, при регистрации объекта в разделе "Рабочие места", необходимо указать для раздела карточку редактирования, детали и печатные формы (если они уже созданы).

Просто жаль, что все эти вещи приходится осваивать методов тыка (как в моем случае). Хотелось бы видеть такие азы в виде документации. Потому как сейчас, с такими инструкциями, для создания объекта с нуля, нужно пару часов (максимум), а я потратила во всеми ошибками и ожиданиями ответов на свои вопросы 2 рабочих дня.

Наталья, спасибо за вопросы, которые рассмотрели в данном топике!
Информацию на форуме постоянно мониторят наши разработчики и многое из пожеланий вносится в Террасофт. Не исключено, что и данный запрос будет реализован.

"Зверев Александр" написал:

Если есть доступ к БД, можно удалить нужные записи из таблицы SysSchemaInSolution. Найти страницу можно по полям Name и Caption. Перед удалением запомнить значение поля SysSchemaId в удаляемой строке и удалить эту строку из таблицы SysSchema. С одной SysSchema может быть связано несколько SysSchemaInSolution, не забыть удалить все их.

Удалённые (перечёркнутые) страницы не должны влиять на ошибки, проблема в другом.

То есть удалять только руками в БД?

Ув. Александры, для удаления записи SysSchema и связанных с ней записей SysSchemaInSolution можно просто удалить запись в таблице SysSchema. В БД стоит каскадная связь, которая удалит Вам записи из SysSchemaInSolution.
Наталья, в конфигурации TSBpm удалить запись страницы можно только через БД. Но если в Вашей конф пометить страницу для удаления, затем перенести изменения в конф TSBpm, с Вашей конфигурации страница удалится, а в TSBpm (извините за тавтологию) она только будет помечена, как удаленная. На компиляцию эта страница влиять не будет.
И еще, для того чтобы узнать SysSchemaId определенной страницы, можно открыть эту страницу в дизайнере и в адресной строке у Вас будет ...&Id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX... (у вас на скриншоте это пустое значение). Это и есть SysSchemaId страницы. После выполнить SQL в БД:
DELETE SysSchema
WHERE Id = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';

Здравствуйте, Александр!

Действительно, удалить сервис можно руками из БД, но мы практикуем следующий подход, создаем дополнительную конфигурацию, после чего дорабатываем все что необходимо в ней, тестируем, переносим в рабочую конфигурацию.
Если что-то не нравится в тестовой конфигурации - ее можно удалить, создать еще одну тестовую, продолжать дорабатывать свои пожелания в ней.
Как показала практика, рабочая конфигурация мало используется для доработок.

Показать все комментарии
API
бизнес-процесс
запуск бп
Технические вопросы
5.x

Добрый день!
Подскажите пожалуйста, как в BPMOnline программно запустить БП и передать ему параметры?
Буду благодарен за пример.

Нравится

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

1)приведите пожалуйста пример
2) укажите продукт и версию продукта (5.4.0.195 - пример)

"Sergey Karpenko" написал:

1)приведите пожалуйста пример

2) укажите продукт и версию продукта (5.4.0.195 - пример)


1) Необходимо запустить БП из карточки лида (по факту квалификации). Использовать задачу "подпроцесс" не могу из-за проблем описанных в Как вызвать БП из процесса карточки (по событию). Хотел использовать программный запуск как обходной вариант.
2) BPMOnline CRM OnDemand Версия 5.4.0.195

Валерий, программно конечно можно запустить БП, но можно ведь обойтись и без кода, настроив БП на автоматический запуск по сигналу (добавлен новый контрагент + еще один сигнал добавлен новый контакт), вторым шагом в процессе установить проверку: если у контакта\контрагента записи на детали "Лиды" существуют (Account.LeadId != null, Contact.LeadId !+ null), значит он был создан в рамках квалификации, значит продолжаем выполнения БП, в противном случае - "конец".

Дмитрий, спасибо за ответ.
Да, действительно, такой вариант можно использовать, но мне кажется программный подход здесь будет более элегантным.
И если есть открытый API для вызова БП, то хотелось бы о нем знать. Хотя бы для общего развития :)

попробую уточнить у разработки, сообщу по результатам.

Валерий,

Программно запустить бизнес-процесс BPMonline можно через веб-сервис. Более подробно об этом изложено в статье SDK http://www.terrasoft.ua/bpmonlinesdk/WorkWithBpmByWebServices.html

Коллеги посоветовали :)

var manager = UserConnection.ProcessSchemaManager;
var processSchema = manager.GetInstanceByName("MyProcess");
var process = processSchema.CreateProcess(UserConnection);
if (processSchema.Parameters.ExistsByName("MyParameter")) {
process.SetPropertyValue(“MyParameter”, “value”);
}
process.Execute(Page.UserConnection);

приятно работы :)

Коллеги, огромное спасибо за помощь! Все работает.

Показать все комментарии
Технические вопросы
5.x

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

Спасибо.

Нравится

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

Добавьте автоматизированное действие, которое будет представлять собой БП с элементом "Добавление данных" ( или "Изменение данных", в зависимости от задачи). Выбранные записи реестра будут передаваться через параметр "Выбранная запись раздела".

insert into ServiceTeam(ProcessListeners, ContactId, SysAdminUnitId, ServiceId)
select 0, null, s.Id, ss.Id from Contact c, SysAdminUnit s, [Service] ss
where s.Name = 'Группа' 
and (ss.ServiceName = 'сервис1' or ss.ServiceName = 'сервис2' or ss.ServiceName = 'сервис3')

Вот только мне кажется что должно быть GroupId и Group вместо ContactId и Contact...

Попробуйте так:

declare @GroupName nvarchar(250)
set @GroupName = '3-я линия поддержки'
declare @AdminUnitID uniqueidentifier
set @AdminUnitID = (select top 1 ID from SysAdminUnit where Name = @GroupName)
 
 
INSERT INTO ServiceTeam(Id, 
SysAdminUnitId,
DisplayValue,
ServiceId)
select newid(), @AdminUnitID, @GroupName, SS.Id 
from Service SS
where (ss.ServiceName = 'сервис1' or ss.ServiceName = 'сервис2' or ss.ServiceName = 'сервис3')

Есть ли возможность оптимизировать скрипт?

INSERT INTO ServiceTeam(ProcessListeners, 
ContactId, SysAdminUnitId, ServiceId, DisplayValue)
SELECT DISTINCT 0, null, s.Id, ss.Id, s.Name
FROM SysAdminUnit s, [Service] ss
 
WHERE (
s.Name = 'Команда абонентской службы и бухгалтерии' or
s.Name = 'Команда поддержки биллинга')
 
AND (ss.CategoryId in (select Id from CategoryOfService cs where cs.Name = 'Тех. поддержка абонентов'))
AND (ss.ServiceParentId in (select Id from [Service] sss 
 
where (
sss.ServiceName = 'Тарификация' or 
sss.ServiceName = 'Платежи' or	
sss.ServiceName = 'Блокировка/Разблокировка')))
 
OR ((
s.Name = 'Команда абонентской службы и бухгалтерии' or 
s.Name = 'Команда поддержки биллинга') 
 
AND ss.Id in (select Id from [Service] ssss 
 
where (
ssss.ServiceName = 'Тарификация' or 
ssss.ServiceName = 'Платежи' or 
ssss.ServiceName = 'Блокировка/Разблокировка')))

Скажите, Наталия, а какой способ предпочтительнее - предложенный Вами в первом посте или все-таки скрипт??

Разница заключается в том, что первый способ позволяет любому пользователю добавить данные из приложения BPMonline воспользовавшись действием.
Второй способ предполагает наличие доступа к СУБД, навыков работы с запросами (чем не обладают пользователи).
Какой из способов предпочтительнее зависит от того, следует добавить данные единоразово или регулярно. Если разово – лучше использовать скрипт.

Наталия, понятно.

Что касается скрипта, я все-таки переспрошу и детализирую вопрос

AND (ss.ServiceParentId IN (SELECT Id FROM [Service] sss 
 
WHERE (
sss.ServiceName = 'Тарификация' OR 
sss.ServiceName = 'Платежи' OR   
sss.ServiceName = 'Блокировка/Разблокировка')))

Можно ли обойтись без этого повторного запроса к Service?

Ещё один вопрос. Если я хочу при помощи скрипта добавить множество сервисов в какой-то пакет сервисов, какие таблицы и поля нужно заполнить в обязательном порядке?

Насколько я разобрался, это

Таблицы:

ServiceInServicePackage

Поля ServiceInServicePackage:

ServicePackageId
ServiceId

И правильно ли будет просто очистить таблицу ServiceInServicePackage, если я хочу, чтобы ни один сервис не состоял ни в одном пакете?

Спасибо!

да, верно.

Показать все комментарии
Технические вопросы
5.x

Здравствуйте!
Подскажите, как реализовать автоподстановку списка групп поддержки (деталь "Сервисные инженеры") в поле "Группа" при выборе сервиса?

Заранее спасибо!

Нравится

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

Здравствуйте.
Детализируйте, пожалуйста, задачу. Не понятно, где находится поле группа и где происходит выбор сервиса.

Здравствуйте, Максим.

В карточке инцидента при выборе сервисного договора в поле сервиса появляется возможность выбрать из списка сервисов, относящихся к выбранному договору. Нужно, чтобы при выборе одного из этих сервисов в поле "Группа" появлялся значок с изображением молнии и по нажатии на него в списке были группы, добавленные ранее на деталь "Сервисные инженеры" этого сервиса.

Здравствуйте.
К сожалению сегодня не успею предоставить Вам алгоритм реализации нужного Вам функционала.
Буду стараться закончить завтра.

Извините за задержку с ответом.

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

Функционал смарт-тега для ответственной группы следует описывать в процессе страницы "Базовая страница редактирования обращения в BPMonline".
1. Событие изменения сервиса в карточке редактирования следует изменить на:

public virtual bool ServiceEditChangeScriptTask2Execute(ProcessExecutingContext context) {
			var serviceId = (Guid)Page.ServiceEdit.Value; 
var groupId = (Guid)Page.GroupEdit.Value;
var availableOwners = GetAvailableOwnersNew(serviceId, groupId);
//added
var availableGroup = GetAvailableGroupOwnersNew(serviceId);
//end
SetOwnerToolButtonStateNew(availableOwners);
//added
SetGroupToolButtonStateNew(availableGroup);
//end
var currentOwnerId = Page.DataSource.ActiveRow.GetTypedColumnValue<Guid>("OwnerId");
if (currentOwnerId != Guid.Empty && availableOwners != null && !availableOwners.ContainsId(currentOwnerId)) {
	Page.OwnerEdit.SuspendAjaxEvents();
	Page.OwnerEdit.Clear();	
	Page.OwnerEdit.ResumeAjaxEvents();
}
SetParentRelease();
return true;

}

2. В структуре процесса необходимо создать новый метод: GetAvailableGroupOwnersNew (+ добавить параметр с типом Guid - serviceId)

if (serviceid == Guid.Empty)  {
	return null;
}
 
var result = new List<RecordData>();
var entitySchemaManager = UserConnection.GetSchemaManager("EntitySchemaManager") as EntitySchemaManager;
var serviceTeamSchemaQuery = new EntitySchemaQuery(entitySchemaManager, "ServiceTeam");
var sysAdminUnitIdQueryColumnName = serviceTeamSchemaQuery.AddColumn("SysAdminUnit.Id").Name;
var sysAdminUnitNameQueryColumnName = serviceTeamSchemaQuery.AddColumn("SysAdminUnit.Name").Name;
serviceTeamSchemaQuery.Filters.Add(serviceTeamSchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "Service", serviceid));
serviceTeamSchemaQuery.Filters.Add(serviceTeamSchemaQuery.CreateFilterWithParameters(FilterComparisonType.IsNull, "Contact"));
var serviceTeamMembers = serviceTeamSchemaQuery.GetEntityCollection(UserConnection);
var idsList = new List<Guid>();
foreach (var serviceTeamMember in serviceTeamMembers) {
	var serviceTeamGroups = new List<RecordData>();
	var groupId = serviceTeamMember.GetTypedColumnValue<Guid>(sysAdminUnitIdQueryColumnName);
	var recordData = new RecordData();
	recordData.Id = groupId;
	recordData.Name = serviceTeamMember.GetTypedColumnValue<string>(sysAdminUnitNameQueryColumnName);
	serviceTeamGroups.Add(recordData);
 
 
 
	foreach (var serviceTeamGroup in serviceTeamGroups) {
		if (!idsList.Contains(serviceTeamGroup.Id)) {
			result.Add(serviceTeamGroup);
			idsList.Add(serviceTeamGroup.Id);
		}
	}
}
return result.ToArray();

3. Там же, в структуре процесса необходимо создать еще один метод: SetGroupToolButtonStateNew

CreateToolButtonMenuNew(Page.GroupEdit, Page.GroupEditToolButton, availableGroup, "ShowAllOwners", AllOwnersGroup.ToString(), true);

где AllOwnersGroup - локализируемая строка (необходимо добавить)

Максим, не получается добавить новый входящий параметр на CreateToolButtonMenuNew - кнопка добавления неактивна.

Скрин с ошибками компиляции :

Акмаль, CreateToolButtonMenuNew - наследованный метод, поэтому его параметры редактировать в данном процессе нельзя.

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

А вторая о том, что не создали локализованную строку. Добавлять ее надо в LocalizableStrings, а не в CreateToolButtonMenuNew.

Со строкой понятно, спасибо, а GroupEditToolButton как создать?

Что-то вроде

var groupId = (Guid)Page.GroupEditToolButton.Value;

?

Так GroupEditToolButton - это кнопка в поле группа. В дизайнере, правым кликом по полю Группа, добавить, кнопка и назовите ее GroupEditToolButton.

:smile: Спасибо, Максим, всё работает!

Всех с праздником)

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

Заранее спасибо.

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

Судя по багрепорту, ошибка ядровая, в компонентах интерфейса, для диагностики необходима отладка на ядре.

В качестве быстрого решения рекомендую попробовать очистить профиль - иногда при активной разработке в профиле сохраняются старые параметры элементов управления. Инструкция по очистке профиля в приложении.

В случае, если очистка профиля не поможет, просим предоставить резервную копию БД и описание точного кейса воспроизведения в техничсекую поддержку.

Анна, очистка профиля не помогла. Решить проблему нужно как можно скорее, так как сроки сдачи проекта поджимают. Надеюсь на скорое решение.

Архив с БД:
http://www.fayloobmennik.net/2843761

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

Ответила письмом.

Ещё одна маленькая проблема. При попытке изменить группу в уже сохраненной записи инцидента при нажатии на молнию в поле Группа список групп не открывается.
Как можно исправить данную ошибку?

Акмаль, это не ошибка. Судя по тому, что в Вас в скриптах, там просто нет скрипта-обработчика для этой кнопки.

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

1. Что должно происходить при нажатии на кнопку?
2. Что должно происходить при выборе одного из элементов?
3. Как это будет отражаться на остальных событиях и полях карточки редактирования? Какая должна быть связь?

Анна, необходимо, чтобы при нажатии на кнопку отображался список групп, добавленных на деталь сервисные инженеры выбранного (в поле сервис карточки инцидента) сервиса. Проще говоря, чтобы кнопка работала не только при регистрации инцидента с нуля, но и если придётся изменить группу в карточке уже созданного инцидента.

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

Тогда Вам нужно продублировать функциональность загрузки выпадающего меню на само нажатие кнопки:

1. Создать обработчик;
2. Вызвать в этом обработчике CreateGroupToolButtonNew

Анна, спасибо! Всё работает прекрасно.:)

Показать все комментарии
удаление
Технические вопросы
5.x

Добрый день.

Подскажите пожалуйста, как можно удалить взаимосвязанных контакта, контрагента, сервис и сервисный договор, созданные в тестовых целях?

Нравится

2 комментария
поле
Технические вопросы
5.x

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

Добавила поле "признак" на карточку детали раздела. Хотелось бы, что бы, после того как поставила галочку на поле "признак" и нажала на кнопку "OK", невозможна было бы менять карточку. То есть убрать галочку с поля "признак". Не могли бы подсказать, как я могу, все это настроит?
Заранее Спосиба.

С уважением,
Гюнель

Нравится

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

Гюнель, здравствуйте.

На событии PageLoadComplete можно проверить, заполнено ли поле признак, и в зависимости от этого установить доступность контрола:

if(Page.PriznakEdit.Value)
{
       Page.PriznakEdit.Ebanled = false;
}
else
{
       Page.PriznakEdit.Ebanled = true;
}

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

Я добавила на EditPage следующий скрипт.
if (Page.DepartmentConfirmEdit.Value)
{
Page.DepartmentConfirmEdit.Enabled = false;
}
else
{
Page.DepartmentConfirmEdit.Enabled = true;
}

#DepartmentConfirmEdit - Название поля#

Но во время компиляции выдает следующую ошибку.

Cannot implicitly convert type "object" to "bool". An explicit conversion exists (are you missing a cast?)

В чем ошибка не понимаю. Не могли бы помочь.

Заранее спасибо.

Не совсем понял. Вы хотите блокировать какое поле в зависимости от какого значения?

На карточку деталь добавила логическое поле "признак". Если возможна, хочу добавит следующую функцию. Если пользователь поставит галочку на это поле, в дальнейшем не смог его поменять (убрать галочку).

С уважением,
Гюнель

Тогда просто:

Page.DepartmentConfirmEdit.Enabled = !Page.DepartmentConfirmEdit.Checked;

Этот скрипт - на изменение поля и после базового PageLoadComplete.

Здравствуйте, Гюнель.

Компилятор говорит Вам, что не может неявно конвертировать значение с типом объект в булевский тип. Page.DepartmentConfirmEdit.Value - это объект, но во время проверки Вы обращаетесь к нему, как к булевому значению.

Попробуйте изменить условие на: if (Page.DepartmentConfirmEdit.Value == string.IsEmpty)

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

К сожелению у меня ничего не получилас.

>Олейник Дмитрий

if (Page.DepartmentConfirmEdit) {
Page.DepartmentConfirmEdit.Enabled = false;
} else {
Page.DepartmentConfirmEdit.Enabled = true;
}
return true;

Выдает следуюшую ошибку (прик. файл error01.jpg)

>Maxim Gritsenko

if (Page.DepartmentConfirmEdit.Value == string.IsEmpty) {
Page.DepartmentConfirmEdit.Enabled = false;
} else {
Page.DepartmentConfirmEdit.Enabled = true;
}
return true;

Выдает следуюшую ошибку (прик. файл error02.jpg)

>Зверев Александр

Page.DepartmentConfirmEdit.Enabled = !Page.DepartmentConfirmEdit.Checked;

Выдает следуюшую ошибку (прик. файл error03.jpg)

С уважением,
Гюнель

Гюнель, сделайте так:

if(Page.PriznakEdit.Checked)
{
       Page.PriznakEdit.Ebanled = false;
}
else
{
       Page.PriznakEdit.Ebanled = true;
}

либо проще:

Page.PriznakEdit.Enabled = !Page.DepartmentConfirmEdit.Checked;

Спосиба, получилось.

Но есть одна проблема. Когда я нажимаю кнопку "изменит", логическое поле "признак" опять становится активной. Что мне сделать что бы, даже при нажатии кнопки "изменит", это поле по-прежнему оставалось не активной.

Заранее Спосиба.

С уважением,
Гюнель

Page.DepartmentConfirmEdit.Enabled = !Page.DepartmentConfirmEdit.Checked;

Этот код также нужно добавить и в скрипт после базового PageLoadComplete.

К сожалению не получилось.
Все ровно, когда я нажимаю кнопку "изменит", логическое поле "признак" опять становится активной.

С уважением,
Гюнель

Здравствуйте, Гюнель.

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

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

Да уверенна. (Прик. файлы, Объект и карточка деталь раздела)

С уважением,
Гюнель

Здравствуйте, Гюнель.

А в дизайнере карточки Вы вынесли колонку в DataSource и связали с контролом?
Понимаю, что наводящие вопросы утомляют, но это самая вероятная причина.

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

Думаю что нет (Прик. файлы,)

С уважением,
Гюнель

Здравствуйте, Гюнель.

В дизайнере карточки добавляете колонку:

И затем в настройках контрола связываете контрол с ней:

Добавила, но ничего не изменилась.
Все ровно, когда я нажимаю кнопку "изменит", логическое поле "признак" опять становится активной.

С уважением,
Гюнель.

Гюнель,

Выложите, пожалуйста, схемы - будем проверять.

Показать все комментарии