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

программное создание элемента справочника

Автор Sweety Bell, 24 ноя 2015, 17:28

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

Sweety Bell

Здравствуйте! Я создаю элемент справочника и заполняю реквизиты данными из файла excel. половина реквизитов заполнилось без проблем. Но в 2-х появляется ошибка:
Поле объекта недоступно для записи (МеждународноеСокращение)
   НовыйЭлемент.БазоваяЕдиницаИзмерения.МеждународноеСокращение=ЗначЕд;

Для счетчик=2 по ФайлСтрок Цикл

ЗначАртикул = Excel.Cells(счетчик,2).Value;
ЗначАртикул =СтрЗаменить(СокрЛП(Строка(Excel.Cells(счетчик, 2).Value)),Символ(160),"");

ЗначКод =Excel.Cells(счетчик,1).Value;
ЗначКод =СтрЗаменить(СокрЛП(Строка(Excel.Cells(счетчик, 1).Value)),Символ(160),"");

ЗначНаимен =Excel.Cells(счетчик,3).Value;
    ЗначНаимен =СтрЗаменить(СокрЛП(Строка(Excel.Cells(счетчик, 3).Value)),Символ(160),"");

ЗначЕд =Excel.Cells(счетчик,6).Value;
ЗначЕд =СтрЗаменить(СокрЛП(Строка(Excel.Cells(счетчик, 6).Value)),Символ(160),"");

ЗначВид = Excel.Cells(счетчик,5).Value;
//ЗначВид =СтрЗаменить(СокрЛП(Строка(Excel.Cells(счетчик, 5).Value)),Символ(160),"");

РеквизитСпр =Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ЗначАртикул);
Если РеквизитСпр=Справочники.Номенклатура.ПустаяСсылка()Тогда

Сообщить("Артикул"+ЗначАртикул+"не найден");
НовыйЭлемент =справочники.Номенклатура.СоздатьЭлемент();

НовыйЭлемент.ВидНоменклатуры=ЗначВид;
НовыйЭлемент.БазоваяЕдиницаИзмерения.МеждународноеСокращение=ЗначЕд;
    НовыйЭлемент.Артикул=ЗначАртикул;
НовыйЭлемент.Код=ЗначКод;
НовыйЭлемент.Наименование=ЗначНаимен;


НовыйЭлемент.Записать();
КонецЕсли;


КонецЦикла;


Если не заполнять рекизиты
НовыйЭлемент.ВидНоменклатуры=ЗначВид;
НовыйЭлемент.БазоваяЕдиницаИзмерения.МеждународноеСокращение=ЗначЕд;
тогда возникает сообщение: новый элемент справочника не может быть записан без этих параметров

Помогите,пожалуйста,разобраться

Kironten

И то и другое - ссылочные типы значений. Вы не можете записать элемент номенклатуры, подставив к примеру в реквизит "ВидНоменклатуры" ваше значение типа "Строка", там должна быть ссылка на элемент Справочники "ВидыНоменклатуры".
Т.е. вы сначала, по вашему значению строки, ищете в справочнике "ВидыНоменклатуры" подходящий элемент (при необходимости, создаете новый) и уже этот элемент присваиваете реквизиту "ВидНоменклатуры" создаваемого элемента справочника "Номенклатура".

Sweety Bell


cska-fanat-kz

Цитата: Sweety Bell от 24 ноя 2015, 17:28НовыйЭлемент.БазоваяЕдиницаИзмерения.МеждународноеСокращение=ЗначЕд;

то что у вас "НОвыйЭлемент" - это объект, доступный для заполнения/редактирования абсолютно не значит, что
"НовыйЭлемент.БазоваяЕдиницаИзмерения.МеждународноеСокращение" доступно для редактирования.
Надо выше создать/найти элемент справочника КлассификаторЕдиницИзмерения и присвоить его реквизиту
"НовыйЭлемент.БазоваяЕдиницаИзмерения"
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

и еще.
при загрузках данных если "нельзя но очень хочется" то можно включить режим загрузки
и тогда большинство проверок при записи не будут происходить (на единицу измерения и пр.).
примерно так:
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.ОбменДанными.Загрузка=ИСТИНА;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Стисняюсь даже спросить, а в чем тайный смысл 2 раза извлекать одни и те же данные?
Цитата: Sweety Bell от 24 ноя 2015, 17:28ЗначКод =Excel.Cells(счетчик,1).Value;
ЗначКод =СтрЗаменить(СокрЛП(Строка(Excel.Cells(счетчик, 1).Value)),Символ(160),"");

Или так:
ЗначКод =СтрЗаменить(СокрЛП(Строка(Excel.Cells(счетчик, 1).Value)),Символ(160),"");

Или так:
ЗначКод =Excel.Cells(счетчик,1).Value;
ЗначКод =СтрЗаменить(ЗначКод,Символ(160),"");

Sweety Bell


Теги:

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

Рейтинг@Mail.ru

Поиск