Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 01:28

Как загрузить данные с разных файлов dbf в один файл??!!

Автор Лейсан, 31 мая 2012, 23:58

0 Пользователей и 1 гость просматривают эту тему.

Лейсан

Подскажите пожалуйста.Такая задача.с Галактики выгрузили данные по счетам на оплату в следующем формате:файл а-содержит шапку счетов,файл в-спецификацию счетов , файл с-отгрузку по счетам,файл д-оплата по счетам.в каждом файле есть поле NUMBERD,чтобы можно было связать.я вот немного торможу,как мне догрузить данные в уже выгруженные счета.Направьте меня в нужное русло пожалуйста!!!


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

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

cska-fanat-kz

Я бы кинул на форму обработки табличные поля - столько, сколько у вас ДБФок.
По очереди их заполнил, а уж потом работал чисто в 1С...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Лейсан

а можно чуточку подробнее,если  не трудно.спасибо

cska-fanat-kz

Смотрите структуру ваших ДБФок - из каких колонок, какого типа состоят (возможно понадобятся не все).
На форме обработки кидаете табличное поле, привязанное к ТаблицеЗначений, создаете нужное количество колонок, нужного типа.
Это повторяете столько раз, сколько ДБФок.
Над каждым ТП делаете в командной панели кнопку "Заполнить".
Описываете заполнение из каждого ДБФ файла.

Далее работаете чисто в 1С...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Лейсан


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск