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

Помогите оптимизировать код

Автор ekaterinasslv, 20 фев 2019, 10:22

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

ekaterinasslv

Добрый день, помогите пожалуйста оптимизировать код. Есть обработка которая объединяет два дбф файла, мне нужно чтобы она объединяла 5. топорно переписала ее под 5 файлов, но хотелось бы ее как то оптимизировать , либо сделать так чтобы объединяла файлы которые находятся  в одной папке! Помогите плиз!
ЦитироватьПроцедура ОбъединитьФайлыНажатие(Элемент)
   
   Если ПустаяСтрока(ОбъединенныйФайл) Тогда
      Сообщить("Не указан каталог для записи Объединенного файла!");
      Возврат;
   КонецЕсли;
   
   Если не ФайлСуществует(СокрЛП(ИсходныйФайл1)) Тогда
      Возврат;
   КонецЕсли;
   
   Если не ФайлСуществует(СокрЛП(ИсходныйФайл2)) Тогда
      Возврат;
   КонецЕсли;
   
   Если не ФайлСуществует(СокрЛП(ИсходныйФайл3)) Тогда
      Возврат;
   КонецЕсли;
   
   Если не ФайлСуществует(СокрЛП(ИсходныйФайл4)) Тогда
      Возврат;
   КонецЕсли;
   
   Если не ФайлСуществует(СокрЛП(ИсходныйФайл5)) Тогда
      Возврат;
   КонецЕсли;

   
   ФайлКуда = СоздатьФайлДБФ(СокрЛП(ИсходныйФайл1),СокрЛП(ОбъединенныйФайл));
      
   
   Файл1 = ОткрытьФайлДБФ(СокрЛП(ИсходныйФайл1));
   Если Файл1 = Неопределено Тогда
      Файл1.ЗакрытьФайл();
      Возврат;
   КонецЕсли;
   
   Файл2 = ОткрытьФайлДБФ(СокрЛП(ИсходныйФайл2));
   Если Файл2 = Неопределено Тогда
      Файл2.ЗакрытьФайл();
      Возврат;
   КонецЕсли;   
   
   Файл3 = ОткрытьФайлДБФ(СокрЛП(ИсходныйФайл3));
   Если Файл3 = Неопределено Тогда
      Файл3.ЗакрытьФайл();
      Возврат;
   КонецЕсли;

   Файл4 = ОткрытьФайлДБФ(СокрЛП(ИсходныйФайл4));
   Если Файл4 = Неопределено Тогда
      Файл4.ЗакрытьФайл();
      Возврат;
   КонецЕсли;
   
   Файл5 = ОткрытьФайлДБФ(СокрЛП(ИсходныйФайл5));
   Если Файл5 = Неопределено Тогда
      Файл5.ЗакрытьФайл();
      Возврат;
   КонецЕсли;

   
   КолЗаписей = Файл1.КоличествоЗаписей();
   Сообщить("" + КолЗаписей + " записей в файле: " + СокрЛП(ИсходныйФайл1));
   ДополнитьФайл(ФайлКуда,Файл1);
   
   КолЗаписей = Файл2.КоличествоЗаписей();
   Сообщить("" + КолЗаписей + " записей в файле: " + СокрЛП(ИсходныйФайл2));
   ДополнитьФайл(ФайлКуда,Файл2);
   
   КолЗаписей = Файл3.КоличествоЗаписей();
   Сообщить("" + КолЗаписей + " записей в файле: " + СокрЛП(ИсходныйФайл3));
   ДополнитьФайл(ФайлКуда,Файл3);
   
   КолЗаписей = Файл4.КоличествоЗаписей();
   Сообщить("" + КолЗаписей + " записей в файле: " + СокрЛП(ИсходныйФайл4));
   ДополнитьФайл(ФайлКуда,Файл4);
   
   КолЗаписей = Файл5.КоличествоЗаписей();
   Сообщить("" + КолЗаписей + " записей в файле: " + СокрЛП(ИсходныйФайл5));
   ДополнитьФайл(ФайлКуда,Файл5);

       
   КолЗаписей = ФайлКуда.КоличествоЗаписей();
   
   
   ФайлКуда.Записать();
   ФайлКуда.ЗакрытьФайл();
   
   Сообщить("" + КолЗаписей + " записей в файле: " + СокрЛП(ОбъединенныйФайл));
   
КонецПроцедуры


LexaK

дааааа

попробуйте написать простую процедуру соединения 2-х ДБФ
а уже ее вызывайте столько раз сколько надо

Процедура СоединитьТаблицы(Приемник, Источник)

Ваша основная обработка

есть 5 файлов с ДБФ, все данные собираем в файл1

СоединитьТаблицы(Файл1, файл2);
СоединитьТаблицы(Файл1, файл3);
СоединитьТаблицы(Файл1, файл4);
СоединитьТаблицы(Файл1, файл5);

Или вообще получить список файлов и обработать в цикле

//в этом случае вообще не зависите от количества файлов, сколько в каталог поместили, столько и обработается
мФайлы = НайтиФайлыСДанными();
Для каждого лкФайл из мФайлы Цикл
    СоединитьТаблицы(ФайлПриемник, лкФайл);
КонецЦикал;


если помогло нажмите: Спасибо!

ekaterinasslv

Воот, этот вариант с " получить список файлов и обработать в цикле" мне нравится) куда мне его разместить,тот код который вы привели, а то , что творится у меня в коде я не совсем даже понимаю:fdbsdfbsd:

LexaK

В общем модуле создайте набор процедур по обработке, их затем можно использовать и в обработке и регламентных заданиях
(еще как вариант)
На форме обработке создайте кнопку: Обработать, и на событие при нажатии на кнопку выполните вашу процедуру
если помогло нажмите: Спасибо!

ekaterinasslv

у меня еще есть рабочая обработка нормальная но она на 7.7 переписать под 8.2 я ее ну никак не могу( поэтому пытаюсь сляпать что-то сама.. Лучше помогите как переписать это для того чтобы подбирались все файлы из указанного каталога/папки:dfbsdfbsdf:

Теги:

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

Рейтинг@Mail.ru

Поиск