Добрый день!

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

 

Видел вариант с переход по вкладкам

this.setActiveTab("имя_вкладки");

Нравится

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

Вешаете на кнопку обработчик. А в него что-то вроде этого: 

var tag = "SectionModuleV2/ActivitySectionV2/";
this.sandbox.publish("PushHistoryState", {hash: tag});

ActivitySectionV2 - реестр раздела Активности

Вешаете на кнопку обработчик. А в него что-то вроде этого: 

var tag = "SectionModuleV2/ActivitySectionV2/";
this.sandbox.publish("PushHistoryState", {hash: tag});

ActivitySectionV2 - реестр раздела Активности

Дмитрий А.,

Спасибо, попробую

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

Добрый день!

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

Нравится

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

Меня процесс прослушивания событий визы.
И там уже добавить If колонки не заполнены и т.д.

Меня процесс прослушивания событий визы.
И там уже добавить If колонки не заполнены и т.д.

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

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

Не могу реализовать переход фокуса по полям в форме стрелками вверх, вниз, вправо,влево.

код обработчика события onKeyDown примерно такой:

function edtEditionsOnKeyDown(Control, Key, Shift) {
switch (Key.Value) {
case VK_UP:

Self.FocusedControl = edtText;
break;
case VK_DOWN:

Self.FocusedControl = edtText1;
break;
}
}

Внутрь события проваливается , но фокус не перемещается ни при каком раскладе.

Если любыми другими клавишами (ентер, бекспейс,ф1, ф2) то фокус нормально перемещается
как решить?

Нравится

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

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

function edtTest2OnKeyUp(Control, Key, Shift) {
if (Key.Value == 40)
{
MessageBox(Key.Value);
 
Self.FocusedControl =  edtTest1;
}
else
{
MessageBox(Key.Value);
Self.FocusedControl =  NumericEdit;
}
Показать все комментарии

Здравствуйте!
Подскажите, пожалуйста, порядок и стоимость перехода на более "старшую" конфигурацию системы. Насколько я знаю, необходимо оплатить разницу в стоимости лицензий и полную стоимость техподдержки. Еще слышала про 350 евро за перенос данных. Хотелось бы уточнить именно этот момент. Что входит в эту стоимость и какие работы подразумеваются?

Нравится

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

Добрый день!

Для выяснения финансовых вопросов и заказа услуг, прошу обратиться к Вашему ответственному менеджеру.

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

В данном блоге приведу список часто возникающих проблем и способов их решения.

1. Версия приложения и базы данных несовместимы.
---------------------------
Error
---------------------------
Невозможно установить соединение с конфигурацией 'NameDB'.
Версия приложения и базы данных несовместимы
---------------------------
OK
---------------------------

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

1. Найти запускаемый файл TSAdmin.exe, правой кнопкой мышки вызвать контекстное меню и выбрать «Свойства», перейти на закладку «Версия» и посмотреть на данные в строке «Версия о файле».

2. Запустить утилиту управления БД (Enterprise Manager, SQL Server Management Studio) выбрать ту конфигурацию Террасофт, на которую выполняется обновление и выполнить следующий запрос:

SELECT DatabaseMajorVersion, DatabaseMinorVersion, DatabaseReleaseVersion FROM tbl_databaseinfo

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

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

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

Например:
Вы выполняете обновление с версии 3.1.1.56 на версию 3.2.0.55.
В данном случае конфигурация, которая обновляется — 3.1.1.56, а конфигурации на которую выполняется обновление — 3.2.0.55.

Нравится

Поделиться

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

2. При применения пакета разницы возникает лог:
[color=red]Лицензия для модуля 'Custom' не найдена,
Лицензия для модуля 'Common' не найдена.
... ... ...[/color]

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

В полях [Пользователь] и [Пароль] (окна применения пакета) необходимо ввести sa (или имя пользователя являющимся стандартным системным администратором под Вашу СУБД) и его пароль.

Лицензию на этого пользователя заказывать не нужно.
После выполнение обновления Вы сможете подключиться к конфигурации под пользователем sa.

P.S. Проблема наблюдается при обновления конфигурации, начиная с версии 3.1.1. на MS SQL Server 2005 Express.

3. Если при пересохранении таблиц возникают следующие ошибки:

[color=red](E) Invalid object name 'dbo.tbl_TableName'. «Call Stack»
(E) Could not create constraint. See previous errors. Foreign key 'ForeignKeyName' references invalid table 'dbo.tbl_TableName'. «Call Stack»[/color]

[color=red](E) Error to save service: tbl_TableName'
Original message: При сохранении объекта 'Solutions\Details\Groups\tbl_TableName' в базу данных, возникла ошибка: Invalid object name 'dbo.tbl_TableName'[/color]

1. Удалить все внешние ключи;
Для этого в конфигурации необходимо создать следующий скрипт (и подключить scr_db):

// scr_DeleteAllForeignKeys
 
function Main() {
	Log.Write(1, 'Start.');
	var Service;
	var SelectQuery = Services.GetNewItemByUSI('sq_Service');
	ApplySelectQueryFilter(SelectQuery, 'ServiceTypeCode', 'Table', true);
	var Dataset = SelectQuery.Open();
	var i = 0;
	var Code;
	Dataset.GotoFirst();
	while (!Dataset.IsEOF) { 
		Code = Dataset.ValAsStr('Code'); 
		i++;               		
		try {
			Service = Services.GetSingleItemByUSI(Code);
			Service.Relations.Clear();
			Services.SaveItem(Service, 1);
			Log.Write(1, i + '. Service ' + Code + ' saved.');
		} catch(e) {
			Log.Write(2, i + '. Error to save service: ' + Code +
				' Original message: ' + e.message);
		} 
		System.ProcessMessages();
		Dataset.GotoNext();
	}
	Dataset.Close();
	Log.Write(1, 'Finish.');
}

2. Пересохранить таблицы;
3. Загрузить сервисы таблиц из коробочной конфигурации;
4. Пересохранить таблицы.

Таблицы не сохранившиеся автоматически необходимо сохранять вручную.

4. [color=red]The statement has been terminated. Cannot insert duplicate key row in object 'dbo.tbl_Service' with unique index 'UIServiceCode'[/color]
[color=red]Выполнение данной инструкции было прервано. Невозможно вставить повторяющуюся ключевую строку в объект "dbo.tbl_Service" с уникальным индексом "UIServiceCode"[/color]

Данная проблема может появиться при выполнении обновления с 3.3.0 на 3.3.1.

Дело в том, что при применении пакета разницы проверяется на уникальность как ID сервиса, так и его code.

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

Для решения этой проблемы необходимо выполнить скрипт "Generation.5.Repair IDs.sql" (во вложении прилагаю архив с этим скриптом).

В скрипте «Generation.5.Repair IDs.sql» необходимо внести следующие изменения:
-- [_33140_SD_Rus] заменить на название коробочной (пустой) БД версии 3.3.1.
-- [_33024_SD_Rus] заменить на название Вашей БД версии 3.3.0.

Результатом выполнения скрипта будет блок sql, который необходимо заменить в основном sql-файле (файл называется MSSQL.sql и находится в папке SQL).

Необходимо открыть его на изменение и в блоке: "UpdateServiceID" заменить имеющийся блок на сформированный.

Дополнительно хочу заметить, что если после выполнения «применителя» не будут открываться и изменяться сервисы: sq_* или wnd_*, то их необходимо заменить на сервисы из коробочной версии.

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

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

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

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

'The statement has been terminated. Cannot insert duplicate key row in object 'dbo.tbl_Service' with unique index 'UIServiceCode'

"Присяжнюк Владимир" написал:Generation.5.Repair IDs.sql

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

create table #tmpCodes (
        Code nvarchar(250))
 
на
 
create table #tmpCodes (
        Code nvarchar(250) collate Cyrillic_General_CI_AS)

где Cyrillic_General_CI_AS - кодировка используемая в базе продуктов Terrasoft
так как временная таблица иначе создастся в кодировке сравнения по умолчанию заданной
на сервере.

Большое спасибо за решение третьей ошибки! Помогло!
Только сам по себе скрипт не отработал, добавила одну строчку:

Service.Relations.Clear();

в существующий скрипт пересохранения таблиц - scr_ResaveTables.
Таким образом пользовалась данным скриптом в двух вариантах:
- удаление всех внешних ключей;
- пересохранение таблиц.

По поводу ошибки №3:

т.е. решение в том, что нужно удалить Relations у всех таблиц? Так если они там заведены значит они там нужны, не так ли? Да и зачем трогать ВСЕ таблицы, когда нужно исправить только одну?

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

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

О нумерации версий и условиях обновления программного продукта Terrasoft.
Формат номера версии Terrasoft представлен в виде:

Например, в версии 3.2.0.14: номер продукта – 3, релиз – 2, конфигурация – 0, сборка – 14.

Бесплатное обновление Terrasoft возможно только в пределах сборки и/или конфигурации. То есть, если Вы используете версию 3.3.0.61 то обновление до 3.3.1.57 для Вас будет бесплатным, если же Вы используете версию 3.2.1.33, то обновление до 3.3.0.61 должно происходить в рамках Вашего пакета поддержки и быть оплачено / согласовано с Вашим менеджером.

Для выполнения обновления конфигурации необходимы:

Базовые навыки по работе с СУБД:
Понимание архитектуры системы управления базами данных, умение создать резервную копию, восстановить её, создание и выполнение простых запросов и выражений и т.д.
Большим плюсом будет опыт работы с выбранной Вами СУБД.

Уверенные навыки по работе с Террасофт:
Понимание архитектуры Террасофт, уверенная работа с Террасофт Администратор, хорошие навыки работы с сервисами системы, умение "читать" код JavaScipt и т.д.
Большим плюсом будет опыт программирование на языке JavaScipt.

Данные навыки можно приобрести, посетив курс наш трехдневный курс: «Создание конфигурации Terrasoft CRM».
Или же путем опытной эксплуатацией нашего продукта.

Для понимания общей схемы выполнения обновления рекомендуется изучить Руководство по выполнению обновления.
На данный момент это руководство можно загрузить, перейдя по ссылке:
http://www.terrasoft.com.ua/downloads/Update/TSCRM_UpG.rar
Пароль на архив: T$CrM_Up!G.

Что же до инструментария:
При выполнении обновления используются утилиты применения пакетов разницы (о них подробно описано в руководстве), а так же утилиты для выгрузки\загрузки сервисов: Extract Services, Merge Services. Этот инструментарий мы предоставляем и поддерживаем!
Так же мы используем утилиту Araxis Merge, навыки и понимание работы этой утилиты значительно облегчает выполнение обновления, но не являются обязательными.

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

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

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

Нравится

Поделиться

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

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

А в общем: Спасибо!

--
www.it-sfera.com.ua

"Виталий Ковалишин aka samael" написал:Спасибо!

Спасибо, за спасибо! :wink:
На самом деле я не ожидал, что кто-то так оперативно ответит.
Записка то еще не закончена, случайно "Сохранить" нажал.

Народ не дремлет! :wink:
Поосторожней с кнопкой "Сохранить"!

--
www.it-sfera.com.ua

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

"Underscore a.k.a. _" написал:Еще при написании конфигурации желательно учитывать возможность обновления. Стараться делать как можно меньше изменений. Например лучше добавить поле, чем переименовывать существующее. В идеале изменения в сервисах должны где-то отмечаться. Новые функции в скриптах как-то отделять. Изменения в скриптах комментировать.

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

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

Часто приходится переходить с одной конфигурации Terrasoft на другую.

Опишу переход Terrasoft Sales 3.1.1.6 на Terrasoft X15 3.1.1.6
Обе базы под Firebird.

Можно просто загрузить сервисы x15 на Sales, но при такой процедуре возможны всякого рода неприятности, например у меня не получилось загрузить все wa_**.

Перенос данных требовал всего лишь импорта контактов и контрагентов. Есть в утилите IB Expert полезная функция Table Data Comparer, в которой просто нужно указать таблицу источник и таблицу приемник, затем выполнить сгенерированный скрипт.

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

Решение:
1. В базе источнике создаем копию таблицы tbl_Account, скажем tbl_Account2 и с помошью того же Table Data Comparer копируем данные из tbl_Account в tbl_Account2

2. В tbl_Account2 устанавливаем все значения PrimaryContactID в null

3. Копируем в tbl_Account базы приемника данные из tbl_Account2 базы источника

4. Копируем в tbl_Contact базы приемника данные из tbl_Contact базы источника

5. Копируем в tbl_Account базы приемника данные из tbl_Account базы источника

6. Копируем в tbl_Contact базы приемника данные из tbl_Contact базы источника

Нравится

Поделиться

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

Павел!

Могу посоветовал решение попроще.

На момент переноса данных между таблицами tbl_Account и tbl_Contact удаляются внешние ключи, а после окончания переноса - ключи снова создаются.

А вот если сделать так:
- сохранить сервисы tbl_Contact и tbl_Account;
- перенести данные;
- загрузить сохраненные сервисы;
Какова вероятность, что сервисы встанут корректно и без проблем?
Если такое попробовать провернуть на большем наборе сущностей чем 2 таблици?

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

А как они могут нарушить целостность, если они ее не нарушают в базе-источнике? Ведь мы просто сгенерируем два скрипта вида "insert into tbl_Account ..." и "insert into tbl_Contact" со всеми значениями полей.
Вопрос к тому не могут на корректный перенос повлиять может какие-нибудь триггеры?

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

Ах да, точно...
Но создание связей вручную, так же чревато этой проблемой...

Конечно же

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