В процессе работы над конфигурацией, размер базы подрастает с каждой компиляцией, я так понимаю.
Например, на сегодня размер таблицы в некоторой конфигурации SysSchemaInSolution более 2Гб, SysSchemaSource более 800Мб.
Соответственно "пустая" база начинает "весить" более 3Гб, что естественно замедляет резервное копирование, например, да и просто ест много места.
Вопрос такой - можно ли безболезненно неким методом заставить базу "похудеть"? Понятно что при этом будет потеряна некая информация об истории изменения объектов конфигурации (нужна ли она кстати?)

Нравится

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

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

Для начала Вам необходимо выяснить сколько занимает Ваша база, имеется ввиду сам файл базы (.mdf) и журнал логов (.ldf), это видно в свойствах БД на вкладке Файлы (Files). Если у Вас файл базы или логов имеет пустое место, то его можно очистить при помощи команды Shrink

Для ознакомления Вам помогу ресурсы:
1. http://www.sql.ru/forum/3129/ochistka-logov
2. http://itmemo.ru/2011/12/ochistka-bolshih-faylov-logov-ldf-v-mssql/

С уважением,
Дмитрий Ковшевацкий
Специалист службы поддержки II линии
Группа компаний Terrasoft

Дмитрий, вопрос не в Shrink. С этого я начал поиск причин роста.
Пустого места в базе минимум - общий объем 3 с чем-то Гб, после Shrink. Лог уменьшен почти до нуля. Данных нет - это база для разработки, то есть только тестовая информация по паре записей в разделах. Размер таблиц, которые я привел выше - немаленький. Если активно редактировать визуальные формы, например, размер подрастает.

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

CREATE PROCEDURE [dbo].[tsp_DeleteOldSchemaVersions]
AS
BEGIN
SET NOCOUNT ON

DELETE FROM [SysSchemaInSolution]
WHERE [Id] IN (
Select [OldSchemaVersion].[Id]
From [SysSchemaInSolution] [OldSchemaVersion]
Where [OldSchemaVersion].[Version] NOT IN (
Select TOP 3 MaxVersion.[Version]
From [SysSchemaInSolution] [MaxVersion]
Where [MaxVersion].[SysSchemaId] = [OldSchemaVersion].[SysSchemaId]
And [MaxVersion].[SysSolutionId] = [OldSchemaVersion].[SysSolutionId]
Order By [MaxVersion].[Version] DESC))
END

Дмитрий, спасибо!
3,8 Гб превращаются в 0,8 Гб что не может не радовать :smile:

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

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

Искал, так и не нашел. На правку времени создания/изменения в БД не реагирует.

Нравится

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

Александр, в разделе "Рабочие места" на вкладке "Карточки редактирования" можно менять их порядок.
Выведите в реестр колонку "Позиция", чтобы видеть текущую позицию и меняйте с помощью стрелочек в правом верхнем углу.
Для применения возможно понадобится почистить Redis.

Также можете посмотреть метод "GetEditPages" на "BaseGridPage".

Позиция на это не влияет никак, чистка редиски тоже не помогает.
Да и по названиям пунктов меню, четко видно, что они берутся из справочника типа карточки редактирования. Вчера копался в GetEditPages....пока мало что понял :-)

Возник вопрос: как EntitySchemaQuery (когда используется GetEntityCollection) сказаnm сортировать результаты запроса?

Для EntitySchemaQueryColumn есть метод OrderByAsc и OrderByDesc

Спасибо!
Йееху! Заработало!

В GetEditPages надо строчку

var typeDisplayColumnName = entitySchemaQuery.AddColumn(typeSchema.GetPrimaryDisplayColumnName()).Name;

Заменить на

EntitySchemaQueryColumn typeDisplayColumn = entitySchemaQuery.AddColumn(typeSchema.GetPrimaryDisplayColumnName()).OrderByAsc();
var typeDisplayColumnName = typeDisplayColumn.Name;

И вуаля, сортирует пункты меню по алфавиту. Порядок на ваше усмотрение :wink:

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

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

Нравится

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

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

Можно ли в рамках существующей лицензии поднять "рядом" еще один сервер bpm для разработки и отладки? И как организовать процесс переноса изменений? Через метаданные?

Нравится

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

Да уж поднимите, что ж страшного:wink:
Лицензию только перезаказать придется уже на новом сервере.
Перенос доработок можно через Действия-Экспорт в файл/Импорт из файла делать, только неудобно это, поэтому подпишусь на тему, может что гуру от разработчика подскажут более правильное, как логировать изменения особенно, сам мучаюсь.
Нам бы PVC для BPM :smile: В тему призывается Валерий Андрусик - нет у вас планов таких случаем?

Александр, вы можете поднять еще один сервер, на котором вести разработку или доработку.
Как правильно заметил Александр Кудряшов:

"Александр Кудряшов" написал:Перенос доработок можно через Действия-Экспорт в файл/Импорт из файла делать

Арсений, а что там с логированием? Ну ведь наверняка есть ноу-хау у отдела разработки?
И наверняка не на уровне "записать в блокнотик список того, что выгрузить" :wink:

Александр, можно ведь подключить SVN в 7.x.

Идея сделать PVC для BPMOnline есть, но пока не накопили достаточно опыта, особенно под 7-ку. На конференции планируются доклады по архитектуре BPMOnline, будем вникать... :smile:

Дмитрий, я про 5.х :smile:
И туда похоже подключить можно только блокнотик с карандашиком

Не понял про лицензии. Я их уже заказал. У меня они на боевом сервере прописаны. Как оно это между собой то будет соотносится?

SVN это хорошо, даже прекрасно, но хочется под 5.4.

В принципе, в порядке бреда, можно в SVN метаданные запихать....все.....и потом как нибудь....что нибудь с ними делать..........:redface:

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

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

"Олейник Дмитрий" написал:А по поводу 5.4. - можно ведь разрабатывать в отдельной конфигурации, а после - переносить изменения.

а отладка ? не будет мешать ?

Нет, по факту - каждая конфигурация компилируется отдельно.

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

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

Александр, я с Вами согласен. Отдельный сервер для разработки - вещь хорошая. Если у Вас OnSite -организовать его проще простого (бекап-рестор, лицензии...).
Единственная субъективная трудность в таком подходе - это импорт измененных(новых) схем по одной. Хотя публикацию можно выполнять для одной из (если это не схема объекта) - остальные импортированные схемы будут автоматически скомпилированы. В случае со схемами объектов, т.к. в рамках компиляции изменяется структура БД, каждую схему нужно публиковать отдельно.

"Шамуилов Александр" написал:

Дмитрий, я про 5.х :smile:
И туда похоже подключить можно только блокнотик с карандашиком


Александр, Вы не поверите, но... на "пятерке" у разработчиков именно так все и происходит. Поэтому и прикрутили к "семерке" SVN.

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

Появился следующый вопрос.

BPM 5.4. Бизнес-процесс каточки. Есть два событийных сообщения которые запускают задание-сценарий.
Как мне знать который ивент запустил его?

Context перебрал, но не нашел нужного свойства или метода.

Нравится

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

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

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

Добрый день коллеги!!!
У меня возникла проблема с переносом данных (Записи в таблицах). Мои действия:
На сборке которое это было (7.0.1.328) после добавление в справочник данных сделал следующее:
во вкладке "Данные" добавил свои данные:
"добавить"-"Выбрал свой объект" - "Выбрал колонки которые нужны (ID, Name, Description)" - Выбрал тип "Установка"(так же пробовал со всеми иными пунктами) - Нажал "Загрузить данные", после проверил или оно подвязалось (показать данные), все привязалось нормально и загрузило те данные которые нужно. В SVN зафиксировал изменение.
На сборке (7.0.1.598), я в настройках настроил тоже подключение к SVN, обновил, захожу в раздел "Данные" и вижу там свой пакет данных, открываю его, нажимаю на кнопку показать данные мне ничего не показывает, во вкладке "Привязанные" смотрю там мои данные есть но когда нажымаю "Проверить" мне в ыдает что мой пакет не прошел проверку, почему не понятно =(.
Но данные к базовым объектам(таблицам) переносить нормально, а к моим созданым нет, таблици существуют и справочники зарегестрированы

Нравится

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

Сергей, добрый день!
Что вам нужно проверить:
1) Если есть возможность то выполните проверку на (7.0.1.328) там где вы привязывали данные. (нажать "Проверить" )
2) Вероятная причина ошибки вы привязали данные которые ссылаются на Lookup которых у вас нет.
Например колонка Contact ссылается на контакт которого нет у вас в базе.

В версии 7.0.1.328 нету такой кнопки, и там только 3 поля id name description тоесть никакого вторичного ключа нету

"Ильюша Сергей Николаевич" написал:

В версии 7.0.1.328 нету такой кнопки, и там только 3 поля id name description тоесть никакого вторичного ключа нету

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

Еще у меня возникли проблемы с разделом "Контрагенты", после переноса он перестал находить страницу Account.js.
Мои действия:
Обновить с SVN - Обновить структуру бд - Опубликовать мой объект (Контрагента) с другой сборки

А объект Account у Вас компилируется?

"Бондаренко Александр Сергеевич" написал:

А объект Account у Вас компилируется?


да, без ошибок

Сергей, проблема с работой контрагента заключается в том, что для поля «FilterAcountTypeTrade» установлено значение по умолчанию, которого уже нет в таблице типов контрагента.
Для работы необходимо изменить значение по умолчанию у объекта контрагента, перекомпилировать, очистить кэш браузера.
Или добавить в таблицу «AccountType» значение с уникальным идентификатором «179e73f6-20de-4fbf-b4e7-3d7b01c40516».

спасибо !!! Я уже думал Вы забыли обо мне =)))

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

Добрый день.

Подскажите как из SysMainPageShell бросить сообщение в MainPage с параметрами. Или как получить параметр из SysMainPageShell ?

Или как получить в SysMainPageShell Process.InstanceUId для MainPage.

Нравится

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

Добрый день!
Это можно сделать только путем регистрации клиентского js скрипта.
В "MainPage" на загрузке вы должны на клиенте в какую-то переменную записать идентификатор процесса страницы.
А в "SysMainPageShell" зарегистрировать клиентский скрипт, который вычтет этот идентификатор и бросит сообщение (можно и с параметрами).
Пока в системе нет примеров реализации такой логики.

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

Не отображаются картинки в BPMOnline CRM 7.0.0.167
Поддержка: попробуйте переразвернуть, вот ответ:
В чем может заключатся не правильная конфигурация IIS сервера? На этом сервере развернуты сайты, как версии 7.0.0.167 так и версии 7.0.0.235, поведение сайтов аналогичное. Сайты переразворачиваются, как минимум 1 раз в неделю, ошибка повторяется.

Нравится

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

Добрый день, Сергей!
Сообщите, пожалуйста, версию IIS сервера и версию операционной системы на которой он развернут.
Эта информация нужна нам для воспроизведения вашего пользовательского окружения.

Операционная система: Windows Server 2008 R2, WINDOWS 7 X64 Ultimate.
IIS 7.
SQL SERVER 2008 R2.
NET Framework 4.5

Спасибо за информацию, будем пробовать воспроизвести у себя.
Есть ли у Вас возможность попробовать развернуть BPMonline на IIS 8 ?

Денис, развернули BPMonline 7 и 5 на IIS 8 все картинки отображаются. Операционная система Windows Server 2012 IIS 8

Добрый день, Антон!
Есть ли у Вас возможность окончательно перенести ваш сайт BPMonline 7 на IIS 8?
P.S. На нашем сервере ondemand все сайты BMPonline уже переведены на использование IIS 8.

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

Добрый день! Хотелось бы уточнить пару вопросов:
-Покажите пожалуйста как добавить новое поле в форму добавления нового контрагента?
Прошу расписать по шагам.спасибо!

Нравится

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

Алексей, для какой версии необходимо описание?

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

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

"Бондарь Наталия" написал:

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

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

dobavlenie_polya_v_kartochku.docx
107.29 кб

спасибо Наталия!Буду разбираться!

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

Нужно добавить кнопку на страницу редактирования в bpmonline 7.0. Как это сделать? Добавить к существующим кнопкам

Нравится

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

Здравствуйте, Антон! Предоставляю пример добавления кнопки на "AccountPage".

Код замещающего модуля:

define('AccountPage', ['terrasoft', 'Account', 'AccountPageStructure', 'AccountPageResources'],
    function(Terrasoft, Account, structure, resources) {
    var viewModel;
    structure.userCode = function() {
        //помещение ссылки на текущий объект вызова в переменную
        var parentThis = this;
        //помещение ссылки на метод init-a в переменную
        //и последующий его вызов из функции
        //таким образом происходит переопределение метода
        var baseInit = this.methods.init;
        this.methods.init = function() {
            if (Ext.isFunction(baseInit)) {
                baseInit.call(this);
            }
        //снова сохраняем ссылку на объект вызова
            viewModel = this;
        //добавление контрола кнопки
            var button = Ext.create('Terrasoft.controls.Button', {
                renderTo: Ext.get('utils-left'),
                caption: "Основной контакт"
            });
        //подписываемся на событие клика
            button.addListener("click", parentThis.methods.move, parentThis);
        };
        //описываем функцию-обработчик события клика
        this.methods.move = function() {
            var primaryId = this.get('PrimaryContact').value;
            if (primaryId) {
                var URL = Terrasoft.workspaceBaseUrl + 'Nui/ViewModule.aspx#CardModule/ContactPage/view/' + primaryId;
                document.location.replace(URL);
            }
        };
    };
    return structure;
});

Ext.get() возвращает элемент страницы по идентификатору, который можно получить используя инспектор элементов в инструментах разработчика браузера (F12 в Chrome):

Большое спасибо, а теперь как мне скрывать и открывать добавленные кнопки:sad:

Антон, с помощью свойства visible при определении кнопки:

var button = Ext.create('Terrasoft.controls.Button', {
                renderTo: Ext.get('utils-left'),
                caption: "Основной контакт",
                visible: false
            });

а также, с помощью метода setVisible( visible ), где visible: boolean:

button.setVisible(true);
Показать все комментарии