Технические вопросы
5.x

В созданном разделе добавляю статическую группу, выдает ошибку (см. приложенный файл)
Exception Message: Элемент коллекции с именем PGNHK_AuctionLot не найден Exception Type: Terrasoft.Common.ItemNotFoundException Exception Source: Terrasoft.Core

Нравится

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

Ощущение что потерялась какая то связь в SQL'е, но вот какая?

Добрый день.

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

Добрый день, Александр.
Пара уточняющих вопросов.

  1. 1. Когда Вы создавали раздел, Вы указали, что объект должен входить во множество групп?
  2. 2. У Вас присутствуют объекты [Object]Folder и [Object]InFolder?
  3. 3. И последнее. В какой момент вываливается этот Exception? При нажатии на элемент контекстного меню, при сохранении, или, судя по CallStack'у, при открытии раздела?

Либо же воспользуйтесь, как говорил Максим услугами саппорта.
Спасибо.
P.S. Возможно в комментарии дублирование нумерации, но это потому что на данный момент записи комментариев не отображают нумерацию тегами [ol]->[li].

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

1.в дизайне процессов при переносе элемента (например Читать данные) не открывается карточка для редактирования этого элемента, ничего не могу сделать

2. Есть объект Заказ
У него есть поля-справочники Контрагент и Торговая точка(Торговая точка это по сути деталь Контрагента, у Контрагента может не быть Торговых точек )
Подскажите как сделать в карточке редактирования Заказа, чтобы при выборе Контрагента
в справочнике Торговая точка открывались только записи, связанные с этим контрагентом

3.При создании Заказа торговая точка может не указываться, запись создаётся, но при повторном открытии выскакивает ошибка
я так понимаю ругается на то, что не найдена запись ....как быть?

Нравится

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

Здравствуйте Ольга.

"Найданова Ольга" написал:Подскажите как сделать в карточке редактирования Заказа, чтобы при выборе Контрагента
в справочнике Торговая точка открывались только записи, связанные с этим контрагентом

Наложить фильтр на датасорс при открытии справочника. Т.е. на событии Init зарегистрировать событие

Page.[LookupEdit].PrepareFilters => (sender, evtArgs) {
evtArgs.Filters.Add(new Dictionary<string, object> {
// Add Account Filter Here
});
};

"Найданова Ольга" написал:3.При создании Заказа торговая точка может не указываться, запись создаётся, но при повторном открытии выскакивает ошибка

Так с одного CallStack'а мало что можно сказать. Попробуйте описать последовательно действия, которые Вы выполняли.
На сколько я понимаю коробка FMCG???
Спасибо.

"Бабуков Андрей Александрович" написал:На сколько я понимаю коробка FMCG???

Не в курсе, знаю только BPMonline v.5.4.
при нажатии на справочник выходит сообщение


в Дизайнере страниц для поля Торговая точка указываю справочник Торговая точка


"Бабуков Андрей Александрович" написал:Наложить фильтр на датасорс при открытии справочника. Т.е. на событии Init зарегистрировать событие
Page.[LookupEdit].PrepareFilters => (sender, evtArgs) {
evtArgs.Filters.Add(new Dictionary {
// Add Account Filter Here
});
};

Не совсем поняла, я могу это код вставить в обработчик события выбора Контрагента(LookupEdit1Change1)

Добрый день.

"Найданова Ольга" написал:при нажатии на справочник выходит сообщение

Вам необходимо задать значение для отображения в объекте справочника Торговая точка, во всех свойствах:

"Найданова Ольга" написал:Не совсем поняла, я могу это код вставить в обработчик события выбора Контрагента(LookupEdit1Change1)

Нет, код необходимо добавлять на обработчик события Init карточки редактирования:

Не срабатывает фильтрация, вроде всё как в примерах, теме не менее


может ещё что-то пропустила

Здравствуйте Ольга!
Попробуйте для начала создать переменную типа Guid и вкладывать эту переменную в rightExpression.
Если не получится, попробуйте отладить приложение, вставив перед "e.Filters.Add(..." строку
System.Diagnostics.Debugger.Break();
Про отладку конфигурации можете прочитать здесь.
Спасибо.

"Бабуков Андрей Александрович" написал:Попробуйте для начала создать переменную типа Guid и вкладывать эту переменную в rightExpression.

Сделала так

object value = Page.AccountEdit.Value;
    Guid accountId = (value == null || value.ToString().Equals(string.Empty)) ? Guid.Empty : Guid.Parse(value.ToString());
    if (!Page.AccountEdit.Value.Equals(Guid.Empty)) 
    {
		System.Diagnostics.Debugger.Break();
		e.Filters.Add(new Dictionary<string, object> {
                  {"comparisonType", FilterComparisonType.Equal},
                  {"leftExpressionColumnPath", "Account.Id"},
                  {"useDisplayValue", false},
                  {"rightExpressionParameterValues", new object[] {accountId.ToString()}}});
    };

В студии открыла код своей страницы, поставила брейкпойнт в скрипте от события Init. К процессу тоже присоединилась, но после этого он пишет, что "в настоящий момент попадания в точку останова не произойдёт". Далее в моём понимании при открытии нужной страницы я должна перейти в эту точку, но естественно этого не происходит

Делаю это удалённо, на том компе, где развёрнут сайт

Здравствуйте Ольга!
Да, намутили Вы воды в коде. К чему такие сложности? Замените существующий код на:

Guid accountId = (Guid)Page.AccountEdit.Value;
    if (!accountId.Equals(Guid.Empty)) 
    {
                System.Diagnostics.Debugger.Break();
                e.Filters.Add(new Dictionary<string, object> {
                  {"comparisonType", FilterComparisonType.Equal},
                  {"leftExpressionColumnPath", "Account.Id"},
                  {"useDisplayValue", false},
                  {"rightExpressionParameterValues", new object[] {accountId}}});
    };

Далее, чтобы вызвался отладчик, Вам не нужно ставить бряку. Он автоматически подключится, если accountId будет не равен Guid.Empty. Вопрос в том, что Вы используете свою конфигурацию, а бряку ставите в исходнике какой-то другой конфигурации. Пгоэтому, Вам VS и сообщает о том, что брейкпоинт не отработает никогда. Просто подключитесь дебаггером к процессу IIS. А лучше, вынесите точку code-debug перед условием "if".

Исходник нужной конфигурации, только скомпилированный, это я по дате создания вижу
Процесс тоже только один

Может дело в студии самой, ей ещё чего-то не хватает

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

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

Что то я запутался, не могу никак понять, как мне раздать права на Активности таким образом, чтобы активности видели:
1. Тот кто ее создал
2. Ответственный (он я так понимаю будет ее видеть в любом случае, так как прописан как "Владелец")
3. Пользователи с детали "Участники"

И больше никто! (системных администраторов не берем, это отдельная песня)

На данный момент стоят полные права по умолчанию для "Все пользователи".

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

Нравится

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

В правильном вопросе половина ответа.
Разобрался.
Надо убрать на детали прав по умолчанию всю компанию, а добавлять "священных коров", например, кто создает "Отдел раз", а кто имеет доступ "Начальники отдела раз".
Тогда простой планктон будет видеть активности только если он в участниках, а начальники будут видеть свои подразделения.

:smile:

Но есть один нюанс: например, сотруднику Отдела раз поставил задачу Петров из отдела 2. И тогда начальник отдела раз не увидит задачу своего подчиненного. А было бы неплохо, если бы видел.

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

Показать все комментарии
Технические вопросы
5.x

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

Нравится

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

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

Примеры можно найти, собственно, в конфигурации. Как получить все схемы и искать по ним, описано тут: http://www.community.terrasoft.ua/blogs/8747

кое-какие примеры есть в BPMonline SDK, они постоянно пополняются: http://www.terrasoft.ru/bpmonlinesdk/

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

Порядок обращения в таком случае следующий:

1. Вами кратко описывается бизнес-задача, которую нужно реализовать программно (например, автоматизировать работу по продаже);
2. Описывается этап, на котором Вы на данный момент находитесь (например, автоматический расчет времени между звонками клиентам);
3. Описываете, с чем возникли сложности.

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

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

В продолжение темы https://community.terrasoft.ru/forum/topic/9322

Решение родилось такое:
1. Сделать справочник доступных адресов email в системе
2. На записи в справочнике раздать соответствующие права пользователям (тогда в списке при выборе "От кого" пользователь будет видеть только то, что ему положено)
3. В поле "От кого" сделать выбор из справочника.

Все хорошо, но колонка "От кого" по типу текстовое и изменить тип система не дает.

Варианта два:
1. Снять таки как то блокировку и изменить тип колонки на справочник все таки (существующие записи активностей меня не волнуют, их просто нет)
2. Скрыть поле "От кого", сделать свое, которое будет справочником, потом в скрытое "От кого" записывать выбранное значение из справочника.

Как лучше сделать?

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

Нравится

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

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

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

Поэтому в данном случае рекомендуется второй вариант.

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

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

Александр, я предоставила Вам уже несколько примеров, однако Вы просите новые. Давайте договоримся: вы предоставляете описание того, что конкретно Вам нужно, а мы готовим пример.

В данном конкретном случае от Вас требуется:

1. Описание бизнес-задачи;
2. Описание планируемой реализации;
3. Описание того, на каком этапе возникли сложности с реализацией;
4. Запрос на консультацию (предоставьте, пожалуйста, пример такой-то реализации).

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

Я уже все получил, спасибо. Я новых не просил просто написал и на форуме и в саппорт одновременно.

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

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

Нравится

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

Имя получается примерно таким образом:

var currentUserContactId = userConnection.CurrentUser.ContactId;
string currentUserContactName = string.Empty;
var entitySchemaManager = userConnection.GetSchemaManager("EntitySchemaManager") as EntitySchemaManager;
var contactSchemaQuery = new EntitySchemaQuery(entitySchemaManager, "Contact");
contactSchemaQuery.AddColumn("Name");
var contactIdFilter = contactSchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", currentUserContactId);
contactSchemaQuery.Filters.Add(contactIdFilter);
var contacts = contactSchemaQuery.GetEntityCollection(userConnection);
if (contacts.Count > 0) {
	currentUserContactName = contacts[0].GetColumnValue("Name").ToString();
}

Можно в MainPage добавить надпись и при открытии её заполнять.

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

Разобрался, только непонятно что за черта появляется справа и как её убрать (на скриншоте обведено красным)?

У вас надпись со стилем "Заголовок группы". Смените на стиль "Надпись".

Ээээээ, а как тогда можно управлять шрифтом, точнее размером и стилем (bold и т.д.)?

все, допер, это же веб в конце концов :biggrin:
html никто не отменял :lol:

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

Приветствую!

В свойствах объекта установил свойство "Владелец".
Как явствует из хелпа и форума:
[Владелец] — это поле заполняется в случае, если определенным пользователям необходимо автоматически предоставлять права доступа к записям объекта.

Однако не работает.
Куда копать? Может это быть связано с тем, что объекта администрируется по записям и колонкам?

Нравится

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

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

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

Где посмотреть порядок наступления событий страницы редактирования и датасета в ней?

Нравится

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

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

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

Описание порядка наступления событий жизненного цикла страницы в приложении.

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

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

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

Есть ли возможность реализовать работу с файлами (добавление и редактирование) прямо в BPMonline 5.4.x.x, как это происходит в Terrasoft CRM 3?

Нравится

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

Здравствуйте Александр.
Нет, к сожалению это невозможно по причине того, что разные файлы нужно открывать по разному.
Можно использовать какие-то плагины сторонних разработчиков для редактирования определенных файлов. Но это уже никак не относится к BPMonline.
Спасибо.

Понятно.
Спасибо за оперативный ответ.

Показать все комментарии
Технические вопросы
5.x

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

Exception Message: Элемент коллекции с именем Owner не найден

Подозреваю из-за того, что в объекте реестра у меня действительно нет колонки Owner.

Как бы это побороть?
Просто тупо добавить колонку Owner?
Но это я так понимаю не поможет, так как по логике там должен быть текущий пользователь...
У меня есть в объекте колонка, которая по содержимому, как раз соответствует смыслу Owner'а, но она называется по другому, да и записей уже в этом реестре существующих с тысячу с гаком.

Вопрос: можно ли добавить что нибудь вроде алиаса owner на нужную колонку?

Нравится

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

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

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

Есть ведь раздел "Итоги" где Вы можете легко добавить свои блоки. Либо же переработайте полностью логику отображения окна реестра продаж в едином окне на свою.

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

Я так непонятно написал что ли?.......

"Шамуилов Александр" написал:Вставил вместо реестра продаж свой реестр, получил ошибку

"Шамуилов Александр" написал:Я не заменял реестр продаж своим реестром.

"Шамуилов Александр" написал:Я так непонятно написал что ли?.......

Да, непонятно.

По моему яснее некуда:

"Шамуилов Александр" написал:Попытался изменить содержимое Единого окна.....не тут то было.
Вставил вместо реестра продаж свой реестр, получил ошибку....

Ладно, если ясность с терминологией достигнута, что делать то? Это вообще возможно реализовать?

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

"Зверев Александр" написал:Увидеть место свала можно отладчиком. Посмотрев в код

Александр, Вы, наверное, забыли, что у клиентов нет исходных кодов для отладки. Но можно разобраться по вызываемому CallStack'у. Или же использовать утилиты для отладки DLL. Вроде бы правильно. Или я ошибаюсь?

"Бабуков Андрей Александрович" написал:Александр, Вы, наверное, забыли, что у клиентов нет исходных кодов для отладки

Код конфигурации есть. Если развёрнуто OnSite, отладка конфигурации делается так.

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