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

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

Открыть в Telegram

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

Больше
879
Подписчики
Нет данных24 часа
+17 дней
-230 день
Архив постов
Создание диаграммы в Экселе из 1С 8.3 &НаКлиенте Процедура СоздатьДиаграммуВЭкселе(Команда) ВывестиДиаграммуНаНовомЛисте = Ис
Создание диаграммы в Экселе из 1С 8.3

&НаКлиенте
Процедура СоздатьДиаграммуВЭкселе(Команда)

    ВывестиДиаграммуНаНовомЛисте = Истина; // Ложь - на том же листе

    // Старт COM:Excel
    Попытка
        Excel_App = Новый COMОбъект("Excel.Application");
        Book_Excel = Excel_App.Workbooks.Add();
        Sheet_Excel = Book_Excel.Sheets(1);
    Исключение
        Сообщить("Не удалось подключиться к Excel, возможно программа на компьютере не установлена! Операция прервана!");
        Возврат;
    КонецПопытки;

    // Заполнение листа произвольными данными
    ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());

    Sheet_Excel.Cells(2, 1).Value = "Вылечилось";
    Sheet_Excel.Cells(3, 1).Value = "Заболело";
    Для Ном = 1 По 6 Цикл // Полугодие
        Sheet_Excel.Cells(1, Ном+1).Value = Формат(ДобавитьМесяц(НачалоГода(ТекущаяДата()), Ном-1), "ДФ=MMM");
        Sheet_Excel.Cells(2, Ном+1).Value = ГенераторСлучайныхЧисел.СлучайноеЧисло(0, 1000);
        Sheet_Excel.Cells(3, Ном+1).Value = ГенераторСлучайныхЧисел.СлучайноеЧисло(0, 1000);
    КонецЦикла;

    // Создание диаграммы и заполнение её свойств
    ДиапазонДанных = Sheet_Excel.Range(Sheet_Excel.Cells(1, 1), Sheet_Excel.Cells(3, 13)); // область данных
    п_ТипДиаграммы = 54; // тип диаграммы: объемная гистограмма с группировкой;
    п_ЗаголовокДиаграммы = "Диаграмма выздоровевших за полугодие"; // заголовок

    Если ВывестиДиаграммуНаНовомЛисте = Ложь Тогда // на листе, где находяться данные для заполнения

        Excel_Diagram = Sheet_Excel.ChartObjects().Add(1, 1000, 500, 400).Chart; // создание диаграммы и определение ее размеров
        Excel_Diagram.HasDataTable = 0; // отображать под диаграммой таблицу с данными

        Excel_Diagram.HasTitle = 1; // отображать заголовок
        Excel_Diagram.SetSourceData(ДиапазонДанных); // диапазон данных диаграммы
        Excel_Diagram.ChartTitle.Text = п_ЗаголовокДиаграммы;
        Excel_Diagram.ChartType = п_ТипДиаграммы;

    Иначе // на новом листе

        Excel_App.Charts.Add(); // добавление диаграммы
        Excel_App.ActiveChart.HasDataTable = 1; // отображать под диаграммой таблицу с данными

        Excel_App.ActiveChart.HasTitle = 1; // отображать заголовок
        Excel_App.ActiveChart.SetSourceData(ДиапазонДанных);
        Excel_App.ActiveChart.ChartTitle.Text = п_ЗаголовокДиаграммы;
        Excel_App.ActiveChart.ChartType = п_ТипДиаграммы;

    КонецЕсли;

    Excel_App.Visible = Истина; // показываем результат

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

Быстрый поиск по фразе в коде (CTRL+F3) Если в коде нужно быстро найти какую-то фразу, можно выделить её и нажать CTRL + F3,
Быстрый поиск по фразе в коде (CTRL+F3) Если в коде нужно быстро найти какую-то фразу, можно выделить её и нажать CTRL + F3, тогда она автоматически подставится в поле поиска сверху и нажатием F3 можно будет переходить по всем местам этой фразы в коде. Таким образом мы экономим время на копирование фразы (кстати, фразу можно быстро выделить, зажав CTRL и щелкнув внутри фразы), а также на перемещение мышью и вставку этого текста в поле поиска. 👉@DevLab1C

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

Функция Получить_сохраненные_пароли() Экспорт // из регистра

    //   Функция позволяет:
    // получить пароль системной учетной записи 1С
    // учетный данные для обмена 1С с интернет магазином
    // внутренний адрес менеджера сервиса
    // пароль интернет поддержки пользователей
    // и другие учетные жданные 1С

    УстановитьПривилегированныйРежим(Истина);

    ДанныеСтр = Новый Структура();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   БезопасноеХранилищеДанных.Данные КАК Данные
    |ИЗ
    |   РегистрСведений.БезопасноеХранилищеДанных КАК БезопасноеХранилищеДанных
    |ГДЕ
    |   БезопасноеХранилищеДанных.Владелец = &Владелец";

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

    Если РезультатЗапроса.Следующий() Тогда
        Если ЗначениеЗаполнено(РезультатЗапроса.Данные) Тогда
            ДанныеИзХранилища = РезультатЗапроса.Данные.Получить();
            Если ЗначениеЗаполнено(ДанныеИзХранилища) Тогда
                ЗаполнитьЗначенияСвойств(ДанныеСтр, ДанныеИзХранилища);
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

    УстановитьПривилегированныйРежим(Ложь);

    Возврат ДанныеСтр;

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

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

&НаСервере
Процедура ЗагрузитьИзXLSНапрямую()// Начиная с версии 1С 8.3.8 (только &НаСервере)

    ТабличныйДокумент.Прочитать(Объект.Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение); //Способ чтения: Значение, Текст

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

СКД. Как вывести документ в виде: Г00001 от 01.01.2019, чтобы по двойному клику его можно было открыть - По умолчанию докумен
+2
СКД. Как вывести документ в виде: Г00001 от 01.01.2019, чтобы по двойному клику его можно было открыть - По умолчанию документы в СКД выводятся в следующем виде: - Мы сделаем его красивым и сокращенным: - Для этого нужно прописать следующее выражение в колонку «Выражение представления» по этому полю: 👉@DevLab1C

Есть список контрагентов, нужно быстро узнать их коды в базе Делаем такой запрос где в кавычках прописываем список наименован
Есть список контрагентов, нужно быстро узнать их коды в базе Делаем такой запрос где в кавычках прописываем список наименований контрагентов (должен 100% совпадать с названиями контрагентов в базе): Таким образом мы избавляемся от необходимости вручную прописывать список контрагентов в запросе, работа происходит в разы быстрее за счёт использования списка через запятую. 👉@DevLab1C

Обычные формы. Как организовать подбор в табличную часть Рассмотрим решение задачи на примере формы документа, у которого имеется табличная часть «Заказ-наряды». 1. На форме документа на командную панель табличной части «Заказ-наряды» добавляем кнопку подбора и прописываем её код:

Процедура ПодборНарядов(Кнопка)
    Форма = Документы.ЗаказНаряд.ПолучитьФормуВыбора(, ЭлементыФормы.ЗаказНаряды, ЭтотОбъект);
    Форма.ЗакрыватьПриВыборе = Ложь;
    Форма.Открыть();
КонецПроцедуры
2. Далее у табличной части находим событие «ОбработкаВыбора» и прописываем для него код:

Процедура ЗаказНарядыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    
    Если ТипЗнч(ВыбранноеЗначение) = Тип("ДокументСсылка.ЗаказНаряд") Тогда
        Если ЗаказНаряды.НайтиСтроки(Новый Структура("ЗаказНаряд", ВыбранноеЗначение)).Количество() = 0 Тогда
            НоваяСтрока = ЗаказНаряды.Добавить();
            НоваяСтрока.ЗаказНаряд = ВыбранноеЗначение;

            // также здесь можно выполнить дополнительные обработки
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
👉@DevLab1C

+2
Печатные формы Конструктор печатных форм, макет, табличный документ. Разбор ошибок новичков Внешняя печатная форма в 1С БСП. Подсистема Печать. Макеты Печатных Форм. Подключение нового документа источник 👉@DevLab1C

Загрузка из Excel файла (через ADODB.Connection) в 1С 8.3 &НаСервере Процедура ЗагрузитьИзXLS_ADODB() // Создание COM-объекта
Загрузка из Excel файла (через ADODB.Connection) в 1С 8.3

&НаСервере
Процедура ЗагрузитьИзXLS_ADODB()

    // Создание COM-объекта для соединения
    ADODB_conn = Новый COMОбъект("ADODB.Connection");

    // Установка строки соединения
    ADODB_conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
    |Data Source="+ИмяФайла+";
    |Extended Properties=""Excel 12.0 XML;HDR=YES"";";
    ADODB_conn.Open(); // Открытие соединения

    // Создание COM-объекта для получения выборки
    ADODB_rec = Новый COMОбъект("ADODB.Recordset");
    ТекстЗапроса = "SELECT * FROM [ЛистN1$]";

    // Выборка (запрос)
    ADODB_rec.Open(ТекстЗапроса, ADODB_conn);

    // Обход результата выборки
    Пока НЕ ADODB_rec.EOF() Цикл
        ЗначениеКолонки1 = ADODB_rec.Fields.Item("КолонкаN1").Value; // Обращение по имени колонки
        ЗначениеКолонки2 = ADODB_rec.Fields.Item(0).Value; // Обращение по индексу колонки
        ADODB_rec.MoveNext();
    КонецЦикла;

    ADODB_rec.Close();
    ADODB_rec = Неопределено;
    ADODB_conn.Close();
    ADODB_conn = Неопределено;

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

Выбор Excel файла в 1С 8.3 &НаКлиенте Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) //необходимо в
Выбор Excel файла в 1С 8.3

&НаКлиенте
Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) //необходимо в событии "НачалоВыбора" поля ввода вызвать ДиалогВыбораФайла

    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите файл Excel";
    Диалог.ПредварительныйПросмотр = Ложь;
    Диалог.Фильтр = "(*.xls,*.xlsx)|*.xls;*.xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx";

    Если ЗначениеЗаполнено(Объект.Файл) Тогда
        Диалог.ПолноеИмяФайла= Объект.Файл;
    КонецЕсли;

    Если Диалог.Выбрать() Тогда
        Объект.Файл = Диалог.ПолноеИмяФайла;
    КонецЕсли;

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

Как «поймать» медленные запросы 00:00 — Введение 00:57 — Обзор инструментов поиска медленных запросов 03:02 — Схема установки базы Монитор 05:33 — Создание отдельного кластера и базы для загрузки Монитора 06:45 — Подключение созданной базы и загрузка конфигурации Монитор 07:38 — Настройка мониторинга запросов 19:29 — Пример анализа запроса из медленного отчета 23:01 — Настройка отображения запросов в терминах метаданных 25:03 — Анализ параметров и просмотр плана запроса 26:00 — Пример запроса без контекста 26:45 — Подведение итогов первого занятия источник 👉@DevLab1C

Выборка записей запроса только на которые имеются пользовательские права в 1С 8.3 &НаСервере Процедура ВыборкаЗаписейЗапросаТ
Выборка записей запроса только на которые имеются пользовательские права в 1С 8.3

&НаСервере
Процедура ВыборкаЗаписейЗапросаТолькоНаКоторыеИмеютсяПользовательскиеПрава()

   // Необходимо только для баз, в которых ограничение прав доступа работает на уровне записей (RLS)
   // Данная реализация кода дает возможность выполнить запрос без ошибки
   // и выбрать только те данные, на которые у пользователя есть права
   Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |   Ссылка
   |ИЗ
   |   Документ.ПоступлениеМатериалов");

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

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

Настройка работы 1С Предприятия 8.3 с использованием PostgreSQL в среде Linux 👉@DevLab1C

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

Получение запросом всех строк со значениями определенных столбцов в 1С 8.3 &НаСервере Процедура ПолучениеЗапросомВсехСтрокСоЗ
Получение запросом всех строк со значениями определенных столбцов в 1С 8.3

&НаСервере
Процедура ПолучениеЗапросомВсехСтрокСоЗначениямиОпределенныхСтолбцов()

   // У каждого столбца в таблице есть своё соответствующее имя
   Запрос = Новый Запрос("ВЫБРАТЬ
   |  Наименование,
   |  Производитель,
   |  СрокИспользования
   |ИЗ
   |  Справочник.Материалы");

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

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

Получение запросом всех строк со значениями всех столбцов из таблицы в 1С 8.3 &НаСервере Процедура ПолучениеЗапросомВсехСтрок
Получение запросом всех строк со значениями всех столбцов из таблицы в 1С 8.3

&НаСервере
Процедура ПолучениеЗапросомВсехСтрокСоЗначениямиВсехСтолбцовИзТаблицы()

   // Звездочка используется, когда нужно выбрать все столбцы из таблицы
   Запрос = Новый Запрос("ВЫБРАТЬ
   |  *
   |ИЗ
   |  Справочник.Материалы");

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

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

Поиск строк в Таблице значений по нескольким значениям в 1С 8.3 Процедура Поиск_строк_в_ТЗ_по_нескольким_значениям(ТЗ, Значен
Поиск строк в Таблице значений по нескольким значениям в 1С 8.3

Процедура Поиск_строк_в_ТЗ_по_нескольким_значениям(ТЗ, ЗначениеПоиска1, ЗначениеПоиска2, ВидПоиска) Экспорт //ЗначениеПоиска3...,

   // Параметры:
   //  ТЗ - таблица значений по полям которой ищем
   //          Пример ТЗ:
   //          Стр["Цвет"] = "Красный";
   //          Стр["Вес"] = 120;
   //
   //  ЗначениеПоискаN - переданные значения для поиска по колонкам (согласно ОписаниеТипов)
   //          Пример значений:
   //          ЗначениеПоиска1="Красный"
   //          ЗначениеПоиска2=120
   //
   //  ВидПоиска - метод поиска: 1-запросом, 2-с помощью структуры

   Если ВидПоиска=1 Тогда //запросом

       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                               |    Врем_ТЗ.Цвет КАК Цвет,
                               |    Врем_ТЗ.Вес КАК Вес
                               |ПОМЕСТИТЬ Врем_ТЗ
                               |ИЗ
                               |    &ТЗ КАК Врем_ТЗ
                               |;
                               |
                               |///////////////////////////////////////////
                               |ВЫБРАТЬ
                               |    Врем_ТЗ.Цвет КАК Цвет,
                               |    Врем_ТЗ.Вес КАК Вес
                               |ИЗ
                               |    Врем_ТЗ КАК Врем_ТЗ
                               |ГДЕ
                               |    Врем_ТЗ.Цвет = &Цвет
                               |    И Врем_ТЗ.Вес = &Вес";

       Запрос.УстановитьПараметр("ТЗ", ТЗ);
       Запрос.УстановитьПараметр("Цвет", ЗначениеПоиска1);
       Запрос.УстановитьПараметр("Вес", ЗначениеПоиска2);

       РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
       Пока Записи.Следующий() Цикл
           // Обход результата запроса по каждой записи в полученной выборке
       КонецЦикла;

   ИначеЕсли ВидПоиска=2 Тогда //с помощью структуры

       ЗначенияПоиска = Новый Структура;
       ЗначенияПоиска.Вставить("Цвет", ЗначениеПоиска1);
       ЗначенияПоиска.Вставить("Вес", ЗначениеПоиска2);
       НайденныеПоля = ТЗ.НайтиСтроки(ЗначенияПоиска);

   КонецЕсли;

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

Публикация баз данных 1С:Предприятие на веб-сервере Apache в Windows c защитой SSL и аутентификацией по паролю Для публикации
Публикация баз данных 1С:Предприятие на веб-сервере Apache в Windows c защитой SSL и аутентификацией по паролю Для публикации информационных баз 1С:Предприятие на платформе Windows часто используют альтернативу штатному IIS - веб сервер Apache, который, несмотря на ряд ограничений, тоже неплохо подходит для небольших и средних установок. Одним из очевидных преимуществ Apache является его кроссплатформенность, т.е. если вы умеете настраивать данный веб-сервер на одной платформе, то без особого труда сделаете это и на другой. В данной публикации мы расскажем вам как установить и настроить Apache для публикации баз с SSL-защитой на базе сертификатов Let's Encrypt и дополнительной аутентификацией по паролю. ➡️Читать статью 👉@DevLab1C

Проверка на наличие Кириллицы в строке в 1С 8.3 Функция ПроверкаСтрокиНаКириллицу(СтрТекст, ТекДок) СтрТекстДок = СокрЛП(СтрТ
Проверка на наличие Кириллицы в строке в 1С 8.3

Функция ПроверкаСтрокиНаКириллицу(СтрТекст, ТекДок)

   СтрТекстДок      = СокрЛП(СтрТекст);
   СтрТекстДок      = Нрег(СтрТекстДок);
   ДлинаСтрокиНомера = СтрДлина(СтрТекстДок);
   СимволыКирилицы = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
   Найденные_Символы="";

   Если ДлинаСтрокиНомера > 0 Тогда
       Для СК = 1 По ДлинаСтрокиНомера Цикл
           ТекСимвол = Сред(СтрТекстДок,СК,1);
           Если  СтрЧислоВхождений(СимволыКирилицы,ТекСимвол) > 0 Тогда
               Найденные_Символы=Найденные_Символы+ТекСимвол;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;

   Если Найденные_Символы<>"" Тогда
        #Если Клиент Тогда
           Предупреждение("В строке "+СокрЛП(СтрТекст)+" обнаружены недопустимые символы: """+Врег(Найденные_Символы)+"""");
        #КонецЕсли
   КонецЕсли;

   Возврат СтрТекст;

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

Очиститка кэша 1С батником @echo off del /s /q %userprofile%\AppData\Local\1C\*.* rd /s /q %userprofile%\AppData\Local\1C\ de
Очиститка кэша 1С батником

@echo off
del     /s /q %userprofile%\AppData\Local\1C\*.*  
rd      /s /q %userprofile%\AppData\Local\1C\

del     /s /q %userprofile%\AppData\Roaming\1C\1cv8\*.*
rd      /s /q %userprofile%\AppData\Roaming\1C\1cv8\

del     /s /q %userprofile%\AppData\Roaming\1C\1cv82\*.*
rd      /s /q %userprofile%\AppData\Roaming\1C\1cv82\
👉@DevLab1C