Добрый день,

Столкнулся с такой проблемой, добавил в раздел Контрагенты справочное поле "Населенный пункт" (VcLocality) и такое же поле в деталь  Адрес контрагента, и пытаюсь настроить синхронизацию так же как она работает в базовой версии. Для этого в процессе объекта Контрагент переопределил метод SynchronizeAddress, в результате получилось передавать значение из раздела на деталь, а вот обратно из детали в раздел не получается. В процессе объекта Адрес контрагента есть метод GetAddressSynchronizer,

AddressSynchronizer = AddressSynchronizer ?? 

    ClassFactory.Get(

        new ConstructorArgument("userConnection", UserConnection), new ConstructorArgument("addressEntity", Entity),

        new ConstructorArgument("masterEntityName", "Account"));

return (BaseAddressSynchronizer) AddressSynchronizer;

я так понимаю что он вносит изменение в исходный код схемы BaseAddressSynchronizer. Но вот заместить схему BaseAddressSynchronizer не получается.

Вопрос состоит в том как мне передать следующий код в схему BaseAddressSynchronizer:

new SynchronizationColumnMapping {

                    SourceColumnName = "VcLocalityId",

                    DestinationColumnName = "VcLocalityId"

                },

 

 

Нравится

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

Добрый вечер.

Создайте класс, который наследуется от «BaseAddressSynchronizer», и параметризированный атрибутом «[Terrasoft.Core.Factories.Override]», например:

[Terrasoft.Core.Factories.Override],
public class UpdatedBaseAddressSynchronizer : BaseAddressSynchronizer
 
{
 
// замещаете необходимые методы
 
}

В версии 7.15 это так же в процессе используется? Можете подсказать как процесс называется?

Видимо, речь о встроенном процессе объекта «Контрагент».

Нашёл встроенный процесс с методом SynchronizeAccountAddress, но в нём никак не используется класс BaseAddressSynchronizer. Это два разных варианта реализации?

Если создать свой класс от BaseAddressSynchronizer и переопределить GetSynchronizationColumnMappings то где в системе происходит обращение к экземпляру этого класса?

BaseAddressSynchronizer используют в обратную сторону, в БП объекта детали.

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

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

У нас недавно была внедрена система terrasoft bpmonline которая использует MS SQL. Хотелось бы узнать, есть ли какие-то рекомендованные регламентные процедуры по поддержке этой СУБД. У меня есть относительно большой опыт в поддержке MS SQL для 1С и там к стандартным регламентным процедурам относят перестроение индексов, сбор статистики и очистка процедурного кеша. Эти операции реально помогают производительности 1С. Скажите, имеет ли смысл применять подобные регламентные операции для MS SQL в случае terrasoft bpmonline? Возможно, terrasoft имеет какие-то свои рекомендации (к сожалению, пока не сталкивался с ними) ? Заранее спасибо за ответ.

Нравится

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

Игорь, в общем случае всё будет очень похоже. Всё те же индексы и прочее.

Из специфического, в bpm'online есть таблицы с информацией, которая копится и не чистится, но особо не нужна по прошедствии времени.

Например, в SysUserSession при каждом входе пользователя или какой-то интеграции пишется новая запись. Если её никогда не чистить, она вырастает до больших размеров и работа с ней замедляется, встречаются deadlock-и. Аналогично, в IntegrationLog пишется информация при работе интеграций, если такие предусмотрены в Вашей системе. Другие подобные таблицы можно увидеть, построив в Management Studio отчёт «Disk Usage by Top Tables».

Плюс в оптимизации стоит учитывать, что в Terrasoft повсеместно используются в качестве первичных ключей GUID-ы.

Иногда объёмы данных столь велики, что для нормального выполнения запросов помогает только переход на SSD, поскольку HDD не справляется. И версию MS SQL лучше выбрать 2016 и новее.

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

 Большое спасибо за Ваш ответ.

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

Коллеги, добрый день!

Трабла - не обновляются до конца некоторые пакеты при обновлении из svn.

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

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

 

В чем причина и как исправить? Заранее благодарен за советы / рецепты

 

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

Нравится

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

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

Сергей Кy6риш,

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

Если на первичной площадке внести изменение, например добавить или изменить какую-то схему, зафиксировать это в svn, и после обновлять пакет на принимающей площадке, то все внесённые значимые изменения применяются, за исключением указанных на рисунке, а при повторной попытке обновления - остаются только конфликты как на рисунке.

Почему-то конфликт не устраняется (ожидаемым) перезатиранием

 

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

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

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

При изминении ресурсов в базе сайта (таблица "SysPackageResourceChecksum")  для ресурсов пакетов устанавливается еденица в колонке "IsChanged".

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

Сергей Кy6риш,

Добрый день, та же самая проблема, но в таблице 

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

Елена Ефремова пишет:

постоянно появляется ошибка авторизации. В чем может быть проблема?

В неправильном логине или пароле?

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

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

Коллеги, добрый день!

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

Мы тщательно проверили зависимости и установили отсутствие циклов. Очистка кеша репозитория и смена самого репозитория не помогает устранить проблему.

 

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

 

В чем причина и как исправить? Заранее благодарен за советы / рецепты.

 

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

Нравится

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

Добрый день! Реализовал деталь по статье из академии. Множественное добавление работает. Но заметил странный баг. После добавления нескольких записей, открываю на редактирование одну из них, а в ней пусто (вообще ничего не заполено, хотя я вижу, что данные заполнены в детали), затем закрываю. Повторно открыть какую-либо запись на редактирование уже не получается - в консоль валится ошибка (скрин). Если обновить страничку карточки, то таких проблем нет. Могу открывать любые записи в детали на редактирование, данные в ней тоже подтягиваются.

По ошибке - в базе запись с таким id есть!

 

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

Нравится

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

Ради эксперимента, вставьте вот такой метод на страницу

loadAddedRecords: function(collection) {
	this.reloadGridData();
},

и отпишитесь, сработало или нет.

Дмитрий, здравствуйте!

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

Направьте нам, пожалуйста, Ваш запрос на support@terrasoft.ru, также предоставьте доступ к Вашему сайту (адрес и параметры для входа/удаленное подключение/обезличенный бекап БД). Также уточните, пожалуйста, какую деталь и на какую карточку Вы добавляли, всегда ли в ошибке появляется один и тот же id и какой именно записи присвоен id, который появляется в ошибке.

Ради эксперимента, вставьте вот такой метод на страницу

loadAddedRecords: function(collection) {
	this.reloadGridData();
},

и отпишитесь, сработало или нет.

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

Какая-то магия - сработало! Спасибо!!!

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

Добрый день.

В системе bpmonline на странице контрагента есть вкладка "Контакты и структура". На этой вкладке есть информация "Контакты контрагента". Судя по документации в этой детали отображаются "... контакты, у которых данная компания в указана качестве текущего места работы на детали [Карьера] или в профиле". Скажите, а где можно посмотреть на программный код, который связывает контрагента с контактами (карьерой контактов) для формирования списка этой детали? Вопрос связан с тем, что есть намерение повторить эту связь для получения аналогичного списка для контрагента в своем бизнес-процессе. Просматривая существующие схемы конфигурации я, к сожалению, не нашел нужного. Заранее спасибо за ответ.

Нравится

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

Непонятно, что требуется получить на выходе. Разве нельзя просто через esq в бизнес-процессе получить нужные данные?

Кузнецов Сергей,

Хочется в esq повторить логику запроса к данным, который выполняет деталь "Контракты контрагента". Можно ориентироваться на приведенное описание из документации, а можно посмотреть на существующий код и повторить запрос. Также просто хочется разобраться как организована эта деталь.

Игорь Козлитин,

В детали AccountContactsDetailV2 используется фильтрация _getContactCareerFilter, которая фильтрует контакты в соответствии с его местом работы, т.е. Контрагентом:

AccountContacts: {

schemaName: "AccountContactsDetailV2",

filter: {

masterColumn: "Id",

detailColumn: "Account"

},

useRelationship: true,

filterMethod: "_getContactCareerFilter"

}



Посмотреть реализацию данного фильтра Вы можете в схеме AccountPageV2 пакета UIv2, выполнив поиск по словосочетанию "getContactCareerFilter"

Анна Журавель,

 Большое спасибо. Ваш ответ очень помог.

Да, по сути логика простая. Всего лишь один единственный фильтр, должен совпадать контрагент. Деталь построена прямо на объекте "Контакт". Т.е. делаем выборку по объекту Контакт, где контрагент равен конкретному.

Кузнецов Сергей,

Дополню Ваш ответ - там еще сущность "Карьера контакта" учитывается.

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

Добрый день!

Есть 2 лицензии bpmonline ITIL service customer portal on-site - пользователь портала bpmonline service enterprise on-site - пользователь системы

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

Нравится

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

Вам нужно создать 2 типа пользователя (сотрудника компании и пользователя портала), и распределить между ними соответствующие лицензии. Инструкции по созданию доступны по ссылкам:

https://academy.terrasoft.ua/documents/service-enterprise/7-12/kak-doba… https://academy.terrasoft.ua/documents/service-enterprise/7-12/registra…

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

Добрый день!

Есть 2 лицензии: bpmonline ITIL service customer portal on-site - пользователь портала,  bpmonline service enterprise on-site - пользователь системы.



Как можно в 14-дневной Триалке сделать Пользователей с такими же Лицензиями?

Нравится

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

Никита, добрый день! У вас есть лицензии on-site, если вы говорите о 14-дневном триале в облаке, то такое действие сделать нельзя, поскольку это будет анрушением политики лицензирования - сайт будет отключен через какое-то время системой мониторинга подобных нарушений.

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

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

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

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

 

Нравится

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

Никто что ли не знает ответа???

Добрый вечер.

Самый простой способ — это посмотреть реализацию в «ActivitySectionV2», как реализована вкладка «Календарь». Начать нужно с метода «getDefaultDataViews», а дальше смотреть все что связано с «SchedulerDataView».

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

Добрый день, известно, что для активностей можно сделать разные страницы для каждого из ее типов. Создал я тип Активности "Звонок" и создал для нее собственную страницу. Вопрос: как привязать то, что для типа активности "Звонок" создана новая страница к пакету?

Нравится

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

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

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

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

Demchenko Olha,

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

Victor Ivanitski,

Для привязки вашей страницы, нужно добавить запись в таблицу SysModuleEdit, где в CardSchemaUId указать UId вашей страницы из таблицы SysSchema.

Пример скрипта для выборки существующих привязанных страниц к Активности:

select * from SysModuleEdit where SysModuleEntityId in (select Id from SysModuleEntity where SysEntitySchemaUId in (select Uid from SysSchema where Name like 'Activity'))

 

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