Всем доброго времени суток.

Версия 7.10.

При создании активности (новой задачи) есть выбор дат начала и завершения:

Изображение удалено.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На практике нужно, чтобы некоторые даты были недоступны для выбора (в зависимости от расписания работы сотрудника, т.е. значения колонки "Ответственный" - 2 через 2, или исключить выходные). Условно, можно считать, что есть массив дат, которые необходимо исключить (будет получаться запросом). Либо наоборот - массив доступных дат, исключаются все остальные.

 

Можно ли такой фильтр как-нибудь добавить на колонку календаря?

Нашёл вот такие фильтры для ExtJS Datepicker: https://stackoverflow.com/questions/29251088/disable-date-in-datepicker… но там речь идёт об установке календаря. А тут надо изменить уже установленный, в зависимости от доступных значений.

Спасибо.

Нравится

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

Здравствуйте, у календаря есть еще возможность вводить значение вручную, так что, на вашем месте в качестве валидации, сделал бы просто this.on("change: нужного поля, в котором бы проверял введенную дату, и в случае несоответствия её графику, откатывал бы ее на предыдущее значение, с соответствующим сообщением.

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

В гриде 24 колонки, если размещать чекбоксы последовательно с размерностью 2 колонки, страница идет в разнос. Как решать? Увеличивать не хочу,Изображение удалено. ибо должно и так работать.

Нравится

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

Вангую, что виноваты css-ки. Там какая-то неадекватная ширина для лабела и его контейнер перекрывает соседние элементы при плотном расположении.

Ну да. 2й caption перекрывает контрол первого...

Ну правильно все. Вот и нужно это исправить "в последующих релизах" :)

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

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

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

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

Нравится

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

Здравствуйте, Павел! 

Если вопрос в выборе из двух разделов, можно попробовать реализовать это путем создания представления в БД, куда слить эти два раздела и таким образом искать, хоть тогда остается актуальным вопрос выбора карточки.

Еще одна альтернатива - при идеальной ситуации, когда у каждого контрагента есть хоть 1 контакт, можно попробовать переписать поиск, чтобы в разделе контакты он выбирал не только по полю ФИО но еще и по полю Контрагент.

Здравствуйте, Илья, спасибо за ответ.

Первый способ подходит для основного приложения. Был реализован похожий кейс, но там есть возможность формирования адреса карточки, чтобы осуществить переход. Здесь такой фокус не проходит. Остаётся пока решение добавить в поиск на странице контактов и поле связанного контрагента, что собственно и было сделано с помощью инструкции

Terrasoft.sdk.GridPage.setSearchColumns("Contact", ["Name", "Account"]);

 

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

пользователи спрашивают как копировать строки деталей.

из идей как это сделать.

Привязать действие на кнопку три точки в детали

и уже запросами в бд сделать копирование.

 

но как сделать так чтобы деталь обновилась после копирования.

Нравится

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

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

Сделайте на детали редактируемый реестр - там уже есть кнопка, которая позволяет скопировать запись. Также в базовой версии на "трех точках" (на действиях детали) уже есть кнопка копирования (см. деталь "Адреса" на странице раздела "Контакты").

Добрый день, Марат! 

Если еще актуально или необходимо для другого кейса - у BasePageV2 есть методы loadDetail и reloadDetail. Также отмечу, что "обновить" деталь можно изменив направление или колонку сортировки.

reloadDetail - идеальный кандидат.

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

Добрый день.

Есть ли в BPM шаблонизатор, что бы отрендерить html-шаблон с имеющимися данными?Например нужен виджет галереи с описанием, куда передам список с урлами изображений. Данный виджет хочу вставить как деталь страницы.

Как это правильно сделать?

Нравится

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

 

правильный ответ на ваш вопрос - Ext.JS (редакции 4.x с некоторыми оговорками)

Разработайте элемент с нуля или наследуясь от той же самой детали.

Стоит упомянуть сразу, что задача эта не тривиальная для типовых кейсов и если у Вас нет навыков работы с этим фреймворком и "внутреннее устройство" BPM для Вас тоже остается не понятым - лучше за подобное даже не приступать. :)

Вам в помощь ранее поднимавшиеся на сообществе темы н/п:

https://community.terrasoft.ru/questions/sozdanie-sobstvennogo-elementa-upravlenia 

https://community.terrasoft.ru/forum/topic/25285#comment-67717

вот пример исходного кода для элемента управления "Кнопка"

https://academy.terrasoft.ua/jscoresdk/source/button.html#Terrasoft-controls-Button

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

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

Версия 7.9 sales.

Для колонки контакта в обращении сделан фильтр по контрагенту (связанное бизнес-правило отключили по причине того, что нужен был фильтр только в одну сторону). Фильтр следующего вида:

"Contact": {
					lookupListConfig: {
						filters: [
							function() {
								var Account = this.get("Account");
								var filterGroup = Ext.create("Terrasoft.FilterGroup");
 
								if (Account){
									var filterById = Terrasoft.createColumnInFilterWithParameters("Account", [this.get("Account").value]);
					                filterById.comparisonType = Terrasoft.ComparisonType.EQUAL;
					                filterGroup.add("filterById", filterById);
								} else {
									filterGroup.add("filter", Terrasoft.createColumnIsNotNullFilter("Account"));
								}
								return filterGroup;
							}
						]
					}
				},

На всякий случай, переопределения правил из оригинальной версии:

 

rules: {
			"Contact": {
				"FiltrationContactByAccount": {
					"ruleType": 999
				}
			},
		},
 
methods: {
           setAccount: function(){
            	return false;
            }        
}

Далее, допустим, у нас нет контакта в справочнике, мы хотим добавить контакт. Нажимаем кнопку "Добавить" на всплывающем окне справочника, открывается страница контакта, добавляем контакт. И... контакт не добавляется в колонку.

Как поправить?

Знаю, что есть проблема с версией 7.9 при добавлении новых значений в справочные поля - https://community.terrasoft.ru/forum/topic/25275 - но может ошибку можно исправить проще?

Нравится

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

Можете ввести в карточку контакта для режима создания в методе который обрабатывает состояние "после сохранения" onSaved логику которая опираясь на то "откуда пользователь попал в карточку создания", генерирует сообщение на которое предварительно подпишется ваша карточка обращения, пи получив из него Id созданного контакта установит его в соответствующее поле. Получится как бы имитация штатного поведения (которое не отрабатывает корректно)

...
"onSaved": function(){
      this.callParent(arguments);
      if (this.IsAddMode()){
         //получаем из хеша схему страницы с которой мы попали в карточку создания
         var hashEntityName = sandbox.publish("GetHistoryState").hash.entityName;
         if (hashEntityName == "Схема которая нам нужна"){
             //публикуем событие на которое подписана карточка в которой должно установиться
             //значение созданного контакта 
             this.sandbox.publish(
                "MyCustomEvent",
                //Передаем Id созданного контакта
                this.get("Id"),
                ["MyCustomUniqTag"]
             )
         }
      }
}
...

 

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

Задача модифицировать настройки(расписание) автоматического поиска дублей контактов и контрагентов.

Данный функционал заявлен в пакете Dedupliction, но по факту не работает для контрагентов, всегда выбирается настройка для контактов.

Параметр entitySchemaName в модуле SearchDuplicatesSettingsPageViewModel. При вызове метода generate не заполняется.

Решил попробовать уйти от этого решения в сторону стандартных страниц разделов и карточек. Но тут и возникла проблема.

Создал UsrSearchDuplicatesSettingsSection, наследованный от Базовая схема раздела ( NUI ). В нём в define собственно указал только параметр

entitySchemaName: "DuplicatesSearchParameter".

А для вызова этой страницы в замещённом DuplicatesRuleSectionV2 сделал вызов

openScheduleSettingPage: function() {
  this.sandbox.publish("PushHistoryState", {
    hash: "SectionModuleV2/UsrSearchDuplicatesSettingsSection"
  });
}

В итоге получаю ошибку про name primaryDisplayColumn. Оказывается он не заполняется в getSectionDefaultGridSettings (там цепочка вызова  require) модуля ProfileUtilities.js.

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

Нравится

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

Добрый день, Павел! 

Дело в том, что в это объекте действительно не заполнено данное свойство, он и не создавался для использования в кастомных схемах. Вы указали тег 7.10, но проблема, которая описана в вопросе, была в версии 7.9.1, и исправлена в 7.9.2 - у AccountPageV2  из пакета Deduplication была entitySchemaName : Contact. Подскажите, это тег неверный, или же действительно воспроизводится в 7.10? Если второй вариант, обязательно напишите письмо в официальную поддержку.

Здравствуйте, Владимир.



Спасибо за ответ.

Немного поясню ситуацию. Насколько я выяснил, функционал страницы настройки автоматического поиска дублей контактов и контрагентов реализован в 3-х файлах пакета NUI: SearchDuplicatesSettingsPage, SearchDuplicatesSettingsPageView, SearchDuplicatesSettingsPageViewModel.

Страница SearchDuplicatesSettingsPage вызывается методом openScheduleSettingPage в файле DuplicatesRuleSectionV2.

То есть страница вызывается не со страниц контакта, или контрагента.

Поэтому параметр entitySchemaName не заполняется, что собственно и продемонстрировано:

То есть, насколько я понял, остаётся замещать данные три модуля. Что конечно, будет затруднительно, чтобы поместить на страницу grid с возможностью добавления и удаления строк и придерживаться стилистического оформления.

Да, версия 7.10.2.

Павел, здравствуйте!

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



Если у Вас в 7.10.2 действительно возникают проблемы с тем что выбираются настройки для другого объекта, повторюсь, прошу написать письмо на support@terrasoft.ru с указанием Вашего сайта и данных для доступа.

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

Компания «ВАРТОН» – лидирующий производитель светодиодных светильников и поставщик светотехнического оборудования на российском рынке. Компания предлагает широкий ассортимент осветительной продукции для оснащения как жилых, так и производственных помещений.

В связи с ростом масштабов производства, расширением отдела продаж и созданием Департамента территориальных представителей, находящихся в разных регионах на условиях «home office», возможности работы менеджеров «ВАРТОН» без CRM-системы довольно быстро оказались недостаточными и перестали отвечать требованиям компании. Было принято решение проанализировать рынок современных бизнес-продуктов, чтобы найти оптимальный выход из проблемы.

Главной целью «ВАРТОН» стало создание для своих сотрудников мощной единой системы с полным объемом необходимых функций для оперативной работы менеджера. Бизнесу же потребовался инструмент контроля за их работой и создания удобной единой базы всех потенциальных клиентов по всему миру.

Из всех CRM-систем, существующих на рынке в 2016 году, для реализации этих задач был выбран программный продукт bpm’online в редакции sales team, самый оптимальный по цене/функционалу и потенциалу дальнейшего масштабирования на всю компанию. Его внедрением и доработкой, а также интеграцией с системой 1С занялись «Программные Технологии».

Читайте полную статью об автоматизации работы отдела продаж компании "ВАРТОН".

varton

Нравится

Поделиться

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

Часто бывает необходимо отправить клиенту счет, коммерческое предожение и т.д. Как известно, базовая функциональность bpm´online предлагает это решать так:

  • Нажали на кпонку "Печать"
  • Сохранили документ (ну он сам в принципе сохранился)
  • Создали новый E-mail
  • Прицепили к нему этот файл и отправили

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

  • Создали новый заказ
  • Процессно создали событие E-mail
  • Сгерерировали и сохранили печатную форму заказа
  • Открыли окно события с вложением и отправили

Вот скрипт:

var RecordId = GetGuid>("OrderId"); // Id записи, для которой генерируем файл, параметр процесса
var ActivityId = GetGuid>("ActivityId"); // Id активности, к которой его цепляем, параметр процесса
var userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];
ReportData data = new ReportData();
ReportService reportService = new ReportService();
var ReportSchemaId = "2fcb529e-e3a8-4926-85c6-585f53e25765"; // Id шаблона печатной формы отчета
data = reportService.GenerateMSWordReport(ReportSchemaId, RecordId.ToString(), true); //true - перевод в pdf, false - MS Word
var reportStream = new MemoryStream(data.Data);


var entityFileSchema = userConnection.EntitySchemaManager.GetInstanceByName("ActivityFile");
var entityFile = entityFileSchema.CreateEntity(userConnection);
entityFile.SetDefColumnValues();
entityFile.SetColumnValue("ActivityId", ActivityId.ToString());
entityFile.SetColumnValue("Name", "Poptavka.pdf");
entityFile.SetColumnValue("TypeId", "{529BC2F8-0EE0-DF11-971B-001D60E938C6}"); // - тип вложения файл, не менять
entityFile.SetColumnValue("Size", reportStream.Length);
entityFile.SetStreamValue("Data", reportStream);
entityFile.Save();
return true;

Usings:
Terrasoft.Reports
Terrasoft.Configuration.ReportService
System.IO
System.Web

В приципе это можно и в сервис легко переделать и генерировать все это по кнопке или по действию непосредственно из документа без использования процессов.

Удачи :)

Нравится

Поделиться

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

Подскажите, а где можно увидеть Id шаблона печатной формы отчета?

когда открываете в конфигурации шаблон отчета (в справочнике), то адресная строка выглядит таким образом:

http://<адрес сайта>/0/ViewPage.aspx?Id=41899fab-093e-4808-86db-5794b9836745&recordId=0d8c28ce-9794-42be-8427-3d5d60e60c1f&entitySchemaUId=0a62cd3d-6541-4c5c-903f-e5b0fc665297&treeGridId=PageContainer_TreeGrid&SysModuleEditId=00000000-0000-0000-0000-000000000000&SelectedModuleId=00000000-0000-0000-0000-000000000000&ParentEntitySchemaId=00000000-0000-0000-0000-000000000000&typeColumnUId=%2294f2a9f755c74ecf9b6417583ddc058b%22&closeMessage=ReportEditPageClosed

вас интересует кусок recordId=0d8c28ce-9794-42be-8427-3d5d60e60c1f, где 0d8c28ce-9794-42be-8427-3d5d60e60c1f и есть наш id шаблона

Спасибо. Работает

ну я бы удивился, если бы нет :smile:

:) Ваш код работает, а вот открыть в БП потом письмо не получаеться, так как не корректно отрабатывает елемент "Страница редактирования" - открывает страцицу Задачи, а не письма. В техпотдержке уже взяли в работу

:) Ваш код работает, а вот открыть в БП потом письмо не получаеться, так как не корректно отрабатывает елемент "Страница редактирования" - открывает страцицу Задачи, а не письма. В техпотдержке уже взяли в работу

да не может быть! посмотрите картинку - так у вас? Вы там точно указали карточку email?

очень маленькая картинка. Можна немного больше?

очень маленькая картинка. Можна немного больше?

ну там смысл, что в элементе "Открыть преднастроенную страницу" надо выбрать Страница - Email (не страница Задача)

да так и выбрал. Все равно открывает задачу. Проверял и на других БП - это глюк елемента. Версия 7.8.0.1134

aaaaa....7.8... не проверял

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

Более 65% B2B компаний не строят свою воронку продаж, что негативно сказывается на принимаемых управленческих решениях.

Почему на сегодняшний день воронка — это один из основных инструментов управления ресурсами компании и как с её помощью улучшать результаты на каждой стадии сделки — узнайте на вебинаре «Геометрия успешных продаж» 31 мая с 12:00 до 13:00 (МСК).

Узнайте на вебинаре от экспертов:

  • какие ключевые показатели эффективности продаж (KPI) подлежат обязательному планированию;
  • как оценить эффективность работы менеджеров по продажам;
  • почему нельзя «наказывать» из переменной части вознаграждения;
  • как построить воронку продаж и связать материальную мотивацию сотрудников с ее выполнением;
  • как готовые процессы и инструменты анализа продаж в bpm’online sales помогут повысить эффективность менеджеров и улучшить результаты работы отдела продаж в целом.

Спикеры вебинара:

Вадим Дозорцев, ведущий консультант в сфере продаж и управляющий партнер компании «Berner&Stafford» и Евгений Горбачев, директор практики bpm’online sales.

Присоединяйтесь к вебинару — и получите практические советы для повышения продаж вашей компании!

Нравится

Поделиться

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