helpf.pro
Регистрация

v8.2 УП: Ошибка индексного файла

Ponomarenko
09.04.2012 09:01Прочитано: 4673
Здравствуйте. У нас УПП 8.2 .Программа работает в Демке, ошибок не выдает. Делает все нормально. Запускаю обработку на сервере , на сети, выдает ошибку.
{Обработка.ДозагрузкаНоменклатуры.Форма.Форма.Форма(15)}: Ошибка при вызове метода контекста (СоздатьИндексныйФайл)
ФлИБД = БД.СоздатьИндексныйФайл("C:\index.cdx");
по причине:
Перед выполнением операции нужно открыть базу


Подскажите где у меня ошибка.
Код 1C v 8.2 УП
 
Процедура ВыполнитьЗапросСервер()
Спр = Справочники.Номенклатура.ВыбратьИерархически();
СпрВидыНоменклатуры=Справочники.ВидыНоменклатуры.Выбрать();
СпрНоменклатурныеГруппы=Справочники.НоменклатурныеГруппы.Выбрать();
БД = Новый XBase;
БД.ОткрытьФайл("C:\Nomenk.DBF");
БД.Индексы.Добавить("IDXCODE", "KOD");
ФлИБД = БД.СоздатьИндексныйФайл("C:\index.cdx");
БД.ТекущийИндекс = БД.Индексы.IDXCODE;
БД.Первая();
//БД.Перейти(17166);
Пока БД.Следующая() Цикл
//сообщить("текущая "+БД.KOD);

// РезультатПоиска.НаименованиеПолное=БД.POLN_NAME;
// //*************************
//РезультатПоиска.Записать();
//************************************
РезультатПоиска1 = Справочники.НоменклатурныеГруппы.НайтиПоКоду(БД.ZAKAZ);
Если РезультатПоиска1.Пустая() Тогда
// Выполнить действия, предусмотренные в случае, когда элемент не найден.
//сообщить("не нашла "+БД.KOD);
иначе
//сообщить(РезультатПоиска1);
Если РезультатПоиска1.ЭтоГруппа<>Истина Тогда
элементОбъект1 = РезультатПоиска1.ПолучитьОбъект();
КонецЕсли;
КонецЕсли;
//************************************
РезультатПоиска2 = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(БД.VID_NOMEKL);
Если РезультатПоиска2.Пустая() Тогда
// Выполнить действия, предусмотренные в случае, когда элемент не найден.
//сообщить("не нашла "+БД.KOD);
иначе
Если РезультатПоиска2.ЭтоГруппа<>Истина Тогда
элементОбъект2 = РезультатПоиска2.ПолучитьОбъект();
КонецЕсли;
КонецЕсли;
//************************************
РезультатПоиска = Справочники.Номенклатура.НайтиПоКоду(БД.KOD);
Если РезультатПоиска.Пустая() Тогда
// Выполнить действия, предусмотренные в случае, когда элемент не найден.
сообщить("не нашла "+БД.KOD);
иначе
Если РезультатПоиска.ЭтоГруппа<>Истина Тогда
элементОбъект = РезультатПоиска.ПолучитьОбъект();
элементОбъект.НаименованиеПолное=БД.POLN_NAME;

элементОбъект.НоменклатурнаяГруппа=РезультатПоиска1;

элементОбъект.ВидНоменклатуры=РезультатПоиска2;
сообщить(БД.KOD+" элементОбъект= "+элементОбъект+" элементОбъект1= "+РезультатПоиска1+" элементОбъект2= "+РезультатПоиска2 );

элементОбъект.Записать();

КонецЕсли;
КонецЕсли;


КонецЦикла;
БД.ЗакрытьФайл();

КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
09.04.2012 10:55Ответ № 1
Вот рабочий код:
Код 1C v 8.х
 // Перекачка справочника "Подразделение" в DBF-файле

ФайлБД=КаталогИмя+"Spr_podr."; // Название файла без расширения
xБД=Новый Файл(ФайлБД+"dbf"); // Создание объекта файла в среде 1С

// Удалить, если файлы уже есть (в том числе и индексный файл)
Если xБД.Существует() Тогда
УдалитьФайлы(ФайлБД,"*");
КонецЕсли;

// Создание файлов
xБД = Новый XBase; // создание объекта файла формата xBase
// добавим поля
xБД.Поля.Добавить("Id", "S", 5);
xБД.Поля.Добавить("Name", "S", 25);
xБД.СоздатьФайл(ФайлБД+"dbf"); // создадим реальный файл из объекта
// Индексное выражение
ИндВр="Id";
xБД.индексы.Добавить("Id",ИндВр,Истина);
ИБД = xБД.СоздатьИндексныйФайл(ФайлБД+"cdx"); // создание индексного файла
xБД.АвтоСохранение=Истина;
xБД.ЗакрытьФайл();

// Выкачка данных
xБД.ОткрытьФайл(ФайлБД+"dbf",ФайлБД+"cdx");
xБД.ТекущийИндекс = xБД.индексы.Id;
Выборка=Справочники.Подразделения.Выбрать();
Пока Выборка.Следующий() Цикл
xБД.Добавить();
xБД.ID=Выборка.Код;
xБД.Name=Выборка.Наименование;
xБД.Записать();
КонецЦикла;
xБД.ЗакрытьФайл();

// проверка работы индекса
xБД.ОткрытьФайл(ФайлБД+"dbf",ФайлБД+"cdx");
xБД.ТекущийИндекс = xБД.индексы.Id;
Если xБД.Найти("00003",">=") Тогда
Сообщить(xБД.ID+" - "+xБД.NAME);
Пока xБД.Следующая() Цикл
Сообщить(xБД.ID+" - "+xБД.NAME);
КонецЦикла;
КонецЕсли;
xБД.ЗакрытьФайл();
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.