Добрый день.
Делаю настройку экспорта Операций из Террасофта 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;

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

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