1С:Предприятие 8
781 subscribers
47 photos
160 videos
51 links
🔥 Разработка в 1С — просто и понятно! 🔥

Полезные фишки и лайфхаки для разработчиков
Объяснение сложных тем простыми словами
Готовые решения, сниппеты и примеры кода
Разбор ошибок и способов их устранения
Новости и тренды в мире 1С
Download Telegram
Работа с CSV. Чтение файла CSV опционально (средствами 1С) в ТЗ в 1С 8.3


&НаСервере
Функция Прочитать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
👍2
Асинхронные функции.

Обещание и Возвращающие Обещание в 1С 8.3


Процедура ВыполнениеПримераСАсих()

Попытка
ВыполнениеКода();
Исключение
// Исключение из ВыполнениеКода() не будет перехвачено здесь
КонецПопытки

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

Асинх Функция ВыполнениеКода() // Всегда возвращает Обещание

ВызватьИсключение "Выброшено в ВыполнениеКода()";
//При успешном завершении в Обещание будет завернуто значение, которое было аргументом оператора Возврат.
//Если при выполнении Асинх функции произошло исключение, то в Обещание будет завернуто это исключение.

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


Обещание как аргумент оператора Ждать в 1С 8.3


Асинх Процедура ВыполнениеПримераСАсих()

Попытка
// Для того, чтобы узнать как завершилась Асинх функция – это использовать возвращенное ею Обещание как аргумент оператора Ждать.
Ждать ВыполнениеКода(Null);
Исключение
// Исключение из НеNull() будет перехвачено здесь
Сообщить("Передали Null");
КонецПопытки

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

Асинх Функция ВыполнениеКода(ПеремП) // Всегда возвращает Обещание

Если ПеремП = Null Тогда
ВызватьИсключение "Выброшено в ВыполнениеКода()";
Иначе
Возврат ПеремП;
КонецЕсли;

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

// Асинх процедура не возвращает значения. А если при выполнении Асинх процедуры возникнет не перехваченное исключение,
// то это приведет к выдаче сообщения об ошибке.


👉@DevLab1C
👍3🔥2
Работа с CSV. Чтение файла CSV через ADO (без схемы) в 1С 8.3


&НаСервере
Процедура ЧтениеФайла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
Основы 1С 8.3 для начинающих (Управляемые формы). Основы программирования и конфигурирования.

#1. Платформа. Конфигурация. Установка учебной версии. Информационная база
#2. Файловые и клиент-серверные информационные базы
#3. Режимы запуска. Тонкий клиент. Толстый клиент. Веб-клиент.
#4. Конфигурация. Объекты метаданных и их свойства.
#5. Сохранение изменений в конфигурации.
#6. Справочники и их создание.
#7. Выгрузка/Загрузка информационной базы. Сохранение/Загрузка конфигурации.
#8. Пользовательский интерфейс. Подсистемы. Корпоративный стиль.
#9. Настройка справочников. Иерархия справочников. Владельцы справочников.
#10. Реквизиты справочников. Стандартные типы реквизитов. Табличные части.

источник

👉@DevLab1C
🔥6👍1
Создание регламентного задания из внешней обработки


Работа с 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
1С. Как открыть форму ещё не записанного документа


Постановка задачи: в информационной системе имеется документ "Спецификация". На форме документа есть кнопка "Запрос цен". По нажатию этой кнопки должен создаться и заполниться документ "Запрос цен". Его заполненная форма должна открыться для редактирования пользователем, при этом документ не должен быть записан.

Итак, реализация задуманного:

&НаКлиенте
Процедура ЗапросЦен(Команда)

ФормаНовогоЗапросаЦен = ПолучитьФорму("Документ.ЗапросЦен.Форма.ФормаДокумента");
ДанныеФормы = ФормаНовогоЗапросаЦен.Объект;
ЗаполнитьЗапросЦенНаСервере(ДанныеФормы); // Процедура, в которой на сервере заполняется объект документа.
КопироватьДанныеФормы(ДанныеФормы, ФормаНовогоЗапросаЦен.Объект); // Здесь данные заполненного объекта документа копируются в форму.
ФормаНовогоЗапросаЦен.Открыть(); // Открываем заполненную форму.

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


Серверная процедура, в которой заполняется объект документа:

&НаСервере
Процедура ЗаполнитьЗапросЦен(ДанныеФормы)

// В этой серверной процедуре заполняем объект.
ДанныеФормы.Организация = Объект.Организация;

//... заполняем все необходимые реквизиты.

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


Для уменьшения объёма передаваемых данных между клиентом и сервером можно организовать серверную процедуру без передачи в неё контекста формы:

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

// Получаем объект документа из данных формы
НовыйЗапросЦен = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ЗапросЦен"));
// Или создаём новый документ:
НовыйЗапросЦен = Документы.ЗапросЦен.СоздатьДокумент();

// Заполняем реквизиты объекта документа
НовыйЗапросЦен.Организация = Объект.Организация;

//... заполняем все необходимые реквизиты.

// Данные заполненного документа помещаем в объект формы
ЗначениеВДанныеФормы(НовыйЗапросЦен,ДанныеФормы);

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


👉@DevLab1C
🔥3👍2👎1
Media is too big
VIEW IN TELEGRAM
Как вывести штрихкод в печатную форму 1С

Материалы из видео добавили в комментарии👇

источник

👉@DevLab1C
👍5🔥1
Работа с файлами

Изучив видео этого плейлиста ты научишься обрабатывать файлы: загружать данные из файла в 1С и выгружать данные из 1С в файл.

Диалог выбора файла в 1С и другие диалоги
1. Общая схема работы с файлами в 1С
2. Как правильно загружать данные в 1С из файла
3. Как прочитать текстовый файл (TXT) в 1С
4. Как прочитать файл CSV в 1С
5. Как прочитать файл EXCEL в 1С
Как прочитать файл DBF в 1С
Как прочитать XML в 1С. Способ № 1 (Линейное чтение)
Как прочитать XML в 1С. Способ № 2 (XDTO)
Чтение файла в 1С на сервере
Загрузка справочника "Контрагенты" в 1С из файла. Часть 1
Загрузка контрагентов в 1С. Часть 2: Работа над ошибками
Выгрузка данных из 1С в XML

Все видео доступны на youtube

👉@DevLab1C
👍7🔥3
Media is too big
VIEW IN TELEGRAM
Основы использования таблиц значений

В ролике рассматриваются темы:
Создание ТЗ с помощью кода
Создание ТЗ запросом
ТЗ как параметр запроса. Что можно и что нельзя в запросе, где ТЗ является параметром.
ТЗ и построитель запросов
ТЗ и построитель отчетов
ТЗ и СКД - использование в отчетах и обработках, управляемых и обычных формах.

00:00 Вступление
00:33 Создание ТЗ с помощью кода.
01:52 Создание ТЗ запросом
04:21 ТЗ как параметр запроса. Что можно и что нельзя в запросе, где ТЗ является параметром.
05:32 ТЗ и построитель запросов
07:34 ТЗ и построитель отчетов
07:58 ТЗ и СКД
13:49 Заключение

источник

👉@DevLab1C
🔥3👍1