0
Baglandir
22.01.13
✎
12:17
|
Есть код
ВремРС=Новый COMОбъект("ADODB.Recordset");
ВремРС.CursorLocation=3;
Макет=ПолучитьМакет(ИмяМакета);
Если вСРСзаписать Тогда
// для срс дату менять на "ДФ=ггггММдд"
// и эти два поля первые
// а в тз передвинуть поля до вызова процедуры
// т.к. здесь не получится в разных таблицах разные
ВремРС.Fields.Append("DocType", 3);
ВремРС.Fields.Append(ПолеДатаСРС, 202,200);
КонецЕсли;
Для Ном = 1 По Макет.ВысотаТаблицы Цикл
ИмяПоля = Макет.Область(Ном, 1).Текст;
ИмяПоля = стрзаменить(ИмяПоля,"]","");
ИмяПоля = стрзаменить(ИмяПоля,"[","");
Если вСРСзаписать и (ИмяПоля = ПолеДатаСРС или ИмяПоля = "DocType")Тогда
продолжить;
КонецЕсли;
ТипПоля = Макет.Область(Ном, 2).Текст;
ЕстьДлинаПоля = найти(ТипПоля,"(");
ДлинаПоля="0";
Если ЕстьДлинаПоля > 0 Тогда
ДлинаПоля = Сред(ТипПоля ,ЕстьДлинаПоля+1);
ДлинаПоля = лев(ДлинаПоля ,стрдлина(ДлинаПоля )-1);
ТипПоля = лев(ТипПоля ,ЕстьДлинаПоля-1);
КонецЕсли;
СтрокаТипаПоля=НомераТиповПолей.Найти(нрег(ТипПоля), "ИмяТипаПоля");
Если не СтрокаТипаПоля=Неопределено Тогда
ТипПоля=СтрокаТипаПоля.ТипПоляЧисло;
иначе
сообщить("не нашли тип поля "+ИмяМакета+" "+нрег(ТипПоля));
КонецЕсли;
Если ДлинаПоля="0" и ТипПоля="202" Тогда
ДлинаПоля="200";
КонецЕсли;
Если не ДлинаПоля="0" тогда
ВремРС.Fields.Append(ИмяПоля, ТипПоля, ДлинаПоля);
иначе
Попытка
ВремРС.Fields.Append(ИмяПоля, ТипПоля);
Исключение
сообщить("ИмяПоля "+ИмяПоля+ " "+ном+" "+ТипПоля+" "+ИмяМакета+" "+описаниеошибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
ВремРС.Open();
Для каждого стр Из таблица Цикл
ОбработкаПрерыванияПользователя() ;
ВремРС.AddNew();
До определенного времени работало нормально ,
с начала нового года - начало выдавать ошибку при вызове ВремРС.AddNew() "недостаточно памяти"
Если у когото есть хоть какието идею буду благодарен .
|
|