ar
Feedback
1С:Предприятие 8

1С:Предприятие 8

الذهاب إلى القناة على Telegram

🔥 Разработка в 1С — просто и понятно! 🔥 ✅ Полезные фишки и лайфхаки для разработчиков ✅ Объяснение сложных тем простыми словами ✅ Готовые решения, сниппеты и примеры кода ✅ Разбор ошибок и способов их устранения ✅ Новости и тренды в мире 1С

إظهار المزيد
879
المشتركون
لا توجد بيانات24 ساعات
+17 أيام
-230 أيام
أرشيف المشاركات
Узнать размер папки в 1С 8.3 &НаКлиентеНаСервереБезКонтекста Функция ПолучитьРазмерКаталога(ПутьККаталогу) СистемнаяИнфо = Но
Узнать размер папки в 1С 8.3

&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьРазмерКаталога(ПутьККаталогу)

   СистемнаяИнфо = Новый СистемнаяИнформация;
   ТипПлатформы = СистемнаяИнфо.ТипПлатформы;

   Если ТипПлатформы = ТипПлатформы.Windows_x86
       Или ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда

       СкриптФСО = Новый COMОбъект("Scripting.FileSystemObject");
       СвойстваКаталога = СкриптФСО.GetFolder(ПутьККаталогу);

       Возврат  СвойстваКаталога.Size;

   Иначе

       //Сообщить("Данная функция поддерживается только в ОС Windows");
       Возврат  Неопределено;

   КонецЕсли;

КонецФункции
👉@DevLab1C

Получить каталог информационной базы данных в 1С 8.3 &НаКлиенте Функция ПолучитьКаталогИБ()// аналог предопределенной Кат
Получить каталог информационной базы данных в 1С 8.3

&НаКлиенте
Функция ПолучитьКаталогИБ()// аналог предопределенной КаталогИБ() в 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

Узнать место на диске в 1С 8.3 Функция ПолучитьМестоНаДиске(Диск) Экспорт // Диск - строка - "d:\" СистемнаяИнфо = Новый Сист
Узнать место на диске в 1С 8.3

Функция ПолучитьМестоНаДиске(Диск) Экспорт // Диск - строка - "d:\"

   СистемнаяИнфо = Новый СистемнаяИнформация;
   ТипПлатформы = СистемнаяИнфо.ТипПлатформы;

   Если ТипПлатформы = ТипПлатформы.Windows_x86
       Или ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда

       СкриптФСО  = Новый COMОбъект("Scripting.FileSystemObject");
       МестоНаДиске = Окр(Число(СкриптФСО.getDrive(СкриптФСО.GetDriveName(Диск)).freeSpace())/1024/1024, 2);

       Возврат МестоНаДиске;

   Иначе

       //Сообщить("Данная функция поддерживается только в ОС Windows");
       Возврат  Неопределено;

   КонецЕсли;

КонецФункции
👉@DevLab1C

Передача файла с сервера на клиент в 1С 8.3 &НаКлиенте Процедура ПередатьФайлССервераНаКлиент(Команда) Если ФайлВХранилище =
Передача файла с сервера на клиент в 1С 8.3

&НаКлиенте
Процедура ПередатьФайлССервераНаКлиент(Команда)

    Если ФайлВХранилище = "" Тогда // Реквизит формы (строка): адрес файла в хранилище на сервере
        Сообщить("Сначала нужно сохранить файл на сервере.");
        Возврат;
    КонецЕсли;

    Завершено = Новый ОписаниеОповещения("ПослеПолучения", ЭтотОбъект);

    МассивФайлов = Новый Массив;
    МассивФайлов.Добавить(Новый ОписаниеПередаваемогоФайла("D:\from_test.txt", ФайлВХранилище));
    НачатьПолучениеФайлов(Завершено, МассивФайлов,, Ложь);

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

&НаКлиенте
Процедура ПослеПолучения(Файлы, ДополнительныеПараметры) Экспорт

    Для Каждого ТекФайл Из Файлы Цикл
        Сообщить(ТекФайл.Имя + " получен из " + ТекФайл.Хранение);
    КонецЦикла;

КонецПроцедуры
👉@DevLab1C

Чтение файла на сервере из временного хранилища в 1С 8.3 &НаСервере Процедура ЧтениеФайлаНаСервереИзВременногоХранилища() Есл
Чтение файла на сервере из временного хранилища в 1С 8.3

&НаСервере
Процедура ЧтениеФайлаНаСервереИзВременногоХранилища()

   Если ФайлВХранилище = "" Тогда
       Сообщить("Сначала нужно передать файл с клиента на сервер!");
       Возврат;
   КонецЕсли;

   ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлВХранилище);
   Если ДвоичныеДанные = Неопределено Тогда
       Сообщить("Файл уже был удалён из временного хранилища!");
       Возврат;
   КонецЕсли;

   ДвоичныеДанные.Записать("D:\to_test.txt");

   Текст = Новый ЧтениеТекста("D:\to_test.txt");
   Пока Истина Цикл
       Строка = Текст.ПрочитатьСтроку();
       Если Строка = Неопределено Тогда
           Прервать;
       Иначе
           Сообщить(Строка);
       КонецЕсли;
   КонецЦикла;

КонецПроцедуры
👉@DevLab1C

Передача файла с клиента на сервер в 1С 8.3 &НаКлиенте Процедура ПередачаФайлаСКлиентаНаСервер(Команда) ТекстФайл = Новый Зап
Передача файла с клиента на сервер в 1С 8.3

&НаКлиенте
Процедура ПередачаФайлаСКлиентаНаСервер(Команда)

    ТекстФайл = Новый ЗаписьТекста("D:\Prostokvashino.txt");
    ТекстФайл.ЗаписатьСтроку("Кот Матроскин");
    ТекстФайл.ЗаписатьСтроку("Дядя Федор");
    ТекстФайл.ЗаписатьСтроку("Шарик");
    ТекстФайл.Закрыть();

    Завершено = Новый ОписаниеОповещения("ПослеПередачи", ЭтотОбъект);

    // Параметр УникальныйИдентификаторФормы - если не указывать - то файл будет удален после очередного запроса сервера
    // если указать - то после удаления объекта формы
    // Параметр Интерактивно (Истина) - дает пользователю выбрать файл самому
    НачатьПомещениеФайла(Завершено, , "D:\Prostokvashino.txt", Ложь, ЭтаФорма.УникальныйИдентификатор);

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

&НаКлиенте
Процедура ПослеПередачи(Результат, ХранимыйАдрес, ВыбранноеИмяФайла, ДопПараметры) Экспорт

    Если Результат Тогда
        // Сохранение полученного адреса в реквизите формы (строка) - адрес файла в хранилище на сервере
        АдресФайлаВХранилище = ХранимыйАдрес;
        Сообщить("Файл " + ВыбранноеИмяФайла + " передан на сервер и сохранён во временном хранилище. Адрес: " + ХранимыйАдрес);
    Иначе
        Сообщить("Ошибка передачи файла на сервер!");
    КонецЕсли;

КонецПроцедуры
👉@DevLab1C

Получить двоичные данные двумя способами в 1С 8.3 Функция ПолучитьДвоичныеДанныеОбъекта() // Получение двоичных данных через
Получить двоичные данные двумя способами в 1С 8.3

Функция ПолучитьДвоичныеДанныеОбъекта()

   // Получение двоичных данных через временный файл (и помещение их во временное хранилище)
   ВременныйФайл = ПолучитьИмяВременногоФайла("SCAN");
   ТабличныйДокумент.Записать(ВременныйФайл, ТипФайлаТабличногоДокумента.PDF);
   АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВременныйФайл));

   // Получение двоичных данных через временный файл (и помещение их во временное хранилище)
   Поток = Новый ПотокВПамяти;
   ТабличныйДокумент.Записать(Поток, ТипФайлаТабличногоДокумента.PDF);
   АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Поток.ЗакрытьИПолучитьДвоичныеДанные());

   Возврат АдресВоВременномХранилище;

КонецФункции
👉@DevLab1C

Операции над каталогами в 1С 8.3 &НаКлиенте Процедура ОперацииНадКаталогами(Команда) //Создание каталога (он может уже сущест
Операции над каталогами в 1С 8.3

&НаКлиенте
Процедура ОперацииНадКаталогами(Команда)

    //Создание каталога (он может уже существовать)
    СоздатьКаталог("D:\Catalog");

    //Создание подкаталогов
    СоздатьКаталог("D:\Catalog\2020\1");

    // Проверка существования каталога
    Каталог = Новый Файл("D:\Catalog");
    Если Каталог.Существует() Тогда
        Сообщить("Каталог по пути D:\Catalog существует!");
    КонецЕсли;

    // Удаление каталога (вместе с файлами и подкаталогами)
    УдалитьФайлы("D:\Catalog"); // Можно добавить максу

    // Получение каталога временных файлов
    КаталогВременныхФайлов(); // Например, C:\Windows\Temp

КонецПроцедуры
👉@DevLab1C

Получение и изменение атрибутов файла в 1С 8.3 &НаКлиенте Процедура ПолучениеИИзменениеАтрибутовФайла(Команда) ТекстФайл = Но
Получение и изменение атрибутов файла в 1С 8.3

&НаКлиенте
Процедура ПолучениеИИзменениеАтрибутовФайла(Команда)

    ТекстФайл = Новый Файл("D:\Test.txt");

    // Чтение атрибутов
    ТекстФайл.ПолучитьВремяИзменения(); // время последнего изменения файла
    ТекстФайл.ПолучитьТолькоЧтение();  // проверяем атрибут только чтение
    ТекстФайл.ПолучитьНевидимость(); // проверяем атрибут hidden (скрытность, невидимость)
    ТекстФайл.Размер(); // размер файла в байтах

    // Получение расширение файла из его пути
    ТекстФайл.Расширение(); // .txt

    // Получение имени файла без расширения
    ТекстФайл.ИмяБезРасширения(); // Test

    // Получение информации по пути файла - это файл или каталог
    Если ТекстФайл.ЭтоКаталог() Тогда
        // Это каталог
    ИначеЕсли ТекстФайл.ЭтоФайл() Тогда
        // Это файл
    КонецЕсли;

    // Изменение атрибутов
    ТекстФайл.УстановитьВремяИзменения(ТекущаяДата()); // меняем время последнего изменения файла
    ТекстФайл.УстановитьТолькоЧтение(Ложь); // меняем атрибут только чтение
    ТекстФайл.УстановитьНевидимость(Ложь); // меняем атрибут невидимости

КонецПроцедуры
👉@DevLab1C

Операции над файлами в 1С 8.3 &НаКлиенте Процедура ОперацииНадФайлами(Команда) // Создание переменных (имя и путь к файлу) Пу
Операции над файлами в 1С 8.3

&НаКлиенте
Процедура ОперацииНадФайлами(Команда)

    // Создание переменных (имя и путь к файлу)
    ПутьКФайлу_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

Чтение и запись файлов в 1С 8.3 &НаСервере Процедура ЧтениеИЗаписьФайлов() // Любое сериализуемое значение (массив, структура
Чтение и запись файлов в 1С 8.3

&НаСервере
Процедура ЧтениеИЗаписьФайлов()

    // Любое сериализуемое значение (массив, структура, таблица значений, строки...) можно сохранить в файл
    НаборСимволов = Новый Массив;
    НаборСимволов.Добавить(125);
    НаборСимволов.Добавить("А");
    НаборСимволов.Добавить("99");
    НаборСимволов.Добавить("%");
    ЗначениеВФайл("D:\Symbol.txt", НаборСимволов); // работает только на &НаСервере

    // Восстановление произвольных значений из файла
    НаборСимволовИзФайла = ЗначениеИзФайла("D:\Symbol.txt");
    Сообщить(НаборСимволовИзФайла[0]); // 125
    Сообщить(НаборСимволовИзФайла[1]); // А
    Сообщить(НаборСимволовИзФайла[2]); // 99
    Сообщить(НаборСимволовИзФайла[3]); // %

    // Запись текстового файла (работает и на &НаСервере и на &НаКлиенте)
    // Параметры: Путь с именем файла, кодировка, разделитель строк (необяз.), перезаписывать файл (необяз.)
    ТекстФайл = Новый ЗаписьТекста("D:\Prostokvashino.txt", КодировкаТекста.ANSI, Символы.ПС, Ложь);
    ТекстФайл.ЗаписатьСтроку("Кот Матроскин");
    ТекстФайл.ЗаписатьСтроку("Дядя Федор");
    ТекстФайл.ЗаписатьСтроку("Шарик");
    ТекстФайл.Закрыть();

    // Чтение текстового файла (работает и на &НаСервере и на &НаКлиенте)
    // Параметры: Путь с именем файла, кодировка, разделитель строк (необяз.), монопольный режим (необяз.)
    ТекстФайл = Новый ЧтениеТекста("D:\Prostokvashino.txt", КодировкаТекста.ANSI, Символы.ПС, ,Истина);
    Пока Истина Цикл // По строкам файлам
        СтрокаФайла = ТекстФайл.ПрочитатьСтроку();
        Если СтрокаФайла = Неопределено Тогда
            Прервать;
        Иначе
            Сообщить(СтрокаФайла);// Вывод строки на экран
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры
👉@DevLab1C

🚀 Подборка Telegram каналов для программистов 1C разработка 📌 https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С https://t.me/DevLab1C 1С:Предприятие 8 https://t.me/razrab_1C 1C Разработчик https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт https://t.me/rabota1C_rus Вакансии для программистов 1С Системное администрирование, DevOps 📌 https://t.me/bash_srv Bash Советы https://t.me/win_sysadmin Системный Администратор Windows https://t.me/sysadmin_girl Девочка Сисадмин https://t.me/srv_admin_linux Админские угодья https://t.me/linux_srv Типичный Сисадмин https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin https://t.me/linux_odmin Linux: Системный администратор https://t.me/devops_star DevOps Star (Звезда Девопса) https://t.me/i_linux Системный администратор https://t.me/linuxchmod Linux https://t.me/sys_adminos Системный Администратор https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало) https://t.me/sysadminof Книги для админов, полезные материалы https://t.me/i_odmin Все для системного администратора https://t.me/i_odmin_book Библиотека Системного Администратора https://t.me/i_odmin_chat Чат системных администраторов https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др. https://t.me/sysadminoff Новости Линукс Linux Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика https://t.me/cpp_knigi Книги для программистов C/C++ https://t.me/cpp_geek Учим C/C++ на примерах Программирование Python 📌 https://t.me/pythonofff Python академия. https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика https://t.me/java_360 Книги по Java Rus https://t.me/java_geek Учим Java на примерах GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка https://t.me/kotlin_lib Подборки полезного материала по Kotlin Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков https://t.me/frontend_sovet Frontend советы, примеры и практика! https://t.me/React_lib Подборки по React js и все что с ним связано Разработка игр 📌 https://t.me/game_devv Все о разработке игр Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Big Data, Machine Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/rust_lib Полезный контент по программированию на Rust https://t.me/golang_lib Библиотека Go (Golang) разработчика https://t.me/itmozg Программисты, дизайнеры, новости из мира IT https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 https://t.me/nodejs_lib Подборки по Node js и все что с ним связано https://t.me/ruby_lib Библиотека Ruby программиста https://t.me/lifeproger Жизнь программиста. Авторский канал. QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности https://t.me/xakep_2 Хакер Free Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров Математика 📌 https://t.me/Pomatematike Канал по математике https://t.me/phis_mat Обучающие видео, книги по Физике и Математике https://t.me/matgeoru Математика | Геометрия | Логика Excel лайфхак📌 https://t.me/Excel_lifehack https://t.me/mir_teh Мир технологий (Technology World) Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT

Пример реализации двухфакторной авторизации на 1С 8.3.21 &НаСервере Процедура СозданиеШаблонаНастроекВторогоФактораАутентифик
Пример реализации двухфакторной авторизации на 1С 8.3.21

&НаСервере
Процедура СозданиеШаблонаНастроекВторогоФактораАутентификации() // кнопка в обработке

  ШаблонНастроек = ШаблоныНастроекВторогоФактораАутентификации.СоздатьШаблон();

  Запрос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

Свертка всего Дерева Значений (на форме) в 1С 8.3 &НаКлиенте Процедура СверткаВсегоДереваЗначенийНаФорме() // ДеревоЗначНаФор
Свертка всего Дерева Значений (на форме) в 1С 8.3

&НаКлиенте
Процедура СверткаВсегоДереваЗначенийНаФорме()

    // ДеревоЗначНаФорме - на форме
    КоллекцияЭлементовДерева=ДеревоЗначНаФорме.ПолучитьЭлементы();
    //Свернуть дерево
    Для Каждого СтрокаКоллекции Из КоллекцияЭлементовДерева Цикл
        ИдСтроки=СтрокаКоллекции.ПолучитьИдентификатор();
        Элементы.ДеревоЗначНаФорме.Свернуть(ИдСтроки); // Сворачиваем каждую строку тут
    КонецЦикла;

КонецПроцедуры
👉@DevLab1C

Помогаторы разработчика 1С Данная статья написана по моему выступлению на Infostart Event 2022, на котором я рассказал об инс
Помогаторы разработчика 1С Данная статья написана по моему выступлению на Infostart Event 2022, на котором я рассказал об инструментах и «лайфхаках», которые использую в своей работе и которые, как мне кажется, помогают сделать работу разработчика 1С проще, удобнее, а главное, эффективней. Многие вещи, возможно, покажутся вам очевидными или совсем простыми. Но часто я вижу, что разработчики пренебрегают ими, а ведь именно такие «мелочи» и делают нашу жизнь проще. https://habr.com/ru/articles/780588/ 👉@DevLab1C

+3
Правила обмена 1С Разработка правил обмена 1С с использованием "Конвертация данных 2.0" (на примере УНФ - Бухгалтерия) Перенос начальных остатков из УТ11 в БП3. Разработка правил обмена КД 2. JSON в XML Интеграция Power BI и 1С:УНФ, Web API на 1С, Odata. Занятие 28. Продв. курс по программир. 1С. Обмен между 1С по-новому! Odata - это просто. источник 👉@DevLab1C

Поиск строки в Дереве Значений в 1С 8.3 &НаСервере Процедура ПоискСтрокиВДеревеЗначений() // найдём 1-ю строку со значением «
Поиск строки в Дереве Значений в 1С 8.3

&НаСервере
Процедура ПоискСтрокиВДеревеЗначений() // найдём 1-ю строку со значением «Элемент №1» в дереве значений

    // Преобразование реквизита формы в объект прикладного типа ДеревоЗначений
    ДеревоЗначений = РеквизитФормыВЗначение("ДеревоЗначНаФорме");

    // Поиск строки... (если строка не найдена, вернёт "Неопределено")
    НайденнаяСтрокаДЗ = ДеревоЗначений.Строки.Найти("Первый (вложенный) элемент", "Наименование", Истина);

    // Анализ результата поиска
    Если НайденнаяСтрокаДЗ = Неопределено Тогда
        Сообщить("Строка не найдена");
    Иначе // вренёт первую найденную строку
        Сообщить("Найдена: "+НайденнаяСтрокаДЗ.Наименование + " (" + НайденнаяСтрокаДЗ.Родитель.Наименование + ")");
    КонецЕсли;

КонецПроцедуры
👉@DevLab1C

Заполнение реквизита формы Дерева Значений из Запроса в 1С 8.3 &НаСервере Процедура ЗаполнениеРеквизитаФормыДеревоЗначенийИзЗ
Заполнение реквизита формы Дерева Значений из Запроса в 1С 8.3

&НаСервере
Процедура ЗаполнениеРеквизитаФормыДеревоЗначенийИзЗапроса()

    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
    |  Материалы.Ссылка КАК Наименование
    |  Материалы.Родитель КАК Родитель
    |ИЗ
    |  Справочник.Материалы КАК Материалы
    |УПОРЯДОЧИТЬ ПО
    |  Наименование ИЕРАРХИЯ
    |ИТОГИ ПО
    |  Родитель";

    //Внимание! Если правильно не указать вид обхода результата выборки по запросу,
    //то мы получим обычную таблицу значений
    ДеревоЗначений = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

    // Заполнение дерева значений из результата запроса
    // колонка "Материалы" – это элемент справочника, колонка "Родитель" – это группа
    ЗначениеВРеквизитФормы(ДеревоЗначений, "ДеревоЗначНаФорме"); // Преобразование в реквизит формы (табличное поле)

КонецПроцедуры
👉@DevLab1C

Как ускорить запрос заменив оператор ИЛИ объединением Запрос будет работать значительно быстрее, если в выборке из большой та
Как ускорить запрос заменив оператор ИЛИ объединением Запрос будет работать значительно быстрее, если в выборке из большой таблицы не использовать оператор ИЛИ в условие ГДЕ или в условии соединения, а заменить это на объединение результатов двух запросов: 👉@DevLab1C

Делаем скриншот сеанса в 1С 8.3 программно &НаКлиенте Процедура Скриншот_сеанса(Полный_путь_к_файлу = "") // доступна с верси
Делаем скриншот сеанса в 1С 8.3 программно

&НаКлиенте
Процедура Скриншот_сеанса(Полный_путь_к_файлу = "") // доступна с версии 8.3.17

    // Сохранение скриншота текущего сеанса пользователя (по переданному адресу)
    // Установить в настройках БД: "Управление настройками обработки ошибок" -
    // "Снимок окон приложения" = "Отправлять"

    #Если НЕ ВебКлиент Тогда

        // Получаем имя временного файла с типом: Строка
        Временный_zip_файл = ПолучитьИмяВременногоФайла("zip");

        // Регистрация (сохранение и отправки данных) ошибки
        Отчет_об_ошибке = Новый ОтчетОбОшибке(ИнформацияОбОшибке());
        Отчет_об_ошибке.Записать(Временный_zip_файл, Ложь);

        // Получаем имя каталога временных файлов пользователя
        Каталог_файлов = КаталогВременныхФайлов() + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");

        // Чтение файла ZIP
        Архив_zip  = Новый ЧтениеZipФайла(Временный_zip_файл);
        Архив_zip.ИзвлечьВсе(Каталог_файлов, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);

        // Случайное число в диапазоне от 1 до 999999 для рандомного имени файла
        ГенераторСлЧисел = Новый ГенераторСлучайныхЧисел();
        СлучЧисло=ГенераторСлЧисел.СлучайноеЧисло(1,999999);

        // Сохраняем скриншот 1С в папку
        Путь_к_скриншоту = Каталог_файлов + "\screen"+СлучЧисло+".png";
        КопироватьФайл(Путь_к_скриншоту, Полный_путь_к_файлу);

        // Чистим мусор
        УдалитьФайлы(Временный_zip_файл);
        УдалитьФайлы(Каталог_файлов);

    #КонецЕсли

КонецПроцедуры
👉@DevLab1C

1С:Предприятие 8 - إحصائيات وتحليلات قناة تيليجرام @devlab1c