Здравствуйте, уважаемые коллеги!

Подскажите, пожалуйста, новичку: если ли возможность в bpm'online строить аналитику по продажам в разрезе продукты-периоды?

В новый раздел ("Отгрузки") загружаем информацию из 1С по фактическим отгрузкам Контрагентам в разрезе: дата отгрузки, контрагент, продукты и их количество.

Соответствующая деталь "Отгрузки" находится в записи Контрагента. Но с деталью менеджерам по продажам не очень удобно работать.

Нужна таблица, например: продукты(в строках) - месяцы (в колонках). И конечно выбор периода и инетрвала представления - дни, недели, месяцы, годы.

Можно ли в записи Контрагента (или другим способом) создать настраиваемую табличку с указанной информацией?

Заранее благодарю за помощь.

Нравится

4 комментария
Лучший ответ

Добрый день.

Такую аналитику можно реализовать через настройку итогов. Более подробно с возможными вариантами представления итогов можно ознакомиться в статье.

Также данную информацию можно выгружать в MS Excel через действие 'Экспорт в Excel' и использовать её в качестве источника данных для построения сводной таблицы для анализа.

Добрый день.

Такую аналитику можно реализовать через настройку итогов. Более подробно с возможными вариантами представления итогов можно ознакомиться в статье.

Также данную информацию можно выгружать в MS Excel через действие 'Экспорт в Excel' и использовать её в качестве источника данных для построения сводной таблицы для анализа.

Доброго времени суток! Поддерживаю Аллу, так же можете установить себе расширения по выгрузке сводных отчетов  или же других расширений которые позволяют реализовать выгрузку в Excel(1, 2, 3). Если же вам необходимо выгружать не стандартные шаблоны, которые не могут удовлетворить предыдущие решения, то Вам необходимо подключать разработчиков.

Здравствуйте, коллеги,

спасибо за помощь. Различные выгрузки не помогут. Это все уже реализовано в 1С и прямо внутри, и виде выгрузок. Как раз стоит задача полностью избавить продавцов от необходимости общения с 1С и с различными выгрузками. Поэтому буду пробовать настроить График. Если не выйдет то что надо - значит кодом.

Еще раз спасибо за отклик.

В версии 7.16.1 появится отображение сводных таблиц пользовательскими средствами.

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

Коллеги, прошу помощи в решении следующего кейса.

Есть оргструктура техподдержки на 3 организации. Mos, Nov, NEZ

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

NOV и NEZ подчиняются MOS.

Раздел обращения. Все обращения создаются автоматически из почты. Т.е. поле создал в 98% одинаково. Поле контрагент заполняется само и соответствует организации. Надо настроить раздачу прав на обращения таким образом, чтобы обращение, созданное организацией NOV было доступно только NOV и MOS. Обращение созданное организацией NEZ было доступно только NEZ и MOS. Обращение созданное организацией MOSбыло доступно MOS.

Тоже надо сделать и для других объектов: Конфигурационные единицы, Сервисы, Сервисные договоры, проблемы, изменения.

Есть предположение что это надо делать БП и перераспределять права в зависимости от организации по событию создания Обращения.

И второй вопрос. Как массово сменить права на ранее созданные обращения?

Нравится

4 комментария
Лучший ответ

Мы делаем один процесс распределения прав на запись, который имеет несколько сигналов для запуска (например):

- смена ответственного, 

- смена контрагента,

- смена статуса,

- смена триггерного поля на true.



В объект обращений добавляем триггерное Boolean поле. И затем простым процессом устанавливаем это поле в true для всех записей, для которых хотим перераспределить права по уже прописанным в БП правилам. Ну, и этот БП внутри сбрасывает триггер на false.



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

 

Я думаю для изминение прав на существующие записи вам будет полезно приложение, 

по предоставлению временных прав доступа и изменению прав доступа на существующие записи

Для новых объектов можно создать БП реагирующих на добавление объекта и меняющих права на него, используя ЭЛЕМЕНТ ПРОЦЕССА [ИЗМЕНИТЬ ПРАВА ДОСТУПА]

Мы делаем один процесс распределения прав на запись, который имеет несколько сигналов для запуска (например):

- смена ответственного, 

- смена контрагента,

- смена статуса,

- смена триггерного поля на true.



В объект обращений добавляем триггерное Boolean поле. И затем простым процессом устанавливаем это поле в true для всех записей, для которых хотим перераспределить права по уже прописанным в БП правилам. Ну, и этот БП внутри сбрасывает триггер на false.



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

 

 

Владимир Соколов пишет:

Правда, мы отказались от возможности пользователям вручную раздавать права на записи

Если не секрет, то почему отказались? 

Алексей Следь,

Алексей Следь пишет:

Если не секрет, то почему отказались? 

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

В итоге назрела необходимость делать это в БП автоматически.

И не смогли в ходе этого БП определить, выдавал ли права пользователь вручную или автоматически в рамках БП, потому непонятно, какие права удалять, а какие оставить. Так что, удаляли всё



Когда будет реализована идея https://community.terrasoft.ru/ideas/priznak-sozdania-prav-vrucnuu, тогда сможем понимать, что добавил пользователь, и не удалять те права

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

При замещении метода getDeduplicationSettings из утилитного модуля DuplicatesSearchUtilitiesV2 в схеме LocalDuplicateSearchPageV2 и добавлении пользовательской логики, не отрабатывает с первого раза. При повторном и последующем использовании все выполняется. 

Нравится

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

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

Григорий Чех,

Базовая логика как раз таки отрабатывает отлично, а вот пользовательский код как раз таки фаталит

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

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

Как добавить на страницу дедубликации отображение пользовательского поля, не участвующего в поиске дублей.

Нравится

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

Для начала нужно в браузере пунктом меню «Inspect» открыть исходники нужного места в системе и выяснить, как называется схема страницы, которую Вы хотите доработать. Затем вносить изменения в её коде. Поскольку это не обычная карточка раздела, заполнение должно будет делаться программно.

Более точно можно сказать, если будет ясно, что именно куда именно добавить: в вышеупомянутый Вами LocalDuplicateSearchPageV2, в DuplicatesPageV2 или же ещё куда-то.

Также обратите внимание на дополнение Automatic duplicates merge в маркете, которое модифицирует логику слияния дублей. Возможно, в ней есть подобные решения.

Добрый день!

На данный момент в базовой версии bpm'online  выполнять настройку колонок можно только для массового поиска дублей



В остальных случаях будут отображаться только те колонки по которым были найдены совпадения и на которые есть доступ у пользователя. Для достижения вашей бизнес-цели необходимо вносить доработки.

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

Добрый день, коммьюнити,

Подскажите, что я делаю не так при работе с миксинами? Метод из миксина вызывается и выполняется, но в него не передаются параметры из схемы страницы.

Пробовал присваивать переменным значения CurrentContact и Owner - значения снова пустые. Пробовал прописывать this.get("CurrentContact") вместо "CurrentContact" - все равно пусто. Методы не из миксина работают.

Благодарен заранее за любую помощь!

 

onEntityInitialized: function() {
 
//присваиваем значение CurrentContact. Owner, который используется ниже, присваивается еще раньше
	this.set("CurrentContact", {
		value: this.get("Id"),
		displayValue: this.get("Name")
 
	});
 
//запускаем метод из миксина, он запускается и отрабатывает, но CurrentContact там пустой
	this.mixins.CustomCallMixin.initCallExtendedMenuButtonCollections(["CurrentContact", "Owner"], this.close);
 
//остальные методы отрабатывают нормально
	this.setJobTitle();
	this.fillEmailExtendedMenuButtonCollections(["CurrentContact", "Owner"]);
	this.fillCallExtendedMenuButtonCollections(["CurrentContact", "Owner"]);
	this.fillLinkedEntitiesMenuButtonCollections(["CurrentContact"]);
	this.callParent(arguments);
 
}

 

