Сравнить два 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 34 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 34 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 34 27.11.19 10:52 Сейчас в теме
(1) Вы сравниваете файл с массивом. Что должно прокатывать?
Надо каждый файл из первой папки сравнить с каждым файлов во 2 папке.
Если совпадут - значит одинаковые.
Для сравнения файлов можно использовать объект СравнениеФайлов
4. DmitriyTih 27.11.19 10:54 Сейчас в теме
(1)
Если Файл = СравнениеФайлов Тогда
Файл.Удалить();
КонецЕсли;


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


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

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

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

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

Разработчик 1С
Москва
зарплата от 100 000 руб.
Временный (на проект)

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист
Санкт-Петербург
зарплата от 180 000 руб. до 240 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день