&НаКлиенте
Процедура ЗагрузитьCSV(Команда) // выполняется при нажатии на кнопку
ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); //!!!!!!!!!!!!
ДиалогФыбораФайла.Фильтр="csv файл с разделтелями (*.csv)|*.csv|";
ДиалогФыбораФайла.Заголовок = "Выберите файл";
ДиалогФыбораФайла.ИндексФильтра = 0;
описаниеОповещения = Новый ОписаниеОповещения("ГрузимИзФайла", ЭтотОбъект);
ДиалогФыбораФайла.Показать(описаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ГрузимИзФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт // вызываем диалог выбора файла
Если ВыбранныеФайлы <> Неопределено И ВыбранныеФайлы.Количество() > 0 Тогда
// Сообщить("Файл выбран!");
//работаем с файлом
Имяфайла=ВыбранныеФайлы[0];
// Пишем в реестр
сообщить(имяФайла); // вызываем дальнейшую процедуру обработки
Путь=имяФайла; // для сохранения xml понадобится
// читаем файл
ЗагружаемыйФайл = Новый ТекстовыйДокумент;
ЗагружаемыйФайл.Прочитать(ИмяФайла);
Если лист="лист1" тогда
обработатьCSV1(ЗагружаемыйФайл);
конецЕсли;
Иначе
Сообщить("Файл не выбран!");
КонецЕсли;
КонецПроцедуры
// процедуру обработатьCSV1(файл) - можно сделать на клиенте
&наСервере
процедура обработатьCSV1(файл)
для номерстроки=2 по файл.КоличествоСтрок() цикл // первую строку пропускаем т.к. там название полей
строка=файл.получитьСтроку(номерСтроки);
массив=РазложитьСтрокуВМассивПодстрок(строка,";"); // строка csv - файла, преобразованная в массив, дальше с этими данными можно делать что угодно
конецЦикла;
конецПроцедуры
// процедуру РазложитьСтрокуВМассивПодстрок - можно сделать на клиенте, если процедура "обработатьCSV1" тоже имеет директиву &наКлиенте
&наСервере
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
МассивСтрок = Новый Массив();
Если Разделитель = " " Тогда
Стр = СокрЛП(Стр);
Пока 1=1 Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
МассивСтрок.Добавить(Стр);
Возврат МассивСтрок;
КонецЕсли;
МассивСтрок.Добавить(Лев(Стр,Поз-1));
Стр = СокрЛ(Сред(Стр,Поз));
КонецЦикла;
Иначе
ДлинаРазделителя = СтрДлина(Разделитель);
Пока 1=1 Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
МассивСтрок.Добавить(Стр);
Возврат МассивСтрок;
КонецЕсли;
МассивСтрок.Добавить(Лев(Стр,Поз-1));
Стр = Сред(Стр,Поз+ДлинаРазделителя);
КонецЦикла;
КонецЕсли;
КонецФункции // глРазложить
{25} Переменной Путь присвоено значение, но оно нигде не используется {53} Не все части функции возвращают значение Орфографическая ошибка в ДиалогФыбораФайла (найдено 5): Фыбора Орфографическая ошибка в разделтелями: разделтелями Орфографическая ошибка в Имяфайла: Имяфайла Орфографическая ошибка в номерстроки: номерстроки
Шаблон кода Внешней обработки Заполнение Объекта
ВидОбработкиШаблонСообщения (БСП)
ИнтерактивнаяЗагрузкаКлассификаторовДоступна (БСП)