Нравится

2 комментария
Лучший ответ

Добрый день! не корректный вызов миксина. Для начала кастомный миксин нужно добавить в зависимости модуля:

define("AbCarInsurance1Section", ["AbEwaModelsHandlerMixin"], 
function() {
	return {
		entitySchemaName: "AbCarInsurance",
		mixins: {
			AbEwaModelsHandlerMixin: "Terrasoft.AbEwaModelsHandlerMixin",
		},
		attributes: {},
		messages: {},
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		methods: {
			onEntityInitialized: function () {
 
				this.onSetContractInCard(contract);
			}			
 
		}
	};
});

где this.onSetContractInCard(contract) - мтод миксина

Добрый день! не корректный вызов миксина. Для начала кастомный миксин нужно добавить в зависимости модуля:

define("AbCarInsurance1Section", ["AbEwaModelsHandlerMixin"], 
function() {
	return {
		entitySchemaName: "AbCarInsurance",
		mixins: {
			AbEwaModelsHandlerMixin: "Terrasoft.AbEwaModelsHandlerMixin",
		},
		attributes: {},
		messages: {},
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		methods: {
			onEntityInitialized: function () {
 
				this.onSetContractInCard(contract);
			}			
 
		}
	};
});

где this.onSetContractInCard(contract) - мтод миксина

Нигрескул Алексей,

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

я в зависимости добавлял, просто не указывал этот кусок кода

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

Доброго времени суток , Возможно ли в БП одним элементом "Читать данные" c режимом читать коллекцию записей отбирая одно поле к примеру "Id"  и  в другом элементе  сравнить  Id с коллекцией Id ранее полученных ? Имеется ли вообще какой ниб тип сравнивания с коллекцией значений ?

Нравится

5 комментариев
Лучший ответ

Сравнения с коллекцией с помощью встроенных элементов, насколько я знаю, не существует. Вместе с тем, вы можете:

1. Передать коллекцию в скрипт-таск (задание-сценарий) и сделать поиск вашего id там.

2. Искать ваш id циклом - т.е. не читать коллекцию записей сразу, а каждую запись по очереди. После прочтения каждой записи изменяете какое-нибудь подходящее для этого поле (я часто грешу и ставлю текущую дату в поле "Дата изменения", а в условиях выборки ставлю сортировку по дате изменения по возрастанию) - таким образом перебираете всю выборку и находите искомую запись по id.

3. Если речь идет об id в одном и том же объекте, и вам нужно просто обнаружить факт наличия id в выборке, то вам может быть достаточно посчитать количество записей, соответствующих этому id или просто проверить результат выборки по искомому id на Guid.Empty.

Сравнения с коллекцией с помощью встроенных элементов, насколько я знаю, не существует. Вместе с тем, вы можете:

1. Передать коллекцию в скрипт-таск (задание-сценарий) и сделать поиск вашего id там.

2. Искать ваш id циклом - т.е. не читать коллекцию записей сразу, а каждую запись по очереди. После прочтения каждой записи изменяете какое-нибудь подходящее для этого поле (я часто грешу и ставлю текущую дату в поле "Дата изменения", а в условиях выборки ставлю сортировку по дате изменения по возрастанию) - таким образом перебираете всю выборку и находите искомую запись по id.

3. Если речь идет об id в одном и том же объекте, и вам нужно просто обнаружить факт наличия id в выборке, то вам может быть достаточно посчитать количество записей, соответствующих этому id или просто проверить результат выборки по искомому id на Guid.Empty.

А почему бы просто в элементе чтения данных не отфильтровать дополнительно записи по значению поля, равному интересующему Id? Так не будет необходимости загружать лишние данные и сразу будет видно, есть результаты или выборка пустая.

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

Ксензов Егор,

1-ый метод подходит но не такой удобный как хотелось бы).

2-ой метод я вообще молчу, ну скажем так для больших данных врядли подойдет.

3-ий метод не совсем понял как именно предлагаете , ( мой пример , к примеру одним запросом я получаю список контактов которые входят в опр деталь , и для этих N контактов хочу изменить права доступа на опр объект)

 

Зверев Александр,

 

мне нужно select * where id_Contact  in (select id_Contact from Detail where Date > '02022019')  Это я сейчас утрируя написал естественно , средствами БП можно это сделать ?

В скрипте БП можно использовать класс Select (или Update, Delete). Все они умеют вызывать подзапросы с In:

var existsInBonusesDeduction = new Select(userConnection)
 .Column(Func.Count("Id"))
 .From("BonusesDeduction")
 .Where("ChargeTransactionId")
  .In(new Select(userConnection)
    .Column("Id")
    .From("Transaction")
    .Where("PurchaseId")
     .IsEqual(Column.Parameter(purchaseId))
    .And("TypeId")
     .IsEqual(Column.Parameter(TransactionConsts.RecordTypeUId))
    .And("StatusId")
     .IsEqual(Column.Parameter(TransactionConsts.CompletedStatusUId))
  ) as Select;
var existsInBonusesDeductionResult = existsInBonusesDeduction.ExecuteScalar<int>(dbExecutor);

 

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

Здравствуйте, обновили версию bmp-online с 7.12 до 7.14 и столкнулись с такой проблемой:

1) Замещаем объект "Файл и ссылка объекта Заявка на отпуск" добавляя туда дополнительные поля.

2) Через мастер деталей создаем новую деталь от объекта из п.1.

3) В схеме созданной детали указываем родителем FileDetailV2.

4) Размещаем деталь на странице

В результате деталь выглядит вот так, то есть без возможности добавления файла:

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

Вопрос: как решить данную проблему? В версии 7.12 по такому же сценарию все работает как надо.

Нравится

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

Ошибок в консоли нет? Попробуйте еще раз внимательно сделать все согласно статье https://academy.terrasoft.ru/documents/technic-sdk/7-14/dobavlenie-detali-fayly-i-ssylki

 

Дмитрий А.,

Ошибок нет. Делаем всё на чистой системе согласно приведенной вами ссылке. Версия: 7.14.0.597

А от какой FileDetailV2 вы унаследовались? (из какого пакета)

Случайно не из пакета SspKnowledgeBase?

Дмитрий А.,

Нет, из UIv2.

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

Доброго дня. 

Есть задача - почистить контакты от дубликатов в системе. 

Насколько известно, есть типовые механизмы поиска контактов. 

И находится, например, около 2734 дубликатов на данный момент, однако при переходе по гиперссылке найденных дубликатов, отображаются только максимум 10 записей.

Да постепенно, по мере обработки дублей, могут появится и еще записи. Как бы «подгрузятся», однако это далеко не всегда так и список может «закончиться», когда были обработаны явно не все 2734 записей. 

 

Далее система просит поискать снова. 

Запускается поиск типовой поиск дублей. Находит 2734  записей снова. 

Однако ранее было же обработано (слияние или не считать дублями) сколько-то записей, хоть на одну, но должно найтись меньше. 

 

Но не ровно то же количество.

И притом в первых рядах уже «обработанные записи».

 

В связи с чем вопрос: 

Как бы создать бизнес-процесс сбора и вывода дубликатов контактов, который будет работать несколько иначе. 

 

Просто совпадение по ФИО и имени Контрагента. 

А далее, уже решать, что сливать воедино, а что нет.

 

Я представляю этот бизнес-процесс так:

Сначала чтение данных, следом чтение данных в собранной коллекции. 

Но вот куда потом и как это выводить для обработки руками - не представляю.

 

Нравится

3 комментария
Лучший ответ

Bogdan Zozulya пишет:

У меня и впомине нет такой кнопки - добавить правило, в том месте, где повествует об этом инструкция.

Для того, чтобы появилась кнопка [Добавить правило], нужно выполнить определенные настройки сайта.

Обратитесь в службу поддержки bpm'online - они сами выполнят данную настройку, если у Вас версия on-demand, либо предоставят инструкцию по настройке, если Вы используете приложение on-site.

Также обратите внимание, что версия, используемого приложения, не должна быть ниже 7.13.3 - это версия, когда данная функциональность появилась.

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

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

По поводу правил поиска дублей, посмотрите эту статью.

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

Также, если данная задача, является одноразовой (имею ввиду с таким количеством дублей), можно написать свой скрипт на sql, который выполнит слияние дублей на уровне базы данных без пользовательского интерфейса.

Добавить комментарий

Алла Савельева,

Проблема с растущими дубликатами была как-то решена коллегой, пока не понял как. Он, как старший, пожелал, чтобы я сам это распознал. Осталось только почистить. 

 

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

Bogdan Zozulya пишет:

У меня и впомине нет такой кнопки - добавить правило, в том месте, где повествует об этом инструкция.

Для того, чтобы появилась кнопка [Добавить правило], нужно выполнить определенные настройки сайта.

Обратитесь в службу поддержки bpm'online - они сами выполнят данную настройку, если у Вас версия on-demand, либо предоставят инструкцию по настройке, если Вы используете приложение on-site.

Также обратите внимание, что версия, используемого приложения, не должна быть ниже 7.13.3 - это версия, когда данная функциональность появилась.

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

Добрый день, коллеги. 

Мне необходимо по определённым условиям выделять записи в реестре в красный цвет (если срок заявки подходит к концу). Согласной этой документации выделяю записи, но цвет ссылки не изменяется в белый и текст становится нечитабельным:

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

Вопрос: Можно ли изменить цвет ссылки при помощи item.customStyle или как-то по-другому?

Нравится

6 комментариев
Лучший ответ

Здравствуйте решал данную задачу следующим образом: Создал отдельный модуль со стилями - http://prntscr.com/oxzgia, http://prntscr.com/oxzll5 затем подключил на странице реестра - http://prntscr.com/oxzmbx

В результате - http://prntscr.com/oxzmlx

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

Приведите пример Вашего кода.

Можно попробуйте цвет ссылки задать как то так

a:link { color:#33348e; text-decoration: none; }

Ещё в маркете есть шаблоны окраски реестра для нескольких разделов.  Но цвет ссылок там тоже не меняют, оставляют синим.

Алла Савельева пишет:

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

Приведите пример Вашего кода.

 

Григорий Чех пишет:

А где прописать данные стили?

Здравствуйте решал данную задачу следующим образом: Создал отдельный модуль со стилями - http://prntscr.com/oxzgia, http://prntscr.com/oxzll5 затем подключил на странице реестра - http://prntscr.com/oxzmbx

В результате - http://prntscr.com/oxzmlx

Нигрескул Алексей,

Большое спасибо!

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

Доброго дня. Виникає проблема з роботою плагіна "bpm’online для MS Word" .  Для розуміння проблеми , описую детально свої кроки. Встановив плагін та всі додаткові програми , у MS Word з'явилася вкладка bpm’online, перейшовши на неї, підключився до свого серверу. Далі вибрав потрібну мені друковану форму зі списку. І після цих дій нічого не відбувається, тобто не 'являється шаблон форми та поля, які можна додати в шаблон. Можливо, в когось була подібна проблема. Буду вдячний за консультацію.

Нравится

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

Справа може бути у схемі SysModuleReportMSWordEditPage з пакету Aspose. Якщо сайт знаходится «у хмарі», пошкоджену схему вже мали оновити справною, проте її не компілювали, щоб не завадити користувачам сайту. Для усунення причин негаразду слід:

  • виконати перегенерацію вихідного коду схеми SysModuleReportMSWordEditPage (пакет Aspose);
  • виконати компиляцію системи.

Якщо і після цього шаблон не буде відкриватись, раджу звернутись до служби технічної підтримки, щоб вони під'єдналися до Вашого сайту і проаналізували, що скоїлося.

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