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

 

Нравится

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

В чём именно Ваш вопрос?

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

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

Я нашел здесь обсуждение

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

Прошу прощения за глупый вопрос, но без этого не пройти вперед.

Я понимаю логику работы так. 

С разделом связан некоторый объект который обращается к таблице БД.

Он имеет внутри выгрузку данных таблицы бд, информацию какие поля выгружаемы и прочие свойства. Все эти параметры хранятся в DataGrid объекта. 

Теперь возвращаемся к обсуждению. Редко используемым полям советуют убрать свойство "Filtering Field" в DataGrid, но такого свойства в классе столбца EntitySchemaColumn нету. В дизайнере объекта через функцию "Исходный код" примера вызова свойства нет. 

  1. Есть ли моя ошибка в рассуждении?
  2. Как посоветуете сделать данную задачу?
  3. Есть ли актуальное обсуждение на данный момент?

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

Нравится

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

То обсуждение относиться к версии 3.Х, которая с нынешней 7.Х не связана практически никак. Более актуальное обсуждение похожих вопросов было тут или тут. Скорее всего, нужно будет найти в коде место формирования списка колонок и для конкретного раздела внести туда дополнительную логику. См. в CustomFilterViewModelV2, похоже, это оно:

  function getSimpleFilterColumnList(filters, list) {
   list.clear();
   var columnList = {};
   var columnNames = [];
   var columns = this.entitySchema.columns;
   Terrasoft.each(columns, function(column) {
    if (column.dataValueType !== Terrasoft.DataValueType.GUID &&
     column.dataValueType !== Terrasoft.DataValueType.TIME &&
     column.dataValueType !== Terrasoft.DataValueType.BLOB &&
     column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP &&
     column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) {
     if (this.isColumnDeprecated(column)) {
      return;
     }
     columnNames.push({
      name: column.name,
      caption: column.caption
     });
    }
   }, this);
   var sortedColumnNames = columnNames.sort(function(a, b) {
    if (a.caption === b.caption) {
     return 0;
    } else {
     return a.caption > b.caption ? 1 : -1;
    }
   });
   Terrasoft.each(sortedColumnNames, function(item) {
    var column = columns[item.name];
    columnList[column.name] = {
     value: column.name,
     displayValue: column.caption,
     dataValueType: column.dataValueType,
     referenceSchemaName: column.referenceSchemaName
    };
   });
   list.loadAll(columnList);
  }

 

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

Всем добрый вечер.

Может кто сможет помочь или подсказать.

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

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

Нравится

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

Это решается правами доступа на записи. Стандартно автор и ответственный видят свои записи. Если недостаточно возможностей механизма прав по умолчанию, которые настраиваются для создаваемых записей в зависимости от их автора, то можно разработать бизнес-процесс на событиях добавления и изменения контрагента, где использовать следующие блоки: «Читать данные» для считывания ответственного и затем «Изменить права доступа».

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

На предпродуктивной среде работали с функционалом кампаний, кампании работали как надо. Собрали доработки (ни одна из них не затрагивает функционал кампаний вообще) со среды разработки и установили на предпродуктивную среду с помощью Workspace Console. После этого кампании выполняться перестали. Например, создаю кампанию из двух элементов, добавление из группы и выход. Кампания активируется, запускается, в журнале кампаний висит запись о запуске самой кампании, но перехода на следующий элемент не происходит, соответственно, аудитория не пополняется. Кампания висит активной, при попытке остановить кампания переходит в вечное состояние "Останавливается".

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

Ситуация разрешена: Как оказалось, дело было в настройках UniOne. Настройки ранее сконфигурированного UniOne на предпродуктивной среде были перенесены на продуктивную среду. При очистке Redis, судя по всему, они синхронизировались и приоритет был отдан продуктивной среде, а на предпродуктивной настройки UniOne очистились. Стоило заново сконфигурировать UniOne на предпродуктивной среде - кампании заработали.

Нравится

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

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

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

Здравствуйте. Есть вопрос: какой отчёт подойдёт под следующие требования:

1) Визуальный отчёт (график, не список), который отражает прогресс выполнения плана по продажам (есть поле с планируемой величиной и фактическим выполнением плана), с возможностью углубиться в фактический план (увидеть какие счета в него вошли)

Был перенастроен базовый раздел "Планирование" - туда тянется не продажа, а кастомное поле "Маржа" из объекта "Счёт". Попытались сделать гистограмму, но не смогли настроить шкалу (шкала должна отражать плановое значение).



Может есть какие-нибудь советы?



Спасибо.

Нравится

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

Вообще, по описанию чем-то похоже на воронку продаж или сквозную воронку.

specs_dashboards_sales_pipeline.png 

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

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

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

Спасибо. Попробую Ваши варианты.

Появился ещё один вопрос:

Имеем график с типом "Гистограмма" где по оси Х - ответственный, а по оси Y - Сумма всех продаж ответственного за текущий квартал. Если нажать на столбец гистограммы и выбрать пункт "Показать данные" то откроется подробный список со всеми продажами для ответственного, НО этот список не отфильтрован по текущему кварталу. В нём содержатся вообще все продажи данного ответственного.

Есть какая-то возможность, чтобы этот список был отфильтрован по текущему кварталу? Спасибо.

Странно, проверил на 7.15.2, создал динамическую группу по дате создания равной текущему кварталу, стандартная диаграмма «Количество активных продаж по менеджерам» при заходе в неё фильтруется, как целиком, так и список по каждому ответственному.

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

Забыл уточнить, график с типом "Гистограмма", о котором я писал, создан в разделе "Итоги", откуда нет доступа к динамическим группам.

А вы настраивали в графике две серии? Одну - по счетам (факт), другую по другому объекту (план)?

Владимир Соколов,

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

Есть какая-то возможность, чтобы этот список был отфильтрован по текущему кварталу?

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

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

Окей, принято. Спасибо за советы и помощь

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

Добрый день!

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

Когда количество записей  для переноса в исходном объекте переходит примерно за 700, пользователь после некоего подвисания видит сообщение "Ошибка при запуске процесса". Однако процесс на самом деле завершается, просто пользователю не открывается страница редактирования нового создаваемого объекта. И он все это может лицезреть только после обновления страниц.

БП просто валится в ошибку по тайм ауту. Пробовали установить признак выполнения процесса в фоновом режиме, но это только все сломало.

Может у кого есть опыт как можно увеличить тайм аут выполнения БП? Базовых методов не нашли.

Благодарю!

 

Нравится

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

Добрый день!

Скорее всего вы запускаете БП через стандартное действие "Запуск процесса". Если это так, то там вызывается метод _runProcess утилиты ProcessModuleUtilities, который наверняка вызывает метод _runProcessOld. В этом методе вызывается сервис ProcessEngineService.svc с передачей параметров. Но таймаут не передается.

Что можно сделать: реализовать отдельное действие запуска вашего БП (кнопку в каком-нибудь разделе, дизайнере), в котором будет вызываться сервис ProcessEngineService.svc с передачей таймаута.

Добрый день!

Скорее всего вы запускаете БП через стандартное действие "Запуск процесса". Если это так, то там вызывается метод _runProcess утилиты ProcessModuleUtilities, который наверняка вызывает метод _runProcessOld. В этом методе вызывается сервис ProcessEngineService.svc с передачей параметров. Но таймаут не передается.

Что можно сделать: реализовать отдельное действие запуска вашего БП (кнопку в каком-нибудь разделе, дизайнере), в котором будет вызываться сервис ProcessEngineService.svc с передачей таймаута.

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

Это не только уберёт зависание, но и ослабит нагрузку на сервер приложений и базу данных.

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

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

Сидоров Александр В.,

Александр, ваша идея нам очень очень помогла! Спасибо! будем еще тестировать).

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

Коллеги, подскажите в чем может быть причина ошибки.

Я изучаю работу консоли. Выполнил пример выгрузки пакетов в файловую систему.

вот таким батником 

C:\SalesEnterprise\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Terrasoft.Tools.WorkspaceConsole.exe -operation=SaveDBContent -contentTypes=Repository -workspaceName=Default -destinationPath=C:\SavedPackages  -webApplicationPath=C:\SalesEnterprise --logPath=C:\Logs

после это пробую выполнить следующий пример загрузка пакетов при включенном режиме разработки в файловой системе запускаю такой бантник

 

C:\SalesEnterprise\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Terrasoft.Tools.WorkspaceConsole.exe -packageName=Custom -workspaceName=Default -operation=InstallFromRepository -sourcePath=C:\SavedPackages -destinationPath=C:\TempPackages -skipConstraints=false skipValidateActions=true -regenerateSchemaSources=true -updateDBStructure=true updateSystemDBStructure=true -installPackageSqlScript=true -installPackageData=true continueIfError=true -webApplicationPath=C:\SalesEnterprise -logPath=C:\Log

 

 

Получаю вот такую ошибку.

Error: Object reference not set to an instance of an object.

Я пробывал с разными пакетами ошибка одна. 

Подскажите где копать?

Нравится

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

Добрый день!

Необходимо указать параметр -confRuntimeParentDirectory=С:\папка_развёрнутого_сайта\Terrasoft.WebApp, который является обязательным для команды InstallFromRepository.

Подробнее о синтаксисе параметров и командах вы можете найти в статье о параметрах утилиты

Мотков Илья,

Илья, я указал этот параметр вот так но результат тот же: Error: Object reference not set to an instance of an object.

C:\SalesEnterprise\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Terrasoft.Tools.WorkspaceConsole.exe -packageName=Custom -workspaceName=Default -operation=InstallFromRepository  -confRuntimeParentDirectory=C:\SalesEnterprise\Terrasoft.WebApp -sourcePath=C:\SavedPackages -destinationPath=C:\TempPackages -skipConstraints=false skipValidateActions=true -regenerateSchemaSources=true -updateDBStructure=true updateSystemDBStructure=true -installPackageSqlScript=true -installPackageData=true continueIfError=true -webApplicationPath=C:\SalesEnterprise -logPath=C:\Log

Может, не хватает ещё какого-то из параметров, приведенных для этой команды в статье по ссылке.

InstallFromRepository

Загружает в конфигурацию последнюю версию структуры и метаданных пакетов из zip-архивов. При необходимости выполняются привязанные SQL-скрипты, перегенерация исходных кодов, установка привязанных данных. Работает только с измененными или новыми пакетами и их элементами. Требует указания одного из параметров -webApplicationPath или -configurationPath. Требует указания параметра -confRuntimeParentDirectory.

Хотя, у Вас один из них есть. Может, какая-то из папок реально называется не так, как указали?

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

Добрый день,

при создании папку в ProductFolder мне надо добавить данные(фильтр) в поле "SearchData"(varbinary), можете подсказать как я этот фильтр добавить в этой поле. У меня есть сервис в котором я добавляю данные в раздел Продукты, сейчас я должен его менять так что бы он добавил и папки по которому будут группироваться эти записи. Группировка как я понял работает через фильтр, вот этот фильтр мне надо кодировать, и добавить в запись. Все что пробовал не получилось, если есть примеры и можете поделится.

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

Нравится

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

Владимир, в поле «SearchData» хранится сериализированный текст фильтра. Как его читать, описано тут, тут и тут. Видимо, нужно будет считать, найти, где в нём задано условие, модифицировать и записать в том же формате обратно. Ещё похожее на то, что Вы хотите, обсуждается в этой идее.

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

Добрый день, подскажите пожалуйста, в onsite 7.15 при создании объекта например Счет в Действиях где настройка прав можно посмотреть права на Чтение, Редактирование и Удаление.

При этом в системе есть несколько возможностей настраивать права: 1) через конфигурацию - Управление конфигурацией 2) через администрирование - Права доступа на объекты

Вопрос? при создании счета откуда берутся данные для заполнения "Настройка прав" что в Действиях?

Нравится

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

Добрый день.

Сейчас права доступа можно настраивать и через конфигурацию, и через права доступа на объекты.

Фактически, это одна и та же функциональность.

В действии отображаются преднастроенные права доступа на записи.

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

Добрый день.

Сейчас права доступа можно настраивать и через конфигурацию, и через права доступа на объекты.

Фактически, это одна и та же функциональность.

В действии отображаются преднастроенные права доступа на записи.

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

Должно быть, Вас интересуют права доступа на запись по умолчанию. Они один раз настраиваются на уровне объекта, а затем для каждой создаваемой записи автоматически на деталь доступа добавляются нужные права, которые потом при необходимости можно корректировать вручную по действию «Настроить права доступа» в карточке записи.

 

gif_section_object_permissions_select_groups.gif

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

Добрый день! 

Имеем лид. Создали поле с типом "Дата" на лиде. Хотелось бы создать бизнес-процесс, который бы заполнял дату тем значением, которое являлось бы текущей датой на момент перехода стадии Лида на стадию "Победа".

Другими словами, хотим отслеживать дату, когда Лид стал победным. Возможно ли это сделать? Не нашла вариантов, которые бы нам подходили в начальном событии "Сигнал". 

Нравится

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

Да, возможно. В кейса в стадии Победа Добавьте БП. В качестве параметра процесса передать ID лида. В самом БП сделать редактирование данных лида.

 

У меня подобное сделано для установки ответственного в обращении при переходе на стадию "В работе"

 

Да, возможно. В кейса в стадии Победа Добавьте БП. В качестве параметра процесса передать ID лида. В самом БП сделать редактирование данных лида.

 

У меня подобное сделано для установки ответственного в обращении при переходе на стадию "В работе"

 

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

Алексей, спасибо за пример ! Попробую воспроизвести. А в бизнес процессе, что будет являться начальной точкой запуска процесса ? простой кружок или сигнал ? если сигнал, не понимаю, на что он должен реагировать, на изменение Лида? Была бы Вам признательна, если бы скинули скрин бизнес процесса.

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

Создала бизнес процесс с сигналом, при изменении лида. Добавила параметр (надеюсь, правильно, ни разу этим не пользовалась). Далее выбрала пункт "изменить данные" и тут начался ступор, т.к. обычно я использую информацию, полученную вычитками в данном бизнес процессе. как же тогда передать в поле Дата победы (на лиде) - дату, когда изменилась стадия ? 

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

Лилия, будет простой. Если процесс не выбран и нажать на кнопку [+], откроется дизайнер с заготовкой нового процесса. Если процессу добавить параметры, в дизайнере кейса можно настроить передачу туда значения (например, Id записи). Подробнее о настройке этого элемента см. в статье.

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