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

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

Нравится

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

Если вам нужно, чтобы на детали постоянно был включен какой-то дополнительный фильтр и он не снимался при переходе от одной записи к другой записи в основном гриде раздела, то вам необходимо добавить передачу параметра DoNotDisableAllFilters=true в общюю функцию RefreshCommonDetail в нужном вам разделе. Например, для детали "Проекты" в разделе "Контрагенты":

RefreshCommonDetail(BaseWorkspace, wndProjectDetail, 	'ClientID', 'ClientID', null, null, null, null, null, null, true);

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

Спасибо, Андрей!

Зря я не написал для какой версии надо фильтровать данные в детали...
В моей версии (3.2.017) объявление для RefreshCommonDetail() (scr_WorkspaceUtils) следующее:

function RefreshCommonDetail(BaseWorkspace, WindowContainer, ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI, AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID) {...}

Т.е. очень нужный в моем случае 11 аргумент отсутствует))! Подскажите, пожалуйста, как можно отфильтровать данные на вкладке с поправкой на версию?

По сути основное отличие функции RefreshCommonDetail в 3.2.0.17 и 3.3.2 это добавление параметра DoNotDisableAllFilters.

В функции RefreshCommonDetail, вызванивается RefreshDetailDataByParentID с scr_DB, в которую также добавлен параметр DoNotDisableAllFilters, сама функция RefreshDetailDataByParentID не менялась с версии 3.2.0.17 и 3.3.2, поэтому вам следует сравнить RefreshCommonDetail и дописать необходимую логику.

По сути следует добавить вместо

	} else {
		RefreshDetailDataByParentID(ParentID, Dataset, ChildFilterName);
	}	

строки

	} else {
		if (IsUndefined(DoNotDisableAllFilters)) {
			DoNotDisableAllFilters = true;
		}
		RefreshDetailDataByParentID(ParentID, Dataset, ChildFilterName,
			DoNotDisableAllFilters);
	}	

и добавить сам параметр в объявление функции:
Заменить

