//Проведение импорта булочек на клиенте
&НаКлиенте
Процедура Импорт(Команда)
Оповещение = Новый ОписаниеОповещения("ИмпортНаСервере", ЭтотОбъект);
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Показать(Оповещение);
КонецПроцедуры
//Проведение импорта булочек на сервере
&НаСервере
Процедура ИмпортНаСервере(Файлы, Параметры) Экспорт
//Попытка создать табличный документ
Попытка
Файл = Файлы[0];
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(Файл);
Исключение
Сообщить("Ошибка при импорте файла: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
Для Строка=2 по ТабДок.ВысотаТаблицы Цикл
//Получаем данные из табличного документа
Наименование = ТабДок.Область(Строка, 1).Текст;
Цена = ТабДок.Область(Строка, 2).Текст;
Описание = ТабДок.Область(Строка, 3).Текст;
ТипНаименование = ТабДок.Область(Строка, 4).Текст;
//До этого я додумался только на экзамене. Немного помогает со сломанными excel-файлами. В идеале бы их еще чистить от невидимых символов
Если Наименование="" Тогда
Продолжить
КонецЕсли;
//Создаем тип булочки, если ее не существует
Если Справочники.ТипыБулочек.НайтиПоНаименованию(ТипНаименование).Пустая() Тогда
Тип = Справочники.ТипыБулочек.СоздатьЭлемент();
Тип.Наименование = ТипНаименование;
Тип.Записать();
КонецЕсли;
//Создаем булочку, если ее еще не существует
Если Справочники.Булочки.НайтиПоНаименованию(Наименование).Пустая() Тогда
Булочка = Справочники.Булочки.СоздатьЭлемент();
Булочка.Наименование = Наименование;
Булочка.Цена = Цена;
Булочка.Описание = Описание;
Булочка.Тип = Справочники.ТипыБулочек.НайтиПоНаименованию(ТипНаименование);
Булочка.Записать();
КонецЕсли;
КонецЦикла;
Элементы.Список.Обновить();
Сообщить("Импорт завершен!");
КонецПроцедуры