Загрузить эксель в 1с

1. user1949990 27.07.23 15:30 Сейчас в теме
Добрый день! Подскажите, пожалуйста, мне нужно загрузить в 1с файлик эксель, состоящий из колонок, например, Номенклатура, ВидНоменклатуры и ЕдиницаИзмерения.
Я все прописала, внешняя обработка открывается, выбирается файл эксель, данные подтягиваются. Загружаю данные в номенклатуру, передается только наименование. Я нашла проблему: у меня указан тип ссылка справочник и перечисление у реквизитов на форме.
У меня создана ТЗ, в ней,собственно, реквизиты и расположены. Вопрос, как мне эти реквизиты преобразовать в объект? Есть какая-то универсальная функция или их как-то по отдельности надо "вытаскивать" в объект? Делаю для бп3 учебной

Эта штука работает, но не передает(
Как обойти цикл и получить объекты?

//загруженные данные - наша тз 
     ///////////Получи объект из ссылкит  
    
     

     Для каждого НоменклатураПеременная Из ЗагруженныеДанные Цикл
        НовыйЭлемент=Справочники.Номенклатура.СоздатьЭлемент(); 
        
        
        
        НовыйЭлемент.Наименование=НоменклатураПеременная.Номенклатура;
        НовыйЭлемент.ВидНоменклатуры=НоменклатураПеременная.ВидНоменклатуры;
        НовыйЭлемент.ВидСтавкиНДС=НоменклатураПеременная.СтавкаНДС;
        НовыйЭлемент.ЕдиницаИзмерения=НоменклатураПеременная.ЕдиницаИзмерения;
        
        НовыйЭлемент.Записать();  
       КонецЦикла;

Показать

Подскажите, как сделать, учусь, тонкостей не знаю(((
Заранее спасибо
По теме из базы знаний
Найденные решения
6. nomad_irk 81 27.07.23 16:06 Сейчас в теме
(5)
.......
СуществующийЭлемент = Справочники.Номенклатура.НайтиПоНаименованию(<Наименование>, Истина);
Если НЕ ЗначениеЗаполнено(СуществующийЭлемент)  Тогда
     НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
     ..........
     НовыйЭлемент.Записать();
     СуществующийЭлемент = НовыйЭлемент.Ссылка;
КонецЕсли;
.........
Показать
karamazoff; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1949990 27.07.23 15:33 Сейчас в теме
(1)
Прикрепленные файлы:
3. newlogin1 27.07.23 15:35 Сейчас в теме
(1)Если у вас в файле наименование, то надо сперва найти ссылку, например по наименованию. Лучше это делать запросом к справочнику. И если результат пустой, то надо создать свой элемент.
4. nomad_irk 81 27.07.23 15:49 Сейчас в теме
(1)Хорошим тоном считается создание нового элемента только в случае отсутствия существующего
в общем случае подход верен, только нужно соблюдать типы значений реквизитов.
НовыйЭлемент.ВидНоменклатуры, например, имеет тип СправочникСсылка.ВидыНоменклатуры.
Ссылку на элемент справочника "ВидыНомеклатуры" необходимо так же определять с помощью поиска существующего/созданием нового элемента
5. user1949990 27.07.23 15:58 Сейчас в теме
(4) как правильно это прописать, можете подсказать, пожалуйста?
6. nomad_irk 81 27.07.23 16:06 Сейчас в теме
(5)
.......
СуществующийЭлемент = Справочники.Номенклатура.НайтиПоНаименованию(<Наименование>, Истина);
Если НЕ ЗначениеЗаполнено(СуществующийЭлемент)  Тогда
     НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
     ..........
     НовыйЭлемент.Записать();
     СуществующийЭлемент = НовыйЭлемент.Ссылка;
КонецЕсли;
.........
Показать
karamazoff; +1 Ответить
7. user1949990 27.07.23 16:08 Сейчас в теме
(6)Спасибо, сейчас попробую!
8. user1949990 27.07.23 17:27 Сейчас в теме
(6) Я или не так делаю что-то (скорее всего), но у меня не проставляется(((
Только СтавкаНДС и то только потому, что там жестко проставлено(что не корректно, но для проверки сойдет)

 Для каждого НоменклатураПеременная Из ЗагруженныеДанные Цикл 
         
         СуществующийЭлемент =Справочники.Номенклатура.НайтиПоНаименованию(НоменклатураПеременная.номенклатура).Наименование;
Если НЕ ЗначениеЗаполнено(СуществующийЭлемент)  Тогда
     НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); 
          
          НовыйЭлемент.Наименование=НоменклатураПеременная.Номенклатура;
        НовыйЭлемент.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(НоменклатураПеременная.Видноменклатуры).Наименование;
        НовыйЭлемент.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(Номенклатурапеременная.единицаИзмерения).Наименование;
        НовыйЭлемент.ВидСтавкиНДС=Перечисления.ВидыСтавокНДС.Общая;
     
        
     
     
       НовыйЭлемент.Записать();
     СуществующийЭлемент = НовыйЭлемент.Ссылка;
Показать
9. user1949990 27.07.23 17:40 Сейчас в теме
(8)убрала
НовыйЭлемент.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(НоменклатураПеременная.Видноменклатуры).Наименование;
НовыйЭлемент.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(Номенклатурапеременная.единицаИзмерения).Наименование;


последнее "Наименование". Работает!!! Только с перечислениями беда
10. user1949990 27.07.23 17:41 Сейчас в теме
(9)то есть теперь так у меня
НовыйЭлемент.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(НоменклатураПеременная.Видноменклатуры)
;
НовыйЭлемент.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(Номенклатурапеременная.единицаИзмерения);
12. nomad_irk 81 28.07.23 06:15 Сейчас в теме
(10)Исходя из скриншота, в ТЗ у вас уже хранятся значения в нужном типе, т.е. ссылочном.
Вы должны в процессе формирования ТЗ получать ссылки на ВидНоменклатуры/ЕдиницуИзмерения точно так же как получаете на номенклатуру.

А при формировании номенклатуры использовать эти значения напрямую:

НовыйЭлемент.ВидНоменклатуры = НоменклатураПеременная.Видноменклатуры;
НовыйЭлемент.ЕдиницаИзмерения = Номенклатурапеременная.единицаИзмерения;
11. user1949990 27.07.23 17:42 Сейчас в теме
Нет, там рандомные значения подставляются(
Неправильно работает(
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот