Мой код:
Функция ПодготовитьТекстЗапроса(пТекстЗапроса)
мИмяТаблицыМногострочнойЧастиДокумента = "_dt1859";
мИмяТаблицыМногострочнойЧасти = "_dt1859_x";
мИмяИндексаТаблицыМногострочнойЧасти = "PK_dt1859_x";
лТекстЗапроса = пТекстЗапроса;
лТекстЗапроса = СтрЗаменить(лТекстЗапроса, "$ДокументСтроки.Таблица.Реквизит", "$ДокументСтроки.ВыгрузкаДанных");
лТекстЗапроса = СтрЗаменить(лТекстЗапроса, "$ДокументСтроки.Таблица.Таблица", мИмяТаблицыМногострочнойЧасти);
лТекстЗапроса = СтрЗаменить(лТекстЗапроса, "$ДокументСтроки.Таблица.Индекс", мИмяИндексаТаблицыМногострочнойЧасти);
лТекстЗапроса = СтрЗаменить(лТекстЗапроса, "$ДокументСтроки.ТаблицаДокумента", мИмяТаблицыМногострочнойЧастиДокумента);
Возврат лТекстЗапроса;
КонецФункции
Функция ЗаписатьТаблица_УдалитьСтроки(пТекущийДокумент)
пРС = СоздатьОбъект("ODBCRecordset");
пРС.УстановитьТекстовыйПараметр("ТЧ_ГУИД", пТекущийДокумент.ГУИД);
лТекстЗапроса = "DELETE FROM $ДокументСтроки.Таблица.Таблица WHERE $ДокументСтроки.Таблица.Реквизит.ТЧ_ГУИД = :ТЧ_ГУИД";
лТекстЗапроса = ПодготовитьТекстЗапроса(лТекстЗапроса);
лРез = пРС.Выполнить(лТекстЗапроса);
Если лРез <> 1 Тогда
Предупреждение("Ошибка при записи документа!" + РазделительСтрок + пРС.ПолучитьОписаниеОшибки());
Возврат 0;
КонецЕсли;
Возврат 1;
КонецФункции
Функция ЗаписатьТаблица_ПоЗаписям()
лВремяНачалоДействия = _GetPerformanceCounter();
Мета = СоздатьОбъект("MetaDataWork");
рс = СоздатьОбъект("ODBCRecordset");
лТекущийДокумент = мКонтекст.ТекущийДокумент();
//Сообщить("Удаляем строки");
ЗаписатьТаблица_УдалитьСтроки(рс, лТекущийДокумент);
лТекстЗапроса = "insert into $ДокументСтроки.Таблица.Таблица (
|
|iddoc,
|LINENO_,
|
|$ДокументСтроки.Таблица.Реквизит.ТЧ_ГУИД,
|$ДокументСтроки.Таблица.Реквизит.id,
|$ДокументСтроки.Таблица.Реквизит.address,
|$ДокументСтроки.Таблица.Реквизит.Адрес,
|$ДокументСтроки.Таблица.Реквизит.Область,
|$ДокументСтроки.Таблица.Реквизит.Город,
|$ДокументСтроки.Таблица.Реквизит.Улица,
|$ДокументСтроки.Таблица.Реквизит.ЕстьУлица,
|$ДокументСтроки.Таблица.Реквизит.Дом,
|$ДокументСтроки.Таблица.Реквизит.ЕстьДом,
|$ДокументСтроки.Таблица.Реквизит.МногоквартирныйДом,
|$ДокументСтроки.Таблица.Реквизит.ДомНулеваяСтрока,
|$ДокументСтроки.Таблица.Реквизит.Квартира,
|$ДокументСтроки.Таблица.Реквизит.КвартираНулеваяСтрока,
|$ДокументСтроки.Таблица.Реквизит.НеУказанаКвартираВМногоквартирномДоме,
|$ДокументСтроки.Таблица.Реквизит.ЕстьКвартира,
|$ДокументСтроки.Таблица.Реквизит.Физлицо,
|$ДокументСтроки.Таблица.Реквизит.ПризнакФизлица)
|
|values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
лТекстЗапроса = ПодготовитьТекстЗапроса(лТекстЗапроса);
рс.ДобПараметр(1,14,9,0);
рс.ДобПараметр(1,3,0,0);
рс.ДобПараметр(1,14,50,0);
рс.ДобПараметр(1,14,10,0);
рс.ДобПараметр(1,14,100,0);
рс.ДобПараметр(1,14,512,0);
рс.ДобПараметр(1,14,99,0);
рс.ДобПараметр(1,14,99,0);
рс.ДобПараметр(1,14,99,0);
рс.ДобПараметр(1,14,1,0);
рс.ДобПараметр(1,14,10,0);
рс.ДобПараметр(1,4,1,0);
рс.ДобПараметр(1,4,1,0);
рс.ДобПараметр(1,4,1,0);
рс.ДобПараметр(1,14,10,0);
рс.ДобПараметр(1,4,1,0);
рс.ДобПараметр(1,4,1,0);
рс.ДобПараметр(1,4,1,0);
рс.ДобПараметр(1,14,9,0);
рс.ДобПараметр(1,4,1,0);
рс.Подготовить(лТекстЗапроса);
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
//Сообщить("НомерСтроки: " + ТЗ.НомерСтроки);
//Сообщить("Запись строки документа: " + ТЗ.НомерСтроки + " " + ТЗ.НомерСтроки());
Состояние("Запись строки документа: " + ТЗ.НомерСтроки);
рс.УстПараметр(1, лТекущийДокумент);
рс.УстПараметр(2, ТЗ.НомерСтроки);
рс.УстПараметр(3, мКонтекст.ГУИД);
рс.УстПараметр(4, ТЗ.id);
рс.УстПараметр(5, ТЗ.address);
рс.УстПараметр(6, ТЗ.Адрес);
рс.УстПараметр(7, ТЗ.Область);
рс.УстПараметр(8, ТЗ.Город);
рс.УстПараметр(9, ТЗ.Улица);
рс.УстПараметр(10, ТЗ.ЕстьУлица);
рс.УстПараметр(11, ТЗ.Дом);
рс.УстПараметр(12, ТЗ.ЕстьДом);
рс.УстПараметр(13, ТЗ.МногоквартирныйДом);
рс.УстПараметр(14, ТЗ.ДомНулеваяСтрока);
рс.УстПараметр(15, ТЗ.Квартира);
рс.УстПараметр(16, ТЗ.КвартираНулеваяСтрока);
рс.УстПараметр(17, ТЗ.ЕстьКвартира);
рс.УстПараметр(18, ТЗ.НеУказанаКвартираВМногоквартирномДоме);
рс.УстПараметр(19, ТЗ.Физлицо);
рс.УстПараметр(20, ТЗ.ПризнакФизлица);
//Сообщить("тип значения ""квартира"":" + ТипЗначенияСтр(ТЗ.Квартира));
//Сообщить("тип значения ""адрес распознан"":" + ТипЗначенияСтр(ТЗ.АдресРаспознан));
лРез = 0;
Попытка
рс.ВыполнитьСкалярный();
лРез = 1;
Исключение
КонецПопытки;
Если лРез <> 1 Тогда
Предупреждение("Ошибка при записи документа!" + РазделительСтрок + рс.ПолучитьОписаниеОшибки());
Возврат 0;
КонецЕсли;
КонецЦикла;
лВремяКонецДействия =_GetPerformanceCounter();
лВремяДействия = лВремяКонецДействия - лВремяНачалоДействия;
лВремяДействияВСек = лВремяДействия / 1000;
Сообщить("Время записи таблицы документа построчно: " + лВремяДействияВСек + "с");
Возврат 1;
КонецФункции