Имя: Пароль:
1C
 
Как открыть ДБФ на запись?
0 Platon
 
21.10.04
10:40
Надо сделать изменение в существующем файле ДБФ но при запуске обработки выдаётся ошибка 210
ДБФ.УстановитьЗначениеПоля(ДБФ.NUM,тз.Номер);
{E:\1C\MYREP\РАБОТА С ДВУМЯ ДБФКАМИ.ERT(39)}: Перед выполнением операции установите объект на запись!
ДБФ.УстановитьЗначениеПоля(ДБФ.NUM,тз.Номер);
{E:\1C\MYREP\РАБОТА С ДВУМЯ ДБФКАМИ.ERT(39)}: Перед выполнением операции установите объект на запись!
ДБФ.УстановитьЗначениеПоля(ДБФ.NUM,тз.Номер);
{E:\1C\MYREP\РАБОТА С ДВУМЯ ДБФКАМИ.ERT(39)}: Недопустимый номер поля!

Вот код Обработки

Перем Каталог;
Перем ИмяФайла;
Перем Каталог2;
Перем ИмяФайла2;
Перем стр;
//*******************************************
Процедура Сформировать()
  стр=0;
  тз=СоздатьОбъект("ТаблицаЗначений");
  тз.НоваяКолонка("Код");
  тз.НоваяКолонка("Номер");
  тз.УдалитьСтроки();
  ДБФ = СоздатьОбъект("XBase");
  ДБФ2 = СоздатьОбъект("XBase");
  ИмяФайла = СокрЛП(ВыбФайл);
  ИмяФайла2 = СокрЛП(ВыбФайл2);
  Если (ФС.СуществуетФайл(ИмяФайла) = 0) или (ФС.СуществуетФайл(ИмяФайла) = 0)Тогда
      Предупреждение("Файл не найден " + ИмяФайла);
      Возврат
  КонецЕсли;
   
  ДБФ2.ОткрытьФайл(ИмяФайла2);
  Для i=1 По ДБФ2.КоличествоЗаписей() Цикл
      ДБФ2.Перейти(i);
      тз.НоваяСтрока();
      тз.Код=СокрЛП(ДБФ2.KOD);
      тз.Номер=СокрЛП(ДБФ2.NUM);
      Состояние("Заполняем промежуточную таблицу "+i);
  КонецЦикла;
  ДБФ2.ЗакрытьФайл();

  ДБФ.ОткрытьФайл(ИмяФайла,,0);// открыть на запись
  Если ДБФ.Открыта=1 Тогда
      Для i=1 По ДБФ.КоличествоЗаписей() Цикл
          ДБФ.Перейти(i);
           
          Если тз.НайтиЗначение(СокрЛП(ДБФ.KOD),стр,"Код")=1 Тогда
              тз.ПолучитьСтрокуПоНомеру(стр);
              ДБФ.УстановитьЗначениеПоля(ДБФ.NUM,тз.Номер);
              стр=0;
          КонецЕсли;
           
          ДБФ.Записать();
      КонецЦикла;
      ДБФ.ЗакрытьФайл();
  КонецЕсли;
   
КонецПроцедуры
1 Rovan
 
гуру
21.10.04
10:41
Либо
ДБФ.NUM = тз.Номер;
Либо
ДБФ.УстановитьЗначениеПоля("NUM",тз.Номер);
2 Platon
 
21.10.04
10:42
Всё я уже нашёл ошибку
ДБФ.УстановитьЗначениеПоля(ДБФ.NUM,тз.Номер); //неправильно
ДБФ.УстановитьЗначениеПоля("NUM",тз.Номер); // правильно

Волшебник Извиняюсь
3 Волшебник
 
21.10.04
10:46
(2) С нормальной темой ты БЫСТРЕЕ решишь свою проблему. А слова "Срочно", "помогите", куча восклицательных и вопросительных знаков только отнимают время и мешают восприятию.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn