Всем доброго дня!

Мы (компания Лабитек) готовим к выходу мобильное приложение для iOS, которое работает с Террасофт версии 3.х.
Основные характеристики:

  • независимость от используемой СУБД (работа с данными через ядро Террасофт);
  • настройка разделов мобильного приложения прямо в Террасофт (ЛЮБЫЕ разделы/данные Террасофт доступны на мобильном устройстве);
  • offline режим работы;
  • отчеты и графики(диаграммы) на мобильном устройстве, настраиваемые в Террасофт;
  • интеграция с возможностями мобильных устройств (телефон, календарь, карты, веб, email).

Для затравки, во вложении несколько скриншотов приложения с iPad и iPhone :smile:
Они не раскрывают все нюансы настройки и использования, но об этом мы расскажем на вебинаре.

Выход первой версии запланирован на сентябрь, в связи с чем предлагаем всем желающим принять участие в открытом тестировании.
Присылайте UDID ваших устройств на andrusik@labitec.ru (UDID можно посмотреть в iTunes, во вложении скриншот с примером)

Нравится

Поделиться

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

Добрый день! А как с разделом [Проекты] обстоят дела?

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

А вебинар уже состоялся? Можно уже скачать и посмотреть?

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

Валерий, подскажите, с версией 3.1.0.41 будет ли работать это приложение (конфигурация похоже еще с версии 3.0 CRM x15)?

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

Назревает эпичная битва между приложением от "Лабитек" и Terrasoft Mobile PT от "Программных Технологий".

Сделать бы сравнительный обзор функциональности.

Лабитек VS Самарасофт

У каждого приложения свои плюсы :smile:

Открыта регистрация на вебинар, прошу записываться и готовить вопросы.

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

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

По-прежнему можно попробовать демонстрационную версию на любом устройстве с iOS 6.1 и выше, достаточно прислать мне UDID устройства. :smile:

Жаль что с вебинаром не получилось.
Жду видео обзор.

Записали небольшой видео обзор, приглашаю посмотреть и прокомментировать/задать вопросы:
Обзор

Добрый день, Валерий.
Посмотрела Ваш обзор. Возникают такие мысли (вопросы, размышления, пожелания):
1. как быть с динамическими группами - у нас например, ими очень активно все пользуются. Как вариант делать отдельные датасеты, и так их подключать (просроченные задачи по ответственным или еще что-то в этом роде). Подходит только для самых распространенных и важных групп.
2. сколько места может потребоваться приложению для работы в офф-лайн режиме ? понятно что зависит от данных, которые будут указаны в выборку, но все же... Файлы в оф-лайне будут уже не доступны, только сами записи таблиц, правильно?
3. для корректной работы все "обязательные для заполнения поля" надо обязательно выбирать, наверное надо сразу их добавлять в набор данных. При этом вся логика работы датасета сохранится, будут выполняться скрипты и тд ?
4. есть хороший механизм напоминаний. его можно как-то реализовать? кроме выборки самого датасета в качестве "отдельного раздела".
5. хотелось бы увидеть как работает синхронизация с календарем и почтой.
6. при устранении конфликтов в офф-лайн режиме надо бы какие-то более дружелюбные пользователям сообщения выводить :) А то пользователь iOS будет очень удивлен.

Спасибо, Виктория, отвечаю по пунктам:

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

Да, можно отдельные датасеты на одни и те же данные. Но при этом есть вероятность, что одни и те же данные будут дублироваться на мобильном устройстве (в разных датасетах).
Лучше, по возможности, делать "просмотры" набора данных (то, что я показывал для задач, просмотры "Все" и "Мои").

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

Невозможно сказать... Все действительно зависит от количества настроенных полей и выбранных записей.
Общее правило - чем меньше данных, тем лучше. Тогда и места меньше занимает, и синхронизация быстрее проходит.
Но специальных ограничений нет - можно занять всю память устройства :smile:.
И файлы тоже могут перебрасываться на мобильное устройство, только форматы ограничены следующим списком:
jpg, png, bmp, gif, mp4, mp3, pdf, rtf, doc, xls, ppt, htm

3. для корректной работы все "обязательные для заполнения поля" надо обязательно выбирать, наверное надо сразу их добавлять в набор данных. При этом вся логика работы датасета сохранится, будут выполняться скрипты и тд ?

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

4. есть хороший механизм напоминаний. его можно как-то реализовать? кроме выборки самого датасета в качестве "отдельного раздела".

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

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

Не показывал только потому, что на эмуляторе нет ни календаря, ни почты... На "живом" устройстве работает :smile:. Если есть iPhone/iPad - присылайте его UDID, я вышлю приложение для установки, поработаете с демо-базой "вживую".

6. при устранении конфликтов в офф-лайн режиме надо бы какие-то более дружелюбные пользователям сообщения выводить :smile:
А то пользователь iOS будет очень удивлен.

Действительно, сообщение при добавлении записи было не очень "красивое" :smile:
Но в нашем случае мы просто транслируем проблему с Террасофт - если проделать то же самое в обычном клиенте, то получим точно такое же сообщения.
А так как проблемы при добавлении/редактировании могут быть разные, сложно автоматически транслировать ошибку в "дружелюбное" сообщение...

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

Добрый день, уважаемые участники комьюнити!

Мы обновили расширение Project Version Control (http://www.community.terrasoft.ua/catalog/4245) и записали несколько видеороликов с примерами использования функций расширения.
Ниже описание роликов и ссылки на скачивание:

1. Общая информация о PVC
Концепция, инсталляция, пример работы.

Размер: 25 Мб
Длительность: 17 минут
http://www.labitec.ru/files/pvc/lesson01.wmv

2. Работа с сервисами
Создание сервисов, редактирование, редактирование структуры
Каскадное обновление сервисов (запроса по таблице, датасета по запросу и т.д.)
Удаление сервисов

Размер: 39 Мб
Длительность: 19 минут
http://www.labitec.ru/files/pvc/lesson02.wmv

3. Работа с мастером генерации сервисов
Создание справочника
Создание раздела
Создание детали в разделе
Добавление полей в датасет
Подключение грида к разделу/окну редактирования

Размер: 38 Мб
Длительность: 22 минут
http://www.labitec.ru/files/pvc/lesson03.wmv

4. PVC Loader
Загрузчик обновлений

Размер: 18 Мб
Длительность: 11 минут
http://www.labitec.ru/files/pvc/lesson04.wmv

5. Запросы на изменения, работа с данными справочников
Работа с заданиями (запросами клиентов)
Добавление, изменение и удаление данных, и их перенос на рабочую базу.

Размер: 12 Мб
Длительность: 8 минут
http://www.labitec.ru/files/pvc/lesson05.wmv

6. Версии сервисов, поиск
Работа с версиями сервисов
Поиск в PVC

Размер: 12 Мб
Длительность: 6 минут
http://www.labitec.ru/files/pvc/lesson06.wmv

7. Работа нескольких разработчиков над одной конфигурацией

Размер: 5 Мб
Длительность: 4 минуты
http://www.labitec.ru/files/pvc/lesson07.wmv

8. Создание справочной системы для клиента

Размер: 8 Мб
Длительность: 5 минут
http://www.labitec.ru/files/pvc/lesson08.wmv

9. PVC Center
Назначение модуля
Инсталляция
Пример работы программиста и тестировщика над запросом в центральной базе

Размер: 43 Мб
Длительность: 29 минут
http://www.labitec.ru/files/pvc/lesson09.wmv

Нравится

Поделиться

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

Различные online сообщества уже достаточно долго используются в бизнесе. Однако социальные сети как инструмент только начинают активно использоваться в бизнесе. При этом если для компаний в сегменте B2C (Business to customer) присутствие в социальных сетях уже становиться нормой, то для B2B компаний (Business to business) все еще открытым остается вопрос, когда же вообще надо формировать свое сообщество. И действительно, далеко не всем компаниям требуется инвестировать в формирование online сообщества.

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

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

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

Второй признак – это работа на высоко конкурентном рынке. Для таких компаний онлайн сообщество является важным дифференциатором в развитии более сильных взаимосвязей с клиентами. Online сообщества позволяют организовать эффективный контакт с клиентом и предлагать именно те продукты, которые востребованы сообществом.

В качестве примера можно привести компанию Terrasoft, запустившую сообщество http://community.terrasoft.ua/ для поддержки своего продукта. Портал компании Terrasoft открыт для любого пользователя Интернет, однако доступные материалы определяются статусом - клиент, партнер, т.д. С помощью сообщества компания собирает пожелания по развитию продукта, что позволяет быстрее реализовать те запросы, которые важны. Каждый клиент действительно имеет значение для этой компании.

Третий признак – это потребность в быстром информационном обмене, что характерно для стремительно растущих отраслях.

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

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

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

Источник: Портал CRMExperts.ru

Нравится

Поделиться

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

Всем доброго дня!
Закончили работу над разделом "Бизнес-процессы", и регистрируем его в каталоге расширений.
.
Большинство функций этого раздела я описал ранее в этой ветке (http://community.terrasoft.ua/blogs/4579), не буду их дублировать здесь.
Отмечу только, что дополнительно мы реализовали следующие возможности:
- добавлена автоматическая проверка "поврежденных" элементов, а также элементов "Задержка" - работает аналогично окну "Напоминания", только отображает список элементов БП, которые необходимо запустить (тем самым продолжив выполнение процесса).

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

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

.

Небольшой видеообзор раздела можно скачать по этой ссылке:
http://www.labitec.ru/files/WorkflowEx20100504.rar
Буду рад ответить на вопросы.

Нравится

Поделиться

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

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

Будем развивать модуль...
Вот здесь недавно обсуждали подобное:
http://community.terrasoft.ua/forum/topic/4997

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

Всем доброго дня,

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

Итак, модуль "Событийные права" предназначен для автоматической выдачи прав на запись в зависимости от значений ее полей.

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

Скриншоты делать не стал, вместо этого записал небольшой видеообзор, скачать можно тут:
http://www.labitec.ru/files/EventRight20100504.rar

Если есть вопросы - задавайте :)

Нравится

Поделиться

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

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

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

Можно привести пример?

Я не совсем понял ситуацию... Попробую на примере, есть вот такая постановка:
- есть группы пользователей "Отдел продаж" и "Отдел производства". Первая группа имеет права по умолчанию на чтение в разделе Контрагенты (и соответственно видит всех контрагентов). Вторая группа по умолчанию контрагентов не видит;
- новую продажу регистрируют пользователи Отдела продаж, указывая клиента;
- при переводе Продажи в состояние "В работе" необходимо выдать права на чтение Продажи и на чтение записи о Клиенте группе "Отдел производства";
- при переводе "Продажи" в состояние "Выполнено" необходимо отобрать права у "Отдел производства" как на продажу, так и на клиента.
.
Такой сценарий реализуем в рамках модуля. Можем рассмотреть другой пример, если интересно :)
--------------------------------------------
Лабитек
Центр разработки приложений

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

Часть работы выполняет процедура на сервере (с правами владельца базы).
--------------------------------------------
Лабитек
Центр разработки приложений

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

Собственно секрета нет, так как нет "дыры" в безопасности :).
Коротко схема выглядит так:
- по правилам, которые вводит администратор Террасофт, к таблице создается триггер, содержащий логику назначения прав в зависимости от значения полей записи (я ошибочно написал, что используется хранимая процедура);
- так как пользователь может запустить эту логику, только сохраняя запись, и при этом сработают только правила, определенные администратором, то пользователь не может намеренно "навредить" в базе.
.
Кстати, я погорячился, написав ранее, что данный модуль может работать только с MSSQL 2005 и выше, или Oracle. Сейчас нет ограничения на используемую СУБД.

--------------------------------------------
Лабитек
Центр разработки приложений

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

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

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

"Виталий Гдуля" написал:Вы не думали над реализацией такой функциональности, как раздача прав доступа на связанные объекты, где связь идет один ко многим (например, раздавать доступ на все счета по продаже при определенных изменениях продажи)?

Да, такую функциональность мы реализуем в следующих версиях - она прямо напрашивается :)

"Виталий Гдуля" написал:Еще одна задача, с которой часто сталкиваемся, - при изменении ответственного за что-либо раздавать ему определенные права доступа (т.е. нужно на основании изменяемого поля определять целевой AdminUnitID).

Похожую функциональность сейчас выполняет действие модуля "Установить права по умолчанию" - AdminUnitID пользователя определяется по полю, которое указано в действии, ему даются права, указанные флажками в действии, и плюс создаются права по умолчанию. Если я правильно понял Вашу задачу, надо убрать последнюю часть (права по умолчанию). Я думаю, мы реализуем в ближайшее время (как новый тип действия, конечно).
--------------------------------------------
Лабитек
Центр разработки приложений

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

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

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

