Имя: Пароль:
1C
1С v8
Как Ссылочному присвоить значение типа Строка
,
0 Dimon8822
 
06.04.22
15:40
Добрый день!
Подскажите, пожалуйста, как Реквизиту справочника (Тип СправочникСылка.Справочник) присвоить значение элемента массива (Тип Строка). Не могу с Типами разобраться.
Спасибо заранее.
1 vicof
 
06.04.22
15:42
Никак
2 Dimon8822
 
06.04.22
15:56
Как переделать строку?
Для ИндексЭлементаМассива = 0 ПО Массив.ВГраница() Цикл

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

?    НовыйОбъект.ВариантОбъект = Массив[ИндексЭлементаМассива] ;

    НовыйОбъект.Записать();
        
КонецЦикла;
3 Ненавижу 1С
 
гуру
06.04.22
15:57
можно более обще? откуда входные данные, что хотим получить?
4 Kassern
 
06.04.22
16:00
(2) (3) Включаю режим Ванги! ТС имеет список (возможно эксельку) с перечнем наименований товаров и хочет их загрузить в 1ску. Но там ведь тип строка, а в 1с, это ведь справочник)
Вот и пытается ТС создать на каждую строчку из внешнего списка новую номенклатуру, только он не учитывает, что у объекта номенклатуры, помимо наименования, могут быть множество свойств, причем обязательных, если речь о типовой конфе
5 Dimon8822
 
06.04.22
16:03
На входе массив

НА основании массива МАССИВ создать новые элементы справочника НОМЕНКЛАТУРА
6 VladZ
 
06.04.22
16:03
(5) Скачай готовое решение.
7 Kassern
 
06.04.22
16:05
(5) конфигурация какая?
8 Dimon8822
 
06.04.22
16:07
Учебная
9 Kassern
 
06.04.22
16:08
(8) а вы без массива входящих данных можете создать номенклатуру программно?
10 Dimon8822
 
06.04.22
16:10
Конечно. (2) - одна из попыток
11 Kassern
 
06.04.22
16:15
(10) а где вы наименование указываете для номенклатуры? А что за поле "ВариантОбъект" у номенклатуры?
12 Dimon8822
 
06.04.22
16:21
Создаю элемент справочника Номенклатура:
НовыйОбъект =  Справочники.Номенклатура.СоздатьЭлемент() ;

Реквизиту ВариантОбъект элемента справочника Номенклатура пытаюсь передать значение элемента Массива
НовыйОбъект.ВариантОбъект = Массив[ИндексЭлементаМассива] ;

Сохранить новый элемент
НовыйОбъект.Записать();
13 Kassern
 
06.04.22
16:25
(12) я понимаю, что вы пытаетесь сделать, но вы не ответили на мой вопрос. Еще раз, где у вас заполнение наименования для номенклатуры? Это стандартный реквизит справочника наряду с кодом.
Так же я вас спросил что это за реквизит ВариантОбъект у номенклатуры. Имеется в виду, какого он типа и для чего
14 Ненавижу 1С
 
гуру
06.04.22
16:26
(12) зачем нужен ВариантОбъект?
15 Dimon8822
 
06.04.22
16:32
Код присваивается автоматически
Наименование Номенклатуры присваивается програмно
реквизит ВариантОбъект у номенклатуры дб Типа Строка
Но НовыйОбъект.ВариантОбъект - Тип СправочникСылка
и именно в реквизит Новый Вариант надо передать значение элемента Массива (Тип Строка)
16 Asmody
 
06.04.22
16:35
можно увидеть нормальную постановку задачи, а не то, как вы пытаетесь её решить?
17 hhhh
 
06.04.22
18:19
(15) НовыйОбъект.ВариантОбъект = Справочники.ВариантоОбъекты.НайтиПоНаименованию(Массив[ИндексЭлементаМассива]);
18 Trier
 
06.04.22
18:24
Капец вы все токсичные, конечно. Перечитал тему - со второго сообщения было понятно, что ТС хочет.
А потом говорят, нет новичков в 1С
19 VladZ
 
06.04.22
19:08
(18) А я до конца дочитал - и ничего не понял.
20 VladZ
 
06.04.22
19:09
+19 Правильно заданный вопрос содержит половину ответа.
21 lubitelxml
 
06.04.22
19:23
+(17)

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

Выборка = Справочники.ВариантоОбъекты.НайтиПоНаименованию(Массив[ИндексЭлементаМассива]);
Если выборка.Следующий() Тогда
    НовыйОбъект.ВариантОбъект = Выборка;
Иначе
    спрНовыйОбъект = Справочники.ВариантоОбъекты.СоздатьЭлемент();
    спрНовыйОбъект.Наименование = Массив[ИндексЭлементаМассива];
    спрНовыйОбъект.Записать();

    НовыйОбъект.ВариантОбъект = спрНовыйОбъект.Ссылка;

КонецЕсли;
НовыйОбъект.Записать();
22 lubitelxml
 
06.04.22
19:24
Писал на коленке, возможно где-то ошибся. Суть в следующем - элемент справочника ВариантоОбъекты, если нашли - заполняем реквизит Номенклатуры, если не нашли - создаем новый с твоим наименованием из массива и его заполняем в номенклатуру
23 Ёпрст
 
06.04.22
20:59
(21)

>>>Если выборка.Следующий() //вот это бред (не Пит)
24 lubitelxml
 
07.04.22
12:33
(23) я ж говорю на коленке писал, сам найти по наименованию никогда не использую, поэтому мог ошибится
25 Aleksandr N
 
07.04.22
12:38
(24) НайтиПоНаименованию дает ссылку, а не выборку. Поэтому и бред.
26 Said_We
 
07.04.22
13:51
Зачем поиск по наименованию?
Загнать всё в запрос и найти сразу для всех. Где не нашлось, там и создавать.
27 Dimon8822
 
07.04.22
14:24
(18) Спасибо
28 Said_We
 
07.04.22
15:03
Собственно предварительно ТЗ создать:
выбрать т.Наименование из Справочник.Номенклатура как т где ложь

Заполнить загрузкой значений из массива в ТЗ.

выбрать т.Наименование как Наименование Поместить ВТ_Наименования из &ТЗ как т;
выбрать т1.Наименование из ВТ_Наименования как т1 Левое соединение Справочник.Номенклатура как т2 по т1.Наименование = т2.Наименование Где т2.Наименование есть null

Результатом запроса будут только те наименование, которые не нашлись и их надо создавать.
Обход результата запроса и создание.

Писал на коленке, поэтому проверяйте исправляйте...
29 hhhh
 
07.04.22
15:37
(28) тс лучше такое не читать. Ему для начала что-то попроще надо.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс