загрузка...
Дата публикации: 20.05.2021 10:28:04 |
Здесь буду собирать наработки по обычным формам
открытие файлового диалога и выбор файла
файл = "загрузка.xls";
Режим = РежимДиалогаВыбораФайла.Открытие;
Диалог = Новый ДиалогВыбораФайла(Режим);
Диалог.Заголовок = "Выбор xls файла ";
Диалог.Фильтр = "Файл выгрузки (*.xls)|*.xlsx";
Если Не Диалог.Выбрать() Тогда
Сообщить("Не выбран файл");
Иначе
файл= Диалог.ПолноеИмяФайла;
этаформа.ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Загрузить.Доступность =Истина;
КонецЕсли;
Чтение из excel
Соотв = Новый Соответствие;
Попытка
Excel = Новый COMОбъект("Excel.Application");
Соотв.Вставить("Соединение",Excel);
ExcelФайл = Excel.WorkBooks.Open (файл);
Соотв.Вставить("ExcelФайл",ExcelФайл);
Лист=ExcelФайл.Sheets("Лист1");
Мстрока= Лист.Cells(1,1).SpecialCells(11).Row;
строка =Мстрока;
Для x = 2 по Мстрока цикл
если Не СокрЛП(Лист.Cells(x,2).Value)="" тогда
СтрЗ=Загрузка.Добавить();
СтрЗ.Артикул = Лист.Cells(x,2).Value;
СтрЗ.Производитель = Лист.Cells(x,3).Value;
СтрЗ.Количество = Лист.Cells(x,4).Value;
СтрЗ.ЕдИзм = Лист.Cells(x,5).Value;
СтрЗ.Цена= Лист.Cells(x,6).Value;
КонецЕсли;
конеццикла;
ExcelФайл.Close();
Excel.DisplayAlerts = 1;
Excel.Quit();
Excel = Неопределено;
ЭлементыФормы.Загрузка.Значение= Загрузка;
ЭлементыФормы.Загрузка.СоздатьКолонки();
если Загрузка.Количество()>0 Тогда
этаформа.ЭлементыФормы.ОсновныеДействияФормы.Кнопки.ОсновныеДействияФормыВыполнить.Доступность =Истина;
КонецЕсли;
Исключение
Сообщить("Ошибка Microsoft Excel" + ОписаниеОшибки());
лРезультат = Неопределено;
КонецПопытки;
Заполнение макета СКД
Процедура ДокОтчетаПриИзменении(Элемент)
// Вставить содержимое обработчика.
ОСКД = ПолучитьМакет("Макет");
НастройкиОСКД = ОСКД.НастройкиПоУмолчанию;
ПараметрыДанныхОСКД = НастройкиОСКД.ПараметрыДанных.Элементы;
ЭлементСсылка = ПараметрыДанныхОСКД.Найти("Ссылка");
ЭлементСсылка.Использование = Истина;
ЭлементСсылка.Значение = ДокОтчета;
КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакетаОСКД.Выполнить(ОСКД, НастройкиОСКД);
ПроцессорКомпоновкиОСКД = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиОСКД.Инициализировать(Макет);
ТаблДок = ЭтаФорма.ЭлементыФормы.ТаблДок;
ТаблДок.Очистить();
ПроцессорВыводаОСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВыводаОСКД.УстановитьДокумент(ТаблДок);
ПроцессорВыводаОСКД.Вывести(ПроцессорКомпоновкиОСКД);
КонецПроцедуры
открытие и чтение из csv
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Экспорт
МойРезультат = Новый Массив;
// для обеспечения обратной совместимости
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Строка) Тогда
Если Разделитель = " " Тогда
МойРезультат.Добавить("");
КонецЕсли;
Возврат МойРезультат;
КонецЕсли;
КонецЕсли;
//
Позиция = Найти(Строка, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Строка, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
МойРезультат.Добавить(Подстрока);
КонецЕсли;
Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
Позиция = Найти(Строка, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
МойРезультат.Добавить(Строка);
КонецЕсли;
Возврат МойРезультат;
КонецФункции
// Вставить содержимое обработчика.
fiascsv = "fias.csv";
Режим = РежимДиалогаВыбораФайла.Открытие;
Диалог = Новый ДиалогВыбораФайла(Режим);
Диалог.Заголовок = "Выбор csv файла ";
Диалог.Фильтр = "Файл выгрузки fias (*.csv)|*.csv";
Если Не Диалог.Выбрать() Тогда
Предупреждение("Не выбран csv файл !");
ЭтаФорма.Закрыть("");
Иначе
fiascsv= Диалог.ПолноеИмяФайла;
КонецЕсли;
ТекстовыйДокумент = Новый ТекстовыйДокумент;
Попытка
ТекстовыйДокумент.Прочитать(fiascsv);
Исключение
Предупреждение("Ошибка открытия файла "+fiascsv+" !");
ЭтаФорма.Закрыть("");
КонецПопытки;
Для ТекСтрока = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
ТекстоваяСтрока = ТекстовыйДокумент.ПолучитьСтроку(ТекСтрока);
строкаДокумента = РазложитьСтрокуВМассивПодстрок(ТекстоваяСтрока,";");
НайденнаяСтрока = ТЗ.Найти(СокрЛП(строкаДокумента[1]),"номерпом");
Если НайденнаяСтрока = Неопределено Тогда
сообщить("не нашли "+строкаДокумента[1]);
иначе
НайденнаяСтрока.fias = строкаДокумента[0];
КонецЕсли;
КонецЦикла;
работа с xml
Данные = Новый ЧтениеXML;
Попытка
Данные.ОткрытьФайл(имяВыходногоФайлаxml);
Исключение
Предупреждение("Ошибка открытия файла "+имяВыходногоФайлаxml);
ЭтаФорма.Закрыть("");
КонецПопытки;
СтатусЧтения = "";
Пока Данные.Прочитать() Цикл
Если СокрЛП(Данные.Имя) = "AssignationCode" И СокрЛП(Данные.ПерейтиКСодержимому()) = "Начало элемента" Тогда
СтатусЧтения = "AssignationCode";
КонецЕсли;
Если СтатусЧтения = "AssignationCode" И СокрЛП(Данные.ПерейтиКСодержимому()) = "Текст" Тогда
если СокрЛП(AssignationCode) = "" тогда
AssignationCode = СокрЛП(Данные.Значение);
конецесли;
СтатусЧтения = "";
КонецЕсли;
Если СокрЛП(Данные.Имя) = "Level1" Тогда
Level1 = СокрЛП(Данные.ЗначениеАтрибута("Value"));
Level1Type = СокрЛП(Данные.ЗначениеАтрибута("Type"));
КонецЕсли;
КонецЦикла;
Назад в раздел