Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 13:38

Загрузка из Exel в 1с

Автор Tyshkan, 18 сен 2012, 12:50

0 Пользователей и 1 гость просматривают эту тему.

Tyshkan

есть задача загрузки данных номенклатуры в справочник, проблема заключается в том что номенклатура должна загружать по группам. как это можно осуществить...

Dethmontt

Загружать по группам...

(Хочешь услышать глупый ответ - задай глупый вопрос!)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Ты в Экселе можешь отличить Группу от НЕ Группы??????????
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Tyshkan

что вам написать чтобы было точнее??? могу скриншот exel показать

Tyshkan

вот файл

has

ну как вариант можно смотреть на 3 колонку, если там указана единица, значит не группа

Tyshkan

если не сложно можно пример кода...а если сделать реквизит с ссылкой на номенклатурные группы и при выборе искать запись и загружать элементы?? такое можно сделать?? если да, то как осуществить поиск??

Dethmontt

Не у ячейки (области) есть свойство которое определяет что оно является группировочным (иерархия типа 1,2,3 .... 8,9 и т.д.)

Когда то давно писал - Вот пример кода
(Обрати внимание на OutlineLevel)

   Попытка
       ЭксельФайл = Эксель.WorkBooks.Open(ИмяФайла);
       ЭксельЛист = ЭксельФайл.Sheets(Страница);
       Константа = 11;
       ПоследняяСтрока = ЭксельЛист.Cells.SpecialCells(Константа).Row;
       //ПоследняяКолонка = ЭксельЛист.Cells.SpecialCells(Константа).Column;
   Исключение
       Сообщить(ОписаниеОшибки());
       Возврат;
   КонецПопытки;
   Дерево.Колонки.Добавить("Код");
   Дерево.Колонки.Добавить("Наименование");
   Дерево.Колонки.Добавить("Сумма");
   
   Для у = ?(СЧ = 0,1,СЧ) По ?(ПоЧ = 0,ПоследняяСтрока,ПоЧ) Цикл
       ОбработкаПрерыванияПользователя();
       Состояние("Обработано строк --- "+у+" из --- "+ПоследняяСтрока);
       ПерваяКолонка    = ЭксельЛист.Cells(у, 1).Value;
       ЧетвертаяКолонка = ЭксельЛист.Cells(у, 4).Value;
       ОдиОдинКолонка   = ЭксельЛист.Cells(у, 11).Value;
       Если ЭксельЛист.Cells(у, 1).Rows.OutlineLevel = 1 и (Найти(ПерваяКолонка,"[") > 0 и Найти(ПерваяКолонка,"]") > 0) Тогда
           Корень = ДобавитьСтрокуВДерево(Дерево,СтрЗаменить(ПерваяКолонка,Символы.НПП,""),ОдиОдинКолонка,ЧетвертаяКолонка);
           Продолжить;
       КонецЕсли;
       Если ЭксельЛист.Cells(у, 1).Rows.OutlineLevel = 2 и (Найти(ПерваяКолонка,"[") > 0 и Найти(ПерваяКолонка,"]") > 0) Тогда
           ПодКорень = ДобавитьСтрокуВДерево(Корень,СтрЗаменить(ПерваяКолонка,Символы.НПП,""),ОдиОдинКолонка,ЧетвертаяКолонка);
           Продолжить;
       ИначеЕсли ЭксельЛист.Cells(у, 1).Rows.OutlineLevel = 3 Тогда
           Элемент = ДобавитьСтрокуВДерево(?(ПодКорень <> Неопределено,ПодКорень,Корень),СтрЗаменить(ПерваяКолонка,Символы.НПП,""),ОдиОдинКолонка,ЧетвертаяКолонка);
           Продолжить;
       КонецЕсли;
       Эл = ДобавитьСтрокуВДерево(Корень,СтрЗаменить(ПерваяКолонка,Символы.НПП,""),ОдиОдинКолонка,ЧетвертаяКолонка); //Если нету вложенности
   КонецЦикла;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Tyshkan

я новичок, поэтому плохо разбираюсь...ДобавитьСтрокуВДерево - это функция?? где она прописывается??

Dethmontt

Это функция которая заполняет ДеревоЗначений (1С-овский тип) - вам я так понимаю не это не нужно...

Я вам показал как получить иерархию...

Далее код будет примерно таким
Если ЭксельЛист.Cells(у, 1).Rows.OutlineLevel = 1 or ЭксельЛист.Cells(у, 1).Rows.OutlineLevel = 2 Then //Это пример я не знаю какие у вас где ГРУППЫ
    Группа = Справочники.Номенклатура.СоздатьГруппу();
    Группа.Наименование = ЭксельЛист.Cells(у, 1).Value;
    Группа.Записать();
Else
    Элемент = Справочники.Номенклатура.СоздатьЭлемент();
    Элемент.Наименование = ЭксельЛист.Cells(у, 1).Value;
    Элемент.Записать();
EndIf;



   
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск