Как проверить файл существует?

Как проверить файл существует? ФСС

1C и Google Maps


21

была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш


1Cv8.1CD — Файл данных достиг максимального размера!


8

1С выдает предупреждение » Файл данных достиг максимального размера» .
Подскажите из — за чего это и как можно решить ?
Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10 гигабайтам или размер ка


Excel файл как Внешний источник данных


16

Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто.
1. В конфигурации добавляет новый объект метаданных типа » Внешние источники данных» и назовем его просто » Excel» .
https://helpf.pro/uploads/img


QR код в 1С


21

Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог


ZIP-архив Разделить и Объединить Файл


0

При работе с большими объемами данных могут возникнуть проблемы при пересылке архивных файлов. Типичной такой ситуацией является ограничение некоторых почтовых серверов на размер сообщения — если письмо превышает некий заранее установленный размер, о



Посмотреть все результаты поиска похожих

10060 (0x0000274C): Попытка установить соединение была безуспешной


24

Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает 🙂 И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и


1C и Google Maps


21

была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш


1Cv8.1CD — Файл данных достиг максимального размера!


8

1С выдает предупреждение » Файл данных достиг максимального размера» .
Подскажите из — за чего это и как можно решить ?
Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10 гигабайтам или размер ка


1С Предприятие что это?


12

Что такое 1С?
1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » — конкретный продукт, который выпускает компания 1С .
Что такое


Cклонения по падежам


6

НаКлиенте
Процедура Команда1(Команда)
ФИО = » Иванов Иван Иванович» ;
Падеж = 2;
Пол = 1;
Результат = СклонениеФИО(ФИО, Падеж, пол);
Сообщить(Результат);
КонецПроцедуры
НаСервере
Функция СклонениеФИО(ФИО, Падеж, пол)
Результат = » » ;



Посмотреть все результаты поиска похожих

10060 (0x0000274C): Попытка установить соединение была безуспешной


24

Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает 🙂 И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и


1C и Google Maps


21

была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш


1C: Enterprise Development Tools


52

И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools — это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем


1Cv8.1CD — Файл данных достиг максимального размера!


8

1С выдает предупреждение » Файл данных достиг максимального размера» .
Подскажите из — за чего это и как можно решить ?
Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10 гигабайтам или размер ка


1С Предприятие что это?


12

Что такое 1С?
1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » — конкретный продукт, который выпускает компания 1С .
Что такое



Посмотреть все результаты поиска похожих

Как проверить наличие файла на сервере?

0


Volodja

Обычные формы:


Есть общий модуль бвв_ОбщийМодуль


стоят галки: Внешнее соединение,Клиент(обычное приложение) и Сервер

Процедура Инициализация_тзКоды_ТНВЭД() Экспорт


    сз_бввОбщегоЗначения = ПараметрыСеанса.бвв_ОбщегоЗначения. Получить();


    Если сз_бввОбщегоЗначения = Неопределено Тогда

        
        бвв_сзПереченьИзъятия = Новый СписокЗначений;


        бвв_тзКоды_ТНВЭД = Новый ТаблицаЗначений;


        бвв_тзКоды_ТНВЭД. Колонки. Добавить(«ПолныйКодГСВС»);


        бвв_тзКоды_ТНВЭД. Колонки. Добавить(«КодГСВС»);


        бвв_тзКоды_ТНВЭД. Колонки. Добавить(«Наименование»);


        бвв_тзКоды_ТНВЭД. Колонки. Добавить(«ВходитВПеречень»);


        бвв_тзКоды_ТНВЭД. Колонки. Добавить(«ВходитВВС»);

_ФайлМакета  — этот файл есть на сервере.


Если захожу через RDP на сервер и оттуда запускаю базу, то все отрабатывает как надо. Файл находит


Но если захожу с клиентской машины, то не видит, видимо ищет его на клиентской машине


Запутался совсем Как мне нужно правильно вызвать эту процедуру, чтобы файл гарантированно проверялся на сервере?

<span name="1" onclick="click_N

«> 1


Amra

<span name="2" onclick="click_N«> 2


Volodja

Пробовал


и в #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда


    #КонецЕсли


оборачивал


не получается

<span name="3" onclick="click_N


«> 3


Kassern

не так ты пробовал. Надо


&НаСервере


Процедура ПрочитатьФайл(ИмяФайла)


И вот тут уже читать


КонецПроцедуры

<span name="4" onclick="click_N

«> 4


Amra

Не верю. Проверь права пользователя, под которым стартует агент сервера на эту папку

<span name="5" onclick="click_N

«> 5


piter3

на серванте прям такой будет путь D:\1sb8\Коды_ТНВЭД\Список ГСВС.mxl сомнительно что-то

<span name="6" onclick="click_N

«> 6


Мимохожий Однако

На клиенте находишь файл и передаёшь через временное хранилище на сервер. Дальше не сложно.

<span name="7" onclick="click_N«> 7


Kassern

у него обратная ситуация, файл на сервере, где кластер, с клиентской машинки не получается прочитать

<span name="8" onclick="click_N

«> 8


Вафель

внешнее соединение — это не сервер, а толстый клиент

<span name="9" onclick="click_N

«> 9


Volodja

Функция ПолучитьФайл_СписокТНВЭД_НаСервере() Экспорт


    _ФайлМакета=»D:\1sb8\Коды_ТНВЭД\Список ГСВС.mxl»;


    ФайлНаДиске = Новый Файл(_ФайлМакета);


    Если НЕ ФайлНаДиске. Существует() Тогда


        Сообщить(«Не найден список кодов ТНВЭД нет файла — «+_ФайлМакета);


        Возврат Неопределено;


    КонецЕсли;


    _ТабличныйДок = Новый ТабличныйДокумент;


    _ТабличныйДок. Прочитать(_ФайлМакета);


    Адрес=ПоместитьВоВременноеХранилище(ЗначениеВСТрокуВнутр(_ТабличныйДок),Новый УникальныйИдентификатор);


    Возврат Адрес;


КонецФункции

Читайте также:  График фонд социального страхования

&НаКлиенте


Функция ПолучитьФайл_СписокТНВЭД_НаКлиенте() Экспорт


    Адрес=бвв_ОбщийМодульСервер. ПолучитьФайл_СписокТНВЭД_НаСервере();


    ТД=ЗначениеИзСтрокиВнутр(ПолучитьИзВременногоХранилища(Адрес));  // Здесь пишет что:  Ошибка при вызове метода контекста


                                                    ПолучитьИзВременногоХранилища по причине Недопустимое значение параметра (параметр номер 1)


    УдалитьИзВременногоХранилища(Адрес);


    Возврат ТД;


КонецФункции

<span name="10" onclick="click_N<span name="8" onclick="click_N

«>»> 10


Volodja

я его там сам создал. Он есть

<span name="11" onclick="click_N«> 11


Kassern

Зачем ЗначениеИзСтрокиВнутр ? Вы же ПоместитьВоВременноеХранилище, так получайте из него соответствующим методом

<span name="12" onclick="click_N«> 12


Kassern

ПолучитьИзВременногоХранилища вам в помощь

<span name="13" onclick="click_N«> 13


Volodja

это я после добавил.


ТД=ПолучитьИзВременногоХранилища(Адрес); так тоже самое выдает

<span name="14" onclick="click_N«> 14


Мимохожий Однако

Помести ФайлНаДиске во временное хранилище и получай на клиенте.

<span name="15" onclick="click_N«> 15


Мимохожий Однако

Помещение макета в табличный документ не имеет смысла.

<span name="16" onclick="click_N

«> 16


Volodja

Уже пишет, что нет его

<span name="17" onclick="click_N

«> 17


ColonelAp4u

попробуй сделать на компе откуда запускаешь этот файл D:\1sb8\Коды_ТНВЭД\Список ГСВС.mxl и запусти обработку, если найдет то значит он и не ищет на сервере его, что скорее всего так и есть, хотя вообще не пойму почему ты не сделал диалог выбора файла и все.

<span name="18" onclick="click_N

«> 18


ColonelAp4u


и еще вот так попробуй


&НаКлиенте


Процедура ЗагрузитьФайл(Команда)

ИмяФайлаДляОбработки = «C:\ДанныеДляЗагрузки.xml»;


// Описание процедуры, которая будет вызвана помещения файла во временное хранилище


ОписаниеОповещения = Новый ОписаниеОповещения(«ЗагрузитьФайлЗавершение», ЭтотОбъект);


// Начало помещение файла из файловой системы во временное хранилище


НачатьПомещениеФайла(ОписаниеОповещения, , ИмяФайлаДляОбработки, Ложь, УникальныйИдентификатор);

&НаКлиенте


Процедура ЗагрузитьФайлЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт

// Получение данных из временного хранилища


Данные = ПолучитьИзВременногоХранилища(Адрес);


// Получение имени временного файла


ИмяВременногоФайла = ПолучитьИмяВременногоФайла(«xml»);


// Сохранение данных во временный файл


Данные. Записать(ИмяВременногоФайла);

// Хорошим тоном будет удалить временный файл


Попытка

<span name="19" onclick="click_N

«> 19


Мимохожий Однако

Если это обработка, то макет можно положить внутри обработки без всяких файлов и ухищрений. В чём цель манипуляций с файлом?

2.

DenisCh

Сейчас в теме

А зачем &НаСервере проверять существование файла на клиенте?


На клиенте не проще ли проверить?

3.

fruktik

Сейчас в теме

там большая процедура так то, я лишнее обрезал.

4.

Crazy_kz

Сейчас в теме

Файл (File)


Существует (Exist)


Синтаксис:

Существует()


Возвращаемое значение:

Тип: Булево.


Истина — файл существует; Ложь — в противном случае.


Описание:

Определяет, существует ли файл, соответствующий данному объекту.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.


Примечание:

Для работы метода на веб-клиенте, необходимо предварительно подключить расширение работы с файлами.


Пример:

Функция ПроверитьСуществованиеКаталога(ИмяКаталога) Экспорт


КаталогНаДиске = Новый Файл(ИмяКаталога);


Если КаталогНаДиске. Существует() Тогда


Возврат Истина;


Иначе


Ответ = Вопрос(«Каталог не существует. Создать?»,


РежимДиалогаВопрос. ОКОтмена);


Если Ответ = КодВозвратаДиалога. ОК Тогда


СоздатьКаталог(ИмяКаталога);


Возврат Истина;


Иначе


Возврат Ложь;


КонецЕсли;


КонецЕсли;


КонецФункции

8.

makfromkz

Сейчас в теме

Для работы метода на веб-клиенте, необходимо предварительно подключить расширение работы с файлами.

Как это сделать?

5.

_Avril_

Сейчас в теме

код проверил вроде работает корректно, возможно ошибка что для клиента и сервера путь к этому файлу различный

7.

fruktik

Сейчас в теме

( 5
) _Avril_, а ну да)) видимо засрал весь код))

6.

Crazy_kz

Сейчас в теме

так может как раз на клиенте и нужно выполнять?

9.

Crazy_kz

Сейчас в теме

Глобальный контекст. УстановитьРасширениеРаботыСФайлами (Global context. InstallFileSystemExtension)


Глобальный контекст (Global context)


УстановитьРасширениеРаботыСФайлами (InstallFileSystemExtension)


Синтаксис:

Устанавливает расширение работы с файлами.


В режиме запуска толстого и тонкого клиентов информирует о том, что расширение установлено.

Тонкий клиент, веб-клиент, толстый клиент.


См. также:

Глобальный контекст, метод ПодключитьРасширениеРаботыСФайлами

10.

fruktik

Сейчас в теме

Что за фигня. Создал кнопку, создал команду, связал их. У команды прописал действие, написал процедуру $НаСервере


Поставил точку остановы в начале процедуры, в самой первой строчке. Запускаю, тыкаю, никаких действий. Что за беда?((

11.

_Avril_

Сейчас в теме

Если т процедуру Выгрузка обяъвил на сервере то она не будет срабатывавать, все обработчики срабатывают на клиенте а потом по необходимости вызывают серверные методы

  	НайденныеФайлы = НайтиФайлы( ПутьКФайлу, "ИмяФайла. Расширение", Истина);	//проверит в каталоге, включая вложенные подкаталоги
	Если НайденныеФайлы. Количество() = 0 Тогда
		Сообщить("СоздатьНовый!");
	Иначе
		Для Каждого Файл Из НайденныеФайлы Цикл 
			ИмяФайла = Файл. ПолноеИмя;
		КонецЦикла;		
	КонецЕсли;	
  

13.

sacred_a

Сейчас в теме

Экспериментальным путем проверил, что Файл. Существует() и НайтиФайлы() работают только на клиенте.

14.

laperuz

Сейчас в теме

( 13
)Очень смелый вывод. А можно подробности эксперимента?


Ну только предполагаем, что мы в контексте &НаСервере проверяем существование файлов именно сервера, ну и что у пользователя, под которым запущена служба сервера 1С есть права на эти файлы/папки.

16.

sacred_a

Сейчас в теме

( 14
) Привет, тестировал механизм вложения файлов, выносил в обработку: на сервере Файл. Существует() и НайтиФайлы() всегда выдавали что файла нет, хотя он там был, сам туда положил. Как только сделал на клиенте заработало.

17.

SlavaKron

Сейчас в теме

( 16
) Какое имя файла? Проверю на своём компе, есть ли он.

Экспериментальным путем проверил

18.

DBV

Сейчас в теме

( 13
) Британские ученые доказали,

что Файл. Существует() и НайтиФайлы() работают только на клиенте.

Вступайте в мою группу помощник программиста
.

В ней мы обсуждаем программирование в 1С.

<<<
XML
ZIP
WORD
DBF
HTTP
FTP
ТабличныйДокумент

     /// Как записать текстовый файл в 1с 8.3, 8.2    

 
&НаКлиенте
 КакЗаписатьТекстовыйФайлКоманда
 
 КаталогДляЭкспериментов КаталогДокументов 
 СоздатьКаталогКаталогДляЭкспериментов
 
 ТекстовыйФайл ТекстовыйДокумент
 
    // Устанавливаем содержимое файла.      

 ТекстовыйФайлУстановитьТекст
 
    // Очищаем содержимое файла.      

 ТекстовыйФайлОчистить
 
 
 ТекстовыйФайлДобавитьСтроку    "Первая строчка файла"    

 
 ТекстовыйФайлДобавитьСтроку    "Вторая строчка файла"    

 
    // Меняем первую строчку на "Привет"    

 ТекстовыйФайлЗаменитьСтроку
    // номер строки в файле, нумеруется с 1    

 
 
 
    // Вставляем новую строчку сразу после первой,    

    // то есть на место второй.      

 ТекстовыйФайлВставитьСтроку
    // номер строки, на место которой вставляем новую    

 
 
 
    // Удаляем вторую строчку ("Владимир")    

 ТекстовыйФайлУдалитьСтроку
 
    // Записываем файл на диск.      

    // Если такой файл уже существует - он будет перезаписан.      

 ТекстовыйФайлЗаписать
 КаталогДляЭкспериментов    // путь для сохранения    

 КодировкаТекста 
 СимволыВК СимволыПС    // разделитель строк    

 
 
    // Открываем созданный файл в блокноте.      

 ЗапуститьПриложениеКаталогДляЭкспериментов 
 

 
    /// Как прочитать текстовый файл в 1с 8.3, 8.2    

 
&НаКлиенте
 КакПрочитатьТекстовыйФайлКоманда
 
 ОчиститьСообщения
 
 КаталогДляЭкспериментов КаталогДокументов 
 СоздатьКаталогКаталогДляЭкспериментов
 
 ПутьКФайлу КаталогДляЭкспериментов 
 
    // Создаем случайный текстовый файл.      

 СлужебныйСоздатьПроизвольныйТекстовыйФайлПутьКФайлу
 
 ТекстовыйФайл ТекстовыйДокумент
 
 ТекстовыйФайлПрочитать
 ПутьКФайлу
    // Если не указать кодировку напрямую, то она    

    // по возможности определится автоматически.      

 КодировкаТекста 
    // К этом значению будут приведены разделители    

    // строк из файла.  Если ничего не указывать -    

    // останутся родные.      

 СимволыВК СимволыПС
 
 
    // Выводим весь текст целиком.      

 СообщитьТекстовыйФайлПолучитьТекст
 
    // Выводим текст по строкам.      

 Индекс ТекстовыйФайлКоличествоСтрок 
 СообщитьТекстовыйФайлПолучитьСтрокуИндекс
 
 

 
    /// Как использовать текстовый макет для формирования    

    /// печатной формы в 1с 8.3, 8.2    

 
&НаКлиенте
 КакВывестиТекстовыйМакетПростейшийКоманда
 
 ОчиститьСообщения
 
    // Рассмотрим простейший случай.      

 
    // Нам требуется сделать печатную форму, в которой    

    // в шапке будет выводиться номер и дата документа,    

    // а в табличной части: список и количество,    

    // заказанных товаров.      

 
    // Вызываем функцию, которая сформирует на сервере    

    // печатную форму и вернёт её обратно на клиент.      

 ПечатнаяФорма СформироватьПростейшуюПечатнуюФорму
    // Выводим её пользователю, а он уже отправит её на печать.      

 ПечатнаяФормаПоказать
 

 
&НаСервере
 СформироватьПростейшуюПечатнуюФорму
 
    // Если никаких особых требований к оформлению такой    

    // формы нет - милое (и главное очень быстрое) дело    

    // сделать её через текстовый макет.      

 
    // О том, как создать текстовый макет - читайте по адресу    

 
    // В нашем случае такой макет я уже создал и добавил    

    // в эту обработку под именем "ПростейшийТекстовыйМакет"    

 
 ПечатнаяФорма ТекстовыйДокумент
 
 Макет ОбработкиОбработкаДляИспытанийПолучитьМакет
 
 
    // Получаем область и макета по имени.      

 Шапка МакетПолучитьОбласть
    // Заполняем её параметры.      

 ШапкаПараметрыДата ТекущаяДата
 ШапкаПараметрыНомер 
    // Выводим её в документ.      

 ПечатнаяФормаВывестиШапка
 
    // Заголовок табличной части.      

 ТабличнаяЧастьЗаголовок МакетПолучитьОбласть
 ПечатнаяФормаВывестиТабличнаяЧастьЗаголовок
 
    // Обычно в цикле выводятся строки табличной части.      

 ТабличнаяЧастьСтрока МакетПолучитьОбласть
 
    // Строка 1    

 ТабличнаяЧастьСтрокаПараметрыНоменклатура 
 ТабличнаяЧастьСтрокаПараметрыКоличество 
 ПечатнаяФормаВывестиТабличнаяЧастьСтрока
 
    // Строка 2    

 ТабличнаяЧастьСтрокаПараметрыНоменклатура 
 ТабличнаяЧастьСтрокаПараметрыКоличество 
 ПечатнаяФормаВывестиТабличнаяЧастьСтрока
 
    // Завершаем табличную часть подвалом.      

 ТабличнаяЧастьСтрока МакетПолучитьОбласть
 ТабличнаяЧастьСтрокаПараметрыИтогоКоличество 
 ПечатнаяФормаВывестиТабличнаяЧастьСтрока
 
    // Возвращаем печатную форму обратно на клиент.      

 ПечатнаяФорма
 

 
    /// Как использовать параметры полей при оформлении    

    /// текстового макета в 1с 8.3, 8.2    

 
&НаКлиенте
 КакВывестиТекстовыйМакетПоСложнееКоманда
 
 ОчиститьСообщения
 
    // Рассмотрим тот же случай, что и выше.      

 
    // Нам требуется сделать печатную форму, в которой    

    // в шапке будет выводиться номер и дата документа,    

    // а в табличной части: список и количество,    

    // заказанных товаров.      

 
    // Вызываем функцию, которая сформирует на сервере    

    // печатную форму и вернёт её обратно на клиент.      

 ПечатнаяФорма СформироватьПечатнуюФормуПосложнее
    // Выводим её пользователю, а он уже отправит её на печать.      

 ПечатнаяФормаПоказать
 

 
&НаСервере
 СформироватьПечатнуюФормуПосложнее
 
    // Если никаких особых требований к оформлению такой    

    // формы нет - милое (и главное очень быстрое) дело    

    // сделать её через текстовый макет.      

 
    // О том, как создать текстовый макет - читайте по адресу    

 
    // В нашем случае такой макет я уже создал и добавил    

    // в эту обработку под именем "ТекстовыйМакетПосложнее"    

 
    // Обратите внимание - этот текстовый макет уже содержит    

    // форматирование отдельных полей.      

 
    // К примеру, мы задали свой формат для поле Дата;    

    // указали, что если поле Номенклатура не помещается    

    // на одной строке - нужно переносить его на следующие;    

    // задали размер дробной части  для поля Количество;    

    // переопределили выравнивание поля Номенклатура и т.д.      

 
 ПечатнаяФорма ТекстовыйДокумент
 
 Макет ОбработкиОбработкаДляИспытанийПолучитьМакет
 
 
    // Получаем область и макета по имени.      

 Шапка МакетПолучитьОбласть
    // Заполняем её параметры.      

 ШапкаПараметрыДата ТекущаяДата
 ШапкаПараметрыНомер 
    // Выводим её в документ.      

 ПечатнаяФормаВывестиШапка
 
    // Заголовок табличной части.      

 ТабличнаяЧастьЗаголовок МакетПолучитьОбласть
 ПечатнаяФормаВывестиТабличнаяЧастьЗаголовок
 
    // Обычно в цикле выводятся строки табличной части.      

 ТабличнаяЧастьСтрока МакетПолучитьОбласть
 
    // Строка 1    

 ТабличнаяЧастьСтрокаПараметрыНоменклатура 
    "Очень очень длинное название товара, много строк."    

 ТабличнаяЧастьСтрокаПараметрыКоличество 
 ПечатнаяФормаВывестиТабличнаяЧастьСтрока
 
    // Строка 2    

 ТабличнаяЧастьСтрокаПараметрыНоменклатура 
    "Короткое название товара, одна строка."    

 ТабличнаяЧастьСтрокаПараметрыКоличество 
 ПечатнаяФормаВывестиТабличнаяЧастьСтрока
 
    // Завершаем табличную часть подвалом.      

 ТабличнаяЧастьСтрока МакетПолучитьОбласть
 ТабличнаяЧастьСтрокаПараметрыИтогоКоличество 
 ПечатнаяФормаВывестиТабличнаяЧастьСтрока
 
    // Возвращаем печатную форму обратно на клиент.      

 ПечатнаяФорма
 

 
  
  // Возвращает содержимое ответа HTTP-сервера, полученного методом GET, в виде строки или двоичных данных
// ** Coded by Sergey (aka Porutchik) * 2014       http://forum.aeroion.ru/cat1.html    
    

//
// Параметры
// СерверПриемник - <Строка> - доменное имя сервера или полный адрес (url) запрашиваемой ссылки.
// Может включать протокол (http://, https://) и порт.
// АдресСтраницы - <Строка> - опционально.  Адрес страницы на сервере без протокола (http://, https://),
// доменного имени сервера (хоста) и порта.
// Если не указано, адрес страницы будет извлечён из параметра СерверПриемник
// ПараметрыСоединения - <Структура> - опционально.  Структура, содержащая дополнительные параметры для HTTPСоединение.
// Назначение ключей:
// Логин или Пользователь - Тип Строка - Имя пользователя на указанном сервере.
// Пароль - Тип Строка - Пароль пользователя на указанном сервере.
// Прокси - Тип ИнтернетПрокси - Прокси, используемый для соединения с сервером.
// Таймаут - Тип Число - Таймаут осуществляемого соединения и операций, в секундах.  0 - не устанавливать таймаут.
// ЗаголовкиHTTP - <Соответствие> - опционально.
// Заголовки, которые будут отправлены на сервер в виде соответствия: "Заголовок" - "Значение".
// Если указано, функция возвратит в программу заголовки HTTP-ответа с кодом состояния в ключе StatusCode,
// имя файла в ключе FileName, url-кодированное имя в ключе EncodeFileName
// ПолучитьКакДвоичныеДанные - <Булево> - опционально.  Определяет, в каком виде получить содержимое ответа сервера
// По умолчанию Ложь.
// ЗащищенноеСоединение - <Булево> - опционально.  По умолчанию Ложь.
// Если Истина, соединение будет происходить по протоколу https://
//
// Возвращаемое значение:
// <Строка>, <ДвоичныеДанные> - содержимое ответа сервера, если ресурс найден по указанному адресу.
//
Функция ПолучитьСодержимоеВебАдреса(Знач СерверПриемник, Знач АдресСтраницы = "",
 Знач ПараметрыСоединения = Неопределено, ЗаголовкиHTTP = Неопределено,
 Знач ПолучитьКакДвоичныеДанные = Ложь, Знач ЗащищенноеСоединение = Ложь) Экспорт
 Перем ИмяФайлаОтветаКодированное, ИмяФайлаОтвета, Порт, Логин, Пользователь, Пароль, Прокси, Таймаут;

 Если Не ЗначениеЗаполнено(СерверПриемник) Тогда Возврат Неопределено; КонецЕсли;
 Если ТипЗнч(ЗаголовкиHTTP) <> Тип("Соответствие") Тогда ЗаголовкиHTTP = Новый Соответствие; КонецЕсли;
 Если Найти(Нрег(СерверПриемник), "https://") = 1 Тогда ЗащищенноеСоединение = Истина; КонецЕсли;

 Протокол = ? ( Найти(Нрег(СерверПриемник), "https://") = 1 ИЛИ ЗащищенноеСоединение, "https://", "http://");
 Если Лев(НРег(СерверПриемник), СтрДлина(Протокол)) = Протокол Тогда
 СерверПриемник = Сред(СерверПриемник, СтрДлина(Протокол) + 1);
 КонецЕсли;

 Если НЕ ЗначениеЗаполнено(АдресСтраницы) Тогда
 Позиция = Найти(СерверПриемник, "/");
 Если Позиция > 0 Тогда
 АдресСтраницы = Сред(СерверПриемник, Позиция, СтрДлина(СерверПриемник));
 СерверПриемник = Лев(СерверПриемник, Позиция - 1);
 Иначе
 АдресСтраницы = "/";
 КонецЕсли;
 КонецЕсли;

 СерверПриемник = СтрЗаменить(СерверПриемник, "/", "");

 //Выделяем порт из доменного имени
 ПозицияДвоеточия = Найти(СерверПриемник, ":");
 Если ПозицияДвоеточия > 0 Тогда
 Порт = Число(Сред(СерверПриемник, ПозицияДвоеточия + 1));
 СерверПриемник = Лев(СерверПриемник, ПозицияДвоеточия - 1);
 КонецЕсли;

 Если ТипЗнч(ПараметрыСоединения) = Тип("Структура") Тогда
 Для каждого КлючЗначение из ПараметрыСоединения Цикл
 Значение = КлючЗначение. Значение; Выполнить(КлючЗначение. Ключ + " = Значение;");
 КонецЦикла;
 Пользователь = ? ( ЗначениеЗаполнено(Пользователь), Пользователь, Логин);
 КонецЕсли;
 НТТР = Новый HTTPСоединение(СерверПриемник, Порт, Пользователь, Пароль, Прокси, Таймаут,
 ? ( ЗащищенноеСоединение, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено));

 //Ответ от сервера получим в возвращаемом значении типа HTTPОтвет
 ОтветHTTP = НТТР. Получить(Новый HTTPЗапрос(АдресСтраницы, ЗаголовкиHTTP)); //
 ОшибкаЗапроса = (ОтветHTTP. КодСостояния >= 400);

 //После получения ответа сервера необходимо проверить статус или код состояния.
 //http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
 //Если сервер вернул один из статусов переадресации
 //301 Moved Permanently («перемещено навсегда») или 302 Moved Temporarily («перемещено временно»),
 //то в этом случае можно попытаться перейти на ресурс, на который переадресовал сервер
 Если ОтветHTTP. КодСостояния = 301 или ОтветHTTP. КодСостояния = 302 Тогда

 Если ОтветHTTP. Заголовки. Количество() > 0 Тогда
 //Адрес страницы переадресации содержится в поле Location заголовка ответа
 АдресСтраницы = ОтветHTTP. Заголовки["Location"]; //
 Если ЗначениеЗаполнено(АдресСтраницы) Тогда
 Если Найти(НРег(АдресСтраницы), "http://") = 0 И Найти(НРег(АдресСтраницы), "https://") = 0 Тогда
 АдресСтраницы = ? ( Лев(АдресСтраницы, 1) = "/", Сред(АдресСтраницы, 2), АдресСтраницы);
 Если Найти(АдресСтраницы, СерверПриемник + "/") = 0 Тогда
 АдресСтраницы = Протокол + СерверПриемник + ? ( ЗначениеЗаполнено(Порт), ":" + Порт, "") + "/" + АдресСтраницы;
 КонецЕсли;
 КонецЕсли;

 //Если сервер вернул cookies (       http://ru.wikipedia.org/wiki/HTTP_cookie    
    
,       http://www.faqs.org/rfcs/rfc6265.html? #41;    
    
,
 //вставим их в заголовки для передачи на страницу перехода
 Куки = ОтветHTTP. Заголовки["Set-Cookie"];//
 Если ЗначениеЗаполнено(Куки) Тогда ЗаголовкиHTTP. Вставить("Cookie", Куки); КонецЕсли;

 //Рекурсивный вызов
 Возврат ПолучитьСодержимоеВебАдреса(АдресСтраницы, , , ЗаголовкиHTTP, ПолучитьКакДвоичныеДанные, ЗащищенноеСоединение);//

 КонецЕсли;
 КонецЕсли;

 ИначеЕсли ОтветHTTP. КодСостояния >= 100 И ОтветHTTP. КодСостояния <= 200 Тогда
 //Статус ответа в интервале между 100 и 200 Ok говорит о нормальном результате HTTP-запроса
 Если ОтветHTTP. Заголовки. Количество() > 0 Тогда
 ТипСодержимого = ОтветHTTP. Заголовки["Content-Type"];
 //http://ru.wikipedia.org/wiki/Список_MIME-типов
 Если Найти(ТипСодержимого, "text/") = 1 ИЛИ Найти(ТипСодержимого, "/javascript")
 ИЛИ Найти(ТипСодержимого, "+xml") ИЛИ Найти(ТипСодержимого, "/xml") <> 0 ИЛИ Найти(ТипСодержимого, "/json") <> 0 Тогда
 ПолучитьКакДвоичныеДанные = Ложь;
 ИначеЕсли Найти(ТипСодержимого, "image/") = 1 ИЛИ Найти(ТипСодержимого, "video/") = 1 
 ИЛИ Найти(ТипСодержимого, "application/") = 1 ИЛИ Найти(ТипСодержимого, "audio/") = 1 Тогда
 //Если содержимое полученного ответа представляет собой изображение, видео, приложение,
 //возвращаем двоичные данные, так как возвращать в виде строки не имеет смысла.
 ПолучитьКакДвоичныеДанные = Истина;
 КонецЕсли;
 //Некоторые сервера возвращают в типе содержимого имя отданного файла, например image/png; name="Имя файла.png"
 //или отдают в заголовке Content-Disposition: attachment; filename=Имя файла.png (       http://www.http11.ru/post.php? post=2)    
    

 Если ОтветHTTP. Заголовки["Content-Disposition"]  Неопределено Тогда
 ТипСодержимого = ОтветHTTP. Заголовки["Content-Disposition"];
 КонецЕсли;
 ТипСодержимого = СтрЗаменить(СтрЗаменить(ТипСодержимого, """", ""), "'", "");

 //в ключе filename*=UTF-8'' содержится url-кодированное имя файла
 ПозицияИмениФайла = Найти(ТипСодержимого, "filename*=UTF-8");
 Если ПозицияИмениФайла  0 Тогда
 ИмяФайлаОтветаКодированное = Сред(ТипСодержимого, ПозицияИмениФайла + СтрДлина("filename*=UTF-8"));
 ПозицияДвоеточия = Найти(ИмяФайлаОтветаКодированное, ";");
 Если ПозицияДвоеточия  0 Тогда
 ИмяФайлаОтветаКодированное = Лев(ИмяФайлаОтветаКодированное, ПозицияДвоеточия - 1);
 КонецЕсли;
 КонецЕсли;

 //в ключе filename= содержится обычное имя файла
 ПозицияИмениФайла = Найти(ТипСодержимого, "name=");
 Если ПозицияИмениФайла  0 Тогда
 ИмяФайлаОтвета = Сред(ТипСодержимого, ПозицияИмениФайла + СтрДлина("name="));
 ПозицияДвоеточия = Найти(ИмяФайлаОтвета, ";");
 Если ПозицияДвоеточия  0 Тогда
 ИмяФайлаОтвета = Лев(ИмяФайлаОтвета, ПозицияДвоеточия - 1);
 КонецЕсли;
 КонецЕсли;
 КонецЕсли;
 КонецЕсли;

 ЗаголовкиHTTP = ОтветHTTP. Заголовки;
 //Добавляем в заголовки ответа код состояния (ответа) HTTP-сервера и имя файла содержимого, если есть.
 ЗаголовкиHTTP. Вставить("StatusCode", ОтветHTTP. КодСостояния);
 Если ЗначениеЗаполнено(ИмяФайлаОтвета) Тогда ЗаголовкиHTTP. Вставить("FileName", ИмяФайлаОтвета); КонецЕсли;
 Если ЗначениеЗаполнено(ИмяФайлаОтветаКодированное) Тогда
 ЗаголовкиHTTP. Вставить("EncodeFileName", ИмяФайлаОтветаКодированное);
 КонецЕсли;

 Если ОшибкаЗапроса ИЛИ НЕ ПолучитьКакДвоичныеДанные Тогда Возврат ОтветHTTP. ПолучитьТелоКакСтроку(); КонецЕсли;
 Возврат ОтветHTTP. ПолучитьТелоКакДвоичныеДанные();

КонецФункции // ПолучитьСодержимоеВебАдреса()

  

Работа с текстовым документом в языке 1С 8? 3, 8. 2 (в примерах)

<<<
XML
ZIP
WORD
DBF
HTTP
FTP
ТабличныйДокумент

Владимир Милькин

Как помочь сайту:
расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы
, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Файловая система (ФС)

Обращение к файловой системе

Для работы с файловой системой предназначен объект «ФС». В принципе его не требуется создавать с помощью функции СоздатьОбъект. Можно считать, что он уже создан. Но 1С позволяет создать сколько угодно таких объектов при помощи функции СоздатьОбъект;

  ГдеМыНаходимся = ФС. ТекКаталог();
ФС. СоздатьКаталог("");
НовФС = СоздатьОбъект("");
  

Объект «ФС» имеет следующие методы:

   
ВыбратьФайл()


Открывает окно диалога выбора/сохранения файла. Возвращает: 0 — если в окне диалога нажата кнопка ‘Отмена’, 1 — если нажата кнопка ‘ОК’.

Синтаксис: ВыбратьФайл (<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <ЗаголовокОкна>, <Фильтр>, <Расширение>, <Таймаут>)

ВыбратьФайлКартинки


Открывает окно диалога выбора/сохранения файла картинки.


Возвращает: 0 — если в окне диалога нажата кнопка ‘Отмена’, 1 — если нажата кнопка ‘ОК’.


Синтаксис: ВыбратьФайлКартинки (<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <ЗаголовокОкна>, <Расширение>, <Таймаут>)

ВыбратьКаталог


Открывает окно диалога выбора каталога.


Возвращает: 0 — если в окне диалога нажата кнопка ‘Отмена’; 1 — если в окне диалога нажата кнопка ‘ОК’, при этом в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.


Синтаксис: ВыбратьКаталог(<ИмяКаталога>,<ЗаголовокОкна>,<Таймаут>)

СуществуетФайл


Проверяет существование файла.


Возвращает: 1 — файл существует; 0 — не существует.


Синтаксис: СуществуетФайл(<ИмяФайла>)

Копирует файл.


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

Параметры:


<ИмяФайлаИсточника> — строка с именем файла источника;


<ИмяФайлаПриемника> — строка с именем файла приемника;


<ФлагПерезаписи> -:


0 — существующий файл приемника перезаписать;


1 — существующий файл приемника не перезаписывать.

Удаляет файл.


Синтаксис: УдалитьФайл(<ИмяФайла>)

Переименовать/переместить файл.


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

Параметры:


<ИмяФайлаИсточника> — строка с именем файла источника;


<ИмяФайлаПриемника> — строка с новым именем файла;


<ФлагПерезаписи> -:


0 — запрещает перемещение файла между дисками и существующий файл приемника не перезаписывается;


1 — разрешает перемещение файла между дисками (только для файлов) и существующий файл приемника перезаписывается.

Открывает выборку файлов по заданной маске и находит первый файл.


Возвращает строку с именем найденного файла.


Синтаксис: НайтиПервыйФайл(<МаскаИмени>)

Находит следующий файл по открытой выборке файлов.


Возвращает строку с именем найденного файла.


Синтаксис: НайтиСледующийФайл()

Возвращает атрибуты файла (в параметрах).

Синтаксис:


АтрибутыФайла (<ИмяФайла>, <РазмерФайла>, <АтрибутыФайла>, <ВремяСоздания>, <ВремяПоследнегоДоступа>, <ВремяПоследнейЗаписи>, <РасширенноеИмяФайла>)

Атрибуты файла закодированы, об этом см. Синтакс-Помощник или описание встроенного языка

Создать новый каталог (папку).


Синтаксис:СоздатьКаталог(<ИмяКаталога>)

Удаляет каталог файлов.


Синтаксис: УдалитьКаталог(<ИмяФайла>)

Устанавливает текущий каталог файлов.


Синтаксис: УстТекКаталог(<ИмяФайла>)

ТекКаталог


Возвращает строку с именем текущего каталога файлов.

WindowsКаталог


Возвращает строку с именем Windows директории.

СвободноеМестоНаДиске


Возвращает размер свободного дискового пространства в байтах.


Синтаксис: СвободноеМестоНаДиске(<ИмяДиска>)

Также часто применяются системные функции:

КаталогИБ
   Возвращает имя каталога базы данных.


КаталогПользователя
   Возвращает имя каталога пользователя.


КаталогПрограммы
   Возвращает имя каталога с исполняемыми файлами системы 1С:Предприятие.


КаталогВременныхФайлов
   Возвращает имя каталога временных файлов.


ИмяКомпьютера
   Возвращает сетевое имя компьютера, работающего в данный момент с программой.

Примеры

Пример 1


//переместить все текстовые файлы (*.txt) из каталога информационной базы в каталог TXT.

  ФС. УстТекКаталог(КаталогИБ());
ИмяФайла = "";
ИмяФайла = ФС. НайтиПервыйФайл("");
Если ИмяФайла <> "" Тогда
 ФС. СоздатьКаталог("");
 ФС. КопироватьФайл(ИмяФайла,ФС. ТекКаталог() + "" + ИмяФайла);
 ФС. УдалитьФайл(ИмяФайла);

Пока = Цикл

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

КонецЦикла;
  

Пример 2


//выбрать файл с фотографией сотрудника

  ИмяФайла = "";
ИмяКаталога = КаталогИБ();

Если ФС. ВыбратьФайлКартинки(,ИмяФайла,ИмяКаталога,"    Укажите файл с фотографией:    
",,)= Тогда

 ВремКартинка = СоздатьОбъект("");
 ВремКартинка. Загрузить(ИмяКаталога + ИмяФайла);
 КартинкаНаФорме. УстановитьКартинку(ВремКартинка);

КонецЕсли;
  

Оцените статью
ФСС Help
Добавить комментарий