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

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

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

КонецЕсли;

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