Технические вопросы
5.x

Не могу добавить сервис на карточку инцидент. Выдает следующую ошибку.

Вернуться на предыдущую страницу

Пожалуйста, сообщите в службу поддержки BPMonline об этой ошибке.

Мы гарантируем полную конфиденциальность и анонимность.

Показать детальную информацию об ошибке

Date: 14.03.2013 0:04:27 Date (UTC): 14.03.2013 7:04:27 Exception Message: Not enough working time in the calendar to calculate the response/solution date Exception Type: System.Exception Exception Source: TSBpm

Не могли бы вы мне помочь, решит эту проблему.

Заранее Спосиба.

С уважением,
Гюнель

Нравится

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

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

Проблема была не синхронизации времени сервера и локального компьютера. Извините за беспокойствие. Проблема решена.

С уважением,
Гюнель

Показать все комментарии
Технические вопросы
5.x

При настройке SMTP для отправки писем всеми пользователями системы указываю значения

SmtpHost - smpt.yandex.ru
SmtpPort - 25 (587)

SmtpUserName - login или login@yandex.ru, без разницы
SmtpUserPassword - свой пароль

При попытке отправить письмо система выдаёт ошибку
The server rejected the specified sender email address. The server responded: 503 5.5.4 Error: send AUTH command first..

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

Нравится

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

"Салихов А" написал:smpt.yandex.ru

А если smtp.yandex.ru?

Опечатка в посте. В системе, конечно, smtp.yandex.ru :smile:

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

Для решения проблемы в схеме SmtpClient в методе SendMessage создание объекта сервер должно быть таким:

var server = new SmtpServer(_credentials.Host, _credentials.UserName, _credentials.UserPassword) {
		  Port = _credentials.Port,
		  SslMode = _credentials.UseSsl ? SslStartupMode.OnConnect : SslStartupMode.Manual,
		  Timeout = _credentials.Timeout,
};

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

Александр, заработало! Спасибо!

Ещё вопрос. Судя по всему значение отправителя берется из поля E-mail контакта, который создаёт новое письмо. Однако параметры SMTP настраиваются только на один почтовый ящик.
Значит ли это, что пользователи системы могут отправлять письма только с одного ящика?

Да, именно так. Отправка происходит с одного почтового ящика, который указан в системных настройках.

Но ведь тогда получается, что у каждого сотрудника в карточке контакта в поле e-mail должен стоять адрес, на который настроена система. Нелогично как-то.

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

Александр, механизм ясен. Но я попробовал изменить адрес в карточке контакта, соответственно изменился адрес отправителя в карточке E-mail и при попытке отправить письмо я получил ошибку

The server rejected the specified sender email address. The server responded: 553 5.7.1 Sender address rejected: not owned by auth user..

Значит, Яндекс такого читерства не любит.

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

Значит, Яндекс такого читерства не любит.

Неужели всё так безнадёжно?)

Полный код метода, на всякий случай:

		public void SendMessage(MailMessage message) {
			try {
				var client = new Smtp();
				client.Charset = "utf-8";
				var server = new SmtpServer(_credentials.Host, _credentials.UserName, _credentials.UserPassword) {
					Port = _credentials.Port,
					AccountName = _credentials.UserName,
					Password = _credentials.UserPassword,
					SslMode = _credentials.UseSsl ? SslStartupMode.OnConnect : SslStartupMode.Manual,
					Timeout = _credentials.Timeout,
				};
				server.SmtpOptions = ExtendedSmtpOptions.NoChunking;
				client.SmtpServers.Add(server);
				client.Message = message;
				client.Send();
			} catch (MailBeeSmtpNoAcceptedRecipientsException e) {
				throw new SmtpException("ErrorOnSend", NoAcceptedRecipientsError, e);
			} catch (Exception e) {
				throw new SmtpException("ErrorOnSend", e.Message, e);
			}
		}

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

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

Показать все комментарии
Технические вопросы
5.x

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

Нравится

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

А почему бы не триггером?

триггер AFTER INSERT в БД
что типа

ALTER trigger [TRIGGERNAME] ON [TABLENAME] 
after insert
as
begin
	set nocount on 
	exec sp_YOURPROCEDURE @ID = [INSERTED].[ID]
end

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

Показать все комментарии
Технические вопросы
5.x

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

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

Заранее спасибо!

Нравится

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

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

Данную функциональность можно реализовать только на уровне скриптов конфигурации.

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

Раздать права на уровне конфигурации можно следующей конструкцией:

SetEntitySchemaColumnRightLevel(Guid adminUnitId, string schemaName, string columnName, EntitySchemaColumnRightLevel rightLevel)

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

Показать все комментарии
Web_Portal
Технические вопросы
5.x

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

Можна ли, связать WebPortal не только разделом "Инциденты", но и также другими разделами?
Напр., в зависимости от типа обращение созданном на портала, попадали на раздел "проблема" , или на какой-та, другой новый раздел.

С уважением,
Гюнель

Нравится

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

Добрый день, Гюнель.

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

Показать все комментарии
Terrasoft
Windows
ошибка
Технические вопросы
Разработка

Коллеги, добрый день.
Прошу просветить, когда возникает данная ошибка?
Это ошибка доработки Terrasoft? (Создан бизнес-процесс).
Или несовместимость каких-то версий программного обеспечения.
Специально воссоздать ошибку не получается.
Возникает примерно два-три раза в день при процессе Обзвон.
Исходные данные для обзвона закачиваеются из excel в TS, и из контрагентов подставляются в карточку звонка.
Что означает фраза "... а если есть известный способ устранения проблемы, уведомит вас об этом."
??

Нравится

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

Это популярная ошибка, она возникает с разными программами.
А какая версия Windows и TS? На одном компьютере ошибка или на всех?

Это значит, что Террасофт "зависла".
Обычно это происходит, когда она уходит в бесконечный цикл в скрипте или возникают необрабатываемые ошибки в бинарниках или библиотеках интеграции.
Чтобы хоть как-то понять установите ScriptDebugger.exe (см папку Redist) или лучше Visual Studio - тогда (скорее всего) будет видно, где именно возникает ошибка

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

Это популярная ошибка, она возникает с разными программами.

А какая версия Windows и TS? На одном компьютере ошибка или на всех?

Александр, доброе утро.
Windows 7, TS - 3.3.2 XRM
Сейчас провожу опрос сотрудников на тему: есть ли хоть одна машина, на которой ни разу не возникла такая ошибка.

"Андросов Дмитрий" написал:

Это значит, что Террасофт "зависла".

Обычно это происходит, когда она уходит в бесконечный цикл в скрипте или возникают необрабатываемые ошибки в бинарниках или библиотеках интеграции.

Чтобы хоть как-то понять установите ScriptDebugger.exe (см папку Redist) или лучше Visual Studio - тогда (скорее всего) будет видно, где именно возникает ошибка

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

Да можете. В папке Tools должны быть EnableDebugger.reg и DisableDebugger.reg, которые его включают и выключают соответственно

"Андросов Дмитрий" написал:

Да можете. В папке Tools должны быть EnableDebugger.reg и DisableDebugger.reg, которые его включают и выключают соответственно

Дмитрий, у нас нет такой папки. Она поставляется при покупке лицензий? Или её надо как-то отдельно добывать :)

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

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

Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]
"JITDebug"=dword:00000001

Сохраните с расширением *.reg (EnableDebugger.reg). расширение файла -- важно, т.е. проверьте, чтобы Блокнот не "дописал" Вам расширение *.тхт.

текст DisableDebugger.reg:

Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]
"JITDebug"=dword:00000000

Ага, нашла отладчики. Спасибо :)

Ольга, спасибо. Как раз занималась поиском отладчиков

"Милова Марина" написал:Windows 7, TS - 3.3.2 XRM

Кстати, очень надеюсь, что Вы найдете, в чем у Вас ошибка, именно в доработанном функционале... Потому что этот факт (виндовс 7 и 332хрм) + то, что ошибка "плавающая" + то, что она происходит во время выполнения бп -- эти факты напоминают мне ту проблему, из-за которой я уже почти 2 с половиной месяца веду "активную переписку" с поддержкой.. Пока результаты нулевые, процесс в тестирование запускать не можем, хоть на сервере (вин2003 сервер) все работает без сбоев. Правда, у меня ошибка возникает в Аутлуке (т.е. у меня есть бп, который запускается при интеграции писем в аутлук, из окошка "интеграция с террасофт"). да и "ругается" всегда по-разному (но в основном это "разрушительный сбой!" с последующим зависанием или закрытием аутлука. отладчик НЕ срабатывает).

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

Может быть дело в аутлуке? У нас была похожая проблема, решилась установкой security outlook.

"Тарантул" написал:security outlook

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

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

"Ольга Прилипко" написал:

Кстати, очень надеюсь, что Вы найдете, в чем у Вас ошибка, именно в доработанном функционале... Потому что этот факт (виндовс 7 и 332хрм) + то, что ошибка "плавающая" ...

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

Отпишусь по результатам.

Ждем результатов

"Sergey Karpenko" написал:

Ждем результатов

Сергей, перед заменой машины, всё же запустили лог
Вот результат:
"Имя сбойного приложения: TSClient.exe, версия: 3.3.2.193, отметка времени: 0x2a425e19
Имя сбойного модуля: TSComponents.bpl, версия: 3.3.2.193, отметка времени 0x2a425e19
Код исключения: 0xc0000005
Смещение ошибки: 0x0076cd92
Идентификатор сбойного процесса: 0x173c
Время запуска сбойного приложения: 0x01ce1570d0ca3cb9
Путь сбойного приложения: C:\Program Files\Terrasoft\Bin\TSClient.exe
Путь сбойного модуля: C:\Program Files\Terrasoft\Bin\TSComponents.bpl
Код отчета: f8b13622-8198-11e2-ab93-402cf4ca3d22"

Коллеги!!!
Можно ли это исправить?
Или всё же надо менять рабочую станцию?

"Ольга Прилипко" написал:
Милова Марина пишет:

Windows 7, TS - 3.3.2 XRM

Кстати, очень надеюсь, что Вы найдете, в чем у Вас ошибка, именно в доработанном функционале... Потому что этот факт (виндовс 7 и 332хрм) + то, что ошибка "плавающая" + то, что она происходит во время выполнения бп -- эти факты напоминают мне ту проблему, из-за которой я уже почти 2 с половиной месяца веду "активную переписку" с поддержкой.. Пока результаты нулевые, процесс в тестирование запускать не можем, хоть на сервере (вин2003 сервер) все работает без сбоев. Правда, у меня ошибка возникает в Аутлуке (т.е. у меня есть бп, который запускается при интеграции писем в аутлук, из окошка "интеграция с террасофт"). да и "ругается" всегда по-разному (но в основном это "разрушительный сбой!" с последующим зависанием или закрытием аутлука. отладчик НЕ срабатывает).

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

Ольга, мы тоже отправили на supportTS запрос по этому вопросу. На сегодня этот вопрос находится у таинственной проектной команды. Не иначе у той же, с которой Вы общаетесь столь длительное время.
Будем общаться вместе :)

"Имя сбойного приложения: TSClient.exe, версия: 3.3.2.193, отметка времени: 0x2a425e19
Имя сбойного модуля: TSComponents.bpl, версия: 3.3.2.193, отметка времени 0x2a425e19
Код исключения: 0xc0000005
Смещение ошибки: 0x0076cd92
Идентификатор сбойного процесса: 0x173c
Время запуска сбойного приложения: 0x01ce1570d0ca3cb9
Путь сбойного приложения: C:\Program Files\Terrasoft\Bin\TSClient.exe
Путь сбойного модуля: C:\Program Files\Terrasoft\Bin\TSComponents.bpl
Код отчета: f8b13622-8198-11e2-ab93-402cf4ca3d22"

Коллеги!!!
Можно ли это исправить?
Или всё же надо менять рабочую станцию?

"Милова Марина" написал:Будем общаться вместе :)

я с ней общаюсь с 25го декабря.
no comments

"Милова Марина" написал:Коллеги!!!
Можно ли это исправить?
Или всё же надо менять рабочую станцию?

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

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

"Sergey Karpenko" написал:

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

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

Марина, к сожалению не смог найти Ваше обращение в поддержку, так же не смог определить ответственного по нему.
касательно проблемы:
Стандартным исправлением и поиском проблем является следующее:
1) полная очистка профиля пользователя и Cache (после закрытия офисных программ и Террасофт)
2) отключение UAC и DEP
3) используя последние бинарные файлы 3.3.2.270 регистрируем все библиотеки от имени администратора.
4) запускаем Террасофт от имени администратора либо в ярлыке дописываем ключ \updated (будем использовать библиотеки, которые ранее зарегистрировал админ)
5) имя включенный отладчик, который ранее вы включили (в переписке коммент №7) выжидаем ошибку, после ее появления сообщаем нам на какой функции идет сбой.
6) исправляем ошибку (на самом деле не думаю, что она появится после выполнения п.п. 1-4)

Если же и эти действия не помогут, позвоните в поддержку, спросите меня, я помогу.

Сергей, спасибо.
О результатах отпишусь.

Я правильно указала адрес запроса
Terrasoft Support Team (support@terrasoft.ru) ?

Совершенно верно! support@terrasoft.ru - этот адрес для Terrasoft 3.x

После внесения всех изменений , через 2 часа работы возникла ошибка

Сообщение об ошибке: Object doesn't support interface IWindowEvents ({BCA3E874-2A30-4F24-B0C4-7D5FD94D2B22})
Это как-то связано?

Марина, тут уже может быть несколько вариантов, выполните действия, которые я описал в ответе №23, если не поможет - отправьте письмо с ошибкой нам в поддержку, ответом на обращение 0141270

Показать все комментарии
Технические вопросы
5.x

Если мы решим перейти с CRM на CRM + Service Desc возможно ли будет перенести всю существующую информацию в новую систему?

Спасибо.

Нравится

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

решал такую задачу для 3.3 CRM -- 3.4 XRM
было весело ))

Суть следующая:
1) Доработать на новой конфигурации то, что было на старой (главное справочники и детали)
2) написать скрипт SQL версии 1 (и чуть позже последующих)) и добиться его отработки без ошибок:
- надо сбросить (в новой базе) все ключи на данные, которые подлежат копированию (и сразу писать ту часть, где Вы будете их включать обратно). М.б. стоит сбросить и триггеры - я этого не делал.
- скопировать все таблицы из старой базы в новую, сохраняя структуру данных, добавляя там где надо значения по умолчанию (для новых справочников) и т.д.
Возможно, где-то надо будет извращаться как-то так:

CREATE TABLE #AccountBillingInfo(
	[ID] [uniqueidentifier] ROWGUIDCOL  NULL,
	[CreatedOn] [datetime] NULL,
	[CreatedByID] [uniqueidentifier] NULL,
	[ModifiedOn] [datetime] NULL,
	[ModifiedByID] [uniqueidentifier] NULL,
	[AccountID] [uniqueidentifier] NULL,
	[Description] [nvarchar](500) NULL,
	[IsDefault] [int] NULL,
	[Name] [nvarchar](250) NOT NULL,
	[Position] [nvarchar](250) NULL,
	[FIO] [nvarchar](250) NULL,
	[Ground] [nvarchar](250) NULL,
	[CountryID] [uniqueidentifier] NULL,
	[INN] [nvarchar](250) NULL,
	[KPP] [nvarchar](250) NULL,
	[RSN] [nvarchar](250) NULL,
	[BIK] [nvarchar](250) NULL,
	[KSN] [nvarchar](250) NULL,
	[OGRN] [nvarchar](250) NULL,
	[EGRPOU] [nvarchar](250) NULL,
	[NumSertificateNDS] [nvarchar](250) NULL,
	[RegDate] [datetime] NULL,
	[RNN] [nvarchar](250) NULL,
	[IIK] [nvarchar](250) NULL,
	[KBE] [int] NULL,
	[OKPO] [nvarchar](250) NULL,
	[SSN] [nvarchar](250) NULL,
	[UNN] [nvarchar](250) NULL,
	[BankID] [uniqueidentifier] NULL,
	[SignerID] [uniqueidentifier] NULL,
	[Address] [nvarchar](250) NULL)
use [terra2]
go
ALTER TABLE [dbo].[tbl_Document] DROP CONSTRAINT [FK12426AccountSignerIDtbl13]
ALTER TABLE [dbo].[tbl_Invoice] DROP CONSTRAINT [FK115613CustomerSignerIDt14]
ALTER TABLE [dbo].[tbl_Contract] DROP CONSTRAINT [FK134618CustomerSignerIDt3]
ALTER TABLE [dbo].[tbl_Document] DROP CONSTRAINT [FK12426AccountLegalEntity11]
ALTER TABLE [dbo].[tbl_Contract] DROP CONSTRAINT [FK134618CustomerLegalEnti0]
ALTER TABLE [dbo].[tbl_Invoice] DROP CONSTRAINT [FK115613CustomerLegalEnti12]
go
delete tbl_AccountLegalEntitySigner where LegalEntityID in (select (LegalEntityID) from tbl_AccountLegalEntitySigner group by LegalEntityID having COUNT(LegalEntityID) > 1)
												and Position = 'Главный бухгалтер' and LegalEntityID not in (select ID from tbl_AccountLegalEntity where AccountID = (select id from tbl_Account where Name = 'Сфера'))
 
update tbl_Document set AccountSignerID = null where AccountSignerID = 'AEE5C2D2-552B-4009-9A93-E437E405A756'
update tbl_Invoice set CustomerSignerID = null where CustomerSignerID = 'AEE5C2D2-552B-4009-9A93-E437E405A756'
 
delete tbl_AccountLegalEntitySigner where ID ='AEE5C2D2-552B-4009-9A93-E437E405A756'
 
update tbl_Document set AccountSignerID = null where AccountSignerID = 'D834E542-B940-44AE-8A32-5B1052916C99'
update tbl_Invoice set CustomerSignerID = null where CustomerSignerID = 'D834E542-B940-44AE-8A32-5B1052916C99'
 
delete tbl_AccountLegalEntitySigner where ID ='D834E542-B940-44AE-8A32-5B1052916C99'
 
update tbl_Document set AccountSignerID = null where AccountSignerID = 'F5FB7F83-5439-485C-82AE-D36857787542'
update tbl_Invoice set CustomerSignerID = null where CustomerSignerID = 'F5FB7F83-5439-485C-82AE-D36857787542'
 
delete tbl_AccountLegalEntitySigner where ID ='F5FB7F83-5439-485C-82AE-D36857787542'
 
go
 
INSERT INTO #AccountBillingInfo
           ([ID]
           ,[CreatedOn]
           ,[CreatedByID]
           ,[ModifiedOn]
           ,[ModifiedByID]
           ,[AccountID]
           ,[IsDefault]
           ,[Name]
           ,[INN]
           ,[KPP]
           ,[RSN]
           ,[OGRN]
           ,[BankID]
           ,[Address])
SELECT entity.[ID]
      ,entity.[CreatedOn]
      ,entity.[CreatedByID]
      ,entity.[ModifiedOn]
      ,entity.[ModifiedByID]
      ,[AccountID]
      ,[IsDefault]
      ,[LegalName]
      ,[INN]
      ,[KPP]
      ,[RS]
      ,[OGRN]
      ,[BankID]
      ,[LegalAddress]
  FROM [terra2].[dbo].[tbl_AccountLegalEntity] as entity 
 
update #AccountBillingInfo
set #AccountBillingInfo.Position =  t2.Position, #AccountBillingInfo.FIO = t2.Name, #AccountBillingInfo.Ground = t2.BasisForSignature, #AccountBillingInfo.SignerID = t2.ID
from #AccountBillingInfo 
inner join tbl_AccountLegalEntitySigner as t2
	on #AccountBillingInfo.ID = t2.LegalEntityID
 
 INSERT INTO #AccountBillingInfo
           ([ID]
           ,[CreatedOn]
           ,[CreatedByID]
           ,[ModifiedOn]
           ,[ModifiedByID]
           ,[AccountID]
           ,[IsDefault]
           ,[Name]
           ,[Position]
           ,[FIO]
           ,[Ground]
           ,[INN]
           ,[KPP]
           ,[RSN]
           ,[OGRN]
           ,[BankID]
           ,[SignerID])
SELECT signer.ID
      ,entity.[CreatedOn]
      ,entity.[CreatedByID]
      ,entity.[ModifiedOn]
      ,entity.[ModifiedByID]
      ,[AccountID]
      ,[IsDefault]
      ,[LegalName]
      ,[Position]
      ,signer.[Name]
      ,signer.[BasisForSignature]
      ,[INN]
      ,[KPP]
      ,[RS]
      ,[OGRN]
      ,BankID
      ,signer.ID
from [tbl_AccountLegalEntity] as entity left outer join [tbl_AccountLegalEntitySigner] as signer on entity.ID = signer.LegalEntityID
where not exists (select SignerID from #AccountBillingInfo where SignerID = signer.ID) and signer.ID is not null
 
update #AccountBillingInfo
set #AccountBillingInfo.BIK =  t3.MFO, #AccountBillingInfo.KSN = t3.KS
from #AccountBillingInfo 
inner join tbl_Bank as t3
	on #AccountBillingInfo.BankID = t3.ID
 
update tbl_Document 
set tbl_Document.AccountLegalEntityID = #AccountBillingInfo.ID
from tbl_Document inner join #AccountBillingInfo on tbl_Document.AccountSignerID = #AccountBillingInfo.SignerID
where AccountSignerID in (select ID from #AccountBillingInfo where ID = SignerID)
 
update tbl_Invoice 
set tbl_Invoice.CustomerLegalEntityID = #AccountBillingInfo.ID
from tbl_Invoice inner join #AccountBillingInfo on tbl_Invoice.CustomerSignerID = #AccountBillingInfo.SignerID
where CustomerSignerID in (select ID from #AccountBillingInfo where ID = SignerID)
 
update tbl_Contract 
set tbl_Contract.CustomerLegalEntityID = #AccountBillingInfo.ID
from tbl_Contract inner join #AccountBillingInfo on tbl_Contract.CustomerSignerID = #AccountBillingInfo.SignerID
where CustomerSignerID in (select ID from #AccountBillingInfo where ID = SignerID)

- восстановить все сброшенные ключи в новой базе
3) настроить права доступа и раздать их на все существующие записи (во всех администрируемых таблицах)

Вот и все. в принципе ничего сложного :biggrin:

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

Могу скинуть скрипты, которые я использовал, если саппорт не против

Добрый день!

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

Также, если у Вас нет специалистов, которые могут выполнить перевод, Вы можете воспользоваться услугами специалистов Terrasoft.

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

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Большое спасибо всем за ответы.

Кстати, здесь на комюнити есть блог, где обсуждается эта тема.

Для переноса данных очень удобно использовать утилиты dbForge Schema Compare for SQL Server и dbForge Data Compare for SQL Server

А как осуществить экспорт/импорт отдельных элементов? Например, какого-то справочника или контактов?

Для отдельного справочника можно сгенерировать на старой базе INSERT-скрипт, используя SQL Script Generator (для MS) или TOAD (для Oracle, но TOAD не умеет записывать в скрипт BLOB-поля), а потом его запустить на новой базе. Для раздела - аналогично, но сначала перенести связанные справочники и разделы, либо избавиться в скрипте от значений в колонках типа "справочник", которые не будем переносить.

Показать все комментарии
Технические вопросы
5.x

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

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

И ещё. Как сделать, чтобы ответственный имел доступ изменять активность, ему назначенную?

Нравится

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

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

Если это уже существующие записи, то доступ на них нужно распространять скриптом.
Что-то вроде:

declare @UserName nvarchar(250)
set @UserName = 'ИмяПользователя' --которому предоставляется доступ
declare @Account nvarchar(250)
set @Account = 'ИмяКонтрагента' --по которому предоставляется доступ на активности
declare @AdminUnitID uniqueidentifier
set @AdminUnitID = (select top 1 Id from SysAdminUnit where Name = @UserName)
declare @Reading int
set @Reading = 1 --0 - запрет чтения, 1 - разрешение чтения, 2 - разрешение раздачи прав доступа на чтения
declare @Writing int 
set @Writing = 1 --0 - запрет изменения, 1 - разрешение изменения, 2 - разрешение раздачи прав доступа на изменение
declare @Deleting int 
set @Deleting = 1 --0 - запрет удаления, 1 - разрешение удаления, 2 - разрешение раздачи прав доступа на удаление
 
if (@AdminUnitID is null)
begin
return
end
 
INSERT INTO SysActivityRight([Id], [RecordId], [SysAdminUnitId], [Operation], [RightLevel])
select newid(), a.Id, @AdminUnitID, 0, @Reading
from Activity a
where a.AccountId = (select Id from Account where Name = @Account)
 
INSERT INTO SysActivityRight([Id], [RecordId], [SysAdminUnitId], [Operation], [RightLevel])
select newid(), a.Id, @AdminUnitID, 1, @Writing
from Activity a
where a.AccountId = (select Id from Account where Name = @Account)
 
INSERT INTO SysActivityRight([Id], [RecordId], [SysAdminUnitId], [Operation], [RightLevel])
select newid(), a.Id, @AdminUnitID, 2, @Deleting
from Activity a
where a.AccountId = (select Id from Account where Name = @Account)

Максим, спасибо.

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

Есть некоторое приложение написанное под .net. В этом приложении вызывается метод из скрипта в конфигурации Terrasoft.
Делается это следующим образом:

var sc = ((Script)connector.Services.GetNewItemByUSI("ScriptName")).ScriptControl;
var result = sc.Run("FuctionName", parameter1, parameter2, ... , parameterN);

Проблема заключается в том, что я не знаю как выполнить приведение к типу, так чтобы стало возможным использовать типы данных из пространства имен System. В частности первая вызываемая функция в приложении возвращает объект Date, который мне необходимо преобразовать в DateTime.
Подскажите пожалуйста способы работы с результатами возвращаемыми при вызове метода run.

Нравится

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

А у этого объекта случайно нет метода .getVarDate() ?

Именно он там и есть.

т.е. если сделать вот так:

result = result.getVarDate();

, то исключения не будет.

решил как-то так:

var dateTime = (DateTime)result.GetType().InvokeMember("getVarDate", BindingFlags.InvokeMethod, null, result, null);
Показать все комментарии
hint
Технические вопросы
Разработка

Добрый день.
В окно редактирования продажи было добавлено булевское поле (BoolDataControl), в котором в свойстве Hint был занесен текст. В Администраторе при наведении мышкой на это поле в карточке редактирования подсказка всплывает, в клиенте же при наведении мышки на это же поле подсказка не всплывает. В чем может быть дело? Может какой-то параметр окна нужно поменять, чтобы заработал вывод подсказок для контролов окна?

Terrasoft XRM 3.4.1.101

Нравится

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

Здравствуйте, Ксения.

Пытался воспроизвести на бинарниках 3.4.1.101 - не воспроизвел.

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

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

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

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

Возникла потребность в хинтах. В TerraSoft XRM version 3.3.2.252 нет подобной возможности или не нашёл? Как возможно обновить версию до хинто-появления?

Добрый день!

Дело в том, что данный функционал появился в версии 3.4.1:
Terrasoft 3.4.1. What's new for developers

Для того, что бы перейти на новую версию, необходимо:
1. Обновить БД;
2. Обновить исполняемые файлы;
3. Обновить версию лицензий на CustomerID.

По данным вопросам, Вы можете обратиться к Вашему ответственному менеджеру.

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