Расширили возможности модуля в плане работы со связанными записями, а также добавили новые виды действий.
http://community.terrasoft.ua/catalog/4879

Добрый день! Этот модуль уже доступен на Terrasoft XRM Bank?

Модуль доступен под все версии Террасофт, но только при использовании СУБД MSSQL

Спасибо, но у нас Oracle

"Валерий Андрусик" написал:Модуль доступен под все версии Террасофт, но только при использовании СУБД MSSQL

Я так понимаю, под Firebird тоже модуля нет?
Озадачился тем, что под Firebird не находится аналога 'EXECUTE AS User' из SQL2005+ и не удается красиво обойти те самые ограничения прав простых пользователей через ХП

Нет, пока только под MSSQL

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

Всем доброе время суток!

Вышла новая версия расширения Project Version Control, хочу ознакомить вас, уважаемые коллеги, со списком новых возможностей.
Небольшой видеообзор этих возможностей можно скачать по ссылке:
http://labitec.ru/files/pvc125video.rar

1) Настройки расширения:
   - Настройки теперь хранятся отдельно для каждой конфигурации;
   - В настройках добавлен параметр "Командная строка для запуска Террасофт из PVC";

2) Поиск по текстам скриптов:
   - Можно ограничить поиск определенной группой;

3) Главное окно:
   - В главном окне добавлена возможность отображения сервисов во вложенных группах;
   - Можно открыть сразу несколько сервисов - команда "Редактировать" применяется ко всем выделенным сервисам;
   - При создании окна можно в качестве родителя указывать wnd_BaseTreeArea (а также добавлена кнопка для выбора любого окна-родителя);
   - Для сервиса типа SelectQuery добавлена команда "Создать фильтры по полям в запросе";
   - При создании просмотра в гриде спрашивается количество создаваемых просмотров;

4) Поддержка работы с библиотеками сервисов:
  - набор сервисов и данных можно сохранить в виде файла-библиотеки, и затем загружать его в другие проекты при необходимости;

5) Мастер генерации сервисов:
   - Новые справочники/разделы/детали можно создавать с иерархической структурой грида;
   - Можно создать новый раздел на основании существующих датасета/окон редактирования и просмотра;
   - Можно подключить существующий GridArea как закладку в раздел и/или окно редактирования;
   - В мастере создания сервисов, в списке полей, к полю добавлен чекбокс "всегда выбирать в запросе";

6) Пакеты обновлений:
   - В пакет обновления включаются описания запросов на изменения;
   - При загрузке пакета можно предварительно сравнить утилитой Merge сервисы из пакета и сервисы в базе, и загрузить уже скорректированные версии;

Записи вебинаров о расширении Project Version Control доступны по этим ссылкам:
http://labitec.ru/files/webinar20100310PVC.rar
http://labitec.ru/files/webinar20091103PVC.rar

 

Нравится

Поделиться

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

Валерий, а видеообзор включает все новые возможности?

Все, кроме пункта 6 (пакеты обновлений).
Его я отдельно не демонстрировал, так как новая функциональность загрузчика пакетов обновлений совпадает с функциональностью загрузки библиотеки сервисов (п.4).
Если есть вопросы - с удовольствием отвечу :smile:
--------------------------------------------
Лабитек
Центр разработки приложений

Уже посмотрел. В принципе вопросов нет. Продукт действительно сильно ускоряет процесс разработки. Мне очень понравилось. Спасибо!

Thank You, Валерий,

I have already tried some new functions of PVC ver.1.24. Everything works good and helps to develope much faster.

Kind regards
Aurimas Lacitis

Спасибо за отзывы, будем развивать продукт дальше.
--------------------------------------------
Лабитек
Центр разработки приложений

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

Добрый день, уважаемые участники комьюнити!

Приглашаю всех на вебинар по нашему расширению Project Version Control для Террасофт:
http://terrasoft.ru/company/events/849/

На примере небольшого технического задания будет продемонстрирован полный цикл работы с расширением - от установки PVC и настройки конфигурации до создания пакетов обновления и их установки клиенту на рабочую базу.
Будут освещены функции, позволяющие упростить работу и уменьшить затраты времени на настройку.
Регистрируйтесь сами, приглашайте программистов и консультантов, технических и коммерческих руководителей :smile:

После вебинара все желающие смогут получить полнофункциональную демоверсию.

Краткая информация о расширении:
http://community.terrasoft.ua/catalog/4245

Готовьте вопросы и пожелания :smile:

Нравится

Поделиться

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

Спасибо всем за участие в вебинаре, присылайте вопросы/пожелания/запросы на демо-версию на адрес
andrusik@labitec.ru.

К сожалению, возникла проблема с видеозаписью вебинара, но мы подготовим видеоурок по расширению - он будет короче по времени (вебинар получился слегка затянут) и будет легче смотреться :)

После записи ссылки выложу в этой теме.

Выкладываю ссылки на видеозапись вебинара, она все-таки получилась :)

Видеозапись вебинара от 10.03.2010
"Управление проектом по настройке конфигурации с помощью модуля PVC (Project Version Control)"
http://labitec.ru/files/webinar20100310PVC.rar
114 Мб

Видеозапись вебинара от 03.11.2009 (вебинар проводился в формате презентации PowerPoint)
http://labitec.ru/files/webinar20091103PVC.rar
21 Мб

Всем интересовавшимся отправил демоверсию, если кто-то не получил, пожалуйста, повторите запрос.
--------------------------------------------
Лабитек
Центр разработки приложений

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

Первая часть здесь - http://community.terrasoft.ua/blogs/4354

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

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

Кроме того, генерируется два скрипта, на отключение триггеров и внешних ключей, и на их включение (миграция производится на СУБД Microsoft SQL Server).

Перед выполнением шага 3 отключаем триггеры и внешние ключи.


Шаг 3. Перенос данных о пользователях и группах.

Эти данные важно перенести в первую очередь, так как вся прочая информация ссылается на пользователей или контакты (например, записи о правах, поля CreatedByID, ModifiedByID и т.п.)

Фактически переносим данные всего четырех таблиц:

  • tbl_Account, tbl_Contact - только те записи, которые касаются пользователей системы, и только поля ID и Name (остальные поля будем переносить уже у клиента);
  • tbl_AdminUnit и tbl_UserInGroup - полностью.


Шаг 4. Перенос справочных данных.

Перенос справочных данных в сгенерированном скрипте выделен отдельно (на основании данных таблицы tbl_DictionarySettings).
Как правило, для справочных таблиц сначала генерируется запрос на удаление всех записей, а потом на вставку из рабочей базы, так как нам важны ИД справочных записей.

После выполнения шага 4 включаем триггеры и внешние ключи.

На данном этапе можно провести тестирование базы на работоспособность. У нас должна работать вся логика.


Шаг 5. Перенос основных данных.

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

Предварительно отключаем триггеры/внешние ключи, после выполнения скрипта включаем их.


Шаг 6. Корректировка данных пользователей.

Так как между 3.0.4 и 3.3.1 большая разница в плане реализации прав доступа к данным, после переноса данных с помощью отдельных скриптов на Transact-SQL необходимо:

  • создать роли для групп пользователей (используя данные из tbl_AdminUnit);
  • создать логины и пользователей в базе (используя данные из tbl_AdminUnit);
  • включить пользователей в роли (используя данные из tbl_UserInGroup);
  • перенести права на группы таблиц (записи из tbl_TableGroupRight);
  • перенести права по умолчанию (записи из tbl_TableDefaultRight);
  • перенести права на поля (используя данные из tbl_TableFieldRight). 

Осталось протестировать работоспособность новой версии, и клиент может приступать к работе.
 

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

Нравится

Поделиться

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

Совсем недавно мы завершили доработку модуля PVC в плане поддержки разных версий Террасофт и СУБД (теперь он работает с версиями 3.2-3.3.1 под все СУБД, и интерфейс модуля доступен на русском и английском языке), и решили продолжить его наполнение функциональными возможностями. Очень кстати один наших клиентов решил перейти на новую версию Террасофта, поэтому в разработку был взят мастер миграции с одной версии на другую.

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

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

Исходные данные:
1) дамп клиента, в котором присутствуют справочные данные и информация о пользователях, но нет основных данных (контрагентов и их деталей, контактов и их деталей и т.д);
2) "чистый" дамп той же версии, что и дамп клиента;
3) новый дамп из нужной нам версии Террасофт.

Вначале работы указываем некоторые настройки для мастера миграции:
- строка ADO-соединения к новой базе
- названия баз данных (рабочей, "чистой" и новой)
- утилиту Merge
Настройки

Далее выполняем обновление.

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

Новые сервисы

При этом автоматически:
- корректируются USI сервисов;
- при необходимости "укорачиваются" коды индексов и FK таблиц;
- корректируются сервисы, наследованные от wnd_BaseGridArea и wnd_BaseWorkspace
- создаются таблицы в базе данных

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

Шаг 2. Перенос измененных сервисов

Это самая трудоемкая и ответственная часть обновления, требует терпения и внимательности :)

Здесь приходится активно пользоваться Merge-утилитой, чтобы, с одной стороны, сохранить функциональность новой версии Террасофт, и с другой стороны - перенести настройки из старой.

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

Измененные сервисы

Кроме того, использование мастера позволяет не тратить время на такие вещи, как заголовок и размер окна, заголовок датасета и характеристики полей в датасете (обязательность, заголовок и т.д.).
Для этого в мастере есть сервисная кнопки для автоматического "приведения" этих характеристик к используемым в рабочей базе:

Допфункции

Также мастер позволяет открыть в Администраторе все сервисы SelectQuery, в которых есть колонки типа "Текст SQL". Это связано с тем, что в последних версиях Террасофта для доступа к данным используются представления (vw_), и после переноса, возможно, в таких колонках надо заменить таблицы на представления.

Итак, резюмируем общий алгоритм:

  • переносим новые сервисы;
  • переносим измененные сервисы, пользуясь утилитой Merge (не забываем, что при переносе сервисов-скриптов надо "сливать" не только текст скрипта, но и сам сервис, для переноса данных о подключенных скриптах и перечислениях);
  • обновляем характеристики окон и датасетов;
  • проверяем поля с текстом SQL в запросах;
  • опционально вручную выполняем две следующие операции:
    • если в нашей конфигурации есть новые разделы, то открываем в Администраторе таблицы групп новых разделов, ставим галку "Администрируется по записям", и сохраняем (чтобы создалось соответствующее vw_ - представление).
      Так как новых разделов обычно мало, эту операцию мы не автоматизировали.
    • если используется чтение системных параметров, то либо надо заменить вызов GetSystemParameterValue в скриптах на GetSystemParameterValueEx, либо сделать функцию-прокси (GetSystemParameterValue, вызывающую GetSystemParameterValueEx)
  • проводим альфа-тестирование - все разделы в клиенте должны открываться без ошибок, должны открываться карточки редактирования разделов (работу с данными будем проверять после переноса справочной информации).

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

От себя хочется добавить две вещи:

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

И вообще, чем меньше изменений в базовых сервисах, тем проще перевод, но надо удержаться от фанатизма...

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

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

Нравится

Поделиться

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

В продолжение темы "Новое расширение для партнеров Террасофт" (http://community.terrasoft.ua/forum/topic/4269) Приглашаю всех на вебинар по данному расширению, который будет проводиться 3 ноября 2009 года с 16 до 17 часов по Москве. Зарегистрироваться на вебинар можно здесь: https://www2.gotomeeting.com/register/525830730 Буду рад услышать вопросы и предложения :smile:

Нравится

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

После регистрации пришло письмо, заинтересовало время проведения вебинара.:smile:
Tuesday, November 3, 2009 4:00 PM - 5:00 AM

А я не обратил внимания :lol:

Думаю закончим раньше пяти утра :)

"Валерий Андрусик" написал:Думаю закончим раньше пяти утра :)

вебинар + банкет для участников, all-inclusive:smile:

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

online банкет?! Интересно.

Будет ли размещен вебинар как видео материал на портале?

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

Спасибо за участие, я, кстати, забыл предложить продемонстрировать работу модуля "в реале".
Если есть такое желание - пишите, организуем через TeamViewer, ShareView или что-то другое :smile:

Если есть вопросы, или я непонятно что-то рассказал - спрашивайте, с удовольствие отвечу :smile:

"Валерий Андрусик" написал:когда я получу ссылку на видеоматериал - вышлю

+1, и нам тоже, так как посетить живьем не сумел, был в разъездах((

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