Стоит задача реализовать комплексный фильтр подбора продукта. Т.е. каталог продуктов состоит из 4 категорий (Корневая категория, вложенная 2 уровня, вложенная 3 уровня и вложенная 4 уровня). У продукта имеются характеристики (например, цвет и модификация). Необходимо чтобы при выборе категорий справочные поля модификации и цвета содержали только те значения которые входят в эту категорию (это работает). Также надо чтобы справочное поле продукта фильтровалось по категориям, цветам и модификациям. Получилось выполнить данное задачу через виртуальную колонку (атрибут). Не могу понять как такой фильтр применить к полю продукта детали (ни где не встретил пример который бы это описывал). Подскажите, пожалуйста, как настроить комплексный фильтр для справочного поля в секции diff. Или устроило бы правило которое бы привязывало значение виртуального поля к реальному, как это можно сделать?

Нравится

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

Что-то похожее есть в Bpm’online real estate, механизм подбора листингов в разделе лидов.

Интересно было бы посмотреть как реализован такой фильтр. Но, к сожалению, у меня нет доступа к платформе real estate. 

Это решение партнёра Softline, связываться нужно с ними.

В своё время делал такой подбор с огромной карточкой фильтрации по разным параметрам и списком найденных записей внизу, тоже в сфере недвижимости. Но тогда это было на 5.Х и решения уже неактуальны.

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

Добрый день!

Столкнулся с проблемой, поле справочника Состояние на детали графика оплат и поставок на вкладке Паспорт в заказе, в справочнике два значения (Выполнер/Не выполнен) и более не предвидится.

Хотелось бы переделать в выпадающий список, но у поля State замещающего объекта SupplyPaymentElement в пакете с моими доработками галка "Cписок" снята и задизейблена.

Как теперь это обойти?

Нравится

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

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

+ MetaData.Schema.D2.["0a3324bb-55c8-4791-b51f-409cfedc6fe2"].E20 true

это добавит признак список к колонке UID которой указан в квадратных скобках

Добавьте нужные Вам значения в справочник 'Состояния элемента графика поставок и оплат'.

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

нет, мне нужно, что бы это поле на детали отображалось выпадающим списком. Значения в этот справочник добавлять не надо.

Борис Леонов,

Вы можете реализовать эту функциональность на уровне карточки редактирования:

                {

                    "operation": "insert",

                    "parentName": "Header",

                    "propertyName": "items",

                    "name": "State",

                    "values": {

                        "bindTo": "State",

                        "contentType": Terrasoft.ContentType.ENUM,

                        "layout": {"column": 12, "row": 3, "colSpan": 12}

                    }

                },

Или же создать не замещающий объект, а унаследованный от SupplyPaymentElement, тогда признак 'Список' у поля 'State' будет доступен.

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

У вас первый вариант прям получилось осуществить? Я сразу так сделал, только "operation" не "insert", а "merge", не работает на детали, действует только на карточку.

А второй как провернуть, что бы остальную логику не переделывать или обойтись минимальными доработками?

Борис Леонов,

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

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

Как добавить унаследованный объект описано в статье, смотрите 'Создание пользовательской схемы объекта' и 'Указание родительского объекта'.

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

завтра попробую

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

+ MetaData.Schema.D2.["0a3324bb-55c8-4791-b51f-409cfedc6fe2"].E20 true

это добавит признак список к колонке UID которой указан в квадратных скобках

Колодяжный Владислав Эдуардович,

добавление метаданных работает, спасибо!

Интересно, а в методе getCellControlsConfig это можно как то провернуть?

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

Благодарю!

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

Как мне выбрать только те записи, которые строго соответствуют введенному значению, а не те, которые еще и содержат его? Скрин прилагаю.

 

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

Нравится

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

А что мешает создать справочник из 2х колонок

1)пользователь

2)способ поиска

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

Вам нужно изменить значение системной настройки "Тип сравнения для строковых колонок" (код StringColumnSearchComparisonType).

[Тип сравнения для строковых колонок] — тип оператора, используемого для фильтрации значений выпадающего списка полей “справочник”. Тип: целое число. Значение по умолчанию: 1. Может принимать одно из двух значений:

0 — ищет вхождение подстроки в начале строки.

1 — ищет вхождение подстроки в любой части строки.

Обратите внимание, что данная настройка изменит условие фильтрации во всей конфигурации.

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

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

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

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

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

А что мешает создать справочник из 2х колонок

1)пользователь

2)способ поиска

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

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

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

А так можно и космический корабль построить - было бы время и желание))))

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

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

Друзья, подскажите пожалуйста, как в стандартном фильтре при нажатии "Добавить условие" подменить колонку по которой будет осуществляться фильтрация? Возможно подобный вопрос уже был задан, но я не смог его найти, если таков есть - буду благодарен за ссылку. Спасибо.

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

Нравится

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

Точно, недавно эта тема уже обсуждалась здесь.

Точно, недавно эта тема уже обсуждалась здесь.

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

благодарю!

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

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

Нравится

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

Что такое «время начала календаря»? От сотворения мира?

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

в представлении Расписание  время начала дня. Обычно это 8 или 9 утра. В моб приложении день начинается с 0 часов дня.  

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

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

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

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

При открытии страниц Контакта и Контрагента возникают следующие ошибки в консоли:

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

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

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

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

Нравится

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

Смородинов Денис,

Тогда почему Вы считаете, что ошибка связана с правами доступа?

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

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

Я правильно понимаю, что эти ошибки возникают под обычным пользователем, а под пользователем с правами админа - нет?

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

и под админом тоже.

Смородинов Денис,

Тогда почему Вы считаете, что ошибка связана с правами доступа?

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

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

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

Здравствуйте. Была необходимость в добавлении дополнительного поля поиска в LookupPage. 

Изображение удалено.На данный момент решил задачу путем замещения модуля LookupPageViewGenerator и изменения в нем метода getFilteringControlsConfig

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

Вопрос: можно ли как-то заместить или расширить этот модуль не копируя весь код, чтобы просто изменить тот метод, который мне нужен? Если да, то как потом его использовать на странице, например "Обращения"?

Нравится

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

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

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

Кастомное окно можно реализовать не как замещенное, а как наследник от LookupPageViewGenerator и переопределить нужные методы.

Также мне не совсем понятно, если Вы действительно замещали LookupPageViewGenerator, то зачем тогда копировали весь код, ведь могли переопределить только нужные методы?

 

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

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

Кастомное окно можно реализовать не как замещенное, а как наследник от LookupPageViewGenerator и переопределить нужные методы.

Также мне не совсем понятно, если Вы действительно замещали LookupPageViewGenerator, то зачем тогда копировали весь код, ведь могли переопределить только нужные методы?

 

Лучше клиентские модули не замещать

В 7.13.1 добавлен запрет на создание и установку новых замещающих клиентских модулей.

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

В вашем случае лучше унаследовать свой модуль от LookupPageViewGenerator создать свою страницу справочника скопировав LookupPage со всеми зависимястями заменив LookupPageViewGenerator на свой вариант

И дальше на странице Обращения в атрибутах указать lookupListConfig параметр lookupPageName:

"EmployeesNumber": {

                        dataValueType: Terrasoft.DataValueType.LOOKUP,

                        lookupListConfig: {

                            orders: [{columnPath: "Position"}],                            lookupPageName: ВашаСтраницаLookupPage 

                        }

                    },

 

Таким образом ваш вариант будет вызыватся лишь там где вы в атрибутах явно зададите lookupPageName что вы и хотели!

 

 

 

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

Проблема подключения к MS Exchange. При подключение используется домен, но настройки для введения домена нет. Пробовал через domen\ADLogin - не работает. Логин не имеет в себе "@mail.com" (в смысле не совпадает с адресом). При подключении пишет "Указан неправильный email или пароль." Проверил настройки на Outlook встроенный в Windows 10 - все работает нормально, просит завести: Сервер, домен, логин, пароль.

Настраивал по инструкции академии

Нравится

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

Насколько я понимаю в зависимости от настроек сервера в в имени пользователя может быть домен или его не быть е если у вас email VasaPupkin в домен ExtraCompany

попробуйте  установив вводить имя вручную указать установить логин как:

ExtraCompany\VasaPupkin

Или попросить установить для Exchange сервера формат аутентификации без логина

Как то так: https://www.techieshelp.com/exchange-2013-change-owa-log-on-options/

Вот видео по настройке. Насколько понимаю, если логин не совпадает с email, то нужно вводить логин и email в соответствующие поля, а домен отдельно никуда вводить не нужно.

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

по этом видео делал - не работает

Может, какие-то запреты на стороне сервера. Уточните параметры подключения у админа, вдруг реально нужно прописывать не тот email. Если есть логи на стороне exchange, там тоже при неуспешном подключении может быть более подробная информация о причине.

Зверев Александр,Админ говорит что логин это - domin\Login, и имя сервера. Больше нечего не дает, говорит это все

Пусть ещё email Вам скажет.

И смотрите логи.

Зверев Александр, email я взял. Смотреть логи Exchange'а? Админ говорит что там оооочень много данных и смотреть их отбивается

Сообщение «Указан неправильный email или пароль» намекает на одну из двух возможных причин. Также попробуйте включить настройку «Использовать email как логин».

Если дело не в этом, могут быть запреты на уровне сервера.

Зверев Александр, «Использовать email как логин» тоже ставил, не помогло. В общем нужны логи Exchange'а?

scr_cases_ms_exchange_card.png

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

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

все их перепробовал.

Такое ещё может быть, если на сервере Exchange просрочены сертификаты. Если дело в этом, есть два решения:

1) Установить нормальные сертификаты на сервере Exchange (не самоподписанные и не просроченные, а выданные центром сертификации) .

2) Установить значение true системной настройке «Игнорировать некорректные сертификаты сервера Exchange»

Насколько я понимаю в зависимости от настроек сервера в в имени пользователя может быть домен или его не быть е если у вас email VasaPupkin в домен ExtraCompany

попробуйте  установив вводить имя вручную указать установить логин как:

ExtraCompany\VasaPupkin

Или попросить установить для Exchange сервера формат аутентификации без логина

Как то так: https://www.techieshelp.com/exchange-2013-change-owa-log-on-options/

Григорий Чех,пробовал прописывать domen\Name - тоже не работает. Вносить в настройки сервера админ не хочет, потому и думаю как это можно сделать без его участия. Админ считает "у нас все работает, это у вас не правильно настроено или не работает"

Третий вариант найти почтовый сервер который умеет собирать почту с других серверов, настроить в нем импорт почты с вашего Exchange и использовать его для забора почты с Exchange сервера и отправлять (хотя отправлять можно и через этот третий сервер) А в BPM настроить этот третий сервер. Такое вроде умеет mail.ru gmail.com Если это конечно разовая операция если таких пользователей много то нужно надавить на админа через руководство :)

Кстате а какая версия у вас Exchange сервера?

И еще обращатся в поддержку не пробовали?

 

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

Подскажите, как создать бизнес процесс, который бы мог добавить в шаблон письма несколько строк из раздела CRM?

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

Нравится

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

Игорь Г. пишет:

можно ли в один шаблон вставить несколько строк повторяющейся информации, так как модуль "Читать данные" - читает данные из первой записи выборки. Не понятно, как собрать эти данные в цикле и потом подтянуть в шаблон.

Можно настроить элемент "Чтение данных" на получение нужного количества записей.

Для этого в параметрах БП объявляете параметр с типом 'Коллекция объектов' и в значения этого параметра добавляете коллекцию из нужного элемента "Чтение данных": https://prnt.sc/l7j5xs

Нужное количество вычитываемых данных указываете в расширенных параметрах элемента "Чтение данных": https://prnt.sc/l7j69n

А потом в элементе "Задание-сценарий" обращаетесь к параметру процесса и вычитываете из него коллекцию:

var userConnection = UserConnection;

for(int i = 0; i < PCBCollection.Count; i++)

{

        EntitySchema schema2 = userConnection.EntitySchemaManager.GetInstanceByName("BTPatienCardBlock");

        Entity entity2 = schema2.CreateEntity(userConnection);

        entity2.SetDefColumnValues();

        entity2.SetColumnValue("Id", Guid.NewGuid());

        entity2.SetColumnValue("Name",                                       PCBCollection[i].GetTypedColumnValue<string>("Name"));

        entity2.Save();

}

return true;

Данная информация давно прочитана и разобрана. К сожалению, она не дает понимания, можно ли в один шаблон вставить несколько строк повторяющейся информации, так как модуль "Читать данные" - читает данные из первой записи выборки. Не понятно, как собрать эти данные в цикле и потом подтянуть в шаблон.

Здравствуйте! Я вижу тут 2 варианта.

1) Писать свой макрос для шаблона. Описание как делать свой макрос описана здесь - https://academy.terrasoft.ru/documents/technic-sdk/7-13/dobavlenie-obra…

2) Формировать тело письма непосредственно в БП заносить его в переменную процесса, а в элементе отправки письма подставлять параметр - http://prntscr.com/l7fj1f&nbsp;

http://prntscr.com/l7fkqf и так можно наполнить тело письма разными параметрами.

Игорь Г. пишет:

можно ли в один шаблон вставить несколько строк повторяющейся информации, так как модуль "Читать данные" - читает данные из первой записи выборки. Не понятно, как собрать эти данные в цикле и потом подтянуть в шаблон.

Можно настроить элемент "Чтение данных" на получение нужного количества записей.

Для этого в параметрах БП объявляете параметр с типом 'Коллекция объектов' и в значения этого параметра добавляете коллекцию из нужного элемента "Чтение данных": https://prnt.sc/l7j5xs

Нужное количество вычитываемых данных указываете в расширенных параметрах элемента "Чтение данных": https://prnt.sc/l7j69n

А потом в элементе "Задание-сценарий" обращаетесь к параметру процесса и вычитываете из него коллекцию:

var userConnection = UserConnection;

for(int i = 0; i < PCBCollection.Count; i++)

{

        EntitySchema schema2 = userConnection.EntitySchemaManager.GetInstanceByName("BTPatienCardBlock");

        Entity entity2 = schema2.CreateEntity(userConnection);

        entity2.SetDefColumnValues();

        entity2.SetColumnValue("Id", Guid.NewGuid());

        entity2.SetColumnValue("Name",                                       PCBCollection[i].GetTypedColumnValue<string>("Name"));

        entity2.Save();

}

return true;

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

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

Ситуация следующая: на проекте было создано несколько пакетов, без подключения к хранилищу. По ходу дела понадобилось подключить svn, было создано хранилище, через базу установлена связь с пакетом.

Однако пакет всё равно не получается закоммитить в svn. Скриншот возможной ошибки: https://www.screencast.com/t/7BFlj3ty

Возможно есть какая-то инструкция, можно ли подключить к svn пакет после создания?

Нравится

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