Сравнить два DBF по имени! Помогите!

1. user1296699 27.11.19 10:47 Сейчас в теме
Доброе Утро! Ребят есть две папки с ДБФ файлами. Как сравнить файлы, чтобы из первой папки удалялись файлы найденные во второй?????? У меня в голову пришло только...
СравнениеФайлов = НайтиФайлы(Папка2,МаскаФайла,Ложь);
СравнитьФайлы = НайтиФайлы(Папка1,МаскаФайла,Ложь);
Для каждого Файл из СравнитьФайлы Цикл
	Если Файл = СравнениеФайлов Тогда
	Файл.Удалить();
	КонецЕсли;
КонецЦикла;

НО ЭТО НЕ РАБОТАЕТ.... т.к. я думаю = СравнениеФайлов не прокатывает!
Помогите неопытному!!!!!!!!!!!!!! Заранее спасибо!
Найденные решения
2. DmitriyTih 27.11.19 10:51 Сейчас в теме
(1) Получить все файлы в папке 1;
Получить все файлы в папке 2;
сравнить по наименованию файла (цикл в цикле), если есть одинаковые, то записать имя файла в массив для последующего удаления;
Удалить файлы по именам из массива;

НайденныеФайлы1 = НайтиФайлы(ИмяКаталога1, "*.dbf");
НайденныеФайлы2 = НайтиФайлы(ИмяКаталога2, "*.dbf");
Для Каждого ф1 из НайденныеФайлы1 Цикл
   Для Каждого ф2 из НайденныеФайлы2 Цикл
     // Сравнение и т.д.
   КонецЦикла;
КонецЦикла;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DmitriyTih 27.11.19 10:51 Сейчас в теме
(1) Получить все файлы в папке 1;
Получить все файлы в папке 2;
сравнить по наименованию файла (цикл в цикле), если есть одинаковые, то записать имя файла в массив для последующего удаления;
Удалить файлы по именам из массива;

НайденныеФайлы1 = НайтиФайлы(ИмяКаталога1, "*.dbf");
НайденныеФайлы2 = НайтиФайлы(ИмяКаталога2, "*.dbf");
Для Каждого ф1 из НайденныеФайлы1 Цикл
   Для Каждого ф2 из НайденныеФайлы2 Цикл
     // Сравнение и т.д.
   КонецЦикла;
КонецЦикла;
8. user1296699 27.11.19 11:55 Сейчас в теме
(2) что то не удаляет...
СравнениеФайлов = НайтиФайлы(РАЗНЕСЕНО,МаскаФайла,Ложь);
СравнитьФайлы = НайтиФайлы(НЕРАЗНЕСЕНО,МаскаФайла,Ложь);
Для каждого Файл1 из СравнитьФайлы Цикл
	для каждого Файл2 из СравнениеФайлов Цикл
	
	если  Файл1.ПолноеИмя = Файл2.ПолноеИмя; тогда
	  Файл1.Удалить;
конецесли;
КонецЦикла;
КонецЦикла;
Показать
9. DmitriyTih 27.11.19 12:21 Сейчас в теме
(8)
Да, свойство "Имя", а не "ПолноеИмя"
Файл1.Удалить;

Для файла нет такого метода "Удалить"
10. DmitriyTih 27.11.19 12:25 Сейчас в теме
(8)Вместо "Файл1.Удалить"
УдалитьФайлы(Файл1.ПолноеИмя)
12. Sashares 35 27.11.19 12:40 Сейчас в теме
(8)А вам надо содержимое файлов сравнивать или достаточно одинакового имени?
13. user1296699 27.11.19 13:35 Сейчас в теме
14. user1296699 27.11.19 14:24 Сейчас в теме
(2) (12) я короче подзавис)) файлы удаляет нормально...проблема в другом... у меня есть "папка3" в ней много "подпапок"(и в ней же находятся папка1 и папка2). внешняя обработка- обрабатывает все файлы в Папке3 и в подпапках...т.е. помимо нужных файлов она обрабатывает "Папка 2 " которую обрабатывать ненужно.... короче копец))) можно как нибудь указать чтобы обрабатывала все кроме папка1 и папка2...
МаскаФайла = "*.dbf";	
НайденныеФайлы = НайтиФайлы(ПАПКА3,МаскаФайла,Истина);
Для Каждого ФФ из НайденныеФайлы Цикл
Если ФФ.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;
КороткоеИмя = СокрЛП(Лев(ФФ.ИмяБезРасширения, 8))+".dbf";
НашПолныйПутьФайла = КаталогВременныхФайлов() + КороткоеИмя;
КопироватьФайл(ФФ.ПолноеИмя,НашПолныйПутьФайла);
ФайлДБФ = Новый XBase; 
ФайлДБФ.ОткрытьФайл(НашПолныйПутьФайла,,Истина); 
ФайлДБФ.Первая();
Реквизит1.Очистить();
Пока НЕ ФайлДБФ.ВКонце() Цикл
Если Лев(ФайлДБФ.Account,3) = УчастокКод тогда
НоваяСтрока = Реквизит1.Добавить();
...........      ........
КонецЕсли;
ФайлДБФ.Следующая(); 
КонецЦикла;
ФайлДБФ.ЗакрытьФайл();
НовыйДБФ = Новый XBase;	
............     .............

