Имя: Пароль:
1C
1С v8
Как создать структуру из 2х массивов
,
0 Dimon8822
 
15.03.22
23:33
Я учу 1С: П 8.3. Прошу помощи. Не получается разобраться со следующим вопросом:
Пытаюсь создание структуру из 2х массивов:
    
    Массив1 =Табл.ВыгрузитьКолонку("Год") ;
    Массив2 = Табл.ВыгрузитьКолонку("Выходной") ;
    
    СтруктураВыходные = Новый Структура() ;      
      
           Для Индекс = 0 По Массив1.Количество() - 1 Цикл
      
                СтруктураВыходные.Вставить(Строка(Массив1[Индекс]), Массив2[Индекс]) ;
    
        КонецЦикла;

В ответ получаю: "Задано неправильное имя атрибута структуры"
В чем ошибаюсь. Заранее СРПАСИБО!
1 Йохохо
 
15.03.22
23:41
2 OldCondom
 
15.03.22
23:43
Имена переменных

Имена методов, переменных, типов и прочих конструкций языка следуют следующему правилу: имя начинается с буквы (точнее со всего, что стандарт Unicode считает буквой) или с подчеркивания и может иметь сколько угодно дополнительных букв, цифр и подчеркиваний. Имена чувствителны к регистру, однако нельзя использовать имена, которые различаются только регистром.
3 Asmody
 
15.03.22
23:59
Сделай Соответствие
4 dmt
 
16.03.22
08:04
СтруктураВыходные.Вставить(   "_" +   Строка(Массив1[Индекс]), Массив2[Индекс]) ;
5 hhhh
 
16.03.22
08:17
(4) Строка(Массив1[Индекс])  - не прокатит
6 FIXXXL
 
16.03.22
09:35
Массив1 =Табл.ВыгрузитьКолонку("Год") ;
если ГОД - число, нужно использовать Формат(), без разделения разрядов
7 Жан Пердежон
 
16.03.22
10:17
(0) ключом структуры может быть только строка, являющаяся идентификатором
8 FIXXXL
 
16.03.22
10:42
(7) ну и будет один выходной в год :)
9 Dimon8822
 
16.03.22
14:34
Ошибку выдаёт даже в таком случае:

    Табл.Свернуть("Год", "РабочийДень, Выходной");
    

    КопияТабл = Табл.Скопировать(,"Год, Выходной");    
    А =  Табл.Количество() ;

        Массив1 =     Табл.ВыгрузитьКолонку("Год") ;
        Массив2 = Табл.ВыгрузитьКолонку("Выходной") ;

    Структура = Новый Структура() ;
    Структура.Вставить("Год" + Строка(Массив1[0]), Массив2[0]) ;

Табло:
А                         11        Число
Массив1[0]            "2 022"        Строка
Массив2[0]              87        Число
Строка(Массив1[0])    "2 022"        Строка
"Год " + Строка(Массив1[0])    "Год 2 022"    Строка

err: Ошибка при вызове метода контекста (Вставить)
{ВнешняяОбработка.ВнешняяОбработка_ДЗ_3.Форма.ДЗ_3.Форма(80)}:    Структура.Вставить("Год" + Строка(Массив1[0]), Массив2[0]) ;
{ВнешняяОбработка.ВнешняяОбработка_ДЗ_3.Форма.ДЗ_3.Форма(5)}:     ТаблицаЗначенийНаСервере()
по причине:
Задано неправильное имя атрибута структуры
Задано неправильное имя атрибута структуры


В чем ошибаюсь. Заранее СПАСИБО!
10 Галахад
 
гуру
16.03.22
14:37
"2 022" - неразрывный пробел убери. В (6) уже про формат писали.
11 Kassern
 
16.03.22
14:39
(9) "2 022" - вот тут и ошибка у вас. Вы вообще читали, что написано в ссылке (1) ?
"идентификатор может содержать только буквы, цифры, а также символ подчеркивания. Но первым символом ключа обязательно должна быть буква или символ подчеркивания."
между 2 и 0 у вас находится Символы.НПП, как он вяжется со строчкой выше из ссылки? Мало того, первый символ так же не подходит по определению.
12 Dimon8822
 
17.03.22
15:24
Добрый день!
Разобрался - Формат ГОДа "уууу" выставляется с пробелом в качестве разделителя разрядов ("2 022") в 1С по умолчанию, и тогда в ключе значения структуры возникает пробел. Исправил на Формат(Год(Д), "ЧГ=0") все прошло на УРА. Спасибо
13 Kassern
 
17.03.22
15:26
(12) можно так же использовать конструкцию СтрЗаменить(СтрокаСНеразрывнымПробелом,Символы.НПП,"");
Закон Брукера: Даже маленькая практика стоит большой теории.