Проблемка с переносом из Excel в 1с 8 (в справочник)

Новая тема
Показывать по 10 20 40 сообщений
"              Для Каждого Строка Из Данные Цикл
ТМЦ = Справочники.Номенклатура.НайтиПоКоду(Строка.Код);
ИмяТМЦ = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Наименование);
Если ТМЦ.Пустая() или ИмяТМЦ.Пустая() Тогда
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяНоменклатура.Код = Строка.Код;
НоваяНоменклатура.Наименование = Строка.Наименование;
НоваяНоменклатура.
НоваяНоменклатура.Записать();
КонецЕсли;
    КонецЦикла;


Вот проблемка!
Есть у меня справочник(реквизиты - Код, Наименование), Ексель файл.
Написал обработку - загружается в таблыцу - все ок!
После этого с таблицы пытаюсь загрузить данные в справочник - загружает!
Второй раз - выдает ошибку


{Форма.Форма(93)}: Ошибка при вызове метода контекста (Записать): Код не уникален!
НоваяНоменклатура.Записать();

Но ведь там же есть проверка на идентичность
Что там не так не могу въехать! Хелп ми..."
> Если ТМЦ.Пустая() или ИмяТМЦ.Пустая() Тогда

Какова логика этого условия?
Возможно Вы хотели реализовать следующий алгоритм:
1) Ищем по коду.
2) Если не находим по коду, то ищем по наименованию.
3) Если не нашли ни по коду, ни по наименованию, то создаем новый элемент.

Так?
"Да, именно это мне и нужно!
Дело в том, что я хочу связать прайс-лист с 1с(как запись в него так и чтение с него - надоело одну и ту же запись делать в разных приложениях).
В чем прикол (пришлось посидеть чуть) что в,

  ТМЦ = Справочники.Номенклатура.НайтиПоКоду(Строка.Код);
  ИмяТМЦ = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Наименование);

  Если ТМЦ.Пустая() или ИмяТМЦ.Пустая() Тогда

если убрать ТМЦ.Пустая() а оставить ИмяТМЦ.Пустая() то все работает

  Если ИмяТМЦ.Пустая() Тогда
.....

но мне нужна проверка на наличие элемента с таким же кодом!
Как быть (я начинающий - помогите)"
"
ТМЦ = Справочники.Номенклатура.НайтиПоКоду(Строка.Код);
 Если ТМЦ.Пустая() Тогда

  ИмяТМЦ = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Наименование);
    Если  ИмяТМЦ.Пустая() Тогда

     //Создать элемент!

   КонецЕсли;
КонецЕсли;"
"В примере описанном выше ПСВ будет произведен поиск элемента справочника по коду и, если не найден, то попытается найти элемент по наименованию. Если и в этом случае не найдется подходящего элемента, то только тогда будет создан новый элемент. Я бы еще добавил (для синхронизации по коду и повторной загрузки) следующее:

Если ИмяТМЦ.Пустая() Тогда

НовЭл = Справочники.Номенклатура.СоздатьЭлемент();
НовЭл.Наименование = Строка.Наименование;

Иначе

НовЭл = ИмяТМЦ.ПолучитьОбъект();

КонецЕсли;

НовЭл.Код = Строка.Код;
НовЭл.Записать();

т.е. присвоить код из Excel найденному по наименованию элементу."
"Ваша доработка не очень коректна....то есть не в моём случае

Вот такой код:

//-----------------
Для Каждого Строка Из Данные Цикл
кодТМЦ = Справочники.Номенклатура.НайтиПоКоду(Строка.Код);
Если кодТМЦ.Пустая() Тогда
        ИмяТМЦ = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Наименование);
Если ИмяТМЦ.Пустая() Тогда
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
                             НоваяНоменклатура.Код = Строка.Код;
НоваяНоменклатура.Наименование = Строка.Наименование;
Иначе
НоваяНоменклатура = ИмяТМЦ.ПолучитьОбъект();

КонецЕсли;
НоваяНоменклатура.Код = Строка.Код;
НоваяНоменклатура.Записать();

КонецЕсли;
КонецЦикла;
//-----------------------------


Ошибку выкидывает - Код не уникальный

и показывает на строку - НоваяНоменклатура.Записать();


Дело в том, что при первой загрузке все залитает в справочник нормально.
А вот при второй - Код не уникальный.

Ну никак не могу понять ...вродьбы все правильно с точки зрения логики






"
Задача такова:

- есть красивый прайс в ексел формате.

- нада сделать связь ексель-1с и наоборот.



Это нада для того, что бы когда в 1с добавлялось что то новое, то оно минялось и в прайсе(ексель файле)

А сейчас мне нада забить справочник "Номенклатура" данными из екселя.

В ексель прайсе есть нюанс один.

Там 2 столбца: - Код

                       Товар

Но когда список однотипного товара заканчиваеться, другой начинается с названия группы товара(в 2 колонке), и за ним снова идет список товаров!

Код            Товар
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
Комплекти для новонародженого
1,1 К-т для новонар.нарядний 7-ми пред.(пел-2, льол-2, кут, шап-2)
1,2 К-т для новонар.нарядний 8-ми пр.(підк, кут, пел-2, льол-2, чепч-2 тепл.легк.)(бязь, фланель)
1,8 К-т для новонар.нарядний 2-х пр.(підк, куточок) біла бязь з мереживом
1,9 К-т для новонар.3-х пр фланелевий (повзуни-1, льоля зр-1, чепчик-1)

         Пелюшки
3,1     Пелюшка для купання фланелева (90x90)
3,2     Пелюшка для купання фланелева (110x110)



Ну тоесть задача в том, когда шчитывает Пелюшка - забить в справочник его как группа и все что под ним (Пелюшка для купання фланелева (90x90)....) забивать  в эту группу(то есть в группу "Пелюшка")

Все что без кода явлется названием группы.!
"Используйте:

НайтиПоНаименованию(Строка.Наименование, Истина);

а то у Вас поиск по наименованию происходит не на точное совпадение.
И еще, при создании новой номенклатуры уберите присвоение ей кода - присвоение идет ниже (см. мой пример)."
"ГруппаСпр = Справочники.Номенклатура.ПустаяССылка();

Для Строка Из Данные Цикл

Если ПустаяСтрока(Строка.Код) Тогда

ГруппаСпр = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Наименование, Истина);

Продолжить;

КонецЕсли;

// Далее все как описано выше, но только при создании новго элемента добавляете

НоваяНоменклатура.Родитель = ГруппаСпр;
...

Проблема такого подхода возникнет когда в Excel-е будут записаны товары, которые не относятся ни к одной группе (лежат на верхнем уровне) - они будут занесены в последнюю группу (т.е. в Excel-е они должны быть в самом верху таблицы). Для однозначной идентификации данных в Excel и 1С нужно добавить колонку "КодГруппы" и "ЭтоГруппа" на страницу Excel."
"Кароче ничего не выходит.
Когда в справочник закидывает - неверный код!

Хотя по логике сделано все правильно!

НоваяНоменклатура.Родитель = ГруппаСпр;

Тож ничего не выходить. Мне б полностю рабочий код - я б разобрался, а так тыкать туда, сюда. Я ж ведь начинающий всетаки.

ГруппаСпр = Справочники.Номенклатура.ПустаяССылка(); - что это означает?
"
Читают тему
(гостей: 1)

Быстрый переход