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

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

Ir al canal en Telegram

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

Mostrar más
879
Suscriptores
Sin datos24 horas
+17 días
-230 días
Archivo de publicaciones
+3
Серверы и 1С Ускоряем 1С с помощью режима Shared memory Как ускорить 1С в 2 раза за 5 минут? Turbo Boost в действии! Как замерить производительность 1С сервера? Тест Гилёва. Как выбрать сервер для 1С? Разбираем основные параметры серверов под 1С источник 👉@DevLab1C

Создание записи в регистре сведений без привязки к документу в 1С 8.3

&НаСервере
Процедура СозданиеЗаписиБезПривязкиКДокументу()

    // Создание записи в регистре сведений без привязки к документу можно только для регистров,
    // в свойствах которых установлен режим записи "Независимый".

    // Создание записи - для единичных записей лучше использовать "Менеджер Записей"
    НоваяЗапись = РегистрыСведений.КурсВалют.СоздатьМенеджерЗаписи();
    НоваяЗапись.Период = '20200401';
    НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию("Евро");
    НоваяЗапись.Курс = 2.8010;
    НоваяЗапись.Записать(Истина); // Замещение - если уже есть запись с такими же измерениями и таким же периодом


    // Поиск, изменение и удаление созданной запись на дату
    Выборка = РегистрыСведений.КурсВалют.Выбрать('20200401', '20200401');
    Если Выборка.Следующий() Тогда

        Запись = Выборка.ПолучитьМенеджерЗаписи();
        Запись.Прочитать();
        Запись.Курс = 2.8020;// Изменение курса Евро
        Запись.Записать(Истина);// Запись курса Евро
        Запись.Удалить();// Удаление курса Евро

    КонецЕсли;

    // Для группового изменения записей лучше использовать "Набор Записей"
    Евро = Справочники.Валюты.НайтиПоНаименованию("Евро");

    НаборЗаписей = РегистрыСведений.КурсВалют.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Валюта.Установить(Евро);

    Запись_1 = НаборЗаписей.Добавить();
    Запись_1.Период = '20200401'; // 01 апреля 2020 г.
    Запись_1.Валюта = Евро;
    Запись_1.Курс = 2.8446;

    Запись_2 = НаборЗаписей.Добавить();
    Запись_2.Период = '20200402'; // 02 апреля 2020 г.
    Запись_2.Валюта = Евро;
    Запись_2.Курс = 2.8478;

    Запись_3 = НаборЗаписей.Добавить();
    Запись_3.Период = '20200403'; // 03 апреля 2020 г.
    Запись_3.Валюта = Евро;
    Запись_3.Курс = 2.8320;

    Запись_4 = НаборЗаписей.Добавить();
    Запись_4.Период = '20200404'; // 04 апреля 2020 г.
    Запись_4.Валюта = Евро;
    Запись_4.Курс = 2.7943;

    Запись_5 = НаборЗаписей.Добавить();
    Запись_5.Период = '20200405'; // 05 апреля 2020 г.
    Запись_5.Валюта = Евро;
    Запись_5.Курс = 2.7797;


    // Запись сразу всего набора
    НаборЗаписей.Записать(Истина); // Замещение - если уже есть запись с такими же измерениями и таким же периодом

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

Получение наиболее поздних записей регистра сведений через срез последних на дату в 1С 8.3 &НаСервере Процедура ПолучениеНаиб
Получение наиболее поздних записей регистра сведений через срез последних на дату в 1С 8.3

&НаСервере
Процедура ПолучениеНаиболееПозднихЗаписей()

    // Параметры виртуальной таблицы СрезПоследних:
    // 1. Период (включительно)
    // 2. Условие (например, Организация = &ВыбОрганизация)

    // Получение цен на Молоко 3,2% для каждого контрагента на конец 2 квартала 2020 года (включительно)
    // по организации ОАО "Гипермаркет АЗИЯ".
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ЦеныРеализацииСрезПоследних.Период,
    |   ЦеныРеализацииСрезПоследних.Активность,
    |   ЦеныРеализацииСрезПоследних.Номенклатура,
    |   ЦеныРеализацииСрезПоследних.Контрагент,
    |   ЦеныРеализацииСрезПоследних.Организация,
    |   ЦеныРеализацииСрезПоследних.Цена
    |ИЗ
    |   РегистрСведений.ЦеныРеализации.СрезПоследних(
    |       ДАТАВРЕМЯ(2020, 06, 30, 23, 59, 59),
    |       Активность = Истина И
    |       Организация = &ВыбОрганизация И
    |       Номенклатура = &ВыбНоменклатура
    |   ) КАК ЦеныРеализацииСрезПоследних
    |УПОРЯДОЧИТЬ ПО
    |   ЦеныРеализацииСрезПоследних.Контрагент";

    Запрос.УстановитьПараметр("ВыбОрганизация",Справочники.Организации.НайтиПоНаименованию("ОАО ""Гипермаркет АЗИЯ"""));
    Запрос.УстановитьПараметр("ВыбНоменклатура",Справочники.Номенклатура.НайтиПоНаименованию("Молоко 3,2%"));
    РезультатЗапроса = Запрос.Выполнить();

    Записи = РезультатЗапроса.Выбрать();
    Пока Записи.Следующий() Цикл

        Сообщить("за " + Записи.Период + " на " +Записи.Номенклатура + " " + Записи.Контрагент + " = " +Записи.Цена + " руб.");

    КонецЦикла;

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

Получение наиболее ранних записей регистра сведений через срез первых на дату в 1С 8.3 &НаСервере Процедура ПолучениеНаиболее
Получение наиболее ранних записей регистра сведений через срез первых на дату в 1С 8.3

&НаСервере
Процедура ПолучениеНаиболееРаннихЗаписей()

    // Параметры виртуальной таблицы СрезПервых:
    // 1. Период (включительно)
    // 2. Условие (например, Организация = &ВыбОрганизация)

    // Получение цен на Молоко 3,2% для каждого контрагента на начало 2 квартала 2020 года (включительно)
    // по организации ОАО "Гипермаркет АЗИЯ".
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ЦеныРеализацииСрезПервых.Период,
    |   ЦеныРеализацииСрезПервых.Активность,
    |   ЦеныРеализацииСрезПервых.Номенклатура,
    |   ЦеныРеализацииСрезПервых.Контрагент,
    |   ЦеныРеализацииСрезПервых.Организация,
    |   ЦеныРеализацииСрезПервых.Цена
    |ИЗ
    |   РегистрСведений.ЦеныРеализации.СрезПервых(
    |       ДАТАВРЕМЯ(2020, 04, 01, 00, 00, 00),
    |       Активность = Истина И
    |       Организация = &ВыбОрганизация И
    |       Номенклатура = &ВыбНоменклатура) КАК ЦеныРеализацииСрезПервых
    |УПОРЯДОЧИТЬ ПО
    |   ЦеныРеализацииСрезПервых.Контрагент";

    Запрос.УстановитьПараметр("ВыбОрганизация",Справочники.Организации.НайтиПоНаименованию("ОАО ""Гипермаркет АЗИЯ"""));
    Запрос.УстановитьПараметр("ВыбНоменклатура",Справочники.Номенклатура.НайтиПоНаименованию("Молоко 3,2%"));
    РезультатЗапроса = Запрос.Выполнить();

    Записи = РезультатЗапроса.Выбрать();
    Пока Записи.Следующий() Цикл

        Сообщить("за " + Записи.Период + " на " +Записи.Номенклатура + " " + Записи.Контрагент + " = " +Записи.Цена + " руб.");

    КонецЦикла;

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

Чтение записи документа в регистре сведений запросом в 1С 8.3 &НаСервере Процедура ЧтениеЗаписиЗапросом() // Если не требуетс
Чтение записи документа в регистре сведений запросом в 1С 8.3

