В 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 новой записи (прайса).
Не понимаю я логики этих действий.
Объясните пожалуйста наглядно на моем примере.
Цель: создать БП с автоматическим запуском. После создания контрагента создание прайс-листа к нему (с деталей).
Буду очень признательна.
Здравствуйте!
В 3.5.2 пересчет реализовано действие, по которому вызывается следующая функция:
function amiRecalcOfferingPriceOnExecute(ActionMenuItem, Sender){if(BaseWorkspace.Grid.SelectedIDs.Count==0){return;}
var OfferingIDs = GetArrayByCollection(BaseWorkspace.Grid.SelectedIDs);
var CurrentDate = GetLocalDate();
RecalcOfferingPrices(CurrentDate, OfferingIDs, 'IDs');}
Здравствуйте!
Оказалось, такая функция реализована ещё в 3.3.2.290 в действиях над продуктами
(раздел "Продукты" ->"Действия ->"Пересчитать и добавить новые цены по прайс-листам").
В любом случае - Андрей, спасибо Вам! :twisted: