Имя: Пароль:
1C
1С v8
Как загружать с каталога фалы dbf с именем заканчивающимся на "d1" и "d2"
0 Taffy
 
04.06.12
10:20
Подскажите пожалуйста,правильно или нет??
КаталогФайла = "F:\ExportCRM on report\"+Каталог+"\";
   МассивФайлов = НайтиФайлы(КаталогФайла,"*.dbf");
   
       Для каждого ФайлДБФ Из МассивФайлов Цикл
           ИмяФайла = ФайлДБФ.Имя;
           Если ВРег(Прав(ИмяФайла,1)) = "d1" ИЛИ ВРег(Прав(ИмяФайла,1)) = "d2" Тогда    
   ДБФ = Новый XBase;
       ДБФ.ОткрытьФайл(ПутьКФайлу);
       ДБФ.Кодировка=КодировкаXBase.OEM;
       //Проверка на наличие записей
   Если ДБФ.КоличествоЗаписей() = 0 Тогда
       Сообщить("Файл данных пуст");
       ДБФ.ЗакрытьФайл();
       //Возврат                      
   КонецЕсли;
1 0_Serg_0
 
04.06.12
10:21
нет
2 butterbean
 
04.06.12
10:23
(0) как Прав(...,1) может быть равно "d1" или "d2"?? и тем более Врег()
3 Taffy
 
04.06.12
10:23
а как надо?
4 Kavar
 
04.06.12
10:24
для начла

НайтиФайлы(КаталогФайла,"*d?.dbf")
5 Kavar
 
04.06.12
10:25
А потом
Если (Прав(ИмяФайла,1)) = "1" ИЛИ (Прав(ИмяФайла,1)) = "2" Тогда
6 Taffy
 
04.06.12
10:31
спасибо!
7 Taffy
 
04.06.12
11:15
Можно еще вопрос?как загрузить в один документ "счет на оплату покупателю"-данные из 3 разных dbf?Когда выгружались все данные в один dbf делала так:


ДБФ = Новый XBase;
     ДБФ.ОткрытьФайл(ПутьКФайлу);
     ДБФ.Кодировка=КодировкаXBase.OEM;
     //Проверка на наличие записей
  Если ДБФ.КоличествоЗаписей() = 0 Тогда
     Сообщить("Файл данных пуст");
     ДБФ.ЗакрытьФайл();
     //Возврат                    
  КонецЕсли;
       //Переходим на первую строку файла
   ДокСчет=Документы.СчетНаОплатуПокупателю;    
   ДБФ.Первая();
   ПредыдущийНомер = 0;
     Док=Неопределено;
 
   Пока Истина Цикл

   //Создадим новый документ
         
     ТекущийНомер=ДБФ.NUMBERD;
    Дата=ДБФ.DATE;
     Если ТекущийНомер <> ПредыдущийНомер  Тогда
       
        //записываем предыдущий документ
     Если Док<>Неопределено тогда
        Док.Записать();
     КонецЕсли;  
     
   Если ДокСчет.НайтиПоНомеру(ТекущийНомер,Дата)=ДокСчет.ПустаяСсылка() тогда
       //переходим к следующему документу
   
     Док = ДокСчет.СоздатьДокумент();
     НовыйДокумент=Истина;    
     Док.Номер= СокрЛП(ДБФ.NUMBERD);
     Док.Дата = Дата;
     Док.Организация = Справочники.Организации.НайтиПоНаименованию(СокрЛП(ДБФ.ORG));
     Док.ВалютаДокумента =Справочники.Валюты.НайтиПоНаименованию(СокрЛП(ДБФ.VALD));
     Док.Контрагент=Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(ДБФ.KONTR));
     Док.СтруктурнаяЕдиница = Справочники.БанковскиеСчета.НайтиПоНаименованию(СокрЛП(ДБФ.NAMEBS));        
     ДоговорКонтрагента=Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
     ДоговорКонтрагента.Владелец = Док.Контрагент.Ссылка;
     ДоговорКонтрагента.Наименование = СокрЛП(ДБФ.NAMED);
     ДоговорКонтрагента.Номер = СокрЛП(ДБФ.NUMBER);
     ДоговорКонтрагента.ВидДоговора = Вычислить("Перечисления.ВидыДоговоровКонтрагентов."+СокрЛП(ДБФ.VID));
     ДоговорКонтрагента.Дата = СокрЛП(ДБФ.DATED);
     ДоговорКонтрагента.ВалютаВзаиморасчетов=Справочники.Валюты.НайтиПоНаименованию(СокрЛП(ДБФ.VAL));
     ДоговорКонтрагента.Организация =Справочники.Организации.НайтиПоНаименованию(СокрЛП(ДБФ.ORG));
     ДоговорКонтрагента.Записать();
     Док.ДоговорКонтрагента=ДоговорКонтрагента.Ссылка;
     Док.КратностьВзаиморасчетов=1;
    //Док.Записать();
   
     Банк= Справочники.Банки.СоздатьЭлемент();
      //Банк.КоррСчет=СокрЛП(ДБФ.KORS);
      //Банк.Код=СокрЛП(ДБФ.BIK);
     Банк.Наименование=СокрЛП(ДБФ.NAMEB);
     Банк.Записать();

     
      БанкСчет=Справочники.БанковскиеСчета.СоздатьЭлемент();
      БанкСчет.Владелец=Справочники.Организации.НайтиПоНаименованию(СокрЛП(ДБФ.ORG));
      БанкСчет.Банк=Справочники.Банки.НайтиПоКоду(ДБФ.BIK);
      БанкСчет.Наименование=СокрЛП(ДБФ.NAMEBS);
      БанкСчет.ВалютаДенежныхСредств=Справочники.Валюты.НайтиПоНаименованию(СокрЛП(ДБФ.VAL));
      //БанкСчет.НомерСчета=СокрЛП(ДБФ.COUNT);
      Банк.Записать();
      БанкСчет.Записать();
 
  иначе
     ДокСсылка=ДокСчет.НайтиПоНомеру(ТекущийНомер,Дата);
     Док=ДокСсылка.ПолучитьОбъект();
     НовыйДокумент=Ложь;
 КонецЕсли;
КонецЕсли;  
  //Заполним табличную часть "Товары"
      ТекНоменклатура=Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ДБФ.NOM));
      Если НовыйДокумент тогда
      НоваяСтрока=Док.Товары.Добавить();
      НоваяСтрока.Номенклатура=ТекНоменклатура;
  иначе
      НайденныеСтроки=Док.Товары.НайтиСтроки(Новый Структура("Номенклатура",ТекНоменклатура));
     
      Если НайденныеСтроки.Количество()>0 тогда
          НоваяСтрока=НайденныеСтроки[0];
      иначе
      НоваяСтрока=Док.Товары.Добавить();
      НоваяСтрока.Номенклатура=ТекНоменклатура;
  КонецЕсли;
  Конецесли;
      //НоваяСтрока.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ДБФ.NOM));
      НоваяСтрока.ЕдиницаИзмерения= Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СокрЛП(ДБФ.ED));
      НоваяСтрока.Количество=СокрЛП(ДБФ.KOL);
      НоваяСтрока.Цена=СокрЛП(ДБФ.PRICE);
      НоваяСтрока.СтавкаНДС=СокрЛП(ДБФ.NDS);
     
  //Заполним табличную часть "Оплачено"
      ТекПлатежное=СокрЛП(ДБФ.NDOK);
      Если НовыйДокумент тогда
          НоваяОплачено= Док.Оплата.Добавить();
          НоваяОплачено.НомерДокумента=ТекПлатежное;
      иначе
         НайденныеСтроки=Док.Оплата.НайтиСтроки(Новый Структура("НомерДокумента",ТекПлатежное));
      //НоваяОплачено= Док.Оплата.Добавить();
 
  Если НайденныеСтроки.Количество()>0 тогда
         НоваяОплачено=НайденныеСтроки[0];
  иначе
         НоваяОплачено= Док.Оплата.Добавить();
       НоваяОплачено.НомерДокумента=ТекПлатежное;
   КонецЕсли;
   КонецЕсли;
         НоваяОплачено.ДатаОплаты=СокрЛП(ДБФ.DATEO);
       НоваяОплачено.Сумма=СокрЛП(ДБФ.SUM);
      //НоваяОплачено.НомерДокумента=СокрЛП(ДБФ.NDOK);
           
  //Заполним табличную часть "Отгружено"
  ТекНоменклатура=Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ДБФ.NOM));
  Если НовыйДокумент тогда
      НоваяОтгружено= Док.Отгрузка.Добавить();
      НоваяОтгружено.Номенклатура=ТекНоменклатура;
  иначе
      НайденныеСтроки=Док.Отгрузка.НайтиСтроки(Новый Структура("Номенклатура",ТекНоменклатура));
       Если НайденныеСтроки.Количество()>0 тогда
                    НоваяОтгружено=НайденныеСтроки[0];
              иначе
                    НоваяОтгружено=Док.Отгрузка.Добавить();
                    НоваяОтгружено.Номенклатура=ТекНоменклатура;
              КонецЕсли;
      конецЕсли;
      НоваяОтгружено.ДатаОтгрузки=СокрЛП(ДБФ.DATEOT);
      НоваяОтгружено.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ДБФ.NOM));
      НоваяОтгружено.Количество=СокрЛП(ДБФ.KOL);
      НоваяОтгружено.Цена=СокрЛП(ДБФ.PRICE);
      НоваяОтгружено.Сумма=СокрЛП(ДБФ.SUMOT);
//КонецЕсли;
//иначе
//      ДокСсылка=ДокСчет.НайтиПоНомеру(ТекущийНомер,Дата);
//      Док=ДокСсылка.ПолучитьОбъект();
//КонецЕсли;

  Если Не ДБФ.Следующая()Тогда
        Прервать;
     КонецЕсли;
     ПредыдущийНомер = ТекущийНомер;
  КонецЦикла;
 
  //записываем последний док
  Если Док<>Неопределено тогда
     Док.Записать();
  КонецЕсли;
8 Taffy
 
04.06.12
12:45
поняла какое фото:)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший