Непонятная работа скрипта с 1С

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

function OnBeforeRecordImport(Param, Dataset, Select1C) {

var Account = Select1C[QueryLink].Владелец.Код; //вытаскиваем код владельца счета
var AccountID = GetDatasetFieldValueFromDatasetByUSI('ds_Account','Code1C',Account,'ID'); //вытаскиваем наш ID контрагента по этому счету
var AccountName = GetDatasetFieldValueFromDatasetByUSI('ds_Account','Code1C',Account,'Name'); // еще и наименование
var RSN = Select1C[QueryLink].Номер; //номер Р/C
var Bank = Select1C[QueryLink].БанкОрганизации.Код; //код банка
var BankID = GetDatasetFieldValueFromDatasetByUSI('ds_Bank','Code1C',Bank,'ID'); // наш ID банка по коду
var INN_KPP = Select1C[QueryLink].Владелец.ИНН; //ИНН_КПП
var INN = INN_KPP.substr(0,9);
var KPP = INN_KPP.substr(11,10); // парсим ИНН и КПП
var Description = Select1C[QueryLink].Наименование; //Описание счета пихаем в дескрипшн
var Name = Select1C[QueryLink].Владелец.Наименование;

Dataset('CountryID') = '{DE315AF9-5694-44DF-988C-633933E856F3}';
Dataset('AccountID') = AccountID;
Dataset('BankID') = BankID;
Dataset('RSN') = RSN;
Dataset('INN') = INN;
Dataset('KPP') = KPP;
Dataset('Description') = Description;
Dataset('Name') = Name;
}

Вставлял окошки с выводом на коды, на ID контрагентов - вроде все правильно работает, но по факту в таблицу tbl_accountbillinginfo влетают записи с одним и тем же AccountID. Немного непонятно как это происходит.
PS: Как можно организовать вывод в консоль? Неудобно для отслеживания состояния переменных ShowInformationDialog использовать )

Нравится

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

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

Для вывода информации в консоль используйте

Log.Write(1, 'тест в лог'); // 1 - цвет для warning, синий, 2 -цвет ошибок, красный, 0 - простой текст

Количество записей совпадает с источником ?

Не совсем понятен вопрос - количество каких записей? До конца я по всей базе скрипт не прогонял, там тысячи записей, смотрю по журналу изменений БД и по результату который выдает sq_accountbillinginfo.
Со стороны 1С иду по справочнику "Расчетные счета" - их меньше чем контрагентов в целом, плюс есть контрагенты с несколькими счетами.

Попробуйте, до присвоения значений датасету написать

...
Dataset.DisableEvents();
Dataset('CountryID') = '{DE315AF9-5694-44DF-988C-633933E856F3}';
Dataset('AccountID') = AccountID;
Dataset('BankID') = BankID;
Dataset('RSN') = RSN;
Dataset('INN') = INN;
Dataset('KPP') = KPP;
Dataset('Description') = Description;
Dataset('Name') = Name;
Dataset.EnableEvents();
...

Ок, совместно удалось разрешить проблему - из настроек синхронизации удалил появляющиеся там по дефолту соответсвия Code1C и Object1C и записи начали нормально добавлятся. Спасибо!

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