Пытаюсь отсортировать активности по дате начала и получаю вот что:

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

Никаких дополнений в код секции не вносилось. Версия 7.11.2 Sales Enterprise + Marketing

Нравится

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

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

 

Данная проблема была решена в версии 7.12.0 

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

А есть ли способ проще? Например, сделать замещающую схему и что-то в нее внести?

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

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

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

Коллеги, здравствуйте! 

Хотелось бы уточнить какие методы есть для отката системы в случае диверсии со стороны администратора CRM?

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



Спасибо!

Нравится

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

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

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

https://academy.terrasoft.ru/documents/sales-enterprise/7-11/razdel-zhu…

Рекомендую настроить резервное копирование БД по расписанию, это позволит минимизировать возможные проблемы с потерей данных.

 

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

Приветы, в дизайнере страницы добавил "текстовое поле".

Как при выборе из справочника в другой детали (деталь выбор из справочника) значения, чтобы в "текстовое поле" установить значение на основе работы какой-то функции, которая через бд получит значение и запишет в это "текстовое поле"

 

 

Нравится

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

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

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

Больше информации о настройке бизнес-процессов - на Академии: https://academy.terrasoft.ru/documents/technic-bpms/7-11/obzor-funkcionalnosti-biznes-processov-v-bpmonline

Одеяненко Юлия,

 

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

QArt,

Алгоритм примерно следующий:

- стартовый сигнал - "Получен сигнал от объекта", какой объект - объект детали, событие - добавление записи (пример - http://prntscr.com/iudrkj)

- элемент "Читать данные", читать данные первой записи объекта детали, сортировка по убыванию колонки "Дата создания", значение только той колонки, которая будет транслироваться (пример - http://prntscr.com/iudxeb)

- элемент "Изменить данные" объекта, в котором нужно автоматически заполнять поле, изменить ту запись, на которой находится деталь, изменить значение Вашего кастомного поля параметром процесса, вычитаном в предыдущем элементе (пример - http://prntscr.com/iudwk1).

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

Спасибо. Если мне нужно в деталь "текстовое поле" писать расчетное значение, которое должно рассчитываться на событие "изменение значения в детали". Но в расчете Значение = "значение из детали" + в зависимости от типа указанного в сущности "значение из детали" то есть как-то запросом подгребать. И, увы, в бд поле есть у объекта, а в конструкторе в биз процессе поле выбрать нельзя, хотя деталь есть в интерфейсе пользователя, странно все это... 

 

Может попробовать как-то через атрибуты 

"aMetro": {

                        dependencies: [

                            {

                                columns: [ "WorkAddr" ],

                                methodName: "calcMetro"

                            }

                        ]

                    }

в calcMetro через esq получить метро и вписать его в деталь -  "текстовое поле" можно такой пример?

У меня опыта мало в ковырянии динозавра :)

QArt,

Разобрался, узнаю новое и странное. Почти сделал

getFullAddressFromVacancy: function (Id) {

                        var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                            rootSchemaName: "AccountAddress"

                        });

                        esq.addColumn("Id");

                        esq.addColumn("Address", "Address");

                        esq.addColumn("AccountAddress.SxSubwayStation.Name", "MetroName");

                        esq.addColumn("AccountAddress.City.Name", "CityName");

                        esq.filters.add("VacancyCandidateFilter222", this.Terrasoft.createColumnFilterWithParameter(

                            this.Terrasoft.ComparisonType.EQUAL,

                            "Id", Id));

                        esq.getEntityCollection(function (response) {

                            if (response.success && response.collection.getCount() == 1) {

                                var entity = response.collection.getByIndex(0);

                                var addr = entity.get("Address");

                                var city = entity.get("CityName");

                                var metro = entity.get("MetroName");

                                var add = '';

                                if (city != undefined && city != 'Москва')

                                  add += city + ', ';

                                if (metro != undefined)

                                  add += metro + ', ';

                                if (addr != undefined)

                                  add += addr;

                                this.log('Add = ' + add);

                                this.set("BpMetroAutoFill", add);

                            }

                        }, this);

                }

В консоли хрома вижу что столбцы, кроме Address пишутся isNotFound. 

Делал согласно https://academy.terrasoft.ru/documents/technic-sdk/7-8/poluchenie-rezul…

EntitySchemaQuery умеет довыгребать AccountAddress.SxSubwayStation.Name в таблице AccountAddress есть столбец SxSubwayStationId

Аналогично с City.

Что не так делаю, подскажите плиз?

Добрый день.

Таблицу AccountAddress вы указываете в rootSchemaName. Тоесть, при добавлении колонки из AccountAddress, не нужно указывать название этой таблицы. Нужно указывать именно поле из этой таблицы, например SxSubwayStation.Name.

Demchenko Olha,

Оля, спасибо, помогло! 

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

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

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

Эти процессы спокойно перенеслись через SVN на другие дев стенды и на QAS - и там начали работать по расписанию.

Но, когда перенесли наш пакет с помощью WorkspacecConsole, то на целевой среде они не запускаются по расписанию. Стартовые сигналы в таблице SysStartTimerInProcess появились, но триггеров в QRTZ_TRIGGERS нет.  Запускал вручную - они отлично отрабатывают, но далее по расписнию все равно не работают (триггеров по-прежнему нет).

В процессе установлена галка Повторять при пропуске.

Еще такой момент: на целевой среде, куда переносим пакет с помощью WsC - SalsesEnterprise, а на девах и QAS какая-то более сложна сборка с маркетингом и  сервисом. Версия везде 7.11.3.1175

 

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

Прикрепленные файлы

Нравится

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

Добрый день, Андрей!

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

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

Tsopa,

Добрый день. Что сделал:

  1. Выключил пул приложений
  2. Установил пакет с помощью WorkspaceConsole
  3. Почистил redis
  4. Включил пул 
  5. Убедился, что в QRTZ_TRIGGERS триггеров нет
  6. Залогинился и сделал Генерировать исходные коды для всех
  7. Сделал компилировать все
  8. После этого в QRTZ_TRIGGERS появились нужные трриггеры
Показать все комментарии

Коллеги, здравствуйтей!



Возник вопрос по созданию древовидного выбора категории в объекте "продукты".

К примеру категория: "БАРНЫЕ АКСЕССУАРЫ И ТОВАРЫ ДЛЯ СЕРВИРОВКИ"  и подкатегория: "Зубочистки", только после чего выбирается тип "Зубочистки с логотипом", "Зубочистки без логотипа" итд.



Возможно ли это реализовать?

Нравится

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

Добрый день, Роман!

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

Если не совсем корректно интерпретировал Ваш запрос, то просьба более детально описать свой кейс.

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

В таком случае начало аналогичное: через действие "Настроить каталог продуктов" настраиваем категорию и тип, а далее через действие "Настроить типы и фильтры продуктов" добавляем еще фильтрацию по полю продукта, выбрав поле "Вид" предварительно создав его (так как в базовой конфигурации такого поля нет). Таким образом получаем следующее.

 

Адасюк Валерий Викторович, да это получается :)

Но не совсем то, что наверно я имел в виду.

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



Вот как должно выглядеть дерево. Соответственно вид "лента в рулоне" мы не сможем выбрать в другом типе и категории.





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

Приветы,

 

Если, например, в контактах в момент когда строка выбрана, пользователь нажимает

на столбце где ссылка контакта "Петров И. А." - затем открывается страница редактирования этого контакта. Когда пользователь закрывает страницу редактирования то на странице (разделе/секции) контакты заново отрисовывается выбранная строка, вопрос: какое событие возникает, как этот факт обработать? 

 

Где-нибудь есть полный список событий и типовые примеры как их обрабатывать? Хотя бы сигнатуры.

Нравится

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

Добрый день!

Много событий описаны в академии, но очень разбросаны по статьям. А консолидирвоанного списка - нет.

Еще вариант - это в Chrome Developer Tools просмотреть исходный код прямо на странице. Так как он прокоментирован можно разобраться какой метод чем занимается. Плюс ко всему вы можете использовать там CallStack чтобы отследить вызовы методов. Ну или посмотреть исходники тут:

https://academy.terrasoft.ua/documents/technic-sdk/7-11/javascript-api-klientskoy-chasti-yadra-platformy

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

Золотарев Артем Андреевич,

Спасибо. Но примеров там нет или почти нет. 

"Много событий описаны в академии, но очень разбросаны по статьям. А консолидированного списка - нет." (Вот что-то открыл - https://academy.terrasoft.ru/api/jscoreapi/7.11.3/?_ga=2.110357765.1829… )

Их для роботов (гугла, яндекса) писали? Или для людей, как так... 

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

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

Напишите книгу, чтобы ее можно было читать, с "консолидированными данными". Хороший образец MSDN :) Думаете часто приходится лезть в исходники asp.net?

Притом ответы с академии от ребят у которых другая версия (из предыдущих) не работают. (У нас 7.11.3 ентерпрайз сейлз) приемственности нет...

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

Добрый день!

Зарегистрировал раздел на портале, у страницы редактирования в мастере раздела отсутствует правая часть, где нужно элементы управления "располагать"

Подскажите, какое поле в INSERT INTO SysModuleEdit (или другом?) за это отвечает? 

Нравится

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

Борис, здравствуйте!

Можете, пожалуйста, предоставить наглядный скриншот, как выглядит страница в Мастере (желательно с открытой консолью). И уточните, пожалуйста, как создавался раздел, нормально ли открываются раздел/карточка?

Одеяненко Юлия,

Выглядит так:

Регистрировал 1. по инструкции регистрация+раздела+на+портале.doc, которую техподдержка выдает и тут на форуме видел и 2. использовал инфо из этого топика https://community.terrasoft.ru/questions/rucnaa-registracia-razdela.

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

 

 

Борис, регистрировала раздел по этим же инструкциям - страница в Мастере отобразилась (Header и TabsContainer). Проблема может быть в некорректном наследовании (я наследовала портальную страницу от BasePageV2). Также рекомендую проверить зависимость пакета, в котором портальные схемы, от пакета Wizards. Возможно, перезапуск сайта решит проблему.

Правильность регистрации схем также могу посоветовать проверить по инструкции в этом посте: https://community.terrasoft.ru/questions/poradok-sozdania-razdela-vrucnuu

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

Приветы, подскажите плиз, делаю деталь по инструкции - https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali…

 

И потом в настройках она видна, но пишет что не зарегистрирована, что и как делать?

Как в https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali… (пункт пять) или как-то иначе?

Нравится

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

"Как в https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali… (пункт пять) или как-то иначе?" - именно.

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

Варфоломеев Данила,

Спасибо.

Сегодня месяц как я узнал про существование Террасофт

Платформа обладает огромным количеством неисправимых преимуществ.

 

Подскажи:

Взял первый запрос из пункта пять, изменил значение sql переменных на название своей детали и он не запустился, что сделал не так? 

https://prnt.sc/iq2cml - ошибка

https://prnt.sc/iq2cym - вроде как ее быть не должно

 

 

 

QArt пишет:

ошибка

Да вроде всё правильно... запрос случайно не в master уходит? или 100% к определённой базе?

Варфоломеев Данила,

Угу, поправил, теперь другая ошибка в консоли хрома вижу 

https://prnt.sc/iqj91v опечатки или что-то не так сделал по образу из академии. 

Какой общий подход к исправлению подобных ошибок?

Можешь подсказать как "правильнее" вести разработку? (где надо писать не на js, а нас c# и как сие потом из js вызывать) Нужно ли EntityShemaQuery пытаться писать на c# и если да то как их потом пробрасывать в js? Проект wcf? Как и куда его добавлять, есть рыба? :)

Помоги крестьянину добраться до города.

QArt,

Здравствуйте, что касается вопросов разработки то Вы сможете найти достаточно богатое описание вместе с примерами на сайте Академии Террасофт по ссылке https://academy.terrasoft.ru/documents/technic-sdk/7-11/dokumentaciya-p…

 

Что касается ошибки, то вероятнее всего это возникает из-за не полностью сгенерированного статического контента.

Для решения попробуйте зайти в конфигурацию приложения и выполнить следующие действия:

1. Обновление структуры БД

2. Генерация исходного кода

3. Полная компиляция приложения

 

После выполнения данных действий выполнить повторное тестирование Вашего кода.

Denys Diachenko,

Спасибо!

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

Можно ли сделать, чтобы тип поля "дробное число" при настройке раздела отображал точность данных до тысячных, а не до сотых?

Нравится

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

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

Пока что точность данных можно менять только в объекте в конфигурации (если это базовый объект, то нужно его заместить): ttp://prntscr.com/inxzk8

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

Спасибо огромное, Юлия!

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

Добрый день!

На данный момент реализуем БП, который самостоятельно поздравляет сотрудника компании с днём рождения посредством e-mail, а так же поздравляет человека, который проработал в компании 5, 10, 15, 20 и т.д. лет.

Нам известно, что ВРМ анализирует даты в детали «Знаменательные события» и передаёт оповещение о ней в боковую панель.

Как можно сделать аналогичный механизм внутри БП?

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

Получается, нам нужно провести сравнение дат внутри БП, чтобы человеку, который родился 01.03.1990 пришло поздравление 01.03.2018

Нравится

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

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

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

Для таких целей в БП целесообразней использовать элемент Задание - сценарий. Примеры работы с объектами в скрипте можно найти на Академии, нужный Вам объект - ContactAnniversary .

В рамках же скрипта можно выполнять и отправку письма для коллекции контактов, пример отправки по созданному id активности письма можно найти в базовом процессе "Отправка email сообщения контакту обращения" пакета Case.

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

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