Сумма = Реквизит1.Итог("Sum");
Количество = Реквизит1.Количество();

Каталог = ПАПКА1 + "\" + КороткоеИмя;
НовыйДБФ.СоздатьФайл(Каталог,);
НовыйДБФ.Записать();

Для Каждого СтрТаб Из Реквизит1 Цикл 
НовыйДБФ.Добавить();
............        ..........

Конеццикла;
НовыйДБФ.ЗакрытьФайл();
ПереместитьФайл(Каталог,ПАПКА1 + "\" + ФФ.ИмяБезРасширения + "Sum"+ Сумма + "k" + Количество + ".dbf");
КонецЦикла;
Показать


И подскажите пожалуйста как удалить из КаталогВременныхФайлов() файлы, а то почему то не удаляются))
15. Sashares 35 27.11.19 14:38 Сейчас в теме
(14)
У метода НайтиФайлы есть 3 параметр.

НайтиФайлы (FindFiles)
Синтаксис:

НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)


Если его поставить Ложь, то будет искать только в текущем каталоге.
Далее можно в цикле проверять, если текущий файл это каталог, то запускать еще раз поиск, если в этом каталоге нужно искать.
16. DmitriyTih 27.11.19 15:14 Сейчас в теме
(14)
можно как нибудь указать чтобы обрабатывала все кроме папка1 и папка2.

При обходе в цикла файлов анализируйте свойство "ПолноеИмя" - это полный путь к файлу. Будет в виде "С:\Папка3\Папка1\Файл1". Попробуйте функции для работы со строками, например СтрНайти(). И если нашли, что в полном имени файла содержится каталог, который вам обрабатывать не нужно, то переходите к обработке следующего файла.
Если СтрНайти(ФФ.ПолноеИмя, "\папка1\") > 0 Тогда 
Продолжить; 
КонецЕсли;
user1296699; Sashares; +2 Ответить
18. user1296699 28.11.19 12:02 Сейчас в теме
(16) НайтиФайлы("Каталог", "Файл.имя") вот так получилось
17. DmitriyTih 27.11.19 15:21 Сейчас в теме
(14)
И подскажите пожалуйста как удалить из КаталогВременныхФайлов() файлы, а то почему то не удаляются))

Попробуйте:
УдалитьФайлы(КаталогВременныхФайлов(), "*.dbf");

только будьте аккуратны с удалением файлов!
user1296699; +1 Ответить
3. Sashares 35 27.11.19 10:52 Сейчас в теме
(1) Вы сравниваете файл с массивом. Что должно прокатывать?
Надо каждый файл из первой папки сравнить с каждым файлов во 2 папке.
Если совпадут - значит одинаковые.
Для сравнения файлов можно использовать объект СравнениеФайлов
4. DmitriyTih 27.11.19 10:54 Сейчас в теме
(1)
Если Файл = СравнениеФайлов Тогда
Файл.Удалить();
КонецЕсли;


Надо писать:
Если Файл.ПолноеИмя = СравнениеФайлов.ПолноеИмя  Тогда


т.к. Файл - это переменная с типом "Файл", а вам надо сравнить имена файлов
5. Sashares 35 27.11.19 10:55 Сейчас в теме
(4)
т.к. Файл - это переменная с типом "Файл"

а СравнениеФайлов это массив...

Особенно полное имя хорошо сравнивать))
6. DmitriyTih 27.11.19 10:56 Сейчас в теме
(5) Да, опечатался, там должен быть еще обход элементов массива. Хотел сказать, что надо обращаться к свойству "ПолноеИмя"
7. Sashares 35 27.11.19 10:57 Сейчас в теме
(6)
обращаться к свойству "ПолноеИмя"

В полном имени - путь к директории.
В разных папках файлы...
11. DmitriyTih 27.11.19 12:28 Сейчас в теме
(7)Да, совершенно точно, использовать свойство "Имя"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот