Бизнес-Процесс "Продажа" - добавить продукты в продажу
Доброе время суток, уважаемое сообщество!
При создании бизнес-процесса по продаже столкнулся со следующими сложностями...
Исходные данные: БП запускается из раздела «контрагенты», из открывающегося правой кнопкой меню "Действие" - "Запустить процесс". По БП создается продажа для данного клиента. После создания Продажи необходимо добавить в эту продажу продукты (Раздел "Продажи" - деталь "Продукты").
Что сделано мной:
1. Создано открытие окна Продажа;
2. Создано "Настраиваемое окно" Продукт в продаже (думаю, что ошибся).
При проверке БП, система создает продажу, а при добавлении продукта к продаже выдает сообщение "Запись удалена".
Сложности:
- Как осуществить добавление контрагента и основного контакта данного контрагента в карточку продажи путем подстановки значений того клиента, при выборе которого был запущен БП?
- Как добавить к данной продаже продукты ( по бизнес-процессу)
Нравится
Здравствуйте, Дмитрий
Как вы передаете ID продажи в элелемент Настриваемое окно ?
Мое предположение что сообщение "Запись удалена", возникает из за того что Настраиваемом окне не указан параметр диаграммы, связанный с ключевым полем
"Яворский Алексей" написал:Как вы передаете ID продажи в элелемент Настриваемое окно ?
Мое предположение что сообщение "Запись удалена", возникает из за того что Настраиваемом окне не указан параметр диаграммы, связанный с ключевым полем
Сдается мне, что в этом-то и вся проблема. С передачей параметров я не очень-то разобрался. Есть ли руководство по передачи параметров между объектами - инструкции, шедшие в комплекте с ПО недостаточны в этом вопросе?
Заранее благодарю.
Дмитрий ознакомтесь пожалуйста с параграфом 7.1.3. Параметры бизнес-процесса, страница 151, Terrasoft Administrator Руководство пользователя
Яворский Алексей
Эксперт 3-й линии поддержки
Алексей, спасибо! Хоть это и не 151 страница и не 7.1.3, но благодаря Вашему совету все нашел. Спасибо большое!
Возможно мы используем различные версии руководств я имел в виду руководство пользователя для Terrasoft CRM X25 + ServiceDesk (TSAdmin_UG_3.3.0).
Если будут вопросы обращайтесь.
в Бизнес-Процессе на текущий момент передается:
- Контрагент
- ID продажи, для добавления продукта
Но в окне выбора продукта "OfferingInOpportunityDetailEdit" после выбора продукта из справочника выдается следующее сообщение дебаггера - скрины прилагаю. И продукт в продаже остается без цены - ее выбрать не получается - поля, кроме названия и "Ипользуется" неактивны. Изменить можно, только открыв вручную это окно повторно.
на всякий случай ссылка на более высокое разрешение
http://savepic.net/1769425.jpg
http://savepic.ru/2889714.jpg
Здравствуйте Дмитрий
Выгрузите, пожалуйста, xml данного сервиса.
Проводились ли какие либо доработки действий БП ?
Предлагаю использовать обходное решение, в случае если мы хотим привязать существующий продукт к продаже, использовать окно выбора продукта, в случае если хотим создать продукт и привязать ее к продаже, использовать карточку создания продукта. Вас устроит такой вариант?
Да, Алексей, устроит. Только, если Вас не затруднит, подскажите, пожалуйста, как правильно реализовать этот "обходной путь".
Заранее благодарю
Алексей, я прошу прощения, но я все еще в ожидании ответа от Вас по вопросу реализации обходного пути. Прошу прощения, если тон сообщения покажется безапелляционным.
Заранее благодарю.
Простите за задержку.
Я вижу реализацию следующим образом.
1.Создаем елемент "Вопрос пользователю":
Далее раветвление в зависимости от ответа:
а) Привязать продукт (действие открыть окно, справочник продуктов)
б)
Создать продукт (создание записи, карточка продукта)
2.Привязываем продукт к продаже с помощь скрипта (действие скрипт в БП), делаем связь продажи и продукта через датасет ds_OfferingInOpportunity в нем есть 3 обязательных поля, собственно продажа (OpportunityID) продукт (OfferingID) + состояние (OpportunityStateID), в коде устанавливаем состояние в "Начальное"
Код скрипта:
var prodID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OfferingID'); var oppID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OpportunityID'); var Dataset = Services.GetSingleItemByUSI('ds_OfferingInOpportunity'); Dataset.Append(); Dataset('OpportunityID') = oppID; Dataset('OfferingID') = prodID; Dataset('OpportunityStateID') = '{2EA12943-490B-4E3B-A87E-2D5D58DE1DEA}'; // Начальное состояние Dataset.Post();
Общий вид диаграммы
Общий вид скрипта к диаграмме:
//----------------------------------------------------------------------------- // wd_acc_offering_opportScript //----------------------------------------------------------------------------- function Item4OnExecute(ScriptItem, IsComplete) { var prodID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OfferingID'); var oppID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OpportunityID'); var Dataset = Services.GetSingleItemByUSI('ds_OfferingInOpportunity'); Dataset.Append(); Dataset('OpportunityID') = oppID; Dataset('OfferingID') = prodID; Dataset('OpportunityStateID') = '{2EA12943-490B-4E3B-A87E-2D5D58DE1DEA}'; // Начальное состояние Dataset.Post(); } function tstOfferCr(ScriptItem, IsComplete) { var prodID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OfferingID'); var oppID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OpportunityID'); var Dataset = Services.GetSingleItemByUSI('ds_OfferingInOpportunity'); Dataset.Append(); Dataset('OpportunityID') = oppID; Dataset('OfferingID') = prodID; Dataset('OpportunityStateID') = '{2EA12943-490B-4E3B-A87E-2D5D58DE1DEA}'; // Начальное состояние Dataset.Post(); }
Параметры диаграммы
Добавил xml сервисов в присоединенные файлы
Дмитрий, если будут какие либо вопросы, обращайтесь.
Реализовывал на Terrasoft XRM 3.3.2.150
Сервис отрабатывает нормально, но когда появляется окно с вопросом, "выскакивает" окно журнала ошибок " Процесс 'wd_OpportunityWF' не найден"
Возможно это возникает из-за некой различий в конфигурациях, проделайте действия которые я описал, в собственном сервисе. Данной ошибки возникать не должно, так как wd_OpportunityWF я не создавал, и нигде не использовал.
Здравствуйте.
Из данного Б-П использовала ветку Привязки продукта. Выбираю продукт из справочника и добавляю в созданный счет.
Продукт в счет добавляются, но при открытии окна справочника Продукты видна только колонка "Ответственный":
Выбор договоров корректно отображается... В чем может быть причина?
Еще хотелось бы после добавления продукта открыть данную карточку и указать количество, цену... Но и это еще не все. Можно ли потом все продукты из Счета скопировать в Акт? Предполагаю, что с помощью скрипта.
Сервисы Б-П во вложении.
Заранее благодарю.
Здравствуйте Татьяна,
Для открытия карточки редактирования продукта, предлагаю вам использовать действие Открыть окно, в котором выбирать карточку редактирования продукта, при чем связать ее с существующим параметром БП "Продукт"
Под Актом имеется в виду сущность Документ с типом "Акт приема/передачи" ?
В скрипте сохраняю ID созданного продукта в счете в параметр OfferingInInvoiceID, и пытаюсь программно открыть карточку Продукт в счете, но т.к. отдельной карточки нет, ссылаюсь на wnd_OfferingDetailEdit.
Видимо, еще какие-то атрибуты необходимо передавать?
function Item3OnExecute(ScriptItem, IsComplete) { var prodID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OfferingID'); var invID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'InvoiceID'); var Dataset = Services.GetSingleItemByUSI('ds_OfferingInInvoice'); Dataset.Append(); Dataset('InvoiceID') = invID; Dataset('OfferingID') = prodID; WFSetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OfferingInInvoiceID', Dataset('ID')); Dataset.Post(); var OffInInvID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OfferingInInvoiceID'); var Attributes = GetNewDictionary(); Attributes.Add('RecordID', OffInInvID); Attributes.Add('ShowModal', true); ShowEditWindowEx('wnd_OfferingDetailEdit', Attributes, null, null, true); }
С помощью Открытия окна также открытие карточки "Продукт в Счете" не производится. Выбирала окно wnd_OfferingDetailEdit, и параметр, содержащий ID - OfferingInInvoiceID, который предварительно сохраняла в скрипте.
Проблема в вызове окна Продукт в продаже была в том, что в wnd_OfferingInOpportunityDetailEdit для ее открытия следует окну передать ID продукта в продаже, в моем скрипте scrBind мы его генерируем автоматически
Dataset.Append(); Dataset('OpportunityID') = oppID; Dataset('OfferingID') = prodID; Dataset('OpportunityStateID') = '{2EA12943-490B-4E3B-A87E-2D5D58DE1DEA}'; // Начальное состояние Dataset.Post();
для того что бы использовать wnd_OfferingInOpportunityDetailEdit следует сгенерировать ID в коде и записать его в параметр БП, для дальнейшей его передачи в элемент Открытие окна.
Создаем параметр DetailID
Далее в скрипте присваиваем ему значение
function Item4OnExecute(ScriptItem, IsComplete) { var prodID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OfferingID'); var oppID = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'OpportunityID'); var Dataset = Services.GetSingleItemByUSI('ds_OfferingInOpportunity'); Dataset.Append(); var DetailID = Connector.GenGUID(); WFSetParamValue(ScriptItem.ParentItems.ParentDiagram, 'DetailID', DetailID); Dataset('ID') = DetailID; Dataset('OpportunityID') = oppID; Dataset('OfferingID') = prodID; Dataset('OpportunityStateID') = '{2EA12943-490B-4E3B-A87E-2D5D58DE1DEA}'; // Начальное состояние Dataset.Post(); }
Указываем элементу "открытие окна" откуда брать ID записи
После чего можем использовать окно работы с деталью в БП.
Сервисы БП прикрепил к посту
"Мыреева Татьяна Николаевна" написал:Выбор договоров корректно отображается... В чем может быть причина?
Скорее всего проблема в правах доступа к записям, под каким пользователем проводятся доработки ?
"Мыреева Татьяна Николаевна" написал:Можно ли потом все продукты из Счета скопировать в Акт? Предполагаю, что с помощью скрипта.
Предлагаю вам использовать датасет ds_OfferingInDocument, на сколько я понимаю у вас есть ID документа, и ID продажи, следовательно, можно профильтровать в скрипте по ID продажи ds_OfferingInOpportunity и записать найденные записи в ds_OfferingInDocument. Если у вас возникнут проблемы с реализацией данной идеей просьба сообщить.
"Яворский Алексей" написал:
Скорее всего проблема в правах доступа к записям, под каким пользователем проводятся доработки ?
Путем тестирования обнаружилось, что элемент процесса "Открытие окна" с выбором из справочника корректно отрабатывает только для первого его вызова.
Т.к. в моем процессе сначала производится выбор договора, то элемент работал верно. Следующий его вызов - выбор из справочника Продукты, здесь элемент в поле поиска вставлял название ранее выбранного Договора и в справочнике корректно отображалась только колонка "Ответственный" (видимо, из-за того, что и в договорах есть аналогичная колонка).
После того, как в Б-П удалила выбор договора, выбор продуктов стал работать.
Также элемент не работает, если в разных бизнес-процессах присутствует выбор из справочников, в таком случае элемент правильно отрабатывает только в первом вызванном процессе, в следующих опять та же картина. Помогает только перезапуск системы.
Может, это только у нас такая проблема? Terrasoft XRM 3.3.2.43
Для устранения проблемы необходимо выполнить следующие действия:
1.Открыть сервис wa_OpenWindowScript. Найти функцию function ExecuteSelectData(ActionItem, WorkflowAction, WorkflowItemID). В теле функции закомментировать строку var Window = GetSingleItemByCode('wnd_SelectData', 'OpenWindow'), вместо нее прописать следующую строку кода:
var Window = Services.GetNewItemByUSI('wnd_SelectData');
2.В этом же сервисе найти функцию function ExecuteOpenWindow(WindowType, ActionItem, WorkflowAction, WorkflowItemID). В теле функции закомментировать строку var Window = GetSingleItemByCode(ServiceInfo.USI, 'OpenWindow'), вместо нее прописать строку кода:
var Window = Services.GetNewItemByUSI(ServiceInfo.USI);
3.Сохранить внесенные изменения. Перезапустить приложение Terrasoft. Проверить работу функционала.