1с 77 скопировать файл

Обновлено: 05.07.2024

Следующие функции языка 1С позволяют манипулировать файлами:

  • СоздатьКаталог 1С
  • НайтиФайлы 1С
  • КопироватьФайл 1С
  • ПереместитьФайл 1С
  • УдалитьФайлы 1С
  • РазделитьФайл 1С
  • ОбъединитьФайлы 1С.


//создает недостающие каталоги в указанном пути
//если каталога нет – создаст всю вложенную структуру
//если есть D:\Temp, то создаст подкаталоги
СоздатьКаталог("D:\Temp\1\2\3")


//найти все файлы 1С в каталоге «Sc»
НайденныеФайлы = НайтиФайлы("D:\Sc", "*");

//найти все ТЕКСТОВЫЕ файлы 1С в каталоге, включая вложенные подкаталоги
НайденныеФайлы = НайтиФайлы("D:\Sc", "*.txt", Истина);

//найти все файлы 1С в каталоге, в имени которых встречается слово "копия"
НайденныеФайлы = НайтиФайлы("D:\Sc", "*копия*");

//найти все файлы 1С в каталоге, в имени которых встречается любая цифра в скобочках, например "(1)" или "(100)"
НайденныеФайлы = НайтиФайлы("D:\Sc", "*(*)*");

//найти все файлы 1С в каталоге, в имени которых встречается цифра в скобочках меньше 10, например "(1)" или "(9)"
НайденныеФайлы = НайтиФайлы("D:\Sc", "*(?)*");

Для каждого Файл из НайденныеФайлы Цикл
Если Файл.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;


ИмяФайла = "Текстовый файл.txt";
КаталогИсточник = "D:\sc\";
КаталогПриемник = "D:\";

//копирование файла
ФайлИсточник = Новый Файл(КаталогИсточник + ИмяФайла);
Если не ФайлИсточник.Существует() или ФайлИсточник.ЭтоКаталог() Тогда
ВызватьИсключение "Файл '" + КаталогИсточник + ИмяФайла + "' не существует или является каталогом";
КонецЕсли;

Попытка
КопироватьФайл(КаталогИсточник + ИмяФайла, КаталогПриемник + ИмяФайла);
Исключение
ВызватьИсключение "Нет прав на копирование файла";
КонецПопытки;

ФайлПриемник = Новый Файл(КаталогПриемник + ИмяФайла);
Если не ФайлПриемник.Существует() или ФайлПриемник.Размер() <> ФайлИсточник.Размер() Тогда
ВызватьИсключение "Не удалось корректно скопировать файл";
КонецЕсли;

//перемещение файла
Попытка
ПереместитьФайл(КаталогИсточник + ИмяФайла, КаталогПриемник + ИмяФайла);
Исключение
ВызватьИсключение "Нет прав на копирование файла";
КонецПопытки;

ФайлПриемник = Новый Файл(КаталогПриемник + ИмяФайла);
Если не ФайлПриемник.Существует() Тогда
ВызватьИсключение "Не удалось корректно перенести файл";
КонецЕсли;


//функция создает каталог с именем файла
//в нем создает разделенные части файла, каждая размером в указанное кол-во мегабайт
//каждую часть сжимает архиватором
//возвращает имя каталога

Глобальный контекст.КопироватьФайл (Global context.FileCopy)
Глобальный контекст (Global context)
КопироватьФайл (FileCopy)
Синтаксис:

КопироватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>)
Параметры:

Тип: Строка.
Полное имя файла-источника.
<ИмяФайлаПриемника> (обязательный)

Тип: Строка.
Полное имя файла-приемника.
Описание:

Копирует файл-источник в файл-приемник. Допускается перезапись файла-приемника.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

КопироватьФайл("C:\Temp\Order.htm", "C:\My Documents\Order.htm");

В СП явно написано что допускается перезапись файла

по причине:
Ошибка копирования файлов
по причине:
Ошибка копирования файлов из 'D:\Documents\Файлы1С\U\Прожектор.txt' в 'D:\Прожектор.txt' : Ошибка доступа к файлу (3) imbaZeratul, или файл используется другим процессом. (9) imbaZeratul, тогда тебе проще сделать перед копированием проверку на наличие файла и удалять)

Глобальный контекст (Global context)
УдалитьФайлы (DeleteFiles)
Синтаксис:

УдалитьФайлы(<Путь>, <Маска>)
Параметры:

Тип: Строка.
Путь к удаляемым файлам.
<Маска> (необязательный)

Тип: Строка.
Маска для выбора удаляемых файлов. В строке маски допускается использование символа "*" (звездочка), обозначающего любое число произвольных символов, и "?" (знак вопроса), обозначающего один произвольный символ.
Если <Маска> не указана, то удаляются все файлы и каталог <Путь>.
Описание:

Удаляет указанные файлы.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

// Удаление каталога и всех вложенных в него каталогов и файлов
Попытка
УдалитьФайлы("C:\temp\Works");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

Если на поддержке у программиста находится большое количество баз данных , то данная обработка поможет автоматически и быстро скопировать нужную папку (например, ExtForms, ExtDb, Usrdef и т.д.) и ее содержимое (кроме вложенных папок) во все помеченные каталоги информационных баз. Обработка проверена только на базах с DBF организацией данных. Для подкраски строк ТЗ используется FormEx, но можно и без него. Огромная благодарность АльФу и Маляеву.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Скачал,Посмотрел . замечания:
понимаешь, ты сам знаешь что ДОЛЖНА делать и ДЕЛАЕТ твоя обработка.
а вот теперь забудь на минуту и посмотри сам на нее глазами пользователя.

Почему бы не сделать , чтобы при открытии заполнялись все каталоги
кнопку сформировать - переименуй в " Обновить или Загрузить путь баз данных"

Кнопка с Глобусом - вызывает раздражение и она там совершенно не нужно,так красоту не наводят. Если есть кнопка на форме, она должна нажиматься и выполнять какоето действие.
В описании благодарность Альфу ты выразил, а пользователям в описании написать, что обработка может использовать функции ВК Formex не указал.

И как то ооооооооооочень странно ты ее используешь.
По твоей идее с раскроской строк (ты ее -ВК должен попытаться загрузить при открытии обработки но уж ни как при

Процедура ПриДвойномНажатииПравойКнопки(сост, х, у)
Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 1 Тогда
Если ТЗ.КоличествоСтрок() <> 0 Тогда
Если Вопрос("Вы действительно хотите удалить строку ТЗ?","Да+Нет") = "Да" Тогда
ТекСтр = ТЗ.ТекущаяСтрока();
ТЗ.УдалитьСтроку(ТЗ.ТекущаяСтрока());
ТЗ.ТекущаяСтрока(ТекСтр);
Иначе
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Если ТЗ.КоличествоСтрок() <> 0 Тогда
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
ТЗ.НомПП = ТЗ.НомерСтроки;
КонецЦикла;
КонецЕсли;
ТЗ.ТекущаяСтрока(1);
КонецЕсли;
КонецПроцедуры // ПриДвойномНажатииПравойКнопки()

а у если у пользователя нет этой ВК (и он не подозревает что она должа быть)
как удалить строку из таблицы ?

Сделай рядом или список или ТЗ с "копируемыми файлами - ведь бывает нужно не все скопировать а только 8 из 10 . Дай пользователю выбор.

Читайте также: