Помогите разрешить кое какую проблему с выгрузкой 1с. Как известно, в террасофте есть возможность выгрузки контрагентов в 1с. В базе данных имеются соответственно поля ...Объект1с УИД1с и конечно же Код1С. Так вот, все это работает.НО! для одной базы 1с. Есть необходимость выгружать одного контрагента в две базы данных. То есть Либу туда либо сюда, а может даже в обе. Как можно решить данную проблему? Ведь в полях Контрагентов(tbl_Account) есть место только для одной базы... Ну допустим я хочу выгрузитьь и туда и сюда..В поле UID1C соответственно запишется ID объекта 1с либо с той либо с иной базы данных. Как быть помогите пожалуйста! Начальство требует!
Я вижу пока только 2 варианта:
1) Создать поля Code1C, Object1C, UID1C для второй базы, т.е. Code1CBase2 и т.д. и перенастроить интеграцию с одной из баз на них.
2) Забыть про все эти поля и действовать через универсальное поле, такое как ИНН.
Да, именно по первому варианту и хотел сделать.Добавил поля. Даже сделал выгрузку. Теперь , могу присвоить код. Но никак не могу понять где и как он заполняет поля UID1C и Object1C. Поискал в Администраторе. Нашел только огромную тучу стандартных скриптов, и то прототипы.. А где и как присваивается - непонятно.
А разве не просто в интеграции на настройке полей? По моему там же где и настраиваются все другие поля, просто они по умолчанию сразу проставляются на Code1C и Object1C, надо их просто на свои поменять.
Или я что-то не догоняю?
А еще я знаю не всю структуру и где менять.Сейчас наткнулся на таблицу AccountBillingInfo там тоже есть Коды 1с И УИДы1С.. И там дублировать получается.. Че то как то все через..
В scr_Dataflow1CConsts описаны поля связанные с 1С:
var KeyFieldName1C ='UID1C';
var KeyFieldName1CCaption ="UID записи в 1C";
var KeyCodeFieldName1C ='Code1C';
var KeyCodeFieldName1CCaption ="Код записи в 1C";
var KeyDateFieldName1C ='Date1C';
var KeyDateFieldName1CCaption ="Дата синхронизации записи с 1C";
var KeyObjectName1C ='Object1C';
var KeyObjectName1CCaption ="Объект 1C";
А их присвоение идет в scr_Dataflow1CUtils.
Например UID1C:
Александ конечно предложил интересный и правильный метод решения. В своем сообщение я только дополню и приведу пример Функции OnBeforeRecordImport в части получения из 1С и присвоения в Террасофте полей UID1C и Object1C. Пример получения UID1C и Object1C Справочника 1С "Организации":
function ParseUUIDtoGUID(input){
var TrimResult = Trim(input.toString());
var Result = TrimResult.toUpperCase().replace(/^[\s\r\n]+|[\{\}]|[\s\r\n]+$/g, "");if((/[A-F0-9]{8}\-[A-F0-9]{4}\-[A-F0-9]{4}\-[A-F0-9]{4}\-[A-F0-9]{12}/).test(Result)){return Result;}else{return null;}}
function OnBeforeRecordImport(Param, Dataset, Select1C){
...
var GUID1C = ParseUUIDtoGUID(Param.Obj1C.String(Select1C.Организация.Ссылка.UUID()));if(!IsEmptyValue(GUID1C)){
GUID1C ='{'+ GUID1C +'}';}
...
TestDS.Values('UID1C')= GUID1C;
TestDS.Values('Object1C')= Select1C.Организация.Ссылка.Метаданные().ПолноеИмя();
...
}