Подскажите пожалуйста есть ли вариант полного переноса базы(всех данных) из Террасофт 3.2 в 1С 8.3 Управление торговлей 11.1 (управление продажами недвижимости)?
Операционная система WinXP.

Нравится

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

Перенос данных из Terrasoft 3.2 в 1С 8.3 Управление торговлей 11.1 возможен в рамках индивидуального проектного решения.

Возможно, что на стороне 1С 8.3 Управление торговлей 11.1 есть специальные утилиты для импорта данных из других сторонних систем.

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

Восстановил из *.bak-файла базу данных. Развернул на другой машине - все работает, кроме разделов Контакты и Контрагенты. При попытке сохранить dataset вылетает обшибка 'list index out of bounds (0)'

Продукт Terrasoft Sales, версия 3.4.0.53
База данных бекапилась на MS SQL 2005. Восстанавливали и на 2005 и на 2008 - результат одинаковый.
Все остальное работает. Ошибка выскакивает в момент сохранения в скрипте:

function SaveChanges(BaseDBEdit, Window) {
        var AddNewRecordOnPage = (BaseDBEdit.Dataset.State == dstInsert);
        Window.Attributes('IsAppend') = (BaseDBEdit.Dataset.State == dstInsert);
        Window.Attributes('RecordID') = BaseDBEdit.RecordID;
        var PostResult = BaseDBEdit.Dataset.Post();
        Window.Attributes('AddNewRecordOnPage') =
                (AddNewRecordOnPage && PostResult > 0);
        var Result = ((PostResult == 1) || (BaseDBEdit.RecordAlreadySaved));
        return Result;
}

на строке var PostResult = BaseDBEdit.Dataset.Post();выкидывает сразу в исключение
catch (e) {
                System.MessageDialog(e.message, mdtError, mdbOK, 0);
                Result = false;
        }

        return Result;

функции SaveChangesWithCheck(Window, BaseDBEdit, DoNotSendNotify).
Каким образом это можно исправить?

Нравится

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

Проблему решил сам, хватило лишь выполнить запрос

sp_change_users_login 'auto_fix', 'fkeys'

возможно кому-то поможет

Либо может еще отработать скрипт:
sp_change_users_login 'Update_one', 'fkeys', 'fkeys'

Арсений Белецкий
Техническая поддержка Terrasoft

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

Перенос базы данных необходимо выполнять только через действия Backup\Restore, что позволяет не нарушать внутренние связи таблиц, представлений и т.д.
Действие Attaach\Detach не обеспечивает стабильную работу базы при переносе на другой сервер.
При переносе базы данных, версии Terrasoft CRM 3.1 и выше, с одного сервера на другой есть необходимость создавать Имена входа(Login) непосредственно в СУБД для всех пользователей (Для низших версий - данное действие проводиться только для администраторов Terrasoft CRM).
При создании Login нет необходимости указывать какую-либо конкретную базу данных - все значения оставляем "по умолчанию".
Для пользователей, которые имеют административные права в Terrasoft CRM при создании Login, на закладке [Server Roles], необходимо выставить значение [sysadmin].
После создания имени входа обычного пользователя, необходимо сопоставить имя пользователя(User),непосредственно в базе данных, с именем входа(Login)на СУБД.

Нравится

Поделиться

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

Если описанный выше перенос происходит для баз данных под MSSQL 2005 может возникнуть ошибка при добавлении полей в таблицы:

Cannot execute as the database principal because the principal "fkeys" does not exist, this type of principal cannot be impersonated, or you do not have permission. «Call Stack»

Помогает следующий скрипт

sp_change_users_login 'update_one', 'fkeys', 'fkeys'

А что это за пользователь fkeys?

"Павел Крышкин" написал:Если описанный выше перенос происходит для баз данных под MSSQL 2005 может возникнуть ошибка при добавлении полей в таблицы:

Cannot execute as the database principal because the principal "fkeys" does not exist, this type of principal cannot be impersonated, or you do not have permission. «Call Stack»

Помогает следующий скрипт


или под MSSQL 2008

1) Удаляем процедуру tsp_fkeys
2) Удаляем пользователя fkeys
3) Делаем BAK базы
4) Востанавлеваем базу из BAK-файла

При первом входе Supervisor-а в систему, автоматически создаются tsp_fkeys и fkeys. Проверено! 100%

"Ковалишин Виталий" написал:

А вот у меня почему-то не сработало на 2008 :(
Как раз не создался login fkeys

"Ковалишин Виталий" написал:При первом входе Supervisor-а в систему, автоматически создаются tsp_fkeys и fkeys

Проверял на 2005 и 2008! Несколько раз!
После востановления - не создается, после первого входа supervisor в систему - создаются...

а все-таки, для чего он нужен?

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

Не удается удалить пользователя fkeys, Management Studio выдает ошибку:
"The database principal is set as the execution context of one or more procedures functions, or event notifications and cannot be dropped"
Подскажите как быть в этом случае.

Данное сообщение означает что удаляемый Вами пользователь используеться для выполнения одной или более функций и не может быть удаленным.
Уточните:
1) Для чего Вы удаляете данного пользователя?
2) Вы пытаетесь удалить пользователя базы данных(User) или имя входа SQL(Login)?

Следую инструкциям Виталия Ковалишина:
1) Удаляем процедуру tsp_fkeys
2) Удаляем пользователя fkeys
3) Делаем BAK базы
4) Востанавлеваем базу из BAK-файла

На втором этапе пытаюсь удалить пользователя fkeys базы даных (User), а он никак :sad:

Андрей, в данном случае проще и быстрее будет выполнить пункты 3) и 4) Виталия, а после этого следовать инструкции Павла:

"Павел Крышкин" написал:Помогает следующий скрипт
sp_change_users_login 'update_one', 'fkeys', 'fkeys'

Пользователь fkeys может использоваться не только в процедуре tsp_fkeys, но и в некоторых других объектах БД, и поиск всех таких объектов для того, чтобы удалить их или убрать связь с fkeys, может занять более продолжительное время, чем выполнение скрипта.

Спасибо Олег, скрипт действительно помог!
Но пришлось создавать имена входа в СУБД для каждого пользователя, как писал изначально Клименко Николай, и затем применять для каждого из них этот скрипт.

Добрый день!
После переноса базы через Backup/Restore, добавления всех пользователей и сопоставления имен имеется следующая проблема:
В базе невозможно удалить старые записи даже пользователем с правами администратора. При попытке удаления выдается следующее сообщение об ошибке:
"Ошибка выполнения метода 'mds_RecordsForDeleteOnDatasetAfterOpen'. Ошибка удаления записи. Оригинальное сообщение: Выполнение данной инструкции было прервано.
Конфликт инструкции DELETE с ограничением REFERENCE "FTaskContactID". Конфликт произошел в базе данных "Terrasoft", таблица "dbo.tbl_Task", column 'ContactID' «Call Stack»"

Используется Terrasoft XRM 3.3.2.43.

Сергей, в данном случае Вы, скорее всего, пытаетесь удалить записи в разделе "Контакты", по которым существуют задачи. Попробуйте открыть деталь "Задачи" для контакта, которого Вы хотите удалить. Если в детали есть записи, надо сначала удалить их, либо очистить в этих задачах поле "Контакт".

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

Понимаю, что тема старая и может даже не нужная... но вдруг кому-то время сэкономит...

Переношу с MSSQL 2000 базу на 2012 (через 2008).

В 2012-ом (и в 2008 тоже) пользователь "fkeys" не создался и процедура "tsp_fkeys" тоже...

Проблемма в том, что в процедуре tsp_GetLoginInfo строчка "set @version = convert(int, substring(convert(char(20), serverproperty('productversion')),1,1))" выдаёт "1" и соответственно "if (@version > 8) " не отрабатывает.

Меняем на "if (@version > 0) " и всё создаётся и отлично работает!

Спасибо.

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