Каким образом можно быстро заполнить все детали выбранных записей одной и той же информацией?
В частности, добавить одну группу сервисных инженеров на детали определенного количества сервисов?
Спасибо.
Нравится
Добавьте автоматизированное действие, которое будет представлять собой БП с элементом "Добавление данных" ( или "Изменение данных", в зависимости от задачи). Выбранные записи реестра будут передаваться через параметр "Выбранная запись раздела".
[csharp]
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')
[/csharp]
Вот только мне кажется что должно быть GroupId и Group вместо ContactId и Contact...
Попробуйте так:
[sql]
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')
[/sql]
Есть ли возможность оптимизировать скрипт?
[sql]
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 = 'Блокировка/Разблокировка')))
[/sql]
Скажите, Наталия, а какой способ предпочтительнее - предложенный Вами в первом посте или все-таки скрипт??
Разница заключается в том, что первый способ позволяет любому пользователю добавить данные из приложения BPMonline воспользовавшись действием.
Второй способ предполагает наличие доступа к СУБД, навыков работы с запросами (чем не обладают пользователи).
Какой из способов предпочтительнее зависит от того, следует добавить данные единоразово или регулярно. Если разово – лучше использовать скрипт.
Наталия, понятно.
Что касается скрипта, я все-таки переспрошу и детализирую вопрос
[sql]
AND (ss.ServiceParentId IN (SELECT Id FROM [Service] sss
WHERE (
sss.ServiceName = 'Тарификация' OR
sss.ServiceName = 'Платежи' OR
sss.ServiceName = 'Блокировка/Разблокировка')))
[/sql]
Можно ли обойтись без этого повторного запроса к Service?
Ещё один вопрос. Если я хочу при помощи скрипта добавить множество сервисов в какой-то пакет сервисов, какие таблицы и поля нужно заполнить в обязательном порядке?
Насколько я разобрался, это
Таблицы:
ServiceInServicePackage
Поля ServiceInServicePackage:
ServicePackageId
ServiceId
И правильно ли будет просто очистить таблицу ServiceInServicePackage, если я хочу, чтобы ни один сервис не состоял ни в одном пакете?
Спасибо!