Добрый день!

Настраиваю Интеграцию 1С для экспорта Счетов из Террасофта 3.5.1 в 1С 8.3.

Счета экспортируются, кроме поля НДС.
Насколько я понял в 1С НДС не справочник, а перечисление. Как правильно провести Синхронизацию таблицы в ТС tbl_Tax и перечисления в 1С 8.3 ставкаНДС? Кнопка Экспорт Элемента для синхронизации НДС неактивна. ПРи импорте НДС в из 1С в ТС нет связи по UUID. Непонятно по какому поля связывать НДС между 1С и Террасофт.

Как правильно экспортировать НДС из Продуктов в Счетах в Номенклатуру 1С?

Нравится

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

Экспортировать в перечисление, разумеется, нельзя.
По импорту, простой вариант есть заполнять реквизит через скрипт интеграции:

var Tax1C = null;
switch(Dataset('TaxID')) {
    case(ttNDS):
    Tax1C = Param.Obj1C.Перечисления.ТипыКонтактнойИнформации.Адрес;
    break;
    case(ttNoNDS):
    Tax1C = Param.Obj1C.Перечисления.ТипыКонтактнойИнформации.Адрес;
    break;
}
Selec1C.РеквизитСТипомПеречисление = Tax1C; 

Думаю, можно и через простой маппинг, но я не помню как это работает - нужно смотреть код.

В ТС я импортировал Перечисление НДС из 1С:

Дальше не получится связать по какому-нибудь полю tbl_Tax с СтавкойНДС? Чтобы экспортировать в 1С таким образом?

Сейчас экспортируются все поля, кроме НДС.

По импорту, простой вариант есть заполнять реквизит через скрипт интеграции:
Это импорт через скрипт в 1с?

Это скрипт интеграции, событие OnBeforeRecordExport.

пс: по идее, утилита интеграции должна брать значение из поля Code1C, и подставлять его сюда:

Param.Obj1C.Перечисления.СтавкиНДС.Code1C

Возможно у вас неправильный маппинг, и вы в поле Code1C перенесли не Имя, а Синоним?
В итоге Param.Obj1C.Перечисления.СтавкиНДС.20% - это не корректно, вот поле и не заполняется.

В любом случае, если вопрос критичный - уберите поле из маппинга, а добавьте код в скрипт интеграции в событие OnBeforeRecordExport:

var Tax1C = null;
switch(Dataset('TaxID')) {
    case(ttNDS):
    Tax1C = Param.Obj1C.Перечисления.СтавкиНДС.НДС18;
    break;
    case(ttNoNDS):
    Tax1C = Param.Obj1C.Перечисления.СтавкиНДС.БезНДС;
    break;
}
Selec1C.СтавкаНДС= Tax1C;

Дмитрий, да, у меня в Code1C был Синоним, а не Имя по причине отсутствия в списке выбора Имя. Проставил вручную значения Имя в Code1C и все заработало!
Единственный момент при экспорте в 1С В счете в 1С по умолчанию стоит "НДС сверху". А должно быть "НДС в сумме". Когда в 1С просто создаешь Счет, то по умолчанию проставляется как надо - "НДС в сумме".
Может сталкивались с этим, как сделать, чтбы по умолчанию при экспорте в 1С в Счете стояло "НДС в сумме"?

Дык в настройках маппинга полей есть же поле "значение по умолчанию", не подходит?

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

добрый день,у меня возникла проблема с модулем интеграции терасофта с 1С,всё делал по инстукциям из этого топика : https://community.terrasoft.ru/catalog/3796?page=1#comment-52232
но у меня вылетает ошибка : Ошибка выполнения метода 'amiImportSingleOnExecute'. OLE error 80020102 «Call Stack»
как её исправить ?

Нравится

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

Эм, сложно что-то конкретное сказать.
Попробуйте закрыть Террасофт, почистить кеш (удалить папку по пути %appdata%\Terrasoft\версия\Cache) и попробовать снова.
Если ошибка опять возникнет: значит вы не правильно настроили сущность интеграции. Вижу что вы жмете на кнопку "Импортировать". Что именно вы импортируете? Какие настройки? Скриншоты в студию :)

как я уже сказал всё в точности по инструкциям из выше приведённого топика

Николай, установка утилиты (для поддержки 8.2) и импорт уже настроенной сущности (работа с утилитой) это вообще абсолютно разные вещи.
Вы даете линк на тему с установкой утилиты для поддержки интеграции с 8.2, а ошибка у вас при нажатии на кнопку "Импорт". Чтобы что-то импортировать, нужно вначале всё настроить. Тот топик к настройкам интеграции не имеет никакого отношения.

после чистки клинером синхронизация заработала,вот только не происходит импорт элементов (

Николай, предполагаю где-то есть ошибка.

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

Скриншот с настройками конкретной сущности в интеграции (которая зависает), её настройки маппинга полей, для начала.

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

И снова здравствуйте!

Третий день мучаюсь с экспортом контрагентов в 1C. Сам контрагент, включая название передаётся легко, но загвоздка в его деталях - адресах, ИНН и КПП.

Адреса берутся из набора данных ТС "Адреса контрагента", а ИНН и КПП - из "Платежные реквизиты" но экспортируются в самого контрагента. То есть, это, вроде, подчинённые детали, а вроде и нет.

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

Кто-нибудь решал эту проблему?

Нравится

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

С ИНН и КПП разобрался программно, а также с произвольной строкой адреса. Теперь осталось только передавать детали адреса - Страну, Город, Улицу и т.д.

Лично у меня экспорт контрагентов всё одной настройкой...
Вот кусок с адресами. Событие OnAfterRecordExport:

//удалить  все адреса и средства связи	
	var ci1C = Param.Obj1C.РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); 
	ci1C.Отбор.Объект.Установить(Select1C.Ссылка);
	//[не регистрируем изменения на стороне 1с	
	ci1C.ОбменДанными.Получатели.АвтоЗаполнение = false;
	//]
	ci1C.Записать(); 	
	//Адреса
	var AccountID = Dataset('ID');	
	var ds = Services.GetNewItemByUSI('ds_AccountAddress');
	ApplyDatasetFilter(ds, 'AccountID', AccountID, true);
	ds.Open();
	while(!ds.IsEOF) {
		var ci1CMain = Param.Obj1C.РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
		var ci1C = ci1CMain.Добавить();
		ci1C.Объект = Select1C.Ссылка;
		var met=Param.Obj1C.Метаданные.Перечисления.Найти("ТипыКонтактнойИнформации");
		var meta=met.ЗначенияПеречисления.Найти('Адрес');
		var metalink = Param.Obj1C.Перечисления.ТипыКонтактнойИнформации[meta.Имя];
		ci1C.Тип = metalink;
		var AdrTypeID = ds('KLADRAddressTypeID');
		var AdrTypeUID1C = GetDatasetFieldValueByID('ds_AddressType',
			AdrTypeID, 'UID1C');
		var AddressType1CLink;
		if(!IsEmptyValue(AdrTypeUID1C)) {
			AddressType1CLink = GetObjectLinkByUID(
					Param.Obj1C.Справочники.ВидыКонтактнойИнформации, AdrTypeUID1C, Param);	
			ci1C.Вид = !AddressType1CLink.Пустая() ? AddressType1CLink : null;
			ci1C.Представление = ds('KLADRAddress');
			ci1C.Поле1 = ds('KLADRAddressZIP');
			ci1C.Поле2 = ds('KLADRAddressSubject');
			ci1C.Поле3 = ds('KLADRAddressRegion');
			ci1C.Поле4 = ds('KLADRAddressDistrictCenter');
			ci1C.Поле5 = ds('KLADRAddressCity');
			ci1C.Поле6 = ds('KLADRAddressStreet');
			ci1C.Поле7 = ds('KLADRAddressHouse');
			ci1C.Поле8 = ds('KLADRAddressCase');
			ci1C.Поле9 = ds('KLADRAddressFlat');
			//[не регистрируем изменения на стороне 1с	
			ci1CMain.ОбменДанными.Получатели.АвтоЗаполнение = false;
			//]						
			ci1CMain.Записать(false); 
		}		
		ds.GotoNext();
	}
	ds.Close();

По поводу заполнения справочных реквизитов...
Получаете ID страны из детали адреса, далее по этому ID получаете значение в поле UID1C, и далее получаете ссылку на страну в 1с, и кладете её в реквизит...
Примерно так:

var Invoice1C = Param.Obj1C.Документы.Счет;
var InvoiceUID1C = GetDatasetFieldValueByID('ds_Opportunity', 
	dlData.Dataset('ID'), 'UID1C');
InvoiceUID1C = CreateGUID1C(InvoiceUID1C, Param.Obj1C);
var Link1C = Invoice1C.GetRef(InvoiceUID1C);
function CreateGUID1C(UID1C, Obj1C) {
	if(UID1C == null) {
		return '';
	}
	UID1C = UID1C.replace('{', '');
	UID1C = UID1C.replace('}', '');
	UID1C = Obj1C.NewObject('УникальныйИдентификатор', UID1C);
	return UID1C;
}

> Лично у меня экспорт контрагентов всё одной настройкой...

Да, этот ваш код мне сильно помог, хоть он и не подходит для 1С 8.3, так как "РегистрыСведений.КонтактнаяИнформация" больше не существует, они переехали в справочники.

> Получаете ID страны из детали адреса, далее по этому ID получаете значение в поле UID1C, и далее получаете ссылку на страну в 1с, и кладете её в реквизит...

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

ОК. Если что будет конкретного: кидайте ваш код или скрины.

Попробовал, не то чтобы получилось. Работает всё так:

Берём объект:

var Contragent = Select1C.Ссылка.ПолучитьОбъект();

Получаем его ID, идём по списку адресов, добавляя каждый:

var AccountID = Dataset('ID');
 
var ds = Services.GetNewItemByUSI('ds_AccountAddress');
ApplyDatasetFilter(ds, 'AccountID', AccountID, true);
ds.Open();
 
while(!ds.IsEOF) {
      AddAddress(Param, Contragent, ds);
      ds.GotoNext();
}
ds.Close();

Функция AddAddress:

	var newAddress= Contragent.КонтактнаяИнформация.Добавить() ;
	newAddress.Тип = Param.Obj1C.Перечисления.ТипыКонтактнойИнформации.Адрес;
 
	switch(Dataset('AddressTypeID'))
	{
		//Добавляем вид адреса
	}
 
       //Из комментария выше
	var Contragent1C = Param.Obj1C.Справочники.СтраныМира;
	var CountryUID1C = GetDatasetFieldValueByID('ds_Country', Dataset('CountryID'), 'UID1C');
	CountryUID1C = CreateGUID1C(CountryUID1C, Param.Obj1C);
	newAddress.Страна = Contragent1C.GetRef(CountryUID1C); 
 
	Contragent.Записать(false);

При этом поле Страна отображается верно. Однако, при обзоре в клиенте 1С, поле не заполнено.

Как-то так пока.

После записи выполните запрос в 1с и посмотрите что в этом поле. Если ничего - значит не записалось. Возможно срабатывают какие то проверки "перед записью" на стороне 1с?

Имеется ввиду запрос к БД 1С? Я, честно говоря, не в курсе, как это сделать с файловой версией 1С.

Забавно, но при попытке импорта импортируется именно то значение, что было экспортировано. Однако, в самом клиенте оно не меняется.

Посмотрите в 1С Администраторе - быть может в коде формы есть какая-то логика...

В функции РазместитьКонтактнуюИнформацию() логика загрузки простая:

ТаблицаРазмещенияКИ	= УправлениеКонтактнойИнформациейБП.ПолучитьПустуюТаблицуРазмещенияКонтактнойИнформации();
 
УправлениеКонтактнойИнформациейБП.ДобавитьОписаниеРазмещенияКонтактнойИнформации(ТаблицаРазмещенияКИ, Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента, Элементы.ЮрАдресКонтрагента.ПутьКДанным);

Ничего подозрительного пока не заметил.

Ну смотрите, предлагаю сделать так: зайдите в 1с и в меню "Операции" выберите "Обработка". Найдите там "КОнсоль запросов" либо "Консоль отчетов" (если нет - установите), и после записи через ТС выполните в обработке запрос к БД (думаю для файловой БД они тоже работают):

Выбрать ВашРеквизит Из Справочник.ВашСправочник.ВашаТаблЧасть
Где Ссылка.Наименование = "МойКонтрагент"

Если реквизит будет заполнен - значит запись проходит, если нет - значит нет :)

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

пс: выполнение 1с-ного кода через COM (Террасофт) также можно отлаживать - погуглите.

Та-да! Всё дело в поле "ЗначенияПолей" (sic!), которое содержит... значения полей! То есть, значения всех остальных полей, у которых есть и свои собственные значения, только в xml формате. Я уже попробовал просто вбить скопированный и подправленный xml, всё загружается. Подробнее инфу можно найти тут: http://forum.aeroion.ru/topic779.html

Спасибо, Дмитрий. Без консоли запросов я бы ещё долго бился бы об это.

Ого! Это что-то новое :)

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

Общая картина:
Есть настроена интеграция, импорт/экспорт
деталь адресса только импорт, экспорт делается через скрипт. Все бы хорошо, записывает в 1С адреса, но поле Code1C пустое и при импорте создается новая запись.
вот часть кода где записывается адресс в 1С:

 var ci1CMain = Param.Obj1C.РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
 var ci1C = ci1CMain.Добавить();
 ci1C.Объект = Select1C.Ссылка;
 ci1C.Тип = metalink;
 ci1C.Вид = !AddressType1CLink.Пустая() ? AddressType1CLink : null;
 ci1CMain.Записать(false);  

пример значения поля:"f90039f8-ce1b-11e4-849f-002590a73b07#//#Адрес#//#87d961a6-9e2f-405c-855e-215869755d34#//#"
первую часть(f90039f8-ce1b-11e4-849f-002590a73b07) я могу получить так: Param.Obj1C.XMLString(Select1C.Ref.UUID()).
а как и где получить это:"87d961a6-9e2f-405c-855e-215869755d34"???

Нравится

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

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

К сожалению - это регистр сведений и в нем нет никакого UID который определит уникальность. Добавьте поле "Значение" и "Тип средства связи" как ключевое, либо перед имопртом очищайте деталь, и загружайте все средства связи по объекту.

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

И снова здравствуйте.

Уже пару дней сражаюсь с проблемой импорта услуг (они же - номенклатуры в 1С) между базами. Совершенно тривиальная синхронизация - Я переношу услуги по их названию, и в интеграции указано тупо:

1С - НаименованиеПолное из справочника Номенклатуры
Террасофт - Услуга (OfferingName) из набора данных Услуги

Спотыкается при попытке отфильтровать (то есть, использовать ApplyDatasetFilter) на поле OfferingNameS1CF (S1CF он добавляет в процессе). Я так понимаю, это баг Террасофта? Есть ли лечение?

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

Нравится

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

Максим, у Вас что поле OfferingName ключевое? Это "плохая" практика :) Проще всего избавиться от этого поля как ключевого - есть ведь UID1C и Object1C.
А вообще сталкивался с таким 2 раза: первый раз помогло следующее:
открыть маппинг этого поля и нажать "ОК", затем открыть настройку самой сущности и также нажать "ОК".
Второй раз это не помогло - создал фильтр вручную в sq (благо он всегда и точно всегда создается с таким именем).

> Максим, у Вас что поле OfferingName ключевое?

Да, поле ключевое.

> Это "плохая" практика :) Проще всего избавиться от этого поля как ключевого - есть ведь UID1C и Object1C.

Интересно. То есть, лучше добавить несколько десятков дубликатов, но с "правильными" UID1C и Object1C, чем привязаться к названию услуги? Я не понимаю, в чём минус такой практики, тут хотелось бы поподробнее.

Насчёт sq фильтра, я видимо не в курсе, как работает фильтр, можно чуть подробнее?

Максим, UID1C - это глобальный идентификатор записи в 1с. Т.е. названия могут и совпадать, а вот UID1C всегда будет разным. Так что во всех сущностях, где есть UID1C (справочник и документы) нет смысла использовать другие ключевые поля кроме UID1C и Object1C.

Жаль, что вопросы про фильтр и плохую практику остались без ответа.

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

Тогда создайте фильтр в ручную: для этого в Террасофт администраторе в SelectQuery продуктов (sq_Offering) добавьте строковый параметр с именем OfferingNameS1CF, и фильтр сравнения OfferingNameS1CF как tbl_Offering.Name = Parameter:OfferingNameS1CF
Перезайдите в Террасофт и проверьте работу.

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

Добрый день!!

Прошу помочь в решении проблемы.
Есть необходимость импортировать данные из таблицы Excel (3 столбца - ФИО, Обращение, e-mail) в Terrasoft.
При осуществлении импорта данных в отчете указано, что импорт завершен, обновлено столько то записей и все.
НО для нас главное, чтобы изменились обращения, которые корректно прописаны в таблице Excel. А они как были неверно указаны в базе, так и остаются.

У нас установлен Terrasoft XRM, версия 3.3.2.292

Прошу помочь в решении данного затруднения!!

Нравится

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

Анастасия, как выполнено сопоставление полей в настройках интеграции?
Вложите, пожалуйста, пример шаблона Excel и файл с настройками интеграции (подойдет демонстрация настроек скриншотом).

Наталия, необходимые документы в прикрепленных файлах.

Анастасия, во вложении прилагаю файл настроек интеграции, который позволит выполнить импорт контактов с обращениями.
Обратите, пожалуйста, внимание - в шаблоне добавлена проверка уникальности по 2-м полям "ФИО" и "Контрагент". Сделано это для того, чтобы проимпортировать контакты с одинаковыми именами.
Вы можете оставить проверку уникальности только по полю "ФИО" либо сочетать со средством связи.
Чтобы применить настройки, достаточно открыть созданную настройку интеграции (либо добавить новую) и вызвать действие "Файл" - "Загрузить настройки из файла".

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

Приветствую.

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

1С - 8.3
Terrasoft - 3.4

Нравится

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

Это вы вручную добавили 8.3 так? Если да - проверьте таблицу tbl_1CObjectTypesByVersions, скорее всего там нет элементов для 8.3. Скопируйте все элементы для 8.2 но для 8.3 :)

Спасибо за ответ.

Для тех, кто столкнётся с проблемой синхронизации с 1C 8.3:

Сначала читать http://www.community.terrasoft.ru/forum/topic/11733

Потом, совет Дмитрия, который означает: выполнить

INSERT INTO tbl_1CObjectTypesByVersions (ObjectTypeID, VersionID)
SELECT ID, ' Здесь ID нового элемента в перечислении enm_1CVersion ' FROM tbl_1CObjectTypes

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

Добрый день.
Делаю настройку экспорта Операций из Террасофта 3.3.2 в РКО в 1С8.
Учитывая, что РКО это документ + табличная часть , то делаю двухуровневую структуру. Отдельно указываю синхронизацию полей документа, отдельно табличной части.
Документ создается. При попытке его открыть в 1С8 выдается ошибка

{Документ.РасходныйКассовыйОрдер.Форма.ФормаДокумента.Форма(569)}: Индекс находится за границами массива
ЭлементыФормы.РасшифровкаПлатежа.ТекущаяСтрока = РасшифровкаПлатежа[0];

В реестре 1С8 визуально видно что такие реквизиты как дата, организация, номер (те, которые первого уровня) заполняются.
Те, которые второго уровня (сумма, курс, сумма взаиморасчетов) пустые. Из-за этого документ в 1С8 и выдает ошибку.

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

Теперь вопросы. Для того, чтобы не перебирать все варианты поиска ошибок самой вручную.
Как правильно писать значения по умолчанию: 'Истина' или без кавычек, '1' или без кавычек ?
Как правильно перенести отрицательную сумму расходной операции в Сумму в РКО 1С, которая там с плюсом ?
Надо ли указывать все поля для синхронизации, даже те, где пустые поля?
Какие еще нюансы надо учесть?

Нравится

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

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

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

NewOffering = Select1C.Товары.Добавить();
NewOffering.Товар = Offering1CLink;
NewOffering.КодТовара = Dataset('Code');
NewOffering.ЕдИзм = Unit1CLink;
NewOffering.Коэффициент = Dataset('Koof');

Как получить ссылку на запись для заполнения ссылочных реквизитов:

 
var Offering1CLink = Param.Obj1C.Справочники.Номенклатура.
	ПолучитьСсылку(UID1C);

где UID1C - это значение колонки UID1C (ID записи 1с) преобразован следующим образом:

UID1C = UID1C.replace('{', '');
UID1C = UID1C.replace('}', '');
UID1C = Param.Obj1C.NewObject('УникальныйИдентификатор', UID1C);
return UID1C;

Подчиненную часть я связала так, как на картинке. Я считала, что это - стандартная функция , именно для этого предусмотренная.

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

Всем привет.

При попытке подключения к базе 1С возникает ошибка "Невозможно создание объекта сервером программирования объектов" при попытке создать объект ActiveX (скрипт scr_Dataflow1CUtils_V81 строка #627 Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector'); ).

Синхронизация стандартная.
1С - 8.3
Terrasoft - 3.4

Нравится

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

Максим, необходимо
а) установить утилиту: http://www.community.terrasoft.ua/system/files/1c_230512.zip
Внутри также есть инструкцию по установке.

б) глобальным поиском найти строку
Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector');

и заменить на

//Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector');
Param.Con1C = new ActiveXObject('V83.ComConnector');

Это если быстро.
А вообще желательно добавить в перечисление enm_1CVersion новый элемент, затем в скрипте scr_DataflowUtils подправить функцию GetScriptObjectByVersion:

function GetScriptObjectByVersion(Param) {
	switch (Param.Version) {
	case 'V82': return scr_Dataflow1CUtils_V80V81V82;
		break;	
	case 'V81': return scr_Dataflow1CUtils_V80V81V82;
		break;
	case 'V8': return scr_Dataflow1CUtils_V80V81V82;
		break;
	case 'V77': return scr_Dataflow1CUtils_V77;
		break;
	default: return scr_Dataflow1CUtils_V80V81V82;
		break;		
	}
}

Дмитрий, спасибо за ответ.

"А вообще желательно добавить в перечисление enm_1CVersion новый элемент"

Какой именно элемент?

"затем в скрипте scr_DataflowUtils подправить функцию GetScriptObjectByVersion"

Это нормально, что в этом скрипте нет такой функции?

Максим, нет, не нормально :)
Вы ставили утилиту с комьюнити? Ставьте :)

Какой именно элемент?

элемент 8.3 - свойства такие же как и в 8.2, только наименование 8.3 :) Это для того, что бы в выпадающем списке появилась версия 8.3. А вот в функции уже будет прописано, что если выбрано 8.3. то создавать COM-объект с именем V83.ComConnector, а не V82 (или V81 и т.д.).
Если что не понятно - спрашивайте.

> Вы ставили утилиту с комьюнити? Ставьте :)

Я поставил. Этой функции нет ни в ней, ни в оригинале. Вот их дифф (оригинальный - слева): https://www.diffchecker.com/8scqezvu . Простым поиском можно убедиться, что функции нет.

> элемент 8.3 - свойства такие же как и в 8.2, только наименование 8.3 :) Это для того, что бы в выпадающем списке появилась версия 8.3. А вот в функции уже будет прописано, что если выбрано 8.3. то создавать COM-объект с именем V83.ComConnector, а не V82 (или V81 и т.д.).

Как-то вы противоречите сами себе. Разве это не предполагает, что Param.Version должен быть V83 ? Тогда, учитывая что свойства такие же, как у 8.2, откуда оно возникнет?

Опытным путём установил, что файл не scr_DataflowUtils, а scr_Dataflow1CUtils. Функция в нём такая же, что и у вас в сноске.

В общем, после всех изменений, ошибка та же.

Максим, поставьте отладчик перед строкой:

Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector');

и посмотрите что у вас за значение в переменной Param.Version. Если V82 - значит что-то сделали не так (должно быть V83).
В крайнем случае замените эту строку на

Param.Con1C = new ActiveXObject('V83.ComConnector');

Если и далее будет воспроизводится ошибка, значит у вас в Windows не зарегистрирован COM - объект 1С. Запустите файл Comcntr.dll в папке bin с установленной 1с от имени regsrv32.exe

Да, заработало, спасибо.

Добрый день.
Возник вопрос: Для чего нужна утилита 1С, добавленная выше, и обязательно ли ее устанавливать при переходе на 8.3?

Добрый.
Утилита необходима для интеграции с 1с 8.2. А в этом топике мы обсуждали те мелкие моменты, которые необходимо выполнить чтобы её доработать для интеграции с 1с 8.3.

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

Никак не могу присоединится к 1с.
Изменила scr_Dataflow1CUtils как описано в статье https://community.terrasoft.ua/forum/topic/5359
Заполнила свойства интеграции, но тест соединения заканчивается ошибкой:
"Невозможно создание объекта сервером программирования объектов"
Нужно узнать где происходит сбой,на сервере, в 1с или в Terrasoft
Версия 1с 8.2, Terrasoft XRM Distribution+Service Desk 3.4

Нравится

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

Если у вас в списке не было 8.2 - необходимо сперва установить утилиту интеграции. Скачать её можно по ссылке: http://www.community.terrasoft.ua/system/files/1c_230512.zip
Внутри также есть инструкцию по установке.

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