Правила обмена 1С
Разработка правил обмена 1С с использованием "Конвертация данных 2.0" (на примере УНФ - Бухгалтерия)
Перенос начальных остатков из УТ11 в БП3. Разработка правил обмена КД 2. JSON в XML
Интеграция Power BI и 1С:УНФ, Web API на 1С, Odata. Занятие 28. Продв. курс по программир. 1С.
Обмен между 1С по-новому! Odata - это просто.
источник
👉@DevLab1C
Разработка правил обмена 1С с использованием "Конвертация данных 2.0" (на примере УНФ - Бухгалтерия)
Перенос начальных остатков из УТ11 в БП3. Разработка правил обмена КД 2. JSON в XML
Интеграция Power BI и 1С:УНФ, Web API на 1С, Odata. Занятие 28. Продв. курс по программир. 1С.
Обмен между 1С по-новому! Odata - это просто.
источник
👉@DevLab1C
👍4🔥2❤1
Помогаторы разработчика 1С
Данная статья написана по моему выступлению на Infostart Event 2022, на котором я рассказал об инструментах и «лайфхаках», которые использую в своей работе и которые, как мне кажется, помогают сделать работу разработчика 1С проще, удобнее, а главное, эффективней. Многие вещи, возможно, покажутся вам очевидными или совсем простыми. Но часто я вижу, что разработчики пренебрегают ими, а ведь именно такие «мелочи» и делают нашу жизнь проще.
https://habr.com/ru/articles/780588/
👉@DevLab1C
Данная статья написана по моему выступлению на Infostart Event 2022, на котором я рассказал об инструментах и «лайфхаках», которые использую в своей работе и которые, как мне кажется, помогают сделать работу разработчика 1С проще, удобнее, а главное, эффективней. Многие вещи, возможно, покажутся вам очевидными или совсем простыми. Но часто я вижу, что разработчики пренебрегают ими, а ведь именно такие «мелочи» и делают нашу жизнь проще.
https://habr.com/ru/articles/780588/
👉@DevLab1C
🔥4
Свертка всего Дерева Значений (на форме) в 1С 8.3
👉@DevLab1C
&НаКлиенте
Процедура СверткаВсегоДереваЗначенийНаФорме()
// ДеревоЗначНаФорме - на форме
КоллекцияЭлементовДерева=ДеревоЗначНаФорме.ПолучитьЭлементы();
//Свернуть дерево
Для Каждого СтрокаКоллекции Из КоллекцияЭлементовДерева Цикл
ИдСтроки=СтрокаКоллекции.ПолучитьИдентификатор();
Элементы.ДеревоЗначНаФорме.Свернуть(ИдСтроки); // Сворачиваем каждую строку тут
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
🔥3👍1
Пример реализации двухфакторной авторизации на 1С 8.3.21
👉@DevLab1C
&НаСервере
Процедура СозданиеШаблонаНастроекВторогоФактораАутентификации() // кнопка в обработке
ШаблонНастроек = ШаблоныНастроекВторогоФактораАутентификации.СоздатьШаблон();
ЗапросHTTP = Новый HTTPЗапрос;
ЗапросHTTP.АдресРесурса = "&host"; //в этот параметр на следующем шаге запишется адрес куда отправлять HTTP запрос
ЗапросHTTP.УстановитьТелоИзСтроки("Ваш код &secret","utf-8"); //тут можно изменить текстовку, обязательно ставим кодировку
ШаблонНастроек.HTTPЗапросНаАутентификацию = ЗапросHTTP;
ШаблонНастроек.МетодHTTPЗапросаНаАутентификацию = "POST"; //тут или GET, или POST,
//я в дальнейшем буду запрашивать пароли через POST
ШаблонНастроек.Имя = "ИмяШаблона"; //задаем имя шаблона, который используем в дальнейшем для назначения пользователю
ШаблонНастроек.Записать();
// Ставим галочку в конфигураторе у пользователя
// (Администрирование->Пользователи->ищем кому поставить) "Аутентификация токеном доступа"
КонецПроцедуры
&НаСервере
Процедура НазначениеШаблонаВторогоФактораАутентификации()
Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени("ИмяПользователя"); //ИмяПользователя - меняем на имя пользователя
НастройкаВФА = Новый НастройкаВторогоФактораАутентификации;
НастройкаВФА.ИмяШаблонаНастройки = "ИмяШаблона"; //Имя шаблона задавали на 1-ом этапе
ПараметрыНастройки = Новый Соответствие;
ПараметрыНастройки.Вставить("host","http://"127.0.0.1/otpavkod/hs/sendpass/?tel=123456789"); //Задаем адрес на который будет отправлен HTTP Запрос с кодом для авторизации
НастройкаВФА.Параметры = ПараметрыНастройки; //Задаем значение настройки
МассивНастроек = Новый Массив;
МассивНастроек.Добавить(НастройкаВФА); //задаем массив настроек, тут важно, что это массив, а значит можно указать несколько настроек аутентификации
Пользователь.НастройкиВторогоФактораАутентификации = МассивНастроек; //Устанавливаем настройки пользователю
Пользователь.ОбработкаНастроекВторогоФактораАутентификации = ТипОбработкиНастроекВторогоФактораАутентификации.ИспользоватьСледующуюПриОшибке; //что делать при некорректном вводе кода
Пользователь.Записать();
КонецПроцедуры
👉@DevLab1C
🔥2👍1
🚀 Подборка Telegram каналов для программистов
1C разработка 📌
https://news.1rj.ru/str/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://news.1rj.ru/str/DevLab1C 1С:Предприятие 8
https://news.1rj.ru/str/razrab_1C 1C Разработчик
https://news.1rj.ru/str/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://news.1rj.ru/str/rabota1C_rus Вакансии для программистов 1С
Системное администрирование, DevOps 📌
https://news.1rj.ru/str/bash_srv Bash Советы
https://news.1rj.ru/str/win_sysadmin Системный Администратор Windows
https://news.1rj.ru/str/sysadmin_girl Девочка Сисадмин
https://news.1rj.ru/str/srv_admin_linux Админские угодья
https://news.1rj.ru/str/linux_srv Типичный Сисадмин
https://news.1rj.ru/str/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://news.1rj.ru/str/linux_odmin Linux: Системный администратор
https://news.1rj.ru/str/devops_star DevOps Star (Звезда Девопса)
https://news.1rj.ru/str/i_linux Системный администратор
https://news.1rj.ru/str/linuxchmod Linux
https://news.1rj.ru/str/sys_adminos Системный Администратор
https://news.1rj.ru/str/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://news.1rj.ru/str/sysadminof Книги для админов, полезные материалы
https://news.1rj.ru/str/i_odmin Все для системного администратора
https://news.1rj.ru/str/i_odmin_book Библиотека Системного Администратора
https://news.1rj.ru/str/i_odmin_chat Чат системных администраторов
https://news.1rj.ru/str/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://news.1rj.ru/str/sysadminoff Новости Линукс Linux
Программирование C++📌
https://news.1rj.ru/str/cpp_lib Библиотека C/C++ разработчика
https://news.1rj.ru/str/cpp_knigi Книги для программистов C/C++
https://news.1rj.ru/str/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://news.1rj.ru/str/pythonofff Python академия.
https://news.1rj.ru/str/BookPython Библиотека Python разработчика
https://news.1rj.ru/str/python_real Python подборки на русском и английском
https://news.1rj.ru/str/python_360 Книги по Python
Java разработка 📌
https://news.1rj.ru/str/BookJava Библиотека Java разработчика
https://news.1rj.ru/str/java_360 Книги по Java Rus
https://news.1rj.ru/str/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://news.1rj.ru/str/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://news.1rj.ru/str/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://news.1rj.ru/str/developer_mobila Мобильная разработка
https://news.1rj.ru/str/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://news.1rj.ru/str/frontend_1 Подборки для frontend разработчиков
https://news.1rj.ru/str/frontend_sovet Frontend советы, примеры и практика!
https://news.1rj.ru/str/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://news.1rj.ru/str/game_devv Все о разработке игр
Библиотеки 📌
https://news.1rj.ru/str/book_for_dev Книги для программистов Rus
https://news.1rj.ru/str/programmist_of Книги по программированию
https://news.1rj.ru/str/proglb Библиотека программиста
https://news.1rj.ru/str/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://news.1rj.ru/str/bigdata_1 Big Data, Machine Learning
Программирование 📌
https://news.1rj.ru/str/bookflow Лекции, видеоуроки, доклады с IT конференций
https://news.1rj.ru/str/rust_lib Полезный контент по программированию на Rust
https://news.1rj.ru/str/golang_lib Библиотека Go (Golang) разработчика
https://news.1rj.ru/str/itmozg Программисты, дизайнеры, новости из мира IT
https://news.1rj.ru/str/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://news.1rj.ru/str/nodejs_lib Подборки по Node js и все что с ним связано
https://news.1rj.ru/str/ruby_lib Библиотека Ruby программиста
https://news.1rj.ru/str/lifeproger Жизнь программиста. Авторский канал.
QA, тестирование 📌
https://news.1rj.ru/str/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://news.1rj.ru/str/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://news.1rj.ru/str/thehaking Канал о кибербезопасности
https://news.1rj.ru/str/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://news.1rj.ru/str/ux_web Статьи, книги для дизайнеров
Математика 📌
https://news.1rj.ru/str/Pomatematike Канал по математике
https://news.1rj.ru/str/phis_mat Обучающие видео, книги по Физике и Математике
https://news.1rj.ru/str/matgeoru Математика | Геометрия | Логика
Excel лайфхак📌
https://news.1rj.ru/str/Excel_lifehack
https://news.1rj.ru/str/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://news.1rj.ru/str/sysadmin_rabota Системный Администратор
https://news.1rj.ru/str/progjob Вакансии в IT
1C разработка 📌
https://news.1rj.ru/str/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://news.1rj.ru/str/DevLab1C 1С:Предприятие 8
https://news.1rj.ru/str/razrab_1C 1C Разработчик
https://news.1rj.ru/str/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://news.1rj.ru/str/rabota1C_rus Вакансии для программистов 1С
Системное администрирование, DevOps 📌
https://news.1rj.ru/str/bash_srv Bash Советы
https://news.1rj.ru/str/win_sysadmin Системный Администратор Windows
https://news.1rj.ru/str/sysadmin_girl Девочка Сисадмин
https://news.1rj.ru/str/srv_admin_linux Админские угодья
https://news.1rj.ru/str/linux_srv Типичный Сисадмин
https://news.1rj.ru/str/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://news.1rj.ru/str/linux_odmin Linux: Системный администратор
https://news.1rj.ru/str/devops_star DevOps Star (Звезда Девопса)
https://news.1rj.ru/str/i_linux Системный администратор
https://news.1rj.ru/str/linuxchmod Linux
https://news.1rj.ru/str/sys_adminos Системный Администратор
https://news.1rj.ru/str/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://news.1rj.ru/str/sysadminof Книги для админов, полезные материалы
https://news.1rj.ru/str/i_odmin Все для системного администратора
https://news.1rj.ru/str/i_odmin_book Библиотека Системного Администратора
https://news.1rj.ru/str/i_odmin_chat Чат системных администраторов
https://news.1rj.ru/str/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://news.1rj.ru/str/sysadminoff Новости Линукс Linux
Программирование C++📌
https://news.1rj.ru/str/cpp_lib Библиотека C/C++ разработчика
https://news.1rj.ru/str/cpp_knigi Книги для программистов C/C++
https://news.1rj.ru/str/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://news.1rj.ru/str/pythonofff Python академия.
https://news.1rj.ru/str/BookPython Библиотека Python разработчика
https://news.1rj.ru/str/python_real Python подборки на русском и английском
https://news.1rj.ru/str/python_360 Книги по Python
Java разработка 📌
https://news.1rj.ru/str/BookJava Библиотека Java разработчика
https://news.1rj.ru/str/java_360 Книги по Java Rus
https://news.1rj.ru/str/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://news.1rj.ru/str/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://news.1rj.ru/str/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://news.1rj.ru/str/developer_mobila Мобильная разработка
https://news.1rj.ru/str/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://news.1rj.ru/str/frontend_1 Подборки для frontend разработчиков
https://news.1rj.ru/str/frontend_sovet Frontend советы, примеры и практика!
https://news.1rj.ru/str/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://news.1rj.ru/str/game_devv Все о разработке игр
Библиотеки 📌
https://news.1rj.ru/str/book_for_dev Книги для программистов Rus
https://news.1rj.ru/str/programmist_of Книги по программированию
https://news.1rj.ru/str/proglb Библиотека программиста
https://news.1rj.ru/str/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://news.1rj.ru/str/bigdata_1 Big Data, Machine Learning
Программирование 📌
https://news.1rj.ru/str/bookflow Лекции, видеоуроки, доклады с IT конференций
https://news.1rj.ru/str/rust_lib Полезный контент по программированию на Rust
https://news.1rj.ru/str/golang_lib Библиотека Go (Golang) разработчика
https://news.1rj.ru/str/itmozg Программисты, дизайнеры, новости из мира IT
https://news.1rj.ru/str/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://news.1rj.ru/str/nodejs_lib Подборки по Node js и все что с ним связано
https://news.1rj.ru/str/ruby_lib Библиотека Ruby программиста
https://news.1rj.ru/str/lifeproger Жизнь программиста. Авторский канал.
QA, тестирование 📌
https://news.1rj.ru/str/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://news.1rj.ru/str/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://news.1rj.ru/str/thehaking Канал о кибербезопасности
https://news.1rj.ru/str/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://news.1rj.ru/str/ux_web Статьи, книги для дизайнеров
Математика 📌
https://news.1rj.ru/str/Pomatematike Канал по математике
https://news.1rj.ru/str/phis_mat Обучающие видео, книги по Физике и Математике
https://news.1rj.ru/str/matgeoru Математика | Геометрия | Логика
Excel лайфхак📌
https://news.1rj.ru/str/Excel_lifehack
https://news.1rj.ru/str/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://news.1rj.ru/str/sysadmin_rabota Системный Администратор
https://news.1rj.ru/str/progjob Вакансии в IT
Telegram
1C программист
Cтатьи, курсы, советы, шаблоны кода 1С. По всем вопросам @evgenycarter
🔥2💩1
Чтение и запись файлов в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура ЧтениеИЗаписьФайлов()
// Любое сериализуемое значение (массив, структура, таблица значений, строки...) можно сохранить в файл
НаборСимволов = Новый Массив;
НаборСимволов.Добавить(125);
НаборСимволов.Добавить("А");
НаборСимволов.Добавить("99");
НаборСимволов.Добавить("%");
ЗначениеВФайл("D:\Symbol.txt", НаборСимволов); // работает только на &НаСервере
// Восстановление произвольных значений из файла
НаборСимволовИзФайла = ЗначениеИзФайла("D:\Symbol.txt");
Сообщить(НаборСимволовИзФайла[0]); // 125
Сообщить(НаборСимволовИзФайла[1]); // А
Сообщить(НаборСимволовИзФайла[2]); // 99
Сообщить(НаборСимволовИзФайла[3]); // %
// Запись текстового файла (работает и на &НаСервере и на &НаКлиенте)
// Параметры: Путь с именем файла, кодировка, разделитель строк (необяз.), перезаписывать файл (необяз.)
ТекстФайл = Новый ЗаписьТекста("D:\Prostokvashino.txt", КодировкаТекста.ANSI, Символы.ПС, Ложь);
ТекстФайл.ЗаписатьСтроку("Кот Матроскин");
ТекстФайл.ЗаписатьСтроку("Дядя Федор");
ТекстФайл.ЗаписатьСтроку("Шарик");
ТекстФайл.Закрыть();
// Чтение текстового файла (работает и на &НаСервере и на &НаКлиенте)
// Параметры: Путь с именем файла, кодировка, разделитель строк (необяз.), монопольный режим (необяз.)
ТекстФайл = Новый ЧтениеТекста("D:\Prostokvashino.txt", КодировкаТекста.ANSI, Символы.ПС, ,Истина);
Пока Истина Цикл // По строкам файлам
СтрокаФайла = ТекстФайл.ПрочитатьСтроку();
Если СтрокаФайла = Неопределено Тогда
Прервать;
Иначе
Сообщить(СтрокаФайла);// Вывод строки на экран
КонецЕсли;
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
🔥3👍1
Операции над файлами в 1С 8.3
👉@DevLab1C
&НаКлиенте
Процедура ОперацииНадФайлами(Команда)
// Создание переменных (имя и путь к файлу)
ПутьКФайлу_Test="D:\Test.txt";
ПутьКФайлу_Copy="D:\Copy.txt";
// Создание пустого файла
ТекстФайл = Новый ЗаписьТекста();
ТекстФайл.Закрыть();
// Проверка на существование файла
ТекстФайл = Новый Файл(ПутьКФайлу_Test);
Если ТекстФайл.Существует() Тогда
Сообщить(ПутьКФайлу_Test+" существует!");
КонецЕсли;
// Копирование файла. Параметры: Какой файл копируем, Куда файл копируем
КопироватьФайл(ПутьКФайлу_Test, ПутьКФайлу_Copy);// Если файл существует, то перезапишет
// Перемещение файла. Параметры: Какой файл копируем, Куда файл копируем
ПереместитьФайл(ПутьКФайлу_Test, ПутьКФайлу_Copy);// Если файл существует, то перезапишет
// Поиск файлов в каталоге (функция возвращает массив значений)
// Параметры: Каталог поиска, Маска поиска, Поиск и в подкаталогах
МассивФайлов = НайтиФайлы("D:\", "*.txt", Ложь);
Для Каждого ТекФайл Из МассивФайлов Цикл
Сообщить("Найден файл: " + ТекФайл.ПолноеИмя);
КонецЦикла;
// Удаление файла
УдалитьФайлы(ПутьКФайлу_Test); // Если файл с параметром только для чтения, то будет ошибка
// Удаление файлов в каталоге по маске
// поиск в каталоге нерекурсивный
УдалитьФайлы("D:\","*.txt"); // Если маски нет, то удалятся все файлы и сам каталог
// Получение имя временного файла
ПолучитьИмяВременногоФайла(); // Например, C:\Temp\H_kImX035.tmp
ПолучитьИмяВременногоФайла(".txt"); // Например, C:\Temp\H_kImX035.txt
КонецПроцедуры
👉@DevLab1C
🔥2👍1
Получение и изменение атрибутов файла в 1С 8.3
👉@DevLab1C
&НаКлиенте
Процедура ПолучениеИИзменениеАтрибутовФайла(Команда)
ТекстФайл = Новый Файл("D:\Test.txt");
// Чтение атрибутов
ТекстФайл.ПолучитьВремяИзменения(); // время последнего изменения файла
ТекстФайл.ПолучитьТолькоЧтение(); // проверяем атрибут только чтение
ТекстФайл.ПолучитьНевидимость(); // проверяем атрибут hidden (скрытность, невидимость)
ТекстФайл.Размер(); // размер файла в байтах
// Получение расширение файла из его пути
ТекстФайл.Расширение(); // .txt
// Получение имени файла без расширения
ТекстФайл.ИмяБезРасширения(); // Test
// Получение информации по пути файла - это файл или каталог
Если ТекстФайл.ЭтоКаталог() Тогда
// Это каталог
ИначеЕсли ТекстФайл.ЭтоФайл() Тогда
// Это файл
КонецЕсли;
// Изменение атрибутов
ТекстФайл.УстановитьВремяИзменения(ТекущаяДата()); // меняем время последнего изменения файла
ТекстФайл.УстановитьТолькоЧтение(Ложь); // меняем атрибут только чтение
ТекстФайл.УстановитьНевидимость(Ложь); // меняем атрибут невидимости
КонецПроцедуры
👉@DevLab1C
🔥2👍1
Операции над каталогами в 1С 8.3
👉@DevLab1C
&НаКлиенте
Процедура ОперацииНадКаталогами(Команда)
//Создание каталога (он может уже существовать)
СоздатьКаталог("D:\Catalog");
//Создание подкаталогов
СоздатьКаталог("D:\Catalog\2020\1");
// Проверка существования каталога
Каталог = Новый Файл("D:\Catalog");
Если Каталог.Существует() Тогда
Сообщить("Каталог по пути D:\Catalog существует!");
КонецЕсли;
// Удаление каталога (вместе с файлами и подкаталогами)
УдалитьФайлы("D:\Catalog"); // Можно добавить максу
// Получение каталога временных файлов
КаталогВременныхФайлов(); // Например, C:\Windows\Temp
КонецПроцедуры
👉@DevLab1C
👍3🔥2
Получить двоичные данные двумя способами в 1С 8.3
👉@DevLab1C
Функция ПолучитьДвоичныеДанныеОбъекта()
// Получение двоичных данных через временный файл (и помещение их во временное хранилище)
ВременныйФайл = ПолучитьИмяВременногоФайла("SCAN");
ТабличныйДокумент.Записать(ВременныйФайл, ТипФайлаТабличногоДокумента.PDF);
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВременныйФайл));
// Получение двоичных данных через временный файл (и помещение их во временное хранилище)
Поток = Новый ПотокВПамяти;
ТабличныйДокумент.Записать(Поток, ТипФайлаТабличногоДокумента.PDF);
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Поток.ЗакрытьИПолучитьДвоичныеДанные());
Возврат АдресВоВременномХранилище;
КонецФункции
👉@DevLab1C
🔥2👍1
Передача файла с клиента на сервер в 1С 8.3
👉@DevLab1C
&НаКлиенте
Процедура ПередачаФайлаСКлиентаНаСервер(Команда)
ТекстФайл = Новый ЗаписьТекста("D:\Prostokvashino.txt");
ТекстФайл.ЗаписатьСтроку("Кот Матроскин");
ТекстФайл.ЗаписатьСтроку("Дядя Федор");
ТекстФайл.ЗаписатьСтроку("Шарик");
ТекстФайл.Закрыть();
Завершено = Новый ОписаниеОповещения("ПослеПередачи", ЭтотОбъект);
// Параметр УникальныйИдентификаторФормы - если не указывать - то файл будет удален после очередного запроса сервера
// если указать - то после удаления объекта формы
// Параметр Интерактивно (Истина) - дает пользователю выбрать файл самому
НачатьПомещениеФайла(Завершено, , "D:\Prostokvashino.txt", Ложь, ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПередачи(Результат, ХранимыйАдрес, ВыбранноеИмяФайла, ДопПараметры) Экспорт
Если Результат Тогда
// Сохранение полученного адреса в реквизите формы (строка) - адрес файла в хранилище на сервере
АдресФайлаВХранилище = ХранимыйАдрес;
Сообщить("Файл " + ВыбранноеИмяФайла + " передан на сервер и сохранён во временном хранилище. Адрес: " + ХранимыйАдрес);
Иначе
Сообщить("Ошибка передачи файла на сервер!");
КонецЕсли;
КонецПроцедуры
👉@DevLab1C
👍2🔥2
Чтение файла на сервере из временного хранилища в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура ЧтениеФайлаНаСервереИзВременногоХранилища()
Если ФайлВХранилище = "" Тогда
Сообщить("Сначала нужно передать файл с клиента на сервер!");
Возврат;
КонецЕсли;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлВХранилище);
Если ДвоичныеДанные = Неопределено Тогда
Сообщить("Файл уже был удалён из временного хранилища!");
Возврат;
КонецЕсли;
ДвоичныеДанные.Записать("D:\to_test.txt");
Текст = Новый ЧтениеТекста("D:\to_test.txt");
Пока Истина Цикл
Строка = Текст.ПрочитатьСтроку();
Если Строка = Неопределено Тогда
Прервать;
Иначе
Сообщить(Строка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
👍2🔥2
Передача файла с сервера на клиент в 1С 8.3
👉@DevLab1C
&НаКлиенте
Процедура ПередатьФайлССервераНаКлиент(Команда)
Если ФайлВХранилище = "" Тогда // Реквизит формы (строка): адрес файла в хранилище на сервере
Сообщить("Сначала нужно сохранить файл на сервере.");
Возврат;
КонецЕсли;
Завершено = Новый ОписаниеОповещения("ПослеПолучения", ЭтотОбъект);
МассивФайлов = Новый Массив;
МассивФайлов.Добавить(Новый ОписаниеПередаваемогоФайла("D:\from_test.txt", ФайлВХранилище));
НачатьПолучениеФайлов(Завершено, МассивФайлов,, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПолучения(Файлы, ДополнительныеПараметры) Экспорт
Для Каждого ТекФайл Из Файлы Цикл
Сообщить(ТекФайл.Имя + " получен из " + ТекФайл.Хранение);
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
❤2👍1🔥1
Узнать место на диске в 1С 8.3
👉@DevLab1C
Функция ПолучитьМестоНаДиске(Диск) Экспорт // Диск - строка - "d:\"
СистемнаяИнфо = Новый СистемнаяИнформация;
ТипПлатформы = СистемнаяИнфо.ТипПлатформы;
Если ТипПлатформы = ТипПлатформы.Windows_x86
Или ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
СкриптФСО = Новый COMОбъект("Scripting.FileSystemObject");
МестоНаДиске = Окр(Число(СкриптФСО.getDrive(СкриптФСО.GetDriveName(Диск)).freeSpace())/1024/1024, 2);
Возврат МестоНаДиске;
Иначе
//Сообщить("Данная функция поддерживается только в ОС Windows");
Возврат Неопределено;
КонецЕсли;
КонецФункции
👉@DevLab1C
🔥2👍1
Получить каталог информационной базы данных в 1С 8.3
👉@DevLab1C
&НаКлиенте
Функция ПолучитьКаталогИБ()// аналог предопределенной КаталогИБ() в 1C 7.7
СтрокаИБ = СтрокаСоединенияИнформационнойБазы(); //File="D:\Base".
//Возвращает Строка соединения информационной базы, которую, например,
//можно использовать для запуска 1С:Предприятия средствами встроенного языка
ПутьИБ = Найти(Врег(СтрокаИБ), "FILE=");
Если ПутьИБ = 1 тогда // Файловая информационная база 1С:Предприятия 8 (.1CD)
Возврат Сред(СтрокаИБ,7,СтрДлина(СтрокаИБ)-8)+"\"; // Получим D:\Base
Иначе// Серверная - Используем КаталогВременныхФайлов()
ПозицияПоиска = Найти(Врег(СтрокаИБ), "SRVR=");
Если ПозицияПоиска <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
ПозицияТЧК_ЗПТ = Найти(СтрокаИБ, ";");
ПозСтарт = 6 + 1;
ПозФиниш = ПозицияТЧК_ЗПТ - 2; //
ИмяСервера = Сред(СтрокаИБ, ПозСтарт, ПозФиниш - ПозСтарт + 1);
СтрокаИБ = Сред(СтрокаИБ, ПозицияТЧК_ЗПТ + 1);
ПутьИБ = Найти(Врег(СтрокаИБ), "REF=");// позиция имени сервера
Если ПутьИБ <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
ПозСтарт = 6;
ПозицияТЧК_ЗПТ = Найти(СтрокаИБ, ";");
ПозФиниш = ПозицияТЧК_ЗПТ - 2;
ИмяИБНаСервере = Сред(СтрокаИБ, ПозСтарт, ПозФиниш - ПозСтарт + 1);
ПутьКБД = ИмяСервера + "/ " + ИмяИБНаСервере; //ServerName: Server1C / information_base_name: Buh3
Сообщить("ИБ в серверном режиме: "+ПутьКБД);
Сообщить("Серверная база данных! Используем каталог временных файлов ("+СокрЛП(КаталогВременныхФайлов())+") !");
Возврат КаталогВременныхФайлов();
КонецЕсли;
КонецФункции
👉@DevLab1C
🔥2👍1
Узнать размер папки в 1С 8.3
👉@DevLab1C
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьРазмерКаталога(ПутьККаталогу)
СистемнаяИнфо = Новый СистемнаяИнформация;
ТипПлатформы = СистемнаяИнфо.ТипПлатформы;
Если ТипПлатформы = ТипПлатформы.Windows_x86
Или ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
СкриптФСО = Новый COMОбъект("Scripting.FileSystemObject");
СвойстваКаталога = СкриптФСО.GetFolder(ПутьККаталогу);
Возврат СвойстваКаталога.Size;
Иначе
//Сообщить("Данная функция поддерживается только в ОС Windows");
Возврат Неопределено;
КонецЕсли;
КонецФункции
👉@DevLab1C
👍4
Копирование всех файлов из одного каталога в другой в 1С 8.3
👉@DevLab1C
Процедура СкопироватьФайлы(Знач КаталогИсточник, Знач КаталогПриемник)
Попытка
//Проверим и поправим окончания пути каталогов
Если Прав(КаталогИсточник, 1) <> "\" Тогда
КаталогИсточник = КаталогИсточник + "\";
КонецЕсли;
Если Прав(КаталогПриемник, 1) <> "\" Тогда
КаталогПриемник = КаталогПриемник + "\";
КонецЕсли;
//Создадим каталог приемник
СоздатьКаталог(КаталогПриемник);
МассивФайлов = НайтиФайлы(КаталогИсточник, "*.*", Истина);
Для Каждого Файл Из МассивФайлов Цикл
ПолноеИмяИсточник = Файл.ПолноеИмя;
ПолноеИмяПриемник = КаталогПриемник + СтрЗаменить(Файл.ПолноеИмя, КаталогИсточник, "");
Если ПустаяСтрока(Файл.Расширение) Тогда
СоздатьКаталог(ПолноеИмяПриемник);
Иначе
КопироватьФайл(ПолноеИмяИсточник, ПолноеИмяПриемник);
КонецЕсли;
КонецЦикла;
Исключение
ИнфоОбОшибке = "Ошибка при копировании: " + ОписаниеОшибки()
+ " (из каталога: " + КаталогИсточник
+ "; в каталог: " + КаталогПриемник + ")";
Если ВыдаватьСообщения Тогда
Сообщить(ИнфоОбОшибке);
Иначе
Предупреждение(ИнфоОбОшибке);
КонецЕсли;
КонецПопытки;
КонецПроцедуры
👉@DevLab1C
🔥2❤1👍1
Асинхронное копирование всех файлов из одного каталога в другой в 1С 8.3
👉@DevLab1C
Асинх Процедура СкопироватьФайлыАсинх(Знач КаталогИсточник, Знач КаталогПриемник)
КаталогПриемник = Новый Файл(КаталогПриемник);
Если Не Ждать КаталогПриемник.СуществуетАсинх() Тогда
Ждать СоздатьКаталогАсинх(КаталогПриемник.ПолноеИмя);
КонецЕсли;
МассивФайлов = Ждать НайтиФайлыАсинх(КаталогИсточник, "*.*", Ложь);
Для Каждого Файл Из МассивФайлов Цикл
ПолноеИмяПриемника = КаталогПриемник.ПолноеИмя + "\" + Файл.Имя;
Если Файл.ЭтоКаталог() Тогда
СкопироватьФайлы(Файл.ПолноеИмя, ПолноеИмяПриемника);
Иначе
Ждать КопироватьФайлАсинх(Файл.ПолноеИмя, ПолноеИмяПриемника);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
🔥3👍1
Пример копирования (перемещения) файлов из одного каталога в другой в 1С 8.3
👉@DevLab1C
Процедура СкопироватьПереместитьКаталог(ИмяФайлаИсточник, ИмяФайлаПриемник, Переместить = Ложь)
Если Прав(ИмяФайлаИсточник, 1) <> "\" Тогда
ИмяФайлаИсточник = ИмяФайлаИсточник + "\";
КонецЕсли;
Файл = Новый Файл(ИмяФайлаПриемник);
ИмяФайлаИсточник = ИмяФайлаИсточник + Файл.Имя;
СоздатьКаталог(ИмяФайлаИсточник);
Если Прав(ИмяФайлаИсточник, 1) <> "\" Тогда
ИмяФайлаИсточник = ИмяФайлаИсточник + "\";
КонецЕсли;
Для Каждого Файлы Из НайтиФайлы(ИмяФайлаПриемник, "*.*", Истина) Цикл
Если Файлы.ЭтоКаталог() Тогда
СоздатьКаталог(СтрЗаменить(Файлы.ПолноеИмя, ИмяФайлаПриемник, ИмяФайлаИсточник));
Продолжить;
Иначе
КаталогПереносимогоФайла = Новый Файл(СтрЗаменить(Файлы.Путь, ИмяФайлаПриемник, ИмяФайлаИсточник));
Если НЕ КаталогПереносимогоФайла.Существует() Тогда
СоздатьКаталог(КаталогПереносимогоФайла.ПолноеИмя);
КонецЕсли;
Если Переместить Тогда
ПереместитьФайл(Файлы.ПолноеИмя, СтрЗаменить(Файлы.ПолноеИмя, ИмяФайлаПриемник, ИмяФайлаИсточник));
Иначе
КопироватьФайл(Файлы.ПолноеИмя, СтрЗаменить(Файлы.ПолноеИмя, ИмяФайлаПриемник, ИмяФайлаИсточник));
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Переместить Тогда
УдалитьФайлы(ИмяФайлаПриемник);
КонецЕсли;
КонецПроцедуры
👉@DevLab1C
🔥2👍1