Добрый день.

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

function CreateSearchCityFilters(SelectQuery, SearchValue) {

    var FiltersGroupCode = 'SearchFilters';

    var Parameters = SelectQuery.Parameters;

    var Table = SelectQuery.Items(0).FromTable;

    var Filters = SelectQuery.Items(0).Filters;

    var FiltersGroup = Filters.ItemsByCode(FiltersGroupCode);

    if (FiltersGroup != null) {

        Filters.Remove(FiltersGroup);

    }

    FiltersGroup = Filters.CreateFilters();

    FiltersGroup.Code = FiltersGroupCode;

    FiltersGroup.LogicalOperator = lotAnd;

    FiltersGroup.IsNot = false;

    //Parameters.ItemsByName('SearchString').Value = Trim(SearchValue);

    var SearchValues = SearchValue.split(' ');

    var IsAddLikeFilter = false;

    for (var i = 0; i < SearchValues.length; i++) {

        var SearchValue = Trim(SearchValues[i]);

        if (IsEmptyValue(SearchValue)) { continue; }

        if (SearchValue.length < 3) { continue; }        

        var LikeParameterName = 'SearchLikeParameter'+i.toString();

        var LikeParameter = Parameters.ItemsByName(LikeParameterName);

        if (LikeParameter == null) {

            LikeParameter = Parameters.CreateItem();

            LikeParameter.Name = LikeParameterName;

            LikeParameter.DataType = pdtUnicodeString;

            Parameters.Add(LikeParameter);

        }    

        LikeParameter.Value = SearchValue;        

        var LikeFilterCode = 'SearchLikeFilter'+i.toString();

        var LikeFilter = Filters.ItemsByCode(LikeFilterCode);

        if (LikeFilter != null) {

            Filters.Remove(LikeFilter);     

        }

        LikeFilter = Filters.CreateLikeFilter();

        LikeFilter.Code = LikeFilterCode;

        var LikeTestExpression = LikeFilter.CreateFieldFilterExpression();

        var LikeValueExpression = LikeFilter.CreateParamFilterExpression();    

        LikeValueExpression.Parameter = LikeParameter;

        LikeTestExpression.Field = Table.Fields.ItemsByName('Name');

        LikeFilter.TestExpression = LikeTestExpression;

        LikeFilter.ValueExpression = LikeValueExpression;    

        LikeFilter.LikeType = ltContain;

        LikeFilter.IsEnabled = true;  

        FiltersGroup.Add(LikeFilter);

        IsAddLikeFilter = true; 

    }

    Filters.Add(FiltersGroup);

    if (IsAddLikeFilter) {

        return FiltersGroupCode;

    } else { return ''; }    

}

Нравится

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

Алексей, почему сразу неверно? В коде написали CreateLikeFilter, вот он и применяется. А у фильтра параметр типа равен ltContain, означающий поиск по вхождению. Эта константа, как и другие, определена в скрипте scr_SysEnums:

// Constants for enum _LikeTypeEnum
ltEqual = 0x00000000;
ltContain = 0x00000001;
ltStartsWith = 0x00000002;
ltEndsWith = 0x00000003;

Попробуйте для начала заменить ltContain на ltEqual.

 

Алексей, почему сразу неверно? В коде написали CreateLikeFilter, вот он и применяется. А у фильтра параметр типа равен ltContain, означающий поиск по вхождению. Эта константа, как и другие, определена в скрипте scr_SysEnums:

// Constants for enum _LikeTypeEnum
ltEqual = 0x00000000;
ltContain = 0x00000001;
ltStartsWith = 0x00000002;
ltEndsWith = 0x00000003;

Попробуйте для начала заменить ltContain на ltEqual.

 

Спасибо, помогли.

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

Вопрос:

При входе в Terrasoft 3.X под новыми пользователями выдается ошибка открытия конфигурации «Could not convert variant of type (NULL) into type (olestr)»

В чём может быть проблема?

Ответ:

Такое сообщение «Could not convert variant of type (Null) into type (OleStr)» говорит о том, что у пользователя нет доступа на свой контакт и/или контрагент.



Для решения нужно: 



1)       Авторизуйтесь в системе под администратором, перейдите в Администрирование-Пользователи

2)       Кликните правой кнопкой на пользователе, под которым возникает ошибка входа, Перейти к -> Контакт и Перейти к -> Контрагент

3)       На детали «Доступ» к контакту добавьте пользователя, под которым происходит сбой или группу, в которую он входит.

4)       На детали «Доступ» к контрагенту добавьте пользователя, под которым происходит сбой или группу, в которую он входит.

5)       Проверьте корректность авторизации пользователя.

Нравится

Поделиться

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

Добрый день.

Есть кнопка объкет ILookupControl при нажатии на который исполняется следующая функция. Функция открывает окно но выборка в ней проходит не по указанному ListID. На выходе мы получаем хаос.

function edtEmailTypeID1OnPrepareSelectWindow(LookupControl, SelectWindow) {

    SetAttribute(SelectWindow, 'IsReadOnly', true);

    SetAttribute(SelectWindow, 'CanExport', false);

    SetAttribute(SelectWindow, 'CanPrint', false);

    SetAttribute(SelectWindow, 'IsMultiLineData', true);

    var Dataset = LookupControl.LookupDatasetLink.Dataset;

    EnableDatasetFilters(Dataset, true, 'IsVisibleIsTrue'); 

    var CampaignID = GetAttribute(Self, 'CampaignID');

    ApplyDatasetFilter(Dataset, 'CampaignID', CampaignID, true);

    var ListID = '{CC652229-77A5-4179-9D02-1478B31F1A1D}';

    ApplyDatasetFilter(Dataset, 'ListID', ListID, true);

}

