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
//выбрать файл с фотографией сотрудника
ИмяФайла = "";
ИмяКаталога = КаталогИБ();
Если ФС. ВыбратьФайлКартинки(,ИмяФайла,ИмяКаталога," Укажите файл с фотографией:
",,)= Тогда
ВремКартинка = СоздатьОбъект("");
ВремКартинка. Загрузить(ИмяКаталога + ИмяФайла);
КартинкаНаФорме. УстановитьКартинку(ВремКартинка);
КонецЕсли;





