8.х Наименование из экселя

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем DarkDiablo666, 6 авг 2007.

  1. TopicStarter Overlay
    DarkDiablo666
    Offline

    DarkDiablo666

    Регистрация:
    14 окт 2006
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Привет всем, такая проблемка вырисовывается, на форму документа добавил кнопочку, которая заполняет одну из колонок наименование товара из таблички экселя, заполнять то заполняет, только если есть хотя бы одна строка (даже пустая), как сделать так чтобы он вообще заполнял не глядя на существование этой строки, пробовал разными циклами, где то ошибаюсь и не могу понять де, вот текст при котором просто выводит в колонку если есть строка

    Процедура ОсновныеДействияФормыТендеры(Кнопка)
    // Вставить содержимое обработчика.
    Док = ПолучитьCOMОбъект("C:\3.xls");
    КоличествоСтраниц = 1;


    Для ТекНомер = 1 По КоличествоСтраниц Цикл

    счСтроки = 2;

    Для Каждого НаименованиеТендер Из ЭлементыФормы.Товары.ТекущиеДанные Цикл

    Тендер = ЭтотОбъект.Товары.Добавить();
    Тендер.НаименованиеТендер = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;
    счСтроки = счСтроки + 1;
    Сообщить(Тендер.НаименованиеТендер);
    КонецЦикла;

    КонецЦикла;
    Док.Application.Quit();
    КонецПроцедуры
  2. TopicStarter Overlay
    DarkDiablo666
    Offline

    DarkDiablo666

    Регистрация:
    14 окт 2006
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    вроде разобрался с ошибками, теперь нормально получает то что я хотел, но столкнулся с другой проблемой: нужно чтобы была проверка перед заполнением ели номенклатура совпадает с номенклатурой из файла, то нужно записывать это название из файла в табличную часть, сделал следующее:

    НоменклатураТ = "";
    Код = "";
    счСтроки = 2;


    Для каждого Стр Из Товары Цикл
    Сообщить(Товары.Количество());

    Пока СокрЛП(Код) <> "Конец" Цикл
    НоменклатураТ = Док.Sheets(ТекНомер).Cells(СчСтроки,1).Value ;
    Если СокрЛП(Стр.Номенклатура) = СокрЛп(НоменклатураТ) Тогда
    Тен = ЭтотОбъект.Товары.Добавить();
    Стр.НумерацияЛотов = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;
    Стр.НаименованиеТендер = Док.Sheets(ТекНомер).Cells(СчСтроки,3).Value;
    Стр.ХарактеристикаТендер = Док.Sheets(ТекНомер).Cells(СчСтроки,4).Value;
    Стр.КоличествоТендер = Док.Sheets(ТекНомер).Cells(СчСтроки,5).Value;
    Стр.МаксЦена = Док.Sheets(ТекНомер).Cells(СчСтроки,6).Value;
    КонецЕсли;
    счСтроки = счСтроки + 1;
    Код = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;

    КонецЦикла;
    //Код = "";
    //НоменклатураТ = "";
    //счСтроки = 2;

    КонецЦикла;

    но есть проблемка, это условие работает только для табличной части с заполненной только одной строки, на другие он не смотрит, потому что не может обнулить переменные, а если их обнулить(убрать коментарии), то он попадает в цикл без конца...можь кто нить поможет, есть какие то мысли на счет использования "Количество()", но реализовать пока не могу...
  3. TopicStarter Overlay
    DarkDiablo666
    Offline

    DarkDiablo666

    Регистрация:
    14 окт 2006
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1

    долгие часы и вот оно решение....
    :Док = ПолучитьCOMОбъект("C:\3.xls");
    КоличествоСтраниц = 1;
    СтрокаД = ложь;
    Для ТекНомер = 1 По КоличествоСтраниц Цикл



    Таб = Новый ТаблицаЗначений;
    Таб.Колонки.Добавить("НоменклатураТ");
    Таб.Колонки.Добавить("НумерацияЛотов");
    Таб.Колонки.Добавить("НаименованиеТендер");
    Таб.Колонки.Добавить("ХарактеристикаТендер");
    Таб.Колонки.Добавить("КоличествоТендер");
    Таб.Колонки.Добавить("МаксЦена");
    Код = "";
    счСтрок = 2;
    НоменклатураТ = "";

    Пока СокрЛП(Код) <> "Конец" Цикл

    НоваяСтрока = Таб.Добавить();
    НоваяСтрока.НоменклатураТ = Док.Sheets(ТекНомер).Cells(СчСтрок,1).Value ;
    НоваяСтрока.НумерацияЛотов = Док.Sheets(ТекНомер).Cells(СчСтрок,2).Value ;
    НоваяСтрока.НаименованиеТендер = Док.Sheets(ТекНомер).Cells(СчСтрок,3).Value ;
    НоваяСтрока.ХарактеристикаТендер = Док.Sheets(ТекНомер).Cells(СчСтрок,4).Value ;
    НоваяСтрока.КоличествоТендер = Док.Sheets(ТекНомер).Cells(СчСтрок,5).Value ;
    НоваяСтрока.МаксЦена = Док.Sheets(ТекНомер).Cells(СчСтрок,6).Value ;
    счСтрок = счСтрок + 1;
    Код = Док.Sheets(ТекНомер).Cells(СчСтрок,2).Value;

    КонецЦикла;



    Для каждого Стр Из Товары Цикл
    Для Каждого Тендер Из Таб Цикл
    СтрокаД = Ложь;
    Если СокрЛП(Стр.Номенклатура) = СокрЛП(Тендер.НоменклатураТ) Тогда
    СтрокаД = Истина;
    КонецЕсли;
    Если СтрокаД = Истина Тогда

    Стр.НумерацияЛотов = Тендер.НумерацияЛотов;
    Стр.НаименованиеТендер = Тендер.НаименованиеТендер;
    Стр.ХарактеристикаТендер = Тендер.ХарактеристикаТендер;
    Стр.КоличествоТендер = Тендер.КоличествоТендер;
    Стр.МаксЦена = Тендер.МаксЦена;
    КонецЕсли;
    КонецЦикла;

    КонецЦикла;


    КонецЦикла;
    Док.Application.Quit();

    и все, сначала получаем файл , считываем все строки(главное чтобы небыло пустых )записываем их в таблицу и выполняем подбор по полю с номенклатурой.

Поделиться этой страницей