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

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

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

Нравится

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

Здравствуйте.
Подскажите пожалуйста, есть ли такая функция вроде Instr?
Нужно проверить вхождение 'код1' в 'код1; код2; код3; ...'

for (var i = 0; i arrOperCodes.length-1; i++)
{
if(встречается ли arrOperCodes[i] в arr[0])
}
Версия 3.2.0.90

Спасибо.

Нравится

3 комментария

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

Используйте функцию indexOf.

Можете воспользоваться вот такой функцией:

function GetIndexOfItemInArray(SearchValue, SearchArray) {
                for (var i = 0; i < SearchArray.length; i++) {
                               if (SearchValue == SearchArray[i]) {
                                               return i;
                               }
                }
                return -1;
}

Данная функция реализована в сервисе scr_Utils, если в Вашей версии конфигурации она отсутствует, можете ее туда добавить.

Спасибо большое.

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

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

var wndContactsGridArea =  Services.GetNewItemByUSI('wnd_OfferingOrderGridArea');
wndContactsGridArea.Prepare();
var Dataset = wndContactsGridArea.ComponentsByName('dlData').Dataset;
RefreshDataset(Dataset);
WndContactsGridArea.ShowModal();

Может кто подсказать как в этом окне сделать импорт из одного раздела в другой? И можно ли вообще так сделать?
Хочется, чтобы пользователям не приходилось дублировать записи в каждом разделе.

Нравится

2 комментария

Здравствуйте, Дмитрий!

Теоретически возможность такого переноса данных есть, но сама реализация зависит от сложности того, что Вам нужно получить в итоге.

В Вашем случае в вызываемое по кнопке окно нужно передавать Dataset раздела, из котого Вы хотите импортировать данные и ID его записей, тогда в зависимости от этих значений реализовывать копирование нужных записей.

Можно усложнить задачу и вызывать не окно раздела, в который Вы хотите копировать данные, а реализовать своё окно именно под эту задачу, которое может быть похоже, например, на wnd_MultiSelectData.

Вот мне хотелось бы сделать следующую реализацию:
По нажатию на кнопку открывается окно с разделом, в который я хочу передать данные. В этом окне я выбираю нужную запись и после информационного сообщения "Найдено n продуктов, импортировать их?" происходила передача данных

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

добрый день!
"досталась" мне в наследство данная платформа, соглашалась на техническую поддрержку, но появилась потребность немного "усовершенствовать" работу коллег. Т.к. опыта работы с такими программами у меня нет - прошу помось и отвечать подробно, т.к. полный чайник я))))
Хотелось бы "залить" шаблон дилерского договора, и чтобы в нем при выборе клиента автоматически проставлялись данные занесенные в базу: нименования и реквизиты(инн, адрес и т.д.)
1. как прописать я более менее понимаю, что тут может быть строка - #Контрагент.контрагент>, #Контрагент.ИНН>...Но как ее записать в добавляемые поля после соединения с ТерраСофтом,чтоб каждый раз руками не вводить (как в скриншоте)? или данные запросы не так делаются?
2. один такой созданный шаблон запроса у меня был,он связан с продажами. Т.е. клиент запрашивает КП,заполняем окно продажи,переходим к продаже продукта и он заполняет все строки(тот же скрин из программы). Как мне в данном случае тоже сделать такой переход к моему шаблону договора? Т.е. все данные у меня занесены в контакты - я нажимаю на фирму Василий Пупкин - перехожу к заполнить договор и у меня выгружается заполненный его реквизитами договор?

Спасибо,надеюсь на вашу помощь

Нравится

2 комментария

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

На все Ваши вопросы есть ответ в этом видео: Интеграция с пакетом приложений MS Office

Павел,спасибо огромное!!! очень познавательно,а лучше наглядно видно. Пока остался один вопрос как связать отчет непосредственно с дилером, но думаю может пока буду реализовать запрос и отображение отчета сама приду к решению...будем пробовать

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

При установке свойства HasCustomDrawCell = true у DataTreeGrid редактирование последнего стало практически невозможным. При занесении значений в редактируемую ячейку и последующем нажатии кнопки Enter ничего не происходит. Если вводить значение на протяжение нескольких секунд значение в ячейке (как будто по таймеру) сбрасывается в 0. И только если успеть ввести значение и перейти мышкой на другую ячейку, то при редактировании программно других ячеек (код вида Dataset.Edit() ……….. Dataset.Post()) выскакивает ошибка о том что dataset not in edit or insert mode.

Если убрать раскраску таблицы HasCustomDrawCell = false всё продолжает нормально работать.

Как реализовать одновременно работу события OnGetCellDrawInfo и возможность редактирования внутри таблицы?

Нравится

3 комментария

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

Предоставьте следующую информацию:

  • Версия конфигурации
  • Версия бинарных фалов приложения
  • Какие доработки были выполнены для редактируемого грида
  • Редактируете реестр или деталь
  • Редактируете базовый реестр/деталь

TerrasoftSales 3.3.2.313

Создали собственный раздел, реестр и деталь для внесения плана и сравнение с фактом продаж

Для реестра, где необходима подкраска ячеек редактировали события:
OnAfterEdit (редактирование итоговых данных после правок в привязанном к гриду датасете), OnBeforeEdit (проверка возможности редактирования конкретной ячейки) и CellDrawInfo.

Сейчас временно из ситуации вышли следующим образом: при редактировании значения в ячейке подкрашиваемые ячейки с утвержденным планом становятся обычного цвета, на OnBeforeEdit:
if (CanEdit.Value) {
OldValue = DataField.Value
if (DataGrid.HasCustomCellDraw) {
DataGrid.HasCustomCellDraw = false
}
}

Как только мы вышли из редактирования (сохранили значение или перешли на другую не редактируемую ячейку) – подкраска снова появляется, на OnAfterEdit:
if (!DataGrid.HasCustomCellDraw) {
DataGrid.HasCustomCellDraw = true
}

TerrasoftSales 3.3.2.313

Создали собственный раздел, реестр и деталь для внесения плана и сравнение с фактом продаж

Для реестра, где необходима подкраска ячеек редактировали события:
OnAfterEdit (редактирование итоговых данных после правок в привязанном к гриду датасете), OnBeforeEdit (проверка возможности редактирования конкретной ячейки) и CellDrawInfo.

Сейчас временно из ситуации вышли следующим образом: при редактировании значения в ячейке подкрашиваемые ячейки с утвержденным планом становятся обычного цвета, на OnBeforeEdit:
if (CanEdit.Value) {
OldValue = DataField.Value
if (DataGrid.HasCustomCellDraw) {
DataGrid.HasCustomCellDraw = false
}
}

Как только мы вышли из редактирования (сохранили значение или перешли на другую не редактируемую ячейку) – подкраска снова появляется, на OnAfterEdit:
if (!DataGrid.HasCustomCellDraw) {
DataGrid.HasCustomCellDraw = true
}

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

Доброго времени суток, коллеги!

На одном из компьютеров вообще не отображаются графики. Просто чистое поле. Куда копать? Подозреваю, что чего-то из ActiveX не стоит, но какая именно?
СтоИт Win Vista со всеми возможными официальными обновлениями. Сборка TS 3.4.1.178. На других компьютера она-же работает нормально.

Нравится

2 комментария

Поправка. Экспериментально выяснил, что под этим пользователем на другом компьютере тоже не работает. Значит я ему слишком порезал права. Что я мог лишнего отобрать? Графики и Запросы ему в чтение даны.

Нашел! "Пользовательские запросы" нужны для счастья!
Всем спасибо ;-) Вопрос закрыт.

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

Доброго времени суток!

Создал новый раздел (в нем есть и ContactID и AccountID), добавил детали, все фильтруется в зависимости от ContactID.
При добавлении детали звонков возникли кое какие вопросы:
- можно ли фильтровать деталь по разным ID при каких либо условиях? В таблице звонков есть AccountID и ContactID, а в таблице нового раздела заполнено поле ContactID или AccountID. Как можно настроить фильтрацию в детали звонков в зависимости от того, ContactID или AccountID заполнен?

Использовал подобный код:

var ContactID = GetFieldValueFromDisabledField(BaseWorkspace.GridDataset, 'ContactID');
var AccountID = GetFieldValueFromDisabledField(BaseWorkspace.GridDataset, 'AccountID');

if (IsEmptyGUID(ContactID) == false) {
RefreshCommonDetail(null, wnd_CallGridArea,
'ContactID', 'ContactID', null, null, null, null, null, ContactID);
}
else if (IsEmptyGUID(AccountID) == false ){
RefreshCommonDetail(null, wnd_CallGridArea,
'AccountID', 'AccountID', null, null, null, null, null, AccountID);
}
else {RefreshCommonDetail(null, wnd_CallGridArea,
null, null, null, null, null, null, null, null);}

При загрузке, фильтрация работает, но при переключении на другую запись фильтрация детали перестает срабатывать. Что я делаю не так?

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

Нравится

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

Здравствуйте, Евгений!

Да, фильтрация набора данных детали по разным полям возможна.

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

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

Добрый день

В карточке продукты отображается слишком много данных. Некоторые данные (название продукта, его характеристики) нам нужнее, нежели стоимость, скидки, налоги и т.д. (см. вложение).
Можно ли как-то скрыть некоторые группы данных на форме (см. вложение)?

Нравится

3 комментария

Если нужно скрыть какой-то элемент (в том числе и группу элементов) на карточке, можно открыть её в TSAdmin и выставить ему свойство IsVisible равным false.

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

Если нужно скрыть какой-то элемент (в том числе и группу элементов) на карточке, можно открыть её в TSAdmin и выставить ему свойство IsVisible равным false.


Спасибо за совет!
Но все-таки хотелось бы иметь доступ к элементу, убрать чуть глубже, а не скрыть его на совсем.

Не совсем понятно, что хотите сделать. Возможно, поможет изменение других свойств элемента, список свойств видно в том же дизайнере карточки. Также см. обсуждение тут.

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

Добрый день!

Возникла нужда интегрировать Terrasoft XRM Professional Services v3.3.2.292 с сервисом ExpertSender. Этот сервис имеет собственный API, который работает через POST и GET запросы.Ранее мы уже проводили интеграцию данного сервиса с BPM'online. Для этого мы создавали бизнес-процесс, который запускался как только в CRM добавлялся новый Лид. У этого Лида считывался email-адрес, после чего запускался скрипт, который отправлял на сервис ExpertSender API-запрос, в котором содержался считанный email. Таким образом, мы добавляли новых Лидов в сервис ExpertSender, который работает через API.

Теперь же нужно то же самое воссоздать в Terrasoft XRM. Мы смогли создать новый процесс, в нем создали скрипт, который отправляет POST-запрос на ExpertSender. Но вот как сделать, чтобы процесс запускался автоматически, когда добавляется новый Лид, и как у конкретно этого нового Лида считать email - разобраться так и не удалось. Возможно, кто-то здесь подскажет, что можно сделать?

Нравится

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

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

Для решения Вашей задачи Вы можете использовать функцию WFStartByID(WorkflowID, ParamNames, ParamValues). В качестве параметров, в которую передаются WorkflowID - ID сервиса Вашего процесса, ParamNames - массив имен параметров Вашего БП, для которых Вы хотите передать начальное значение, ParamValues - массив значений параметров.

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

Подскажите пожалуйста, как можно добавить опцию "Перейти к" в контекстное меню отчета?

Нравится

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

Здравствуйте, Юрий!

Если мы говорим об отчетах Fast Report, то о такой возможности нам не известно. Попробуйте уточнить о ней у разработчиков Fast Report.

Возможно, для реализации Вашей задачи Вам подойдет использование гиперссылок в Fast Report.
Якорь (anchor) – один из элементов системы гиперссылок, которая позволяет при щелчке на объекте готового отчета (в окне предварительного просмотра) перейти на элемент, связанный с этим объектом.
Якорь – это специальная метка, которая устанавливается методом Engine.AddAnchor. Якорь имеет имя, и ему соответствует номер страницы и позиция на странице. Перейти на якорь с указанным именем можно, поместив в свойство URL любого объекта отчета строку вида:
#ИмяЯкоря
или
#[ИмяЯкоря]
В последнем случае, при построении отчета FastReport раскроет выражение, находящееся в квадратных скобках.
При щелчке на этом объекте произойдет переход на то место отчета, где был добавлен якорь.
Якоря удобно использовать при построении раздела "Содержание" со ссылками на соответствующие разделы.

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

Нет, речь не идет об отчетах Fast Report. Речь идет об отчете, который унаследован из wnd_BaseReportWindow.

Уточните, пожалуйста, точное название используемой версии Terrasoft (можно посмотреть в свойствах файла TSClient.exe)?

Terrasoft 3.4.0.130

К сожалению, не могу найти в базовой конфигурации окно wnd_BaseReportWindow.

Возможно, Вы имели ввиду wnd_BaseReport?

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