function RefreshCommonDetail(BaseWorkspace, WindowContainer, 
		ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI,
		AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID) {

на

function RefreshCommonDetail(BaseWorkspace, WindowContainer, 
		ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI,
		AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID,
		DoNotDisableAllFilters) {

На всякий случай выслал вам на почту скрипты scr_WorkspaceUtils и scr_DB

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

Здравствуйте, уважаемые коллеги!

Столкнулся с проблемой: у нового пользователя на новой машине при входе в 3.2.1.58 возникает следующая ошибка:

'Main.WorkspacesInfo' - есть null или не является объектом

При этом видны только кнопки разделов, но окно Workspace пустое. При нажатии на любую из кнопок разделов ошибка повторяется.

Пробовал следующие вещи:

1. Зайти под этим пользователем с соседней машины (с предварительно очищенным кэшем). Заходит нормально, проблема только на одном компьютере.

2. Перерегистрировать сервисы (пользователь - локальный админ). Не помогло, ошибка осталась.

3. Установить ScriptControl 5.6 для XP. Установил, но ошибка осталась.

При этом на этой же машине без проблем запускается и работает 3.3.2, никаких проблем. Проблема именно у 3.2.1 - и только на этой машине.

Что бы там ещё попробовать сделать?

Прилагаю скриншот:

Нравится

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

Здравствуйте Анатолий,

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

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

Для устранения проблемы необходимо, чтобы администратор системы Terrasoft открыл карточку контакта, прикрепленного к Вашей учетной записи:

scr

Часовой пояс должен соответствовать тому, который установлен на Вашем компьютере.

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

Нет, эти варианты тоже ничего не дали.

"Яворский Алексей" написал:

1)Возможно, у данного пользователя не розданы права на изменение таблицы [Контрагенты].

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

"Яворский Алексей" написал:

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

Невозможно, так как версия билда 3.2.1. Региональные настройки появились в 3.3.1.

Проблем до сих пор не решена.

Что можно сказать по CallStack? В чём там предположительно проблема?
Прилагаю вызов стека ещё раз (сервер калечит полноразмерную картинку)

Анатолий, выслал вам на почту последние бинарные файлы для версии 3.2.1
Также советую переустановить компоненты Terrasoft, которые предложены во время его установки.

"Яворский Алексей" написал:

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

Рад что был полезен. Если у Вас возникнут вопросы обращайтесь.

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

При открытии карточки проекта А выводятся данные предыдущего проекта Б, при том что заголовок пишется проекта А, а данные проекта Б.
После этого случая при открытии какого либо проекта выводятся данные прроекта Б. Помогает только выход из Террасофта. Может кто знает как с этим бороться?

Нравится

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

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

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

Вероятнее всего, проблема в запросе sq_Project. Производилось ли редактирование запроса незадолго до того, как проблема впервые появилась?

Есть ли у Вас возможность предоставить скриншоты?

Если редактировать карточку то данные меняются и сохраняются в тот проект чей заголовок.
Где находится sq_Project у нас такого запроса нет.

Давайте попробуем посмотреть, что у Вас в конфигурации. Пожалуйста, выгрузите сервисы раздела проект:
ds_Project
ds_ProjectScript
sq_Project
tbl_Project
wnd_ProjectEdit
wnd_ProjectEditScript
wnd_ProjectGridArea
wnd_ProjectGridAreaScript
wnd_ProjectWorkspace
scr_ProjectWorkspace

Здравствуйте, Сергей Юрьевич!

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

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

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

Серьезной проблемой является организация данных. Не рекомендуется помещать такое количество полей в пределах одной карточки/окна, поскольку пользователь может держать в поле зрения не более 7-ми объектов одновременно.

В данном случае следует организовать бизнес-процесс с последовательным автоматизированным заполнением информации.

Также желательно устранить присвоение идентификаторов записей напрямую в коде. В сулчае, если это ID пользователей, рекомендую создать отдельное перечисление enm_, где все эти значения будут храниться в виде констант.

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

Причиной может быть отсутствие закрытия датасета dlData.Dataset.Close(). Обратите внимание, что при отключенных событиях датасета закрытие не происходит. Убедитесь, что перед закрытием датасета карточки Dataset.AreEventsEnabled == true;

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

Стоит вопрос выбора веб-сервера для TSCRM.

  • Какие плюсы/минусы у Апача и IIS?
  • Какой лучше (стабильнее, быстрее и пр)?

Нравится

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

а какая у вас БД используется?

БД MS SQL.

Appache - шустрее, точно. Но IIS более удобен при работе в AD.

Здравствуйте.
Администрирование Apache дороже, чем IIS. Apache сложнее администрировать, но администратору IIS требуется чаще устанавливать антивирусные обновления. Однако установка обновлений для IIS не такая дорогая и сложная работа как написание конфигурационных файлов для Apache. Оба продукта не являются результатом разработки группы компаний Террасофт. Сравнительный анализ этих web-серверов можно с лёгкостью отыскать в Internet.
Terrasoft Support Team.

Александр, в каких случаях необходимо писать конфигурационные файлы? Есть конкретные кейсы? Чтобы понять насколько часто это потребуется нам.

Здравствуйте.
Очень вряд ли это Вам потребуется. Для работы Террасофт через веб-сервисы с использованием Apache достаточно отредактировать один конфигурационный файл (httpd.conf). Подробное описание настроек содержится в руководстве администратора.
Terrasoft Support Team.

Тогда выбор определенн: Апач.

Спасибо!

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

Здравствуйте, возникла следующая проблема:
У нас установлена старая версия Террасофта 2.8.5.832 RUS для MS SQL
Из почты пропали все письма за 2011 год.
Восстановление из резервной копии не дает никакого эффекта, правда, резервная копия базы создается каждый день путем перезаписи поверх существующего архива.
Нашли архив трехмесячной давности, но восстановление базы из него опять таки ни к чему не привело, письма есть только годичной давности.
Важный момент, на машинах с ХР Террасофт сразу после запуска выдает ошибку:

date/time : 2011-08-08 12:26
computer name : SONAR-1
user name : Work
operating system : Windows XP Service Pack 3 build 2600
system language : Russian
system up time : 3 hours 8 minutes
program up time : 18 seconds
physical memory : 2048/2048 MB (free/total)
free disk space : (C:) 24,33 GB
process id : $b68
executable : TerrasoftCRM.exe
exec. date/time : 2005-04-01 13:18
version : Версия 2.8.5.832 RUS для MS SQL
madExcept version : 2.7
exception class : EInvalidOp
exception message : Invalid floating point operation.

(полный вариант см. прикрепленный файл)

На машинах с Виндовс 7 ошибку не выдает.
Что можно сделать?

Нравится

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

Здравствуйте.
Что касается того, что, как Вы пишете, "из почты пропали все письма за 2011 год", то письма хранятся в базе данных в виде записей и сами по себе они исчезнуть не могли. Возможно, что у Вас настроены какие-то фильтры, которые не отображают всю корреспонденцию. Возможно отсутствуют права доступа или, как вариант, кто-то удалил почту. Проверьте всё, что описано выше. Если не поможет - обратитесь в службу технической поддержки для организации удалённого доступа.
Terrasoft Support Team.

Проверил, поставил везде отображать Всё... Писем не вижу, причем не вижу их (за 2011) ни у одного из трех пользователей. Ни одного письма. Ни в одной из папок, даже в корзине нет.
Кроме того, смущает, что восстановление базы трехмесячной давности (из архива за май 2011), никакого эффекта не дает, писем нет (хотя они пропали только несколько дней назад), причем именно начиная с годичной давности (сентябрь-август 2010) Еще покопаюсь в фильтрах конечно...

А что касается ошибки, которую выдает Террасофт на машинах с ХР?
И как именно обратиться в службу техподдержки, это не к вам?
Я отправлял письмо на support@terrasoft.ua , получил от вас ответ, (на почту замдиректора), что мол письмо отправлено в техдепартамент и т.п.

Здравствуйте.
Что бы решить проблему, которая возникает при запуске нужно будет обновить Вашу базу до последней версии Terrasoft CRM 2.8. В этом случае понадобится Ваша база данных. Для согласования деталей обратитесь в техническую поддержку по адресу support@tscrm.com. Параллельно можно будет проверить и что происходит с почтой.
Terarsoft Support Team.

Всё ок, спасибо за консультацию.

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

Добрый день!

Нужно добавить нового пользователя в версии 3.1.0.36, карточку создал, а вот когда во вкладке администратора выдаёт ошибку: Пользователь 'ХХХ' не существует на сервере. Помогите решить проблемку.

Нравится

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

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

В частности обратите внимание на пункт о сопоставлении пользователей.

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

Проделал предоставленную выше процедуру, запрос выдал:

Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 108
Terminating this procedure. The User name 'ХХХ' is absent or invalid.

Я так понял, что сопоставлять можно уже существующих пользователей, а я ведь не могу создать нового

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

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

Можно включить фильтр сравнения запроса примерно так:
ApplyDatasetFilter(dsReportAmount,'DateEnd', DateEnd, !IsEmptyValue(DateEnd));

Возможно ли аналогичным образом включить группу фильтров Filter Set? В параметрах фильтры группы не нуждаются, они заданы руками.

Нравится

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

Возможно подойдет: EnableDatasetFilters(Dataset, Enabled, FilterCodes) (scr_DB)

Да, действительно, EnableDatasetFilters может включать не только фильтр сравнения, а и набор фильтров. Определена функция в scr_DB, там же рядом с ней есть еще несколько функций с названиями ApplyDataset***Filter и другие, предназначеные для конкретных типов фильтров.

Спасибо за помощь, EnableDatasetFilters() подходит, -4 строчки кода :D

Здравствуйте!
Мне не удается включить набор фильтров функцией EnableDatasetFilters(). Версия 3.2.1.62.

Строка EnableDatasetFilters(LookupDataset, true, 'NotProcess'); не включает набор фильтров.

У вас пробел в названии фильтра

Спасибо! Извините, не доглядел.

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

Есть ли возможность указать для поля LookupDataControl в карточке значение по умолчанию?

Нравится

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

В обработчике OnDatasetAfterAppend присвоить полю датасета нужное значение

Dataset.ValAsGUID('AccountID') = GUID;

.

Спасибо,

а как передать в качестве значения идентификатор?
На Dataset.Values('SourceID')= {67DB35E6-C32A-4624-92E2-1983DB2643DF}; ругается компилятор ).