Нравится

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

Алексей, вся логика фильтрации задана в сервисе sq для этого справочника. Проверьте, корректно ли заданы там условия фильтров IsVisibleIsTrue и ListID.

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

В sq_

SELECT

    [tbl_KsCallInvitroDictEnum].[ID] AS [ID],

    [tbl_KsCallInvitroDictEnum].[Name] AS [Name],

    [tbl_KsCallInvitroDictEnum].[Position] AS [Position]

FROM

    [dbo].[tbl_KsCallInvitroDictEnum] AS [tbl_KsCallInvitroDictEnum]

LEFT OUTER JOIN

    [dbo].[tbl_KsCallInvitroDictList] AS [tbl_KsCallInvitroDictList] ON [tbl_KsCallInvitroDictList].[ID] = [tbl_KsCallInvitroDictEnum].[ListID]

WHERE([tbl_KsCallInvitroDictList].[CampaignID] = :CampaignID AND

    [tbl_KsCallInvitroDictEnum].[ListID] = :ListID)

ORDER BY

    3 ASC,

    2 ASC

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

Добрый день. Вы были правы. Внес в sq значение и все заработало. Спасибо

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

Добрый день!

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

 

Нравится

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

Доброго времени суток, коллеги.

Возможно ли из TerrasoftCRM 3.x дергать внешний Rest Api?

Нравится

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

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

Благодарю.

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

Террасофт    Версия: 3.4.1



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

Нравится

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

Привет.

TS 3.4.0.130

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

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

В чем может быть проблема? Бинарники? 

Нравится

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

Вообще, да, обновить будет не лишним, хотя бы до 3.4.0.191. Ведь логика итогов в реестре сделана в ядре.

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

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

Добрый день,

 

При попытке зайти в Террасофт установленный на сервере (Windows Server 2008 R2 Enterprise), возникает ошибка:

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

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

Также было замечено, что при добавлении новой конфигурации при нажатии на кнопку выбора имени драйверов Oracle (Home) возникает другая ошибка:

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

Насколько я понял проблема возникает из-за того, что на сервере были установлены несколько версий Oracle и в данный момент версия 11.2.0 отсутствует на сервере. Вместо нее установлена версия 12.2.

Попытка очистить следы Oracle 11.2.0 и в дальнейшем даже переустановка Oracle привела лишь к тому что в данный момент выходит пустой список в котором невозможно выбрать версию Oracle:

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

 

Прошу помочь в решении данной проблемы.

 

Благодарю.

 

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

Нравится

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

Обратите внимание на рекомендацию по поводу «Ошибка открытия конфигурации: Cannot find OCI DLL»:

Для приложения Terrasoft под Oracle обязательно необходимо, чтобы на компьютерах всех пользователей, использующих конкурентные лицензии, был установлен клиент Oracle одной и той же версии. Имя сервера на компьютерах всех пользователей должно совпадать с именем, указанным в поле [Сервер] окна редактирования строки соединения компьютера, на котором заказывают и загружают лицензии, и данный сервер должен быть зарегистрирован. Имя сервера прописывается в файле tnsnames.ora, расположенном в инсталляционной директории клиента Oracle (например, d:/oracle/ora92/network/admin/ tnsnames.ora).

Также версия ядра 3.3.2.120 далеко не самая новая, есть смысл попробовать на последних файлах 3.3.2.313, поскольку в версии 175 и выше вносились изменения в механизм работы с сервером сессий для Oracle.

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

Для получения бекапа существующей базы нужно воспользоваться средствами СУБД, а также не забыть автоматически перенести или вручную завести пользователей с такими же именами, как в базе, на уровне сервера БД. Именно для Oracle инструкции не встречал. Например, для MS SQL это делается так. Если забыть перенести, то пустит только администратора SYS.

Зверев Александр пишет:

Для приложения Terrasoft под Oracle обязательно необходимо, чтобы на компьютерах всех пользователей, использующих конкурентные лицензии, был установлен клиент Oracle одной и той же версии. Имя сервера на компьютерах всех пользователей должно совпадать с именем, указанным в поле [Сервер] окна редактирования строки соединения компьютера, на котором заказывают и загружают лицензии, и данный сервер должен быть зарегистрирован. Имя сервера прописывается в файле tnsnames.ora, расположенном в инсталляционной директории клиента Oracle (например, d:/oracle/ora92/network/admin/ tnsnames.ora).

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

По поводу бэкапа, посмотрю, большое спасибо за помощь.

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

Приветствую! Установил office 2016. При настройке клиента Terrasoft 3.x запустил сначала TSMSOfficeLibraryConfigurator, выбрал Excel, получил подтверждение "Регистрация настроек библиотек завершена".При запуске Excel в настройках раздела "Надстройки" Terrasoft office Add-In не содержит прописанного пути на не обходимый файл. Проблема наблюдаеться как на Windows 7 так и на Windows10

Нравится

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

Возможно, у Вас установлена несовместимая 64-битная версия Office. Поддерживается только x86. Также обратите внимание на настройку списка поддерживаемых версий в конфигурации тут.

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

Подсткажите какой порт использует Террасофт версии 3.3.2 для подключения?

Нравится

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

Вадим Рожик,

По умолчанию SQL сервер использует порт - 1433.

Ещё посмотрите эту статью.

1. Уточните, какая именно проблема у Вас возникла с подключением?

2. Какую СУБД Вы используете: MS SQL, Firebird или Oracle?

Алла Савельева,

1. Сервер на облаке находится соответственно при подключении на внешний айпи адрес нужно сделать проброс по порту чтобы подключаться

2. MSSQL

Вадим Рожик,

По умолчанию SQL сервер использует порт - 1433.

Ещё посмотрите эту статью.

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