Как при импорте данных из 1С сделать так, чтобы один из контрагентов 1С соответствовал контрагенту TS "Ваша компания"?
пробовал так:

function OnBeforeRecordImport(Param, Dataset, Select1C) {
        if (Param.Obj1C.String(Select1C.Наименование) == 'МойКонтрагент') {
                 Dataset.Values('ID') = '{E308B781-3C5B-4ECB-89EF-5C1ED4DA488E}';
        }
}

а при импорте подчиненных данных (платежные реквизиты):
        if (Param.Obj1C.String(Select1C.QueryLink.Владелец.Наименование) == 'МойКонтрагент') {
                 ShowInformationDialog(Param.Obj1C.String(Select1C.QueryLink.Владелец.Наименование));
                 Dataset.Values('AccountID') = '{E308B781-3C5B-4ECB-89EF-5C1ED4DA488E}';
        }

где {E308B781-3C5B-4ECB-89EF-5C1ED4DA488E} - ID в TS контрагента "Ваша компания".
Вот как раз проблема получилась с платежами, они не импортировались так, как нужно.
И потом есть другие данные которые импортируются и в них есть поле контрагента. Как можно решить это более глобально?

Нравится

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

1) Для строковых реквизитов 1С не обязательно использовать функцию Param.Obj1C.String()
можно просто так: Select1C.Наименование == 'МойКонтрагент'

2) Скорей всего ключевые поля при импорте контрагентов у вас UID1C и Object1С.
Вам всего лишь нужно заполнить их.
Для этого нужно узнать UUID вашего контрагента:

   if (Trim(Select1C.Наименование) == 'МойКонтрагент') {
      Log.Write(1, Param.Obj1C.XMLString(Select1C[QueryLink].UUID()));
      // или так Log.Write(1, Param.Record1CID);
   }

И обновить вашу запись в БД:

UPDATE tbl_Account SET UID1C = '{13123123123-312312312-312312}', Object1C = 'Справочник.Контрагенты' WHERE ID = '{E308B781-3C5B-4ECB-89EF-5C1ED4DA488E}'

Спасибо. Сделал немного не так.
1. Обновил запись в БД
2. При обновлении данной записи устанавливаю имя контрагента по-умолчанию (иначе слетит лицензия)

function OnBeforeRecordImport(Param, Dataset, Select1C) {
    if (Dataset.Values('ID') == '{E308B781-3C5B-4ECB-89EF-5C1ED4DA488E}') {
        Dataset.Values('Name') = 'Ваша компания';
    }
}

Можно в настройке соответствия полей, у поля "Наименование" снять галочку "изменять значение поля" - в результате при обновлении записи в ТС это поле не будет изменяться

Можно, но ведь первый раз это поле заполнять надо )))

При добавлении новой записи в ТС, это поле изменится в первый и последний раз.

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