Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику Lexveritas ::: Спасибо сказали: 2 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
12.06.18, 16:03 Табличные части из Эксель документа
Цитата(sava1 @ 12.06.18, 11:55) *


Это сработало.
Но.
Вот такой обработчик
Процедура ИмпортироватьЦеныНажатие(Элемент)
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите имя файла для чтения";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Фильтр = "Файл MS Excel (.xlsx)| *.xlsx";
    //Диалог.Фильтр = "Все файлы (*.*)| *.*";
    
    Если Не Диалог.Выбрать() Тогда
        Сообщить("Файл для обработки не выбран!");
    Иначе
        //подключаемся к Excel
        ФайлДанных = Диалог.ПолноеИмяФайла;
        Попытка
            Excel = Новый COMОбъект("Excel.Application");
            Excel.WorkBooks.Open(ФайлДанных);
            Состояние("Обработка файла Microsoft Excel...");
        Исключение
            Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;

        Попытка
            //Открываем необходимый лист
            Excel.Sheets(1).Select(); // лист 1, по умолчанию
        Исключение
            //Закрываем Excel
            Excel.ActiveWorkbook.Close();
            Excel = 0;
            Сообщить("Файл " + Строка(ФайлДанных) + " не соответствует необходимому формату! Первый лист не найден!");
            Возврат;
        КонецПопытки;

        //Получим количество строк и колонок.
        //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
        Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
        Если Версия = "8" Тогда
            ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
            ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
        Иначе
            ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
            ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
        КонецЕсли;
        
        ИмпртЦен.Очистить();
        
        Попытка //Если случится ошибка, то закроем файл, чтобы не висел в процессах
            Для Сч = 2 По ФайлСтрок Цикл
                Состояние("Обрабатывается строка " + Строка(Сч) + " из " + Строка(ФайлСтрок));
                Если НЕ СокрЛП(Excel.Cells(Сч, 1).Value) = ""  Тогда
                    НоваяСтрока = ИмпртЦен.Добавить();
                    НоваяСтрока.Номенклатура     = СокрЛП(Excel.Cells(Сч, 1).Text);
                    НоваяСтрока.Цена             = СокрЛП(Excel.Cells(Сч, 2).Text);
                    //НоваяСтрока.ТестовоеЧисло1     = СокрЛП(Excel.Cells(Сч, 3).Value);
                    //НоваяСтрока.ТестовоеЧисло2     = СокрЛП(Excel.Cells(Сч, 4).Value);
                    //НоваяСтрока.ТестовоеЧисло3     = СокрЛП(Excel.Cells(Сч, 5).Value);
                    //НоваяСтрока.ТестовоеЧисло4     = СокрЛП(Excel.Cells(Сч, 6).Value);
                    //НоваяСтрока.ТестовоеЧисло5     = СокрЛП(Excel.Cells(Сч, 7).Value);
                    //НоваяСтрока.ТестовоеЧисло6     = СокрЛП(Excel.Cells(Сч, 8).Value);
                    //НоваяСтрока.ТестовоеЧисло7     = СокрЛП(Excel.Cells(Сч, 9).Value);
                    //НоваяСтрока.ТестоваяДата     = СокрЛП(Excel.Cells(Сч, 10).Value);
                КонецЕсли;
                КонецЦикла;
        Исключение
            //Закрываем Excel
            Excel.ActiveWorkbook.Close();
            Excel.Quit();
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;
        
        Попытка            
            Сообщить("Файл Excel прочитан!");
            Excel.Quit();
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;            
    КонецЕсли;
КонецПроцедуры

Указанный пример сильно изменять не пришлось...

Засада в том, что не хочет заполнять поле "Номенклатура"... Как сделать "НайтиКоду" или наименованию? Я так понимаю что разница в типе данных?

Lexveritas @ Сегодня, 16:30 * ,
Сам же отвечу на свой вопрос...
НоваяСтрока.Номенклатура     = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Excel.Cells(Сч, 1).Text));


НО!
Есть "ХАрактеристикаНоменклатуры" справочник подчиненный владельцу...
Как Здесь быть?
ebuofficial2705@gmail.com,
06.05.17, 21:36 Отбор в списке журнала документов
Lexveritas @ Сегодня, 20:53 * ,

Короче сам поборол! Думал крыша улетит!

Тем кто с подобным столкнулся вот решение данного вопроса:

&НаКлиенте
Процедура ПриОткрытии(Элемент)
       Список.Отбор.Элементы.Очистить();
     ОтфильтроватьПоАвтору();  
КонецПроцедуры

&НаСервере
Процедура ОтфильтроватьПоАвтору()
    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("АвторДокумента");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = ПараметрыСеанса.ТекущийПользователь;
    ЭлементОтбора.Использование = Истина;
КонецПроцедуры


Теперь доволен как слон!
Vofka,

RSS Текстовая версия Сейчас: 28.03.24, 20:11
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!