8.х Проблемма с массивом

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем DikSer, 30 янв 2010.

  1. TopicStarter Overlay
    DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Товарищи, ничего не понимаю почему не получается добавить в массив строку.
    Как бы что это можно и что вроде бы всё правильно делаю уверен.

    Массив = Новый Массив(35);
    Массив.Добавить("Строка1");
    Массив.Добавить("Строка2");

    Выдает ошибку:
    Значение не является значением объектного типа (Добавить)
    Массив.Добавить("Строка1");

    ... :unsure: :smile:
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    1. Два раза писать одну и туже тему ни хорошо :unsure:
    2. ВЫ пишите всё правильно, другое дело где Вы это пишите и нет ли путаницы в переменных, попробуйте назвать его МойМассив.
    3. Если Вы используете статический массив
    Код:
    Массив = Новый Массив(35);
    
    , тогда используйте метод
    Код:
    Вставить(<Индекс>, <Значение>) 
    
    4. Для создания динамического массива используйте конструктор
    Код:
    Массив = Новый Массив;
    
    . Хоть в 1С это ни совсем принципиально, но лучше сразу писать грамотно, при статическом массиме метод Добавить, добавить 36-ую строку в массив.
  3. TopicStarter Overlay
    DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    А реально реализовать такую ситуацию...
    Есть массив из 6 элементов,
    есть 6 полей ввода,
    Можно в цикле вогнать в эти 6 полей ввода 6 элементов?=)
  4. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Если поля называются "Поле1", "Поле2" и т.д.
    Код:
    МассивПолей = Новый Массив;
    Для К = 1 По 6 Цикл
    МассивПолей.Добавить(ЭтотОбъект["Поле" + К]);
    КонецЦикла;
    
  5. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Опишите пример поподробнее, желательно в виде иллюстрации, и я Вам смогу ответить, а то пока сумбурно как-то выглядит задача.
  6. TopicStarter Overlay
    DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Ну предположим массив состоит из 10 элементов. в случайном порядке выбираются 6 элементов и они должны добавятся в 6 ПолейВвода, подряд,
    Щас я делаю ПолеВвода1 = ТМПМассив[0];
    и так далее...
    красочнее не знаю как описать=)
  7. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Я перепутал что куда, но идея, я надеюсь понятна...

    Код:
    Для К = 1 По МассивПолей.Количество() Цикл
    ЭтотОбъект["Поле" + К] = МассивПолей[К-1];
    КонецЦикла;
    
  8. TopicStarter Overlay
    DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Хм выдает ошибочку.

    {Обработка.Форма1.Форма.Форма(80)}: Поле объекта не обнаружено (ПолеВвода1)
    ЭтотОбъект["ПолеВвода" + К] = ТемповыйМассив1[К - 1];

    Код:
    Для К = 1 По ТемповыйМассив1.Количество() Цикл
    ЭтотОбъект["ПолеВвода" + К] = ТемповыйМассив1[К - 1];
    КонецЦикла
    
    
    
    Вопрос решил используя вместо "ЭтотОбъект" , "ЭтаФорма".
  9. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Если поля присутствуют только на форме, то тогда конечно "ЭтаФорма"...
  10. TopicStarter Overlay
    DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Товарищи а можно же создать двумерный массив чтобы выглядило примерно как карты
    4 масти и в каждой масти 9 карт?
  11. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
  12. TopicStarter Overlay
    DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Тоесть предположим будет так
    Массив1 = Новый Массив(4);
    Массив2 = Новый Массив(9);
    Массив1.Добавить(Массив2);

    ?
  13. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Код:
    МассивКарт = Новый Массив(4, 9);
    
  14. TopicStarter Overlay
    DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Заполнять его примерно так:
    МассивКарт[1] = "Черви";
    МассивКарт[1, 1] = "Шесть"
    МассивКарт[1, 2] = "Семь"
    ??
  15. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Код:
    МассивКарт[1][2] = "Семь"
    
    так
    Код:
    МассивКарт[1] = "Черви";
    
    нельзя, удаляется вся "двухмерность"

    В твоем случае надо использовать "Соответствие"

Поделиться этой страницей