&НаСервере
Процедура ЧтениеЗаписиЗапросом()

    // Если не требуется изменять найденные записи.
    СсылкаДок = Документы.УстановкаЦен.НайтиПоНомеру("ПТО-00000001", '20201231');

    // Чтение запросом записей регистра сведений "ЦеныРеализации" текущего документа
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ЦеныРеализации.Период,
    |   ЦеныРеализации.Регистратор,
    |   ЦеныРеализации.НомерСтроки,
    |   ЦеныРеализации.Активность,
    |   ЦеныРеализации.Номенклатура,
    |   ЦеныРеализации.Контрагент,
    |   ЦеныРеализации.Организация,
    |   ЦеныРеализации.Цена
    |ИЗ
    |   РегистрСведений.ЦеныРеализации КАК ЦеныРеализации
    |ГДЕ
    |   ЦеныРеализации.Регистратор = &Регистратор
    |УПОРЯДОЧИТЬ ПО
    |   ЦеныРеализации.НомерСтроки";

    Запрос.УстановитьПараметр("Регистратор",СсылкаДок);
    РезультатЗапроса = Запрос.Выполнить();

    Записи = РезультатЗапроса.Выбрать();
    Пока Записи.Следующий() Цикл

        Сообщить("по документу " + Записи.Регистратор + " по " +Записи.Организация + ", "
        + Записи.Контрагент + " " + Записи.Номенклатура +" = "+ Записи.Цена + " руб.");

    КонецЦикла;

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

Типовые ошибки в условиях 1С запросов 00:00 - Стандарт "Эффективные условия запросов" от фирмы 1С 00:19 - ВЫБРАТЬ в запросах 1С 01:20 - Отрицание в условиях 1С запросов 02:17 - Не используй НЕ ЕСТЬ NULL 04:08 - Почему ИЛИ / В() - это плохо 06:41 - Нельзя использовать ТИПЗНАЧЕНИЯ() в 1С запросах 07:21 - Соединения 08:29 - Пример оптимизации условий в 1С запросе источник 👉@DevLab1C

Запись данных в файл формата XML в 1С 8.3 &НаКлиенте Процедура ЗаписатьДанныеВФорматеXML(ПутьКФайлу) Рестораны = СоздатьДанны
Запись данных в файл формата XML в 1С 8.3

&НаКлиенте
Процедура ЗаписатьДанныеВФорматеXML(ПутьКФайлу)

    Рестораны = СоздатьДанныеДляЗаписиВXML();
    ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);//необязательно их прописовать

    XML = Новый ЗаписьXML;
    XML.ОткрытьФайл(ПутьКФайлу,ПараметрыЗаписи);
    XML.ЗаписатьОбъявлениеXML();
    XML.ЗаписатьНачалоЭлемента("Рестораны");

    Для Каждого Ресторан Из Рестораны Цикл

        XML.ЗаписатьНачалоЭлемента("Ресторан");
        XML.ЗаписатьАтрибут("Название", Ресторан.Значение.Название);
        XML.ЗаписатьАтрибут("Категория", Ресторан.Значение.Категория);
        XML.ЗаписатьАтрибут("Счет", Ресторан.Значение.Счет);
        XML.ЗаписатьАтрибут("Кухня", Ресторан.Значение.Кухня);

        XML.ЗаписатьНачалоЭлемента("Меню");
        Для Каждого БлюдоИзМеню Из Ресторан.Значение.Меню Цикл

            XML.ЗаписатьНачалоЭлемента("Блюдо");
            XML.ЗаписатьАтрибут("Название", БлюдоИзМеню.Значение.Название);
            XML.ЗаписатьКонецЭлемента(); // Блюдо

        КонецЦикла;

        XML.ЗаписатьКонецЭлемента(); // Меню

        XML.ЗаписатьНачалоЭлемента("Описание");
        XML.ЗаписатьТекст(Ресторан.Значение.Описание);
        XML.ЗаписатьКонецЭлемента(); // Описание

        XML.ЗаписатьКонецЭлемента(); // Ресторан

    КонецЦикла;

    XML.ЗаписатьКонецЭлемента(); // Рестораны

    XML.Закрыть();

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


&НаКлиенте
Функция СоздатьДанныеДляЗаписиВXML()

    Рестораны = Новый СписокЗначений;

    Китайский_ресторан = Новый Структура("Название, Категория, Счет, Кухня, Меню, Описание");
    Китайский_ресторан.Название  = "Китайская грамота";
    Китайский_ресторан.Категория  = "Высшая";//наценочная категория
    Китайский_ресторан.Счет = "3500";//средний счет
    Китайский_ресторан.Кухня = "Азиатская";
    Китайский_ресторан.Меню = Новый СписокЗначений;
    Китайский_ресторан.Меню.Добавить(Новый Структура("Название", "Суши из форели"));
    Китайский_ресторан.Меню.Добавить(Новый Структура("Название", "Лапша фирменная"));
    Китайский_ресторан.Меню.Добавить(Новый Структура("Название", "Суп из малюсков"));
    Китайский_ресторан.Описание = "Ресторан азиатской кухни Высшей наценочной категории";
    Рестораны.Добавить(Китайский_ресторан);

    Европейский_ресторан = Новый Структура("Название, Категория, Счет, Кухня, Меню, Описание");
    Европейский_ресторан.Название  = "Итальянский Экспресс";
    Европейский_ресторан.Категория  = "Люкс";//наценочная категория
    Европейский_ресторан.Счет = "5000";//средний счет
    Европейский_ресторан.Кухня = "Европейская";
    Европейский_ресторан.Меню = Новый СписокЗначений;
    Европейский_ресторан.Меню.Добавить(Новый Структура("Название", "Мясная нарезка из мраморной говядины"));
    Европейский_ресторан.Меню.Добавить(Новый Структура("Название", "Салат де-люкс Комплимент"));
    Европейский_ресторан.Меню.Добавить(Новый Структура("Название", "Пицца от шеф повара"));
    Европейский_ресторан.Описание = "Ресторан европейской кухни категории Люкс";
    Рестораны.Добавить(Европейский_ресторан);

    Возврат Рестораны;

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

Чтение файла в формате XML через document object model (DOM) (способ №3) в 1С 8.3
//Подходит для файлов менее 100Mb, для больших Не подходит
&НаСервере
Процедура ПрочитатьФайлXMLЧерезDOMСпособ3(ПутьКФайлу)

    //Поочередная обработка всех узлов документа, представленных в XML:
    //1.Объявление механизмов, с помощью которых происходит чтение XML файла; Цикл для обхода узлов;
    //2.Считывание данных и атрибутов в узле;
    //3.Вывод информации. Если есть необходимость, на этом этапе может происходить запись в переменные или сразу в нужные таблицы;
    //4.Завершение работы механизма

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ПутьКФайлу);

    Построитель_DOM = Новый ПостроительDOM;
    ДокументXML = Построитель_DOM.Прочитать(ЧтениеXML);

    Для Каждого ТекУзел Из ДокументXML.ЭлементДокумента.ДочерниеУзлы Цикл

        Если ТекУзел.ИмяУзла = "Ресторан" Тогда

            Ресторан = ТекУзел;

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

            Категория = Ресторан.Атрибуты.ПолучитьИменованныйЭлемент("Категория");
            Если Категория <> Неопределено Тогда
                Сообщить("...наценочная категория ресторана: " + Категория.Значение);// Высшая
            КонецЕсли;

            СрСчет = Ресторан.Атрибуты.ПолучитьИменованныйЭлемент("Счет");
            Если СрСчет <> Неопределено Тогда
                Сообщить("...средний счет ресторана: " + СрСчет.Значение);// 3500
            КонецЕсли;

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

            Для Каждого ТекУзел1 Из Ресторан.ДочерниеУзлы Цикл

                Если ТекУзел1.ИмяУзла = "Меню" Тогда

                    Меню = ТекУзел1;
                    Сообщить("Меню:");

                    Для Каждого ТекУзел2 Из Меню.ДочерниеУзлы Цикл

                        Если ТекУзел2.ИмяУзла = "блюдо" Тогда
                            Блюдо = ТекУзел2;

                            Название = Блюдо.Атрибуты.ПолучитьИменованныйЭлемент("Название");
                            Если Название <> Неопределено Тогда
                                Сообщить("...название блюда:" + Название.Значение);
                            КонецЕсли;

                        КонецЕсли;

                    КонецЦикла;

                ИначеЕсли ТекУзел1.ИмяУзла = "Описание" Тогда

                    Сообщить("Описание :" + ТекУзел1.ТекстовоеСодержимое);

                КонецЕсли;

            КонецЦикла;

        КонецЕсли;

    КонецЦикла;

    ЧтениеXML.Закрыть();

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

👉@DevLab1C

Чтение файла в формате XML по порядку (способ №2) в 1С 8.3 //Подходит для файлов более 100Mb &amp;НаСервере Процедура Прочита
Чтение файла в формате XML по порядку (способ №2) в 1С 8.3

//Подходит для файлов более 100Mb
&НаСервере
Процедура ПрочитатьФайлXMLПоПорядкуСпособ2(ПутьКФайлу)

    XML = Новый ЧтениеXML;
    XML.ОткрытьФайл(ПутьКФайлу);

    СписокИмен = Новый СписокЗначений;

    Пока XML.Прочитать() Цикл
        Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

            СписокИмен.Добавить(XML.Имя);
            ПутьXML = СобратьПуть(СписокИмен);

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

                Категория = XML.ЗначениеАтрибута("Категория");
                Если Категория <> Неопределено Тогда
                    Сообщить("...наценочная категория ресторана: " + Категория);// Высшая
                КонецЕсли;

                Счет = XML.ЗначениеАтрибута("Счет");
                Если Счет <> Неопределено Тогда
                    Сообщить("...средний счет ресторана: " + Счет);// 3500
                КонецЕсли;

                Кухня = XML.ЗначениеАтрибута("Кухня");
                Если Кухня <> Неопределено Тогда
                    Сообщить("...кухня ресторана: " + Кухня);// Азиатская
                КонецЕсли;

            ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Меню" Тогда

                Сообщить("Меню:");

            ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Меню/Блюдо" Тогда

                Название = XML.ЗначениеАтрибута("Название");
                Если Название <> Неопределено Тогда
                    Сообщить("...название блюда: " + Название);
                КонецЕсли;

            ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Описание" Тогда

                XML.Прочитать();
                Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
                    Сообщить("Описание: " + XML.Значение);
                КонецЕсли;

            КонецЕсли;

        ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда

            СписокИмен.Удалить(СписокИмен.Количество() - 1);

        КонецЕсли;

    КонецЦикла;

    XML.Закрыть();

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

&НаСервере
Функция СобратьПуть(СписокИмен)

    НашПуть = "";

    Для Каждого Имя Из СписокИмен Цикл
        НашПуть = НашПуть + "/" + Имя;
    КонецЦикла;

    Возврат НашПуть;

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

Чтение файла в формате XML по порядку (способ №1) в 1С 8.3 //Подходит для файлов более 100Mb &amp;НаСервере Процедура Прочита
Чтение файла в формате XML по порядку (способ №1) в 1С 8.3

//Подходит для файлов более 100Mb
&НаСервере
Процедура ПрочитатьФайлXMLПоПорядкуСпособ1(ПутьКФайлу)

    XML = Новый ЧтениеXML;
    XML.ОткрытьФайл(ПутьКФайлу);

    Пока XML.Прочитать() Цикл

        Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Ресторан" Тогда

            Название = XML.ЗначениеАтрибута("Название");
            Если Название <> Неопределено Тогда
                Сообщить("Название ресторана:" + Название);
            КонецЕсли;

            Категория = XML.ЗначениеАтрибута("Категория");
            Если Категория <> Неопределено Тогда
                Сообщить("...наценочная категория ресторана: " + Категория);
            КонецЕсли;

            Счет = XML.ЗначениеАтрибута("Счет");
            Если Счет <> Неопределено Тогда
                Сообщить("...средний счет ресторана: " + Счет);
            КонецЕсли;

            Кухня = XML.ЗначениеАтрибута("Кухня");
            Если Кухня <> Неопределено Тогда
                Сообщить("...кухня ресторана: " + Кухня);
            КонецЕсли;

            Пока XML.Прочитать() Цикл// <Ресторан>

                Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Меню" Тогда
                    Сообщить("Меню:");

                    Пока XML.Прочитать() Цикл// <Меню>
                        Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Блюдо" Тогда
                            Название = XML.ЗначениеАтрибута("Название");
                            Если Название <> Неопределено Тогда
                                Сообщить("...название блюда:" + Название);
                            КонецЕсли;
                        ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента И XML.Имя = "Меню" Тогда
                            Прервать;
                        КонецЕсли;
                    КонецЦикла;// 

                ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Описание" Тогда

                    XML.Прочитать();
                    Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
                        Сообщить("Описание:" + XML.Значение);
                    КонецЕсли;

                ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента И XML.Имя = "Ресторан" Тогда

                    Прервать;

                КонецЕсли;

            КонецЦикла;//

        КонецЕсли;

    КонецЦикла;

    XML.Закрыть();

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

Как распаковать Zip архив в 1С 8.3 &НаКлиенте Процедура РаспаковываемZipАрхив() // Распаковываем Doc31032020.zip в папку "D:\
Как распаковать Zip архив в 1С 8.3

&НаКлиенте
Процедура РаспаковываемZipАрхив()

    // Распаковываем Doc31032020.zip в папку "D:\AvtoArhiv\"
    ФайлАрхива = Новый ЧтениеZipФайла("D:\AvtoArhiv\Doc31032020.zip",""); // путь, пароль к архиву

    // Сообщим комментарий к архиву
    Сообщить(ФайлАрхива.Комментарий);

    РежимВосстПутейФайлов=РежимВосстановленияПутейФайловZIP.Восстанавливать;
    // Распаковываем все файлы в D:\MyDocuments\Out
    ФайлАрхива.ИзвлечьВсе("D:\MyDocuments\Out", РежимВосстПутейФайлов); // (путь, восстанавливать каталоги)

    // Или распаковываем файлы по одиночке.
    Для Каждого Элемент Из ФайлАрхива.Элементы Цикл

        Сообщить("... разархивирую..."+Элемент.ПолноеИмя);
        //(Элемент, Путь, ВосстанавливатьКаталоги, Пароль)
        ФайлАрхива.Извлечь(Элемент,"D:\MyDocuments\Out", РежимВосстПутейФайлов,"");

    КонецЦикла;

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

Как создать Zip архив с файлами в 1С 8.3 &НаКлиенте Процедура СоздаемZipАрхивСФайлами() // Создаем zip-архив ИмяАрхФайла="D:\
Как создать Zip архив с файлами в 1С 8.3

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

    // Создаем zip-архив
    ИмяАрхФайла="D:\AvtoArhiv\Doc31032020.zip";//Путь к архиву и имя
    // Особенность: Архивировать средствами 1С можно даже запущенную информационную базу 1С
    ПарольАрхФайла=""; // если нужно - можно задать пароль на архив
    КоммАрхФайла="Архив документов создан 31/03/2020 из 1С 8.3"; // комментарий к архиву

    ФайлАрхива = Новый ЗаписьZipФайла(ИмяАрхФайла, ПарольАрхФайла, КоммАрхФайла,
    МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Оптимальный, МетодШифрованияZIP.Zip20);

    // Добавляем файл в zip-архив
    ФайлАрхива.Добавить("D:\MyDocuments\ПланНа2020.docx"); // путь к файлу который добавляем в архив

    // Или добавляем несколько файлов в zip-архив по маске
    ФайлАрхива.Добавить("D:\MyDocuments\*.xlsx"); // указываем маску к файлам

    // Или если нужно в архив добавить файлы не только из корневой папки ("D:\MyDocuments\"),
    // но и из подпапок ("D:\MyDocuments\Balans2019\","D:\MyDocuments\Balans2020\",...)
    // где есть файлы c расширением *.xlsx. Нужно использовать параметры (режимы):
    ФайлАрхива.Добавить("D:\MyDocuments\*.xlsx",
    РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
    РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);

    // Записываем созданный архив на диск компьютера
    ФайлАрхива.Записать();

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

Делаем табло заказов в обозревателе из 1Ски с нуля за полчаса.Без бутстрапов, регистрации и СМС. В данной публикации я хочу показать как можно сделать сопряжение 1С - обозреватель своими 1Сными силами с базовыми навыками верстки с нуля за полчаса и бесплатно. Для скачки исходников ищите статью на инфостарте, ютуб убирает гиперссылки. источник 👉@DevLab1C

Как отключить предупреждение: Это копия информационной базы в 1С 8.3 Функция ОтключениеОбработчика() Экспорт // Для регламент
Как отключить предупреждение: Это копия информационной базы в 1С 8.3

Функция ОтключениеОбработчика() Экспорт

   // Для регламентных заданий:
   // бывает, что надо даже в копии запускать регламентные,
   // но если не надо, что бы они отработали, то можно отключать так:

   //Условие...
   Если БлокировкаРаботыСВнешнимиРесурсами.РаботаСВнешнимиРесурсамиЗаблокирована() = Истина Тогда
       //Заблокируем выполнение обработки
       //Возврат;
   КонецЕсли;

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

Функция РаботаСВнешнимиРесурсамиЗаблокирована() Экспорт

   Возврат ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована;

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

Как получить размер (разрешение) экрана Узнать программно размер экрана в 1С 8.3 (вариант №1): &НаКлиенте Функция ПолучитьРаз
Как получить размер (разрешение) экрана

Узнать программно размер экрана в 1С 8.3 (вариант №1):
&НаКлиенте
Функция ПолучитьРазмерЭкранаОпционально()

   ИнфоЭкрана = ПолучитьИнформациюЭкрановКлиента(); // с 8.3.2; результат - фикс.массив объектов

   ДПИ = ИнфоЭкрана[0].DPI;
   ВысотаЭкрана = Формат(ИнфоЭкрана[0].Высота, "ЧГ=");
   ШиринаЭкрана = Формат(ИнфоЭкрана[0].Ширина, "ЧГ=");
   //Сообщить(СтрШаблон("Разрешение: %1x%2", ШиринаЭкрана, ВысотаЭкрана));

   РазрешениеЭкрана = Новый Структура("ШиринаЭкрана,ВысотаЭкрана,ДПИ",
   ИнфоЭкрана[0].Ширина,ИнфоЭкрана[0].Высота,ИнфоЭкрана[0].DPI);

   Возврат РазрешениеЭкрана;

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


Узнать программно размер экрана в 1С 8.3 (вариант №2):
&НаКлиенте
Функция ПолучитьРазмерЭкранаЧерезКом()

   БраузерИЕ  = Новый COMОбъект("InternetExplorer.Application");
   БраузерИЕ.FullScreen  = -1;

   ВысотаЭкрана = Формат(БраузерИЕ.Height, "ЧГ=");
   ШиринаЭкрана = Формат(БраузерИЕ.Width, "ЧГ=");
   //Сообщить(СтрШаблон("Разрешение: %1x%2", ШиринаЭкрана, ВысотаЭкрана));

   РазрешениеЭкрана = Новый Структура("ШиринаЭкрана, ВысотаЭкрана",
   БраузерИЕ.Width, БраузерИЕ.Height);

   Возврат РазрешениеЭкрана;

КонецФункции
Узнать ориентацию экрана в 1С 8.3:

&НаКлиенте
Функция ПолучитьОриентациюЭкрана(ШиринаЭкрана, ВысотаЭкрана)

   ОриентацияЭкрана="";
   Если ВысотаЭкрана > ШиринаЭкрана Тогда
       ОриентацияЭкрана="Портрет";
   Иначе
       ОриентацияЭкрана="Ландшафт";
   КонецЕсли;

   //Если ОриентацияЭкрана="Портрет" Тогда
   //    АвтоПоворотЭкрана(ШиринаЭкрана, ВысотаЭкрана);
   //КонецЕсли;

   Возврат ОриентацияЭкрана;

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

+9
Объекты 1С. Часть 2 №11. Подчинённые справочники №12. Иерархические справочники №13. Обработки №14. Выборка №15. Удаление и установка пометки удаления №16. Журнал документов №17. План видов характеристик №18. Отчёты №19. Внешние отчеты и обработки №20. Регистры накопления источник 👉@DevLab1C

+9
Объекты 1С. Часть 1 №1. Вводный №2. Метаданные №3. Менеджер объекта №4. Объекты метаданных 1С. Справочник №5. Ссылка №6. Объекты метаданных 1С. Документ №7. Объекты метаданных 1С. Табличная часть №8. Объекты метаданных 1С. Константы №9. Объекты метаданных 1С. Перечисления №10. Предопределённые элементы справочников источник 👉@DevLab1C

+2
Настройка получения данных при использовании Планов Видов Характеристик Пример № 1. Выборка запросом с явной связью Использование настроек характеристик в СКД Описание связи в настройках самого объекта источник 👉@DevLab1C

Асинх/Ждать в 1С для показа вопросов, сообщений и диалогов | Асинхронные методы в платформе 1C 00:00 - Вступление 05:11 - Почему лучше не использовать модальные окна в 1С 11:35 - Как переписать модальные окна 1С на ОписаниеОповещения 22:06 - Почему ОписаниеОповещения усложняет код 1С 31:50 - Как загружать файлы без расширения по работе с файлами (НачатьПомещениеФайлаНаСервер) 44:05 - Асинх и ждать в 1С (Платформа 1С 8.3.18) 53:44 - Как вывести прогресс загрузки файла в 1С 59:15 - Когда типовые 1С конфигурации перейдут на Асинх? 01:00:45 - В чем отличие от ДлительныеОперацииКлиент.ОжидатьЗавершение? 01:02:00 - Почему надо знать все 3 метода взаимодействия с пользователем 01:04:00 - Пример рефакторинга кода 01:06:45 - Книги для программистов, кто был вынужден стать менеджером 01:08:44 - Какие дополнительные компетенции нужно развивать 01:09:50 - Как Матвей попал в 1С разработку 01:12:00 - Планы на будущее 01:14:08 - Зачем преподавать 01:15:40 - Про дефицит кадров в 1С 01:17:00 - Какие качества нужны начинающему 1С разработчику 01:19:10 - Зарплата 1С программистов в регионах, что нужно знать джуну 01:26:56 - Как студенту стать 1С программистом и надо ли 01:37:58 - Как грузчику в 40 лет стать 1С программистом 01:43:33 - Что такое когнитивная и цикломатическая сложность? 01:46:00 - Выбор первого работодателя в 1С сфере 01:49:25 - Предвзятое отношение к 1С программистам 01:52:45 - Про 1С франчайзи 01:56:45 - Про 1С фреш и SQL 01:59:00 - Про 1С запросы, всякое и заключение источник 👉@DevLab1C

Как хранить картинки в 1С Как хранить картинки товаров, фото сотрудников и другие изображения в 1С. Как вывести картинку на форму. Способы хранения изображений. источник 👉@DevLab1C

1С:Предприятие 8 - Estadísticas y analítica del canal de Telegram @devlab1c