В Sales в разделе Заказы есть подбор продуктов. Стандартная логика позволяет в карточке контрагента в поле прайс-лист выбрать прайс-лист и тогда, при подборе товаров в заказ будет видна цена согласно этого прайс-листа. Система как-то пробрасывает его туда. Я бы хотел подменить эту логику на передачу туда прайс-листа из карточки самого заказа (я поле создал справочное). Где искать? Какой метод подменить или использовать?
Прайс-лист из таблицы контрагента используется в С#-схеме AccountPriceListPicker (там обычный Select), её вызывает тоже С#-схема веб-сервиса PriceListService:
/// <summary>
/// Get Price List using account. Took from account, if there is no Price List,
/// then took it from partnership
/// </summary>
/// <param name="accountId">Account identifier.</param>
/// <returns>PriceList identifier</returns>
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json)]
public Guid GetPriceList(Guid accountId) {
var priceListPicker = ClassFactory.Get<IPriceListPicker>(new ConstructorArgument("userConnection",
UserConnection));
var preSetPriceList = priceListPicker.GetPriceList(accountId);
return preSetPriceList != default(Guid)
? preSetPriceList
: priceListPicker.GetPriceList(UserConnection.CurrentUser.AccountId);
}
А уже к нему обращаются из JS в странице заказа BaseOrderPage пакета Order:
Прайс-лист из таблицы контрагента используется в С#-схеме AccountPriceListPicker (там обычный Select), её вызывает тоже С#-схема веб-сервиса PriceListService:
/// <summary>
/// Get Price List using account. Took from account, if there is no Price List,
/// then took it from partnership
/// </summary>
/// <param name="accountId">Account identifier.</param>
/// <returns>PriceList identifier</returns>
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json)]
public Guid GetPriceList(Guid accountId) {
var priceListPicker = ClassFactory.Get<IPriceListPicker>(new ConstructorArgument("userConnection",
UserConnection));
var preSetPriceList = priceListPicker.GetPriceList(accountId);
return preSetPriceList != default(Guid)
? preSetPriceList
: priceListPicker.GetPriceList(UserConnection.CurrentUser.AccountId);
}
А уже к нему обращаются из JS в странице заказа BaseOrderPage пакета Order:
Существует задача создать автоматический бизнес-процесс для создания прайс-листа контрагента, который запускается после создания контрагента. В моем представлении это БП на одно действие (создание –прайса), а условие можно задать в настройках автоматического запуска.
Я использую действие чтение /запись данных. Здесь возникает первый вопрос – какая разница между «чтение /запись» и «открытие окна»? И в том и в другом случае ми можем сохранить информацию.
Основная проблема – перенос ID контрагента и создание ID новой записи (прайса). Как я догадываюсь, здесь нужно использовать параметры действия и здесь я уже ничего не понимаю.
Описание в руководстве администратора очень скудное, а на форуме не нашла понятного мне пошагового объяснения.
действие [Открытие окна] предназначено для открытия любого окна системы,
например, карточки редактирования определенной записи. Через данный элемент можно создать новую запись, изменить существующую либо открыть окно справочника для выбора записи.
действие [Чтение/запись данных] используется в случае, если необходимо записать
какую-либо информацию в базу данных (без отображения карточки редактирования) или считать информацию из базы данных.
Что касается
"Фащук Наталия Тарасовна" написал:Основная проблема – перенос ID контрагента и создание ID новой записи (прайса).
Не понимаю я логики этих действий.
Объясните пожалуйста наглядно на моем примере.
Цель: создать БП с автоматическим запуском. После создания контрагента создание прайс-листа к нему (с деталей).
Буду очень признательна.
1. Создать БП, состоящий из 3-х элементов:
Начало - элемент [Открытие окна] - Завершение
2. Создать в БП строковый параметр, который будет содержать идентификатор создаваемого контрагента:
Заполнение параметра реализовать в теле функции обработки события OnStart начального элемента.
Код:
[javascript]
function Item1OnStart(StartItem) {
var ParentDiagram = GetDiagramByItem(StartItem);
var RecordID = WFGetParamValue(ParentDiagram, 'AutoID');
}
[/javascript]
3. В моем примере создание прайс-листа для контрагента выполняется посредством элемента [Открытие окна]. Свойства окна:
Код окна, которое будет открываться на добавление прайс-листа - wnd_AccountPriceEdit
Здравствуйте!
Оказалось, такая функция реализована ещё в 3.3.2.290 в действиях над продуктами
(раздел "Продукты" ->"Действия ->"Пересчитать и добавить новые цены по прайс-листам").
В любом случае - Андрей, спасибо Вам! :twisted: