Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Добавление Реквизитов программно

Добавление Реквизитов программно
Я
   Hammond
 
09.10.20 - 18:32
Добрый Вечер, товарищи знатоки.
Мне нужно из таблицы ексель выгрузить данные в справочник номенклатура. для этого нужно считать шапку в экселе и проверить, есть ли такие реквизиты в справочнике. Если каких-то нет, то их нужно создать программно.
Использую такой код:
Если НЕ ЕстьРеквизитДокумента(ИмяБезПробелов, Метаданные.Справочники.Номенклатура, "Артикул") Тогда

Сообщить("Не найден реквизит с именем " + ИмяБезПробелов + "! Колонка не будет загружена!");
ДобавляемыеРеквизиты = Новый Массив;
МассивТипов = новый Массив;
МассивТипов.Добавить(Тип("Строка"));
Реквизит = Новый РеквизитФормы(ИмяБезПробелов,новый ОписаниеТипов(МассивТипов),, ИмяБезПробелов, Истина);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
Сообщить("Реквизит" + ИмяБезПробелов + "создан");
        
Иначе

НовСтрока = МассивКолонок.Добавить();
НовСтрока.НомерКолонки = КолонкаОтсчета;
НовСтрока.НазваниеКолонки = ИмяБезПробелов;

КонецЕсли;

Появляется ошибка "Недопустимое значение параметра(параметр номер 1)"
пытался менять ИмяБезПробелов на любое выражение в "" (например, "авыпвапаы"). в таком случае писало, что не уникальный реквизит.
Как быть?
   ДенисЧ
 
1 - 09.10.20 - 18:35
Вставь
Сообщить(ИмяБезПробелов) и посмотри, что там
   Hammond
 
2 - 09.10.20 - 18:37
Там хранится имя колонки из экселя
   ДенисЧ
 
3 - 09.10.20 - 18:40
Я сказал "посмотри", а не "расскажи, что там, по твоему мнению, находится"
   Hammond
 
4 - 09.10.20 - 18:43
Дружище, у меня же в коде строка написана 
Сообщить("Реквизит" + ИмяБезПробелов + "создан");
он после того, как ошибку закрываю, в сообщениях пишется:
Не найден реквизит с именем Группа! Колонка не будет загружена!
РеквизитГруппасоздан
Не найден реквизит с именем Цена,руб.! Колонка не будет загружена!
но на всякий случай написал сообщить(ИмяБезПробелов)
выдало "Группа", это первая не найденная колонка из экселя в реквизитах
   Йохохо
 
5 - 09.10.20 - 18:49
(4) "Реквизит" + ИмяБезПробелов - тут у тебя приведение типа к строке
   Hammond
 
6 - 09.10.20 - 18:53
не совсем понимаю
я же тут просто сообщение на экран вывожу
а ИмяБезПробелов и так тип строка
   ДенисЧ
 
7 - 09.10.20 - 19:11
"Цена,руб."
Точно неправильное имя колонки
   Hammond
 
8 - 09.10.20 - 19:18
в таблице экселя колонка имеет именно такое название
   ДенисЧ
 
9 - 09.10.20 - 19:20
(8) Что написано в екселе - 1с не волнует. Имя колонки не может содержать запятых, точек и прочих экскрементов. И не начинаться с цифры тоже должн
   Hammond
 
10 - 09.10.20 - 19:22
Тогда как быть в таком случае?
и что делать с реквизитом группа?
   ДенисЧ
 
11 - 09.10.20 - 19:25
С группой без картинок я не понял.
А с запятыми - менять их на какой-то символ. Например, на "_"
   Hammond
 
12 - 09.10.20 - 19:31
Давай попробую подробнее описать
я считываю шапку таблицы эксель, потом проверяю наличие реквизитов в справочнике с таким же именем.
в шапке Экселя есть такие столбцы как Артикул, Группа, Наименование, Производитель, Единица Измерения, Цена, руб., Изображение.
Код, который я указал в начале, выполняется, и выдает, что группа, цена,руб не найдены. мне нужно создать эти реквизиты в справочнике, но столкнулся с ошибкой, описанной выше
   ДенисЧ
 
13 - 09.10.20 - 19:34
В справочнике? Создать метаданные? Программно?
https://www.youtube.com/watch?v=MNaOqWLlWsQ
   Hammond
 
14 - 09.10.20 - 19:36
ну именно это мне и нужно сделать
   hhhh
 
15 - 09.10.20 - 20:23
(14) создать реквизит Цена,руб. у вас точно не получится. Потому что запятые и точки в имени реквизита не разрешаются.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.