Чтение и проверка прав и ролей пользователей в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура ЧтениеИПроверкаПравИРолейПользователей() // Варианты прав: Чтение, Изменение, Добавление, Удаление, Проведение
// Чтение права к объекту метаданных у текущего пользователя
Если ПравоДоступа("Изменение", Метаданные.Справочники.Материалы) Тогда
Сообщить("Доступ к справочнику Материалы на изменение открыт!");
КонецЕсли;
// Чтение права к объекту метаданных у определенной роли
Если Не ПравоДоступа("Удаление", Метаданные.Справочники.Материалы, Метаданные.Роли.Менеджер) Тогда
Сообщить("У роли Менеджер нет прав на удаление в справочнике Материалы!");
КонецЕсли;
// Проверка права к объекту метаданных у других пользователей
ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВсеПользователи Цикл
Если ПравоДоступа("Изменение", Метаданные.Справочники.Материалы, Пользователь) Тогда
Сообщить("Доступ для " + Пользователь.Имя + " на изменение открыт!");
КонецЕсли;
КонецЦикла;
// Чтение роли у текущего пользователя
Если РольДоступна("Администратор") Тогда
Сообщить("У Вас права Администратора!");
КонецЕсли;
// Проверка права у пользователя и в случае его отсутствия - вызов исключения
ВыполнитьПроверкуПравДоступа("Изменение", Метаданные.Справочники.Материалы); // "Нарушение прав доступа!"
КонецПроцедуры
👉@DevLab1C
👍3🔥1
Сохранение, чтение и удаление настроек пользователя в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура СохранениеЧтениеУдалениеНастроекПользователя()
// Сохранение произвольных настроек конкретного пользователя
НастройкиПользователя = Новый Структура;
НастройкиПользователя.Вставить("Фамилия", "Дарк");
НастройкиПользователя.Вставить("Имя", "Жанна");
НастройкиПользователя.Вставить("Пол", "Ж");
НастройкиПользователя.Вставить("Возраст", 19);
// Параметры: Ключ объекта, Ключ настроек, Настройки, Описание настроек, Владелец настроек,
ХранилищеОбщихНастроек.Сохранить("Отчет.ОСВ", "КлючНастроек", НастройкиПользователя, ,ИмяПользователя());
// Сохранение произвольных настроек для всех пользователей
ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВсеПользователи Цикл
ХранилищеОбщихНастроек.Сохранить("Отчет.ОСВ", "КлючНастроек", НастройкиПользователя, ,Пользователь.Имя);
КонецЦикла;
// Чтение сохраненных настроек пользователя
ЧтениеНастроек = Неопределено;
Попытка
ЧтениеНастроек = ХранилищеОбщихНастроек.Загрузить("Отчет.ОСВ", "КлючНастроек",,ИмяПользователя());
Исключение
Сообщить("Не достаточно прав доступа к настройкам пользователя: "+ИмяПользователя());
КонецПопытки;
Если ЧтениеНастроек = Неопределено Тогда // Значит настроек нет
Сообщить("Не получилось прочитать настройки.");
Иначе // Чтение настроек
Сообщить("Имя:"+ЧтениеНастроек.Имя+"; Фамилия:"+ЧтениеНастроек.Фамилия+
"; Пол:"+ЧтениеНастроек.Пол+"; Возраст:"+ЧтениеНастроек.Возраст);
КонецЕсли;
// Удаление сохраненных настроек пользователя
ХранилищеОбщихНастроек.Удалить("Отчет.ОСВ", "КлючНастроек", ИмяПользователя());
// Удаление сохраненных настроек у всех пользователей
ХранилищеОбщихНастроек.Удалить("Отчет.ОСВ", "КлючНастроек", Неопределено);
КонецПроцедуры
👉@DevLab1C
👍3🔥2
Работа с CSV
👉@DevLab1C
Чтение файла CSV в 1С 8.3:
&НаКлиенте
Процедура ЧтениеФайлаCSV()
ФайлCSV = Новый ТекстовыйДокумент;
ФайлCSV.Прочитать("D:\import_04042025.csv");
ЗагрузитьCSV(ФайлCSV);
КонецПроцедуры
Загрузка CSV файла (в Таблицу значений) в 1С 8.3:
&НаСервере
Процедура ЗагрузитьCSV(ФайлCSV)
ТЗ = Новый ТаблицаЗначений;
// Важно! Чтобы в значениях НЕ встречался используемый разделитель
ИспользуемыйРазделитель = ";";
//*** Если есть шапка таблицы ***
ШапкаCSV = ФайлCSV.ПолучитьСтроку(1);
// Чтение и разделение на отдельные значения в массив (по разделителю)
МассивCSV = СтрРазделить(ШапкаCSV, ИспользуемыйРазделитель);
//***************************
Для Каждого СтрокаНом Из МассивCSV Цикл
// Удаляем пробелы т.к. в названии столбцов они не допускаются
ИмяБП = СтрЗаменить(СтрокаНом," ","");
ТЗ.Колонки.Добавить(ИмяБП,, СтрокаНом);
КонецЦикла;
Для НомерСтроки=2 По ФайлCSV.КоличествоСтрок() Цикл // Если без шапки, то начинаем с первой строчки
// Получаем строку по-порядку
СтрокаCSV = ФайлCSV.ПолучитьСтроку(НомерСтроки);
// Разделяем с помощью выбранного разделителя каждую строку на столбцы
МассивCSV = СтрРазделить(СтрокаCSV, ИспользуемыйРазделитель);
НоваяСтрочка= ТЗ.Добавить();// Добавляем строку в ТЗ
Для НомСтолбца= 1 По МассивCSV.Количество() Цикл
ТекЗначениеCSV = МассивCSV[НомСтолбца-1];
ИмяКолонкиCSV = ТЗ.Колонки[НомСтолбца-1].Имя;
НоваяСтрочка[ИмяКолонкиCSV] = ТекЗначениеCSV;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
👍4🔥2
Работа с CSV. Выгрузка в файл CSV и его создание в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура ВыгрузкаВФайлCSVСоздание();
ИспользуемыйРазделитель = ";";
ФайлCSV="D:\import_07042025.csv";
//*** Получаем данные из запроса ***
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВнутреннийПрайс.Код КАК Код,
| ВнутреннийПрайс.Наименование КАК Наименование,
| ВнутреннийПрайс.ЗакупочнаяЦена КАК ЗакупочнаяЦена,
| ВнутреннийПрайс.РозничнаяЦена КАК РозничнаяЦена,
| ВнутреннийПрайс.ОптоваяЦена КАК ОптоваяЦена
|ИЗ
| Справочник.Цены КАК ВнутреннийПрайс";
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ТЗ = РезультатЗапроса;
//**********************************
ТекстCSV=""; // Текст с учетом заголовков, разделителей и переноса строк
Для Каждого СтрокаТЗ Из ТЗ Цикл
Если ТекстCSV="" Тогда
СтрокаКол="";
КолонкиТЗ=ТЗ.Колонки;
Для Каждого Колонка Из КолонкиТЗ Цикл
СтрокаКол = "" + СтрокаКол + Колонка.Имя + ИспользуемыйРазделитель ;
КонецЦикла;
ТекстCSV = СтрокаКол + Символы.ПС;
КонецЕсли;
ТекстCSV = ТекстCSV + СтрокаТЗ.Код + ИспользуемыйРазделитель + СтрокаТЗ.Наименование
+ ИспользуемыйРазделитель + СтрокаТЗ.ЗакупочнаяЦена + ИспользуемыйРазделитель + СтрокаТЗ.РозничнаяЦена
+ ИспользуемыйРазделитель + СтрокаТЗ.ОптоваяЦена + Символы.ПС;
КонецЦикла;
КодANSI = КодировкаТекста.ANSI;
ТекстовыйФайлЗапись = Новый ЗаписьТекста(ФайлCSV, КодANSI); // Создание файла CSV
ТекстовыйФайлЗапись.ЗаписатьСтроку(ТекстCSV); // Запись информации в файл
ТекстовыйФайлЗапись.Закрыть(); // Обязательно закрываем, иначе зависает в процессе
КонецПроцедуры
👉@DevLab1C
👍4🔥2
Работа с CSV. Чтение файла CSV опционально (средствами 1С) в ТЗ в 1С 8.3
👉@DevLab1C
&НаСервере
Функция ПрочитатьCSVвТЗ(ИмяФайла, ИспользуемыйРазделитель=";", ЗаголовкиИзПервойСтроки = Ложь)
Текст = Новый ЧтениеТекста(ИмяФайла);
ТЗ = Новый ТаблицаЗначений;
// Создадим колонки
ТекСтрока = Текст.ПрочитатьСтроку();
Если ТекСтрока <> Неопределено Тогда
МассивCSV = СтрРазделить(ТекСтрока, ИспользуемыйРазделитель);
ИндексКолонки = 0;
Для Каждого ИмяКолонки Из МассивCSV Цикл
ИмяКолонки = ?(ЗаголовкиИзПервойСтроки, "Кол"+ИндексКолонки, ИмяКолонки);
ТЗ.Колонки.Добавить(ИмяКолонки);
ИндексКолонки = ИндексКолонки + 1;
КонецЦикла;
Если ЗаголовкиИзПервойСтроки Тогда
ТекСтрока = Текст.ПрочитатьСтроку();
КонецЕсли;
КонецЕсли;
Пока ТекСтрока <> Неопределено Цикл // строки читаются до символа перевода строки
НоваяСтрока = ТЗ.Добавить();
МассивCSV = СтрРазделить(ТекСтрока, ИспользуемыйРазделитель);
ИндексКолонки = 0;
Для Каждого СтрокаНом Из МассивCSV Цикл
НоваяСтрока[ИндексКолонки] = СтрокаНом;
ИндексКолонки = ИндексКолонки + 1;
КонецЦикла;
ТекСтрока = Текст.ПрочитатьСтроку();
КонецЦикла;
Возврат ТЗ;
КонецФункции
👉@DevLab1C
👍3
5 видео для подготовки к Аттестации 1С:Специалист-Консультант по производству и ремонтам в 1С:ERP 2.5
🔹Ключевые изменения в 1С:ERP 2.5.7 по производственному учету – за 15 минут
🔹За что получают двойки на Аттестации по производству и ремонтам в 1C:ERP 2.5?
🔹Как правильно реагировать на ошибки системы – на примере Аттестации Специалист-консультант по 1С:ERP
🔹Ремонт оборудования заказчика в 1С:ERP 2.5 – схема учета для Аттестации и проектов за 20 минут
🔹Объекты возникновения затрат (ОВЗ) в 1С:ERP 2.5.7 – разбираем новый функционал на практике
Все видео на youtube
👉@DevLab1C
🔹Ключевые изменения в 1С:ERP 2.5.7 по производственному учету – за 15 минут
🔹За что получают двойки на Аттестации по производству и ремонтам в 1C:ERP 2.5?
🔹Как правильно реагировать на ошибки системы – на примере Аттестации Специалист-консультант по 1С:ERP
🔹Ремонт оборудования заказчика в 1С:ERP 2.5 – схема учета для Аттестации и проектов за 20 минут
🔹Объекты возникновения затрат (ОВЗ) в 1С:ERP 2.5.7 – разбираем новый функционал на практике
Все видео на youtube
👉@DevLab1C
👍2
Асинхронные функции.
Обещание и Возвращающие Обещание в 1С 8.3
Обещание как аргумент оператора Ждать в 1С 8.3
👉@DevLab1C
Обещание и Возвращающие Обещание в 1С 8.3
Процедура ВыполнениеПримераСАсих()
Попытка
ВыполнениеКода();
Исключение
// Исключение из ВыполнениеКода() не будет перехвачено здесь
КонецПопытки
КонецПроцедуры
Асинх Функция ВыполнениеКода() // Всегда возвращает Обещание
ВызватьИсключение "Выброшено в ВыполнениеКода()";
//При успешном завершении в Обещание будет завернуто значение, которое было аргументом оператора Возврат.
//Если при выполнении Асинх функции произошло исключение, то в Обещание будет завернуто это исключение.
КонецФункции
Обещание как аргумент оператора Ждать в 1С 8.3
Асинх Процедура ВыполнениеПримераСАсих()
Попытка
// Для того, чтобы узнать как завершилась Асинх функция – это использовать возвращенное ею Обещание как аргумент оператора Ждать.
Ждать ВыполнениеКода(Null);
Исключение
// Исключение из НеNull() будет перехвачено здесь
Сообщить("Передали Null");
КонецПопытки
КонецПроцедуры
Асинх Функция ВыполнениеКода(ПеремП) // Всегда возвращает Обещание
Если ПеремП = Null Тогда
ВызватьИсключение "Выброшено в ВыполнениеКода()";
Иначе
Возврат ПеремП;
КонецЕсли;
КонецФункции
// Асинх процедура не возвращает значения. А если при выполнении Асинх процедуры возникнет не перехваченное исключение,
// то это приведет к выдаче сообщения об ошибке.
👉@DevLab1C
👍3🔥2
Работа с CSV. Чтение файла CSV через ADO (без схемы) в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура ЧтениеФайлаCSV_ADO(); //Для работы с CSV файлами больших размеров (свыше 10Mb)
ФайлCSV="D:\import_11042025.csv";
ПутьСоединения = "Driver={Microsoft Text Driver (*.csv)};";
ПутьСоединения = ПутьСоединения + "Dbq=" + ФайлCSV + ";";
ПутьСоединения = ПутьСоединения + "Uid=" + "Extensions=csv" + ";";
ADOConn = Новый COMОбъект("ADODB.Connection");
ADOConn.ConnectionString = ПутьСоединения;
ADOConn.Open();
ADORec = Новый COMОбъект("ADODB.Recordset");
Попытка
ADORec.Open("S_elect * from file#txt", ADOConn);
Пока ADORec.EOF() = 0 Цикл
ADOСтрока="";
Для Счетчик = 0 По ADORec.Fields.Count-1 Цикл
ADOСтрока = ADOСтрока + ";" + ADORec.Fields(Счетчик).Value;
КонецЦикла;
//Сообщить("Прочитана строка: "+ADOСтрока);
ADORec.MoveNext();
КонецЦикла;
Исключение
ADORec.Close();
ADOConn.Close();
//Предупреждение("При чтении данных в CSV произошла ошибка:"+ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
👉@DevLab1C
👍2
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Основы 1С 8.3 для начинающих (Управляемые формы). Основы программирования и конфигурирования.
#1. Платформа. Конфигурация. Установка учебной версии. Информационная база
#2. Файловые и клиент-серверные информационные базы
#3. Режимы запуска. Тонкий клиент. Толстый клиент. Веб-клиент.
#4. Конфигурация. Объекты метаданных и их свойства.
#5. Сохранение изменений в конфигурации.
#6. Справочники и их создание.
#7. Выгрузка/Загрузка информационной базы. Сохранение/Загрузка конфигурации.
#8. Пользовательский интерфейс. Подсистемы. Корпоративный стиль.
#9. Настройка справочников. Иерархия справочников. Владельцы справочников.
#10. Реквизиты справочников. Стандартные типы реквизитов. Табличные части.
источник
👉@DevLab1C
#1. Платформа. Конфигурация. Установка учебной версии. Информационная база
#2. Файловые и клиент-серверные информационные базы
#3. Режимы запуска. Тонкий клиент. Толстый клиент. Веб-клиент.
#4. Конфигурация. Объекты метаданных и их свойства.
#5. Сохранение изменений в конфигурации.
#6. Справочники и их создание.
#7. Выгрузка/Загрузка информационной базы. Сохранение/Загрузка конфигурации.
#8. Пользовательский интерфейс. Подсистемы. Корпоративный стиль.
#9. Настройка справочников. Иерархия справочников. Владельцы справочников.
#10. Реквизиты справочников. Стандартные типы реквизитов. Табличные части.
источник
👉@DevLab1C
🔥6👍1
Создание регламентного задания из внешней обработки
👉@DevLab1C
Работа с CSV. Чтение файла CSV через ADO в ТЗ в 1С 8.3
&НаСервере
Функция ПрочитатьCSVвТЗ_ADO(ИмяФайла, Разделитель=";", ЗаголовкиИзПервойСтроки = Ложь)
ТЗ = Новый ТаблицаЗначений;
ФайлCSV = Новый Файл(ИмяФайла);
ADOConn =Новый COMОбъект("ADODB.Connection");
ADOConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ФайлCSV.Путь+";Extended Properties=""text;HDR=No;IMEX=1;FMT=Delimited""");
// Так как FMT=Delimited(;) не работает создадим schema.ini
// https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver?redirectedfrom=MSDN&view=sql-server-ver15
// https://docs.microsoft.com/en-us/sql/odbc/microsoft/text-file-format-text-file-driver?redirectedfrom=MSDN&view=sql-server-ver15
СхемаCSV= СтрШаблон("[%1]
|ColNameHeader=%2
|Format=Delimited(%3)", ФайлCSV.Имя, Формат(ЗаголовкиИзПервойСтроки, "БЛ=False; БИ=True"), Разделитель);
ФайлСхемы = Новый ТекстовыйДокумент;
ФайлСхемы.УстановитьТекст(СхемаCSV);
ФайлСхемы.Записать(ФайлCSV.Путь + "Schema.ini", "CESU-8"); // UTF-8 без BOM
ADORec=Новый COMОбъект("ADODB.Recordset");
ADORec.ActiveConnection = ADOConn;
ADORec.Open("select * from "+ФайлCSV.Имя, ADOConn);
// определим имена колонок
Для НомКолонки = 0 По ADORec.Fields.Count-1 Цикл
ТЗ.Колонки.Добавить(ADORec.Fields(НомКолонки).Name);
КонецЦикла;
Сч=0;
Пока НЕ ADORec.EOF() Цикл
Сч=Сч+1;
НоваяСтрока = ТЗ.Добавить();
Для а=0 По ADORec.Fields.Count-1 Цикл
НоваяСтрока[а] = ADORec.Fields(а).Value;
КонецЦикла;
ADORec.MoveNext();
КонецЦикла;
ADORec.Close();
ADOConn.Close();
Возврат ТЗ;
КонецФункции
👉@DevLab1C
🔥3👍1