Возьмите его в кавычки

Dataset.Values('SourceID')= '{67DB35E6-C32A-4624-92E2-1983DB2643DF}'; 
Показать все комментарии

Здравствуйте коллеги , обитатели форума, у меня такой вопрос , нужно на карточку контрагенты добавить два CheckBox-a , первый checkBOx в свойство isCheked=true будет отвечать за то что этот контрагент создан для рассылки , и второй CheckBox с таким же свойством будет отвечать за то что этот контрагент создан для обзвона..теперь в вопрос , как реализовать это? хотя бы алгоритм , как должно это выглядеть ))..буду очень благодарен

Нравится

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

Сделайте 2 пользовательских поля с логическим типом. О создании пользовательских полей детальнее можно почитать в руководстве.

Все понятно , это компонент BlobDataControl )) спасибо большое !

"Nazym" написал:Все понятно , это компонент BlobDataControl )) спасибо большое !

BoolDataControl

ой , извиняюсь , я когда писал сообщение другим глазом читал manual Oracle )и получилось вот ) BLOB

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

Здравствуйте , возник такой вопрос , создал новый справочник по актуализации , разместил его в карточке контрагента , у справочника два состояния "актуализирован" и "не актуализирован", можно ли сделать так чтобы при создании нового контрагента справочник принимал сразу значение "не актуализирован" ? Если да, то как это реализовать ?

С Уважением
Назым

Нравится

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

Как вариант на событие AfterAppend для ds_Account

function SelfOnDatasetAfterAppend(Dataset) {
// ...			
	Dataset('Название поля') = 'ID нужного значения';
// ...
}

Спасибо большое !

присваиваю значение к любому справочнику ,идет все нормально а вот когда присваиваю значение к справочнику который я создал, выдает ошибку : 10.12.07 14.28.17.425] (E) Ошибка выполнения метода 'wnd_AccountEditOnPrepare'. Ошибка открытия источника данных "".
Оригинальное сообщение об ошибке: Ошибка при преобразовании строки символов в тип uniqueidentifier «Call Stack»

ID нужно указывать в фигурных скобках '{ID нужного значения}'.
И неплохо бы былозавести переменную для этого ID в scr_Consts.

Как узнать ID нужного значения?

Можно средствами СУБД: найти название нужной таблицы, выполнить на сервере запрос

select * from tbl_...
where Name = '.....'

потом в результате найти нужную запись и посмотреть её ID.

Либо открыть в Terrasoft Administrator нужный SelectQuery, открыть его на предпросмотр и нажать кнопку "Выполнить SQL". Среди результатов найти нужную запись и её ID.

Большое спасибо!

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