Добрый день.
Делаю настройку экспорта Операций из Террасофта 3.3.2 в РКО в 1С8.
Учитывая, что РКО это документ + табличная часть , то делаю двухуровневую структуру. Отдельно указываю синхронизацию полей документа, отдельно табличной части.
Документ создается. При попытке его открыть в 1С8 выдается ошибка
{Документ.РасходныйКассовыйОрдер.Форма.ФормаДокумента.Форма(569)}: Индекс находится за границами массива
ЭлементыФормы.РасшифровкаПлатежа.ТекущаяСтрока = РасшифровкаПлатежа[0];
В реестре 1С8 визуально видно что такие реквизиты как дата, организация, номер (те, которые первого уровня) заполняются.
Те, которые второго уровня (сумма, курс, сумма взаиморасчетов) пустые. Из-за этого документ в 1С8 и выдает ошибку.
Смотрю логи синхронизации в Террасофте. Там видно на детали история, что первый уровень экспортируется, а второй - выдает ошибку.
На скриншотах видно, какие поля я синхронизировала.
Там где поля пустые отражаются, там я заполняла не соответствия полей, а значения по умолчанию.
Теперь вопросы. Для того, чтобы не перебирать все варианты поиска ошибок самой вручную.
Как правильно писать значения по умолчанию: 'Истина' или без кавычек, '1' или без кавычек ?
Как правильно перенести отрицательную сумму расходной операции в Сумму в РКО 1С, которая там с плюсом ?
Надо ли указывать все поля для синхронизации, даже те, где пустые поля?
Какие еще нюансы надо учесть?
Нравится
Виктория, все поля указывать не нужно в маппинге. Указываете только те, которые вам необходимы для экспорта.
Не понятно какая ошибка у вас возникает. Также не понятно по какому полю Вы связали родительскую запись и подчиненную, через 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;
Подчиненную часть я связала так, как на картинке. Я считала, что это - стандартная функция , именно для этого предусмотренная.