Оператор позволяет создать значение указанного типа. Допустим только для тех типов, для которых разрешено создание с помощью данного оператора (подробнее см. описание объектов языка). Для прикладных объектов необходимо использовать функциональную форму оператора Новый (вариант 2), так как при проверке модулей в конфигураторе не определены типы для прикладных объектов. Если в качестве второго параметра указано значение, отличное от массива, то параметр полностью игнорируется. Пример1: СписокСохранения = Новый Структура; ХранилищеДанных = Новый ХранилищеЗначения(СписокСохранения); Пример2: ТипЗначения = Тип("КвалификаторыСтроки"); Параметры = Новый Массив(2); Параметры[0] = 20; Параметры[1] = ДопустимаяДлина.Переменная; КвСтр = Новый(ТипЗначения, Параметры);
Полное описание, параметры и ограничения
Новый (New)
Новый (New)
Синтаксис (вариант 1):
Новый <Идентификатор типа>[(<Парам1>, <Парам2>, …)]
Параметры:
Идентификатор типа
Указывается идентификатор типа, значение которого создается.
<Парам1>, <Парам2>, …
После идентификатора типа в скобках могут указываться параметры, если они определены в конструкторах для данного типа. Допустимое количество параметров и их назначение указывается в описании конструкторов объекта.
Синтаксис (вариант 2):
Новый(<Тип>[, <ПараметрыКонструктора>])
Параметры:
Тип
Имя типа или значение типа Тип
ПараметрыКонструктора
Массив параметров конструктора
Описание:
Оператор позволяет создать значение указанного типа. Допустим только для тех типов, для которых разрешено создание с помощью данного оператора (подробнее см. описание объектов языка).
Для прикладных объектов необходимо использовать функциональную форму оператора Новый (вариант 2), так как при проверке модулей в конфигураторе не определены типы для прикладных объектов.
Если в качестве второго параметра указано значение, отличное от массива, то параметр полностью игнорируется.
Пример1:
СписокСохранения = Новый Структура;
ХранилищеДанных = Новый ХранилищеЗначения(СписокСохранения);
Пример2:
ТипЗначения = Тип("КвалификаторыСтроки");
Параметры = Новый Массив(2);
Параметры[0] = 20;
Параметры[1] = ДопустимаяДлина.Переменная;
КвСтр = Новый(ТипЗначения, Параметры);
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Новый: создать собственную структуру заявки и массив позиций
Новый создаёт объект в памяти. Это не команда записи документа в базу.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.
Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().
Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.
Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.
Процедура ВыполнитьПример() Экспорт
Заявка = Новый Структура("Товар,Количество", "Книга", 3);
Позиции = Новый Массив;
Позиции.Добавить(Заявка);
Сообщить(ТипЗнч(Заявка) = Тип("Структура"));
Сообщить(Заявка.Товар = "Книга" И Заявка.Количество = 3);
Сообщить(Позиции.Количество() = 1);
Сообщить(Позиции[0] = Заявка);
КонецПроцедурыРазбор по шагам
В конструкторе Структура передать имена двух полей и два значения в том же порядке.
Отдельно создать пустой массив.
Добавить в него саму структуру, не её строковое представление.
Проверить тип, поля, размер массива и ссылку на тот же объект.
Как проверить результат
Четыре сообщения Истина.
Никакой новый документ в базе не появляется: Структура и Массив — значения памяти.
Ожидаемый результат
Два конструктора использованы в небольшой законченной задаче.
На что обратить внимание
Не каждый тип создаётся оператором Новый: у конфигурационных объектов есть менеджеры.
Поля структуры определяются явно заданной строкой имён.
Добавление в массив само по себе не копирует объект.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.