8.х Загрузка папок (групп) из Excel в справочник "Номенклатура"

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем E-S-E, 19 дек 2012.

  1. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    допилить!

    на каждой строке смотрите в справочнике есть ли такой родитель, если есть получаете ссылку на этот элемент и записываете ее как родитель для текущего, если не нашли, то создаем элемент-родитель сначала. а потом текущий элемент с заполненным родителем записываем. Ну примерно как-то так
  2. okdan
    Offline

    okdan

    Регистрация:
    24 сен 2013
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Для Nadina

    По моему обработка ЗагрузкаДанныхИзТабличногоДокумента.epf вполне справляется с созданием групп в Номенклатуре.

    Поставьте галочку на представлении реквизита "Родитель" и выберете соответствующую колонку, в Вашем случае Q. Автоматически появится ссответствующая группа в "Номенклатура" и в ней будут те элементы которые относятся к этой группе.
  3. micha26
    Offline

    micha26

    Регистрация:
    10 май 2011
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Если вдруг кому пригодиться:
    НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
    Вот это надо вставить, иначе шиш...
  4. Amper400
    Offline

    Amper400

    Регистрация:
    25 июл 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! помогите разобраться, есть внешняя обработка для 1с 8 редакция 10.3
    дело в том, что раньше прайс в экселе начинался с 11 строки, а теперь с 9 строки. поменял в обработке номера строки, помеченные красным 9 и стало выводить ошибку.
    {Форма.Форма(37)}: Ошибка при вызове метода контекста (SpecialCells): Произошла исключительная ситуация (Microsoft Office Excel): Не найдено ни одной ячейки, удовлетворяющей указанным условиям.
    ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
    по причине:
    Произошла исключительная ситуация (Microsoft Office Excel): Не найдено ни одной ячейки, удовлетворяющей указанным условиям.

    В чем может причина?
    подскажите пожалуйста
    С уважением


    Функция ПрочитатьТабличныйДокументИзExcel( ИмяФайла, НомерЛистаExcel = 1)

    xlLastCell = 11;
    НачСтрока=11;

    ВыбФайл = Новый Файл(ИмяФайла);
    Если НЕ ВыбФайл.Существует() Тогда
    Сообщить("Файл не существует!");
    Возврат Ложь;
    КонецЕсли;

    Попытка
    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open(ИмяФайла);
    Состояние("Обработка файла Microsoft Excel...");
    ExcelЛист = Excel.Sheets(НомерЛистаExcel);
    Исключение
    Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
    Возврат ложь;

    КонецПопытки;

    Признак=0;

    ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
    RowCount = ActiveCell.Row;


    ColumnCount = ActiveCell.Column;
    ВсегоЗаписей=RowCount+НачСтрока+ColumnCount+3;

    НовыйКорень1=ТабличныйДокумент.Строки.Добавить();
    Ур0=НовыйКорень1;
    НовыйКорень1.Товар=ExcelЛист.Cells(НачСтрока+1,1).Text;
    Range=ExcelЛист.Rows(НачСтрока+1);
    уровень=Range.OutLineLevel-2;
    НовыйКорень1.Уровень=Уровень;
    мФормаПрогрессора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
    мФормаПрогрессора.НаименованиеОбработкиДанных = "Выполняется обработка выбранног файла...";

    мФормаПрогрессора.Открыть();
    мФормаПрогрессора.Значение = 0;


    НовыйРодитель=Неопределено;
    мФормаПрогрессора.МаксимальноеЗначение = RowCount;

    Для Row = НачСтрока+2 По ВсегоЗаписей Цикл
    мФормаПрогрессора.КомментарийЗначения = "Обрабатывается " + мФормаПрогрессора.Значение + " из " + RowCount + "";
    мФормаПрогрессора.Значение = мФормаПрогрессора.Значение + 1;
    Range=ExcelЛист.Rows(Row);
    уровень=Range.OutLineLevel-2;

    Если уровень>=0 Тогда
    Если Не ЗначениеЗаполнено(ExcelЛист.Cells(Row,2).Text) Тогда
    Если уровень=0 Тогда
    Ур0=НовыйКорень1;
    КОнецЕсли;
    Если уровень=1 Тогда
    НовыйРодитель=Ур0.Строки.Добавить();
    НовыйРодитель.Товар=ExcelЛист.Cells(Row,1).Text;
    НовыйРодитель.Уровень=уровень;
    Ур1=НовыйРодитель;
    КонецЕсли;
    Если уровень=2 Тогда
    НовыйРодитель=Ур1.Строки.Добавить();
    НовыйРодитель.Товар=ExcelЛист.Cells(Row,1).Text;
    НовыйРодитель.Уровень=уровень;
    Ур2=НовыйРодитель;
    КонецЕсли;
    Если уровень=3 Тогда
    НовыйРодитель=Ур2.Строки.Добавить();
    НовыйРодитель.Товар=ExcelЛист.Cells(Row,1).Text;
    НовыйРодитель.Уровень=уровень;
    Ур3=НовыйРодитель;
    КонецЕсли;
    Если уровень=4 Тогда
    НовыйРодитель=Ур3.Строки.Добавить();
    НовыйРодитель.Товар=ExcelЛист.Cells(Row,1).Text;
    НовыйРодитель.Уровень=уровень;
    Ур4=НовыйРодитель;
    КонецЕсли;
    Если уровень=5 Тогда
    НовыйРодитель=Ур4.Строки.Добавить();
    НовыйРодитель.Товар=ExcelЛист.Cells(Row,1).Text;
    НовыйРодитель.Уровень=уровень;
    Ур5=НовыйРодитель;
    КонецЕсли;
    Если уровень=6 Тогда
    НовыйРодитель=Ур5.Строки.Добавить();
    НовыйРодитель.Товар=ExcelЛист.Cells(Row,1).Text;
    НовыйРодитель.Уровень=уровень;
    Ур6=НовыйРодитель;
    КонецЕсли;

    Иначе
    Если уровень=1 Тогда
    НоваяСтрока=Ур0.Строки.Добавить();
    КОнецЕсли;
    Если уровень=2 Тогда
    НоваяСтрока=Ур1.Строки.Добавить();
    КОнецЕсли;
    Если уровень=3 Тогда
    НоваяСтрока=Ур2.Строки.Добавить();
    КОнецЕсли;
    Если уровень=4 Тогда
    НоваяСтрока=Ур3.Строки.Добавить();
    КОнецЕсли;
    Если уровень=5 Тогда
    НоваяСтрока=Ур4.Строки.Добавить();
    КОнецЕсли;
    Если уровень=6 Тогда
    НоваяСтрока=Ур5.Строки.Добавить();
    КОнецЕсли;
    Если уровень=7 Тогда
    НоваяСтрока=Ур6.Строки.Добавить();
    КОнецЕсли;
    НоваяСтрока.Товар=ExcelЛист.Cells(Row,1).Text;
    НоваяСтрока.Артикул=ExcelЛист.Cells(Row,2).Text;
    НоваяСтрока.Единица=ExcelЛист.Cells(Row,3).Text;
    НоваяСтрока.Уровень=уровень;



    КонецЕсли;
    КонецЕсли;
    мФормаПрогрессора.Активизировать();

    КонецЦикла;

    Excel.WorkBooks.Close();
    Excel = 0;
    Если мФормаПрогрессора.Открыта() Тогда
    мФормаПрогрессора.Закрыть();
    КонецЕсли;

    Возврат Истина;

    КонецФункции // ()
  5. VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    скиньте Вашу обработку и файл, так будет легче разобраться
  6. Amper400
    Offline

    Amper400

    Регистрация:
    25 июл 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Не грузит файл эксель пишет большой объем
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Прям так и пишет - Большой объем ?
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    так понимаю, речь идет про попытку прикрепления файла *.xls(x) к сообщению в данной теме :)
  9. Amper400
    Offline

    Amper400

    Регистрация:
    25 июл 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    да, про файл файла *.xls
  10. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Файл можно попробовать заархивировать и уже потом прикреплять к сообщению в данной теме.
  11. Amper400
    Offline

    Amper400

    Регистрация:
    25 июл 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Согласен туплю

    Вложения:

    • Price.zip
      Размер файла:
      726,1 КБ
      Просмотров:
      10
  12. Gregyshka
    Offline

    Gregyshka

    Регистрация:
    19 май 2015
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Помогите пож написать простенькую обработку для бух 8.3
    Загрузка элементов из mxl (можно и xls) в спр Номенклатура
    С группами и уведомлением если были изменения (загружаемое не равно элементу в 1С, проверка по коду элемента 1С8)

    Вложения:

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