Подскажите пожалуйста, я никогда не работал с этой программой, но передо мной стоит задача экспортировать всю базу Террасофт Риэлт в 1с:Управление недвижимостью, возможно ли это вообще сделать? Если да, то как?
Или может, возможен експорт всей базы в формат Exсel?

Нравится

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

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

Программный продукт TS CRM Realty – это разработка нашего партнера ‘Альфа-Информ’.

Для уточнения деталей реализации и возможностей интеграции с другими программными системами свяжитесь, пожалуйста, с компанией ‘Альфа-Информ’ по телефонам, указанным на их сайте: http://www.olp.ru/

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

как записать значение перечисления для заполнения поля 1С?
поле

Нравится

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

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

Проблема все еще актуальна

Какая версия 1с?

Тогда рекомендую поставить утилиту для 8.2:
http://www.community.terrasoft.ru/catalog/3796
А затем используйте совет описанный тут:
http://www.community.terrasoft.ru/forum/topic/12260#comment-52599

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

Добрый день!
Настроил экспорт счетов из Terrasoft в 1С. Интеграция запускается по расписанию, раз в 2 часа.
Иногда нужно при создании счета в TS сразу отправить его в 1С.
Подскажите, пожалуйста, можно ли как-то запустить интеграцию для конкретной записи, чтобы остальные счета не трогать?

Нравится

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

Здравствуйте, Дмитрий!

Данный вопрос рассматривался в следующей теме: http://www.community.terrasoft.ru/forum/topic/8615

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

Анна, спасибо за ответ.
А нет возможности запустить уже настроенную интеграцию, но возможно с каким-то параметром, например ID счета?

Здравствуйте, Дмитрий!

Да, возможно, пример описан тут:

http://www.community.terrasoft.ru/blogs/7632

Добрый день!
Анна, еще немного уточню вопрос. Можно ли запускать настроенную интеграцию из скрипта, например чтобы при при нажатии на кнопку в разделе "Счета" выбранный счет уходил в 1С?

Здравствуйте, Дмитрий!

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

var Attr = GetNewDictionary();
Attr('#ID#') = RecordID;
ExportObject(null, DataflowID, ObjectID, Attr);

DataflowID - идентификатор синхронизации в разделе Интеграции;
ObjectID - идентификатор настроенной интеграции с определенной сущностью в конкретной интеграции;
RecordID - идентификатор создаваемой записи.

Большое спасибо, Анна. Попробую.

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

Добрый день!

Подскажите пожалуйста, можно ли как-нибудь реализовать экспорт одной текущей записи в 1С V77 по событию? (Например: при сохранении нового документа, этот документ автоматически экспортируется в 1С). Если можно, буду рад примерам.

Нравится

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

Здравствуйте, Дмитрий.

Теоретически - можно.

Необходимо настроить автоматический запуск БП по событию создания новой записи в разделе "Документы".
В этом БП на элементе Start получаем ID созданного документа, и далее в элементе скрипт получаем все необходимые данные по этому документу, и далее пишем напрямую в 1С:

var Invoice1C = v8.Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
Invoice1C.Дата = "10.09.2012";
Invoice1C.Номер = "92837482374";
Invoice1C.Организация = v8.Справочники.Организации.НайтиПоНаименованию("ТОВ \"БАРЕЛЬ\""""); 

А не подскажите примерную строку подключения к 1С?

Вот так:

var v8=new ActiveXObject("V77.COMConnector");
v8.Connect(GenerateConnectString(Param));
 
function GenerateConnectString(Param) {
	var ConnectString;
	if (Param.IsServer) {
		ConnectString = 'Srvr="' + Param.Path + '";Ref="' + Param.DBName;	 //"
	} else {
		ConnectString = 'File="' + Param.Path;	 //"
	}
	ConnectString = ConnectString + '";Usr="' + Param.UserName + '";Pwd="' + 
		Param.Password + '"'; //"
	return ConnectString;		
}

Эх, не получается. На строке

var v8=new ActiveXObject("V77.COMConnector");

Пишет: "Невозможно создание объекта сервером программирования объектов"

А так?

"V77.Application"

Сделал так:

var v77 = new ActiveXObject('V77.Application');
v77.Initialize(v77.RMTrade, Generate1CParamString(Path, Login, Password, IsExclusive), NO_SPLASH_SHOW');
var Invoice1C = v77.CreateObject('Документ.ЗаказНарядНовый');
Invoice1C.Новый();

На 3-ей строке пишет: "Неудачная попытка создания объекта (Документ.ЗаказНарядНовый)". В чем может быть проблема?

Здравствуйте, Дмитрий.

Возможная причина - нету такого типа документа в БД 1С:

var Doc = v77.CreateObject('Документ.РасходнаяНакладная'); // Создаем документ в базе OLE
Doc.Новый(); 

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

Дмитрий,

какое значение в переменной IsConnected?

var IsConnected = v77.Initialize(v77.RMTrade, Generate1CParamString(Path, Login, Password, IsExclusive), NO_SPLASH_SHOW');

IsConnected = false.

Интересно, в чем-нибудь еще может быть проблема, кроме неправильного пути/пользователя/пароля? (перепроверил несколько раз, ввожу все правильно; процесс в диспетчере задач появляется).

В Path ведь полный путь к exe файлу 1С прописывается?

Функция Generate1CParamString(Path, Login, Password, IsExclusive) отсюда.

В Path нужно указать путь к каталогу с базой (т.е. к папке).

Разобрался с подключением, коннект проходит. Все поля прописываются кроме перечислений.
Как записать в поле значение, если это перечисление?
Для справочников делал так:

var Firm1C = v77.CreateObject('Справочник.Фирмы');
Invoice1C.Фирма = Firm1C.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_Account', Dataset('FirmID'), 'Name'));

Аналогично для перечислений делаю:

var State1C = v77.CreateObject('Перечисление.СостояниеЗаказНаряда');
Invoice1C.Состояние = State1C.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_DocumentState', Dataset('StateID'), 'Name'));

Не работает. Пишет: "Неудачная попытка создания объекта"

Здравствуйте, Дмитрий.

К сожалению, не большой специалист в 1С, но попробуйте что-то вроде этого:

 Invoice1C.Состояние = V77.перечисление.ПризнакПроводки.Баланс;

Также вот полезная информация:

Для сравнения значений агрегатных типов данных в базе, открытой через Оле, использовать стандартный алгоритм с использование знаков равно и неравно (=,<>) не получается. Выход простой. Необходимо перейти от сравнения агрегатных типов данных к простым типам данных - дата, строка и число.
Отсюда вывод: мы сравниваем не сами элементы, а их уникальные атрибуты. Например, для элементов справочника - это код (если он есть), либо наименование. Для перечисления используется метод Идентификатор(). Вот два примера:
//Сравнение реквизита номенклатуры с Константой БазоваяВалюта
Если дТовар.ВалютаУчета.Код<>Другая.Константа.БазоваяВалюта.Код Тогда
    дТовар.ВалютаУчета=Другая.Константа.БазоваяВалюта;
КонецЕсли;
//Сравнение реквизита номенклатуры с перечислением
Если дТовар.ТипТовара.Идентификатор()<>Другая.Перечисление.ТипыТоваров.Штучный.Идентификатор() Тогда
    дТовар.ТипТовара=Другая.Перечисление.ТипыТоваров.Штучный;
КонецЕсли;

Может быть вы знаете как прописать значение в поле типа справочник в 1С.
Пробовал так:

Первый вариант:

var Customer1C = v77.CreateObject('Справочник.Контрагенты');
Invoice1C.Заказчик = Customer1C.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_Account', Dataset('CustomerID'), 'Name'));

Ошибок нет, но в поле "Заказчик" ничего не записывается

Второй вариант:

var Customer1C = v77.CreateObject('Справочник.Контрагенты');
Customer1C.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_Account', Dataset('CustomerID'), 'Name'));
Invoice1C.Заказчик = Customer1C.ТекущийЭлемент();

Пишет: "Недопустимый вызов или аргумент процедуры".

Третий вариант:

var Customer1C = v77.CreateObject('Справочник.Контрагенты');
Customer1C.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_Account', Dataset('CustomerID'), 'Name'));
Invoice1C.Заказчик.Код = Customer1C.ТекущийЭлемент().Код;

Пишет: "Не выбран элемент!".

Не знаю уже что делать.

А так?

Account = V77.CreateObject("Справочник.Контрагенты");
Account.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_Account', Dataset('CustomerID'), 'Name'),0,0);
Invoice1C.Заказчик=Account.ТекущийЭлемент(); 

Не работает.
Пишет "Недопустимый вызов или аргумент процедуры" на строке

Invoice1C.Заказчик = Customer1C.ТекущийЭлемент();

Здравствуйте, Дмитрий.

Очень странно...
А какое значение возвращает строка

Account.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_Account', Dataset('CustomerID'), 'Name'),0,0);

не 0 ли случаем?
В таком случае элемент не был найдет, и соответственно позиционирование на строке не произошло.

Также попробуйте селдующий враиант:

Account = V77.CreateObject("Справочник.Контрагенты");
Account.НайтиПоНаименованию(GetDatasetFieldValueByID('ds_Account', Dataset('CustomerID'), 'Name'),0,0);
Invoice1C.УстановитьАтрибут('Заказчик', Account.ТекущийЭлемент); 

Все теперь работает!
Сделал так:

1) Перечисление:

if (Dataset('StateID')) {
	try {
	var State1C = v77.CreateObject('Перечисление.СостояниеЗаказНаряда.' + GetDatasetFieldValueByID('ds_DocumentState', Dataset('StateID'), 'Code1C'));
	Invoice1C.УстановитьАтрибут('Состояние', State1C);
        } catch (e) {Dialog += '"Состояние" нет совпадений в базе 1С' + '\r\n'; } finally {}
}

2) Справочник:

if (Dataset('FirmID')) {
	InsertDictionaryFieldTo1C(v77, Invoice1C, 'Справочник.Фирмы', 'Фирма', 'ds_Account', Dataset('FirmID'));
}
 
function InsertDictionaryFieldTo1C(v77, Invoice1C, Object1CName, Field1CName, DatasetUSI, ValueID) {
	var Object1C = v77.CreateObject(Object1CName);
	var Object1CIsFound = Object1C.НайтиПоКоду(GetDatasetFieldValueByID(DatasetUSI, ValueID, 'Code1C'), 0, 0);
	if (Object1CIsFound != 0) {
		Invoice1C.УстановитьАтрибут(Field1CName, Object1C.ТекущийЭлемент());
	} else {
		Dialog += '"' + Field1CName + '" нет совпадений в базе 1С' + '\r\n';
	}
}
Показать все комментарии

Подскажите, пожалуйста, в стандартной интеграции при экспорте счетов в 1С существует ли возможность ввода на основании этого счета других документов, например Актов (автоматическое создание актов во время перекидки счетов)?

Нравится

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

Здравствуйте Иван,
Автоматическое создание актов не предусмотрено.
Все зависит от конфигурации 1С и поставленных модулей
Пример создания Документа при экспорте счета:

function OnAfterRecordImport(Param, Dataset, Select1C) {
         var DocObj = GetScriptObjectByVersion(Param).GetObject(Param.Obj1C, 'Документ.Акт1…');
         DocObj.CreateDocument();
         DocObj.Number = 1234;
         DocObj.Счет = Select1C;
         DocObj.Write();
}
Показать все комментарии

Доброго дня!

Подобная тема уже где то обсуждалась но не могу найти.

Интересует безопасность экспорта данных с Terrasoft. Понятно что это безопасно но какие могут возникнуть трудности.

И так же по пунктам про экспорт данных в 1С только по более просто и конкретно так как клиент не программер =).

С Ув. Ирина
i.bugayeva@btech.kiev.ua
skype:. Iraprosto

Нравится

Поделиться

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

Добрый день.

Возник вопрос, как при экспорте товара указать, что бы он был в определенной группе в 1С?

Нравится

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

Необходимо создать подчиненную запись при синхронизации, и установить соответствие [Продукт в группе].[Название] (Террасофт) - [Номенклатура].[Номенклатурная группа] (1C)

Анна, а можно скриншот, пожалуйста?
У меня почему-то так не получилось.

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

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

111

222

О, спасибо большое!

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