ПоследовательностьНаборЗаписей.<Имя последовательности>.ВыгрузитьКолонки

Методы · UnloadColumns

Создает таблицу значений с заданным списком колонок.

Синтаксис

ВыгрузитьКолонки(<Колонки>)
Полное описание, параметры и ограничения

ПоследовательностьНаборЗаписей.<Имя последовательности>.ВыгрузитьКолонки (SequenceRecordSet.<Sequence name>.UnloadColumns)

ПоследовательностьНаборЗаписей.<Имя последовательности> (SequenceRecordSet.<Sequence name>)

ВыгрузитьКолонки (UnloadColumns)

Доступен, начиная с версии 8.1.

Синтаксис:
ВыгрузитьКолонки(<Колонки>)
Параметры:

<Колонки> (необязательный)
Тип: Строка.
Список колонок для выгрузки в формате: "Колонка1, Колонка2...". Если список не задан, то будут выгружены все колонки.
Возвращаемое значение:
Тип: ТаблицаЗначений.

Описание:

Создает таблицу значений с заданным списком колонок.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Выгружается только структура набора записей, данные не выгружаются.
Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Перенести массив дат по индексам и полностью заменить черновик

ЗагрузитьКолонку у последовательности принимает сначала массив, затем имя поля. Загрузить таблицы заменяет прежние строки, поэтому три апрельские–июньские строки сменяются двумя июльской–августовской.

Где и как запускать

Полный серверный общий модуль УчебныеНаборыПоследовательности85 собственной новой конфигурации УчебныеПоследовательности85, точная 8.5.1.1343. Только собственный черновик памяти; 1С здесь не запускалась, записей базы нет.

Подготовка

  1. Создайте новую отдельную пустую базу 8.5.1.1343, не копию рабочей УТ/КА2. Имя конфигурации УчебныеПоследовательности85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать. Расширений, подписок и обработчиков записи нет.

  2. В Документы создайте единственный документ УчебнаяРегистрация85: проведение запрещено, реквизитов и табличных частей нет, движения регистров не назначены, модули объекта и менеджера пусты. Документы этого вида в уроке не создаются и не записываются.

  3. В Последовательности создайте единственную УчебнаяОчередь85. В составе Документы выберите только свой УчебнаяРегистрация85. Измерений, зависимых регистров в составе Движения и дополнительных индексов нет. ПеремещениеГраницыПриПроведении=НеПеремещать. Модуль набора пуст. Структура записей поэтому содержит только Период и Регистратор.

  4. Не создавайте в стенде справочников и регистров. Для учебного пользователя разрешите собственные метаданные, общую форму и команды. Обновите только эту новую конфигурацию. Проверка имени и состава схемы выполняется до создания набора; она не доказывает отсутствия записей базы и не делает рабочую базу безопасной.

  5. В Общие → Общие модули создайте УчебныеНаборыПоследовательности85: Сервер=Истина, ВызовСервера=Истина, Глобальный=Ложь, клиентские флаги выключены. Полный основной модуль одного выбранного урока вставьте на верхнем уровне целиком. Все помощники предоставлены ниже в том же модуле.

  6. В Общие → Общие формы создайте управляемую форму УчебныйЗапускПоследовательности85. Добавьте команду ВыполнитьУрок с действием ВыполнитьУрок, ИзменяетСохраняемыеДанные=Ложь и кнопку Выполнить урок. Полный модуль формы:
    &НаКлиенте
    Процедура ВыполнитьУрок(Команда)
    ВыполнитьУрокНаСервере();
    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ВыполнитьУрокНаСервере()
    УчебныеНаборыПоследовательности85.ВыполнитьПример();
    КонецПроцедуры

  7. В Общие → Общие команды создайте ОткрытьНаборПоследовательности85 без параметра и включите в свой учебный раздел. Полный модуль общей команды:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебныйЗапускПоследовательности85");
    КонецПроцедуры
    Откройте свою форму этой командой и выполните её кнопку. Два вспомогательных модуля не вставляйте в основной серверный модуль.

  8. Плановые ссылки создаются ПолучитьСсылку на собственные новые UUID. Непустая ссылка не означает существующий документ; реквизиты ссылок не читаются. Это идентификаторы собственных незаписанных черновых строк, не готовые записи для сохранения в базу.

  9. Здесь нет Прочитать, Записать, проведения, восстановления или изменения границы. Добавить/Загрузить/Удалить/Очистить действуют только на принадлежащий уроку экземпляр набора в памяти. Этот пример нельзя превращать в исправление последовательности добавлением Записать.

  10. Статически проверены исходный код и установленная справка. Компиляция и выполнение в 1С здесь не проверялись; ожидаемые результаты далее нужно подтвердить самостоятельным запуском только в подготовленной новой учебной базе.

Процедура ВыполнитьПример() Экспорт
    Если Метаданные.Последовательности.Количество() <> 1 Или Метаданные.Документы.Количество() <> 1 Тогда
        ВызватьИсключение "В своём стенде нужны ровно одна последовательность и один вид документа";
    КонецЕсли;
    МетаОчереди = Метаданные.Последовательности.Найти("УчебнаяОчередь85");
    МетаДокумента = Метаданные.Документы.Найти("УчебнаяРегистрация85");
    Если МетаОчереди = Неопределено Или МетаДокумента = Неопределено Тогда
        ВызватьИсключение "Не подготовлена собственная схема урока";
    КонецЕсли;
    Если МетаОчереди.Измерения.Количество() <> 0 Или МетаОчереди.Движения.Количество() <> 0
        Или МетаОчереди.Документы.Количество() <> 1 Тогда
        ВызватьИсключение "Нужна собственная очередь без измерений и зависимых регистров";
    КонецЕсли;
    Участвует = Ложь;
    Для Каждого МетаУчастника Из МетаОчереди.Документы Цикл
        Участвует = МетаУчастника = МетаДокумента;
    КонецЦикла;
    Если Не Участвует Тогда
        ВызватьИсключение "Единственный участник должен быть своим УчебнаяРегистрация85";
    КонецЕсли;
    Если МетаОчереди.ПеремещениеГраницыПриПроведении <> Метаданные.СвойстваОбъектов.ПеремещениеГраницыПриПроведении.НеПеремещать Тогда
        ВызватьИсключение "Проверьте подготовку политики границы собственной очереди";
    КонецЕсли;
    Набор = Последовательности.УчебнаяОчередь85.СоздатьНаборЗаписей();
    Если Набор.Количество() <> 0 Или Набор.Метаданные() <> МетаОчереди Тогда
        ВызватьИсключение "Ожидался новый пустой набор собственной последовательности";
    КонецЕсли;
    Ссылки = Новый Массив;
    Для Номер = 1 По 3 Цикл
        Ссылки.Добавить(Документы.УчебнаяРегистрация85.ПолучитьСсылку(Новый УникальныйИдентификатор));
    КонецЦикла;
    ДобавитьСвоюЗапись(Набор, Дата(2026, 1, 1), Ссылки[0]);
    ДобавитьСвоюЗапись(Набор, Дата(2026, 2, 1), Ссылки[1]);
    ДобавитьСвоюЗапись(Набор, Дата(2026, 3, 1), Ссылки[2]);
    НовыеПериоды = Новый Массив;
    НовыеПериоды.Добавить(Дата(2026, 4, 1));
    НовыеПериоды.Добавить(Дата(2026, 5, 1));
    НовыеПериоды.Добавить(Дата(2026, 6, 1));
    Если НовыеПериоды.Количество() <> Набор.Количество() Тогда
        ВызватьИсключение "Наш массив обязан иметь ровно по одному значению для каждой строки";
    КонецЕсли;
    Для Каждого Период Из НовыеПериоды Цикл
        Если ТипЗнч(Период) <> Тип("Дата") Тогда
            ВызватьИсключение "В собственном массиве допускаются только даты";
        КонецЕсли;
    КонецЦикла;
    Набор.ЗагрузитьКолонку(НовыеПериоды, "Период");
    Для ИндексСтроки = 0 По 2 Цикл
        ПроверитьСвоюЗапись(Набор[ИндексСтроки], НовыеПериоды[ИндексСтроки], Ссылки[ИндексСтроки]);
    КонецЦикла;
    Замена = Набор.ВыгрузитьКолонки("Период,Регистратор");
    Для ИндексСтроки = 0 По 1 Цикл
        СтрокаЗамены = Замена.Добавить();
        СтрокаЗамены.Период = Дата(2026, ИндексСтроки + 7, 1);
        СтрокаЗамены.Регистратор = Ссылки[ИндексСтроки + 1];
    КонецЦикла;
    Набор.Загрузить(Замена);
    Если Набор.Количество() <> 2 Тогда
        ВызватьИсключение "Загрузить заменяет прежние три строки двумя, не добавляет их";
    КонецЕсли;
    Для ИндексСтроки = 0 По 1 Цикл
        ПроверитьСвоюЗапись(Набор[ИндексСтроки], Дата(2026, ИндексСтроки + 7, 1), Ссылки[ИндексСтроки + 1]);
    КонецЦикла;
    Замена[0].Период = Дата(2026, 12, 1);
    ПроверитьСвоюЗапись(Набор[0], Дата(2026, 7, 1), Ссылки[1]);
    ПроверитьСвоюЗапись(Набор[1], Дата(2026, 8, 1), Ссылки[2]);
    Сообщить("В памяти сначала апрель/май/июнь, после полной замены июль/август; база не читалась");
КонецПроцедуры

Процедура ДобавитьСвоюЗапись(Набор, Период, Регистратор)
    Если ТипЗнч(Период) <> Тип("Дата") Или ТипЗнч(Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
        ВызватьИсключение "Переданы неверные собственные ключи строки";
    КонецЕсли;
    Запись = Набор.Добавить();
    Запись.Период = Период;
    Запись.Регистратор = Регистратор;
КонецПроцедуры

Процедура ПроверитьСвоюЗапись(Запись, Период, Регистратор)
    Если ТипЗнч(Запись.Период) <> Тип("Дата") Или ТипЗнч(Запись.Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
        ВызватьИсключение "Типы фактической собственной записи не совпали";
    КонецЕсли;
    Если Запись.Период <> Период Или Запись.Регистратор <> Регистратор Тогда
        ВызватьИсключение "Период или регистратор собственной записи не совпал";
    КонецЕсли;
КонецПроцедуры

Разбор по шагам

  1. Создать свои три исходные регистрации января–марта с разными плановыми ссылками.

  2. Наполнить отдельный Массив тремя датами апреля–июня через Добавить. Размер и тип каждого элемента проверяются до загрузки.

  3. Вызвать ЗагрузитьКолонку(НовыеПериоды,"Период") и проверить все три новые даты вместе с неизменными регистраторами.

  4. Получить пустую таблицу точной схемы через ВыгрузитьКолонки и добавить две свои строки июля и августа с собственными второй и третьей ссылками.

  5. Загрузить(Замена) должно оставить две записи: проверить размер и оба поля каждой. Это замена, не добавление до пяти.

  6. После загрузки изменить дату только исходной таблицы Замена и снова проверить обе записи набора: июль/август не меняются.

Как проверить результат

  1. После загрузки колонки: апрель/ссылка1, май/ссылка2, июнь/ссылка3 в текущем порядке индексов.

  2. После полной замены ровно июль/ссылка2 и август/ссылка3; изменение таблицы-источника не меняет обе записи.

  3. Нет чтения или записи базы. Поведение более коротких/длинных массивов намеренно не предполагается: свой массив проверяется на точное совпадение длины.

Ожидаемый результат

Показаны поэлементная загрузка одной колонки и полная замена состава локального набора с точными проверками.

На что обратить внимание

  1. Набор создаётся пустым: это не чтение существующих регистраций. Количество считает только строки своего экземпляра памяти, не документы базы.

  2. Плановые ссылки принадлежат своему типу, но документы не записаны. Не читайте у них дату/номер и не объявляйте их существующими.

  3. Для индексных методов нумерация с нуля. После удаления индексы оставшихся строк меняются; ссылка на строку и её текущий индекс — разные вещи.

  4. Удалить и Очистить здесь удаляют лишь черновые строки памяти. Они не отменяют документ и не исправляют границу последовательности.

  5. Readonly-свойство набора нельзя заменить новым значением. ДополнительныеСвойства допускает работу с содержимым возвращённой структуры, не присваивание новой структуры свойству.

  6. Модифицированность не обнаруживает изменения других пользователей и не подтверждает сохранение. ЭтотОбъект относится к модулю набора; в общем модуле данного урока не применяется.

  7. Python-тесты не исполняют платформу. Полный модуль надо отдельно скомпилировать и испытать в собственной подготовленной конфигурации; рабочие данные здесь не менялись.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Выгрузить снимок, пустую схему и одну выбранную дату

Выгрузить копирует данные; ВыгрузитьКолонки возвращает структуру без строк. Проекция одной собственной записи не получает лишний Регистратор, а изменение снимка не меняет исходный набор.

Где и как запускать

Полный серверный общий модуль УчебныеНаборыПоследовательности85 собственной новой конфигурации УчебныеПоследовательности85, точная 8.5.1.1343. Только собственный черновик памяти; 1С здесь не запускалась, записей базы нет.

Подготовка

  1. Создайте новую отдельную пустую базу 8.5.1.1343, не копию рабочей УТ/КА2. Имя конфигурации УчебныеПоследовательности85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать. Расширений, подписок и обработчиков записи нет.

  2. В Документы создайте единственный документ УчебнаяРегистрация85: проведение запрещено, реквизитов и табличных частей нет, движения регистров не назначены, модули объекта и менеджера пусты. Документы этого вида в уроке не создаются и не записываются.

  3. В Последовательности создайте единственную УчебнаяОчередь85. В составе Документы выберите только свой УчебнаяРегистрация85. Измерений, зависимых регистров в составе Движения и дополнительных индексов нет. ПеремещениеГраницыПриПроведении=НеПеремещать. Модуль набора пуст. Структура записей поэтому содержит только Период и Регистратор.

  4. Не создавайте в стенде справочников и регистров. Для учебного пользователя разрешите собственные метаданные, общую форму и команды. Обновите только эту новую конфигурацию. Проверка имени и состава схемы выполняется до создания набора; она не доказывает отсутствия записей базы и не делает рабочую базу безопасной.

  5. В Общие → Общие модули создайте УчебныеНаборыПоследовательности85: Сервер=Истина, ВызовСервера=Истина, Глобальный=Ложь, клиентские флаги выключены. Полный основной модуль одного выбранного урока вставьте на верхнем уровне целиком. Все помощники предоставлены ниже в том же модуле.

  6. В Общие → Общие формы создайте управляемую форму УчебныйЗапускПоследовательности85. Добавьте команду ВыполнитьУрок с действием ВыполнитьУрок, ИзменяетСохраняемыеДанные=Ложь и кнопку Выполнить урок. Полный модуль формы:
    &НаКлиенте
    Процедура ВыполнитьУрок(Команда)
    ВыполнитьУрокНаСервере();
    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ВыполнитьУрокНаСервере()
    УчебныеНаборыПоследовательности85.ВыполнитьПример();
    КонецПроцедуры

  7. В Общие → Общие команды создайте ОткрытьНаборПоследовательности85 без параметра и включите в свой учебный раздел. Полный модуль общей команды:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебныйЗапускПоследовательности85");
    КонецПроцедуры
    Откройте свою форму этой командой и выполните её кнопку. Два вспомогательных модуля не вставляйте в основной серверный модуль.

  8. Плановые ссылки создаются ПолучитьСсылку на собственные новые UUID. Непустая ссылка не означает существующий документ; реквизиты ссылок не читаются. Это идентификаторы собственных незаписанных черновых строк, не готовые записи для сохранения в базу.

  9. Здесь нет Прочитать, Записать, проведения, восстановления или изменения границы. Добавить/Загрузить/Удалить/Очистить действуют только на принадлежащий уроку экземпляр набора в памяти. Этот пример нельзя превращать в исправление последовательности добавлением Записать.

  10. Статически проверены исходный код и установленная справка. Компиляция и выполнение в 1С здесь не проверялись; ожидаемые результаты далее нужно подтвердить самостоятельным запуском только в подготовленной новой учебной базе.

Процедура ВыполнитьПример() Экспорт
    Если Метаданные.Последовательности.Количество() <> 1 Или Метаданные.Документы.Количество() <> 1 Тогда
        ВызватьИсключение "В своём стенде нужны ровно одна последовательность и один вид документа";
    КонецЕсли;
    МетаОчереди = Метаданные.Последовательности.Найти("УчебнаяОчередь85");
    МетаДокумента = Метаданные.Документы.Найти("УчебнаяРегистрация85");
    Если МетаОчереди = Неопределено Или МетаДокумента = Неопределено Тогда
        ВызватьИсключение "Не подготовлена собственная схема урока";
    КонецЕсли;
    Если МетаОчереди.Измерения.Количество() <> 0 Или МетаОчереди.Движения.Количество() <> 0
        Или МетаОчереди.Документы.Количество() <> 1 Тогда
        ВызватьИсключение "Нужна собственная очередь без измерений и зависимых регистров";
    КонецЕсли;
    Участвует = Ложь;
    Для Каждого МетаУчастника Из МетаОчереди.Документы Цикл
        Участвует = МетаУчастника = МетаДокумента;
    КонецЦикла;
    Если Не Участвует Тогда
        ВызватьИсключение "Единственный участник должен быть своим УчебнаяРегистрация85";
    КонецЕсли;
    Если МетаОчереди.ПеремещениеГраницыПриПроведении <> Метаданные.СвойстваОбъектов.ПеремещениеГраницыПриПроведении.НеПеремещать Тогда
        ВызватьИсключение "Проверьте подготовку политики границы собственной очереди";
    КонецЕсли;
    Набор = Последовательности.УчебнаяОчередь85.СоздатьНаборЗаписей();
    Если Набор.Количество() <> 0 Или Набор.Метаданные() <> МетаОчереди Тогда
        ВызватьИсключение "Ожидался новый пустой набор собственной последовательности";
    КонецЕсли;
    Ссылки = Новый Массив;
    Для Номер = 1 По 3 Цикл
        Ссылки.Добавить(Документы.УчебнаяРегистрация85.ПолучитьСсылку(Новый УникальныйИдентификатор));
    КонецЦикла;
    ДобавитьСвоюЗапись(Набор, Дата(2026, 1, 1), Ссылки[0]);
    ДобавитьСвоюЗапись(Набор, Дата(2026, 2, 1), Ссылки[1]);
    ДобавитьСвоюЗапись(Набор, Дата(2026, 3, 1), Ссылки[2]);
    Снимок = Набор.Выгрузить();
    Схема = Набор.ВыгрузитьКолонки("Период,Регистратор");
    Если Снимок.Количество() <> 3 Или Снимок.Колонки.Количество() <> 2
        Или Схема.Количество() <> 0 Или Схема.Колонки.Количество() <> 2 Тогда
        ВызватьИсключение "Полный снимок и пустая схема перепутаны";
    КонецЕсли;
    Для ИндексСтроки = 0 По 2 Цикл
        ПроверитьСвоюЗапись(Снимок[ИндексСтроки], Дата(2026, ИндексСтроки + 1, 1), Ссылки[ИндексСтроки]);
    КонецЦикла;
    Выбранные = Новый Массив;
    Выбранные.Добавить(Набор[1]);
    ОдинПериод = Набор.Выгрузить(Выбранные, "Период");
    Если ОдинПериод.Количество() <> 1 Или ОдинПериод.Колонки.Количество() <> 1
        Или ОдинПериод[0].Период <> Дата(2026, 2, 1) Тогда
        ВызватьИсключение "Проекция должна содержать только февральскую дату";
    КонецЕсли;
    Если ОдинПериод.Колонки.Найти("Регистратор") <> Неопределено Тогда
        ВызватьИсключение "Лишняя колонка попала в проекцию";
    КонецЕсли;
    Снимок[0].Период = Дата(2026, 12, 1);
    Для ИндексСтроки = 0 По 2 Цикл
        ПроверитьСвоюЗапись(Набор[ИндексСтроки], Дата(2026, ИндексСтроки + 1, 1), Ссылки[ИндексСтроки]);
    КонецЦикла;
    Сообщить("Снимок независим; схема содержит только колонки; проекция содержит февраль");
КонецПроцедуры

Процедура ДобавитьСвоюЗапись(Набор, Период, Регистратор)
    Если ТипЗнч(Период) <> Тип("Дата") Или ТипЗнч(Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
        ВызватьИсключение "Переданы неверные собственные ключи строки";
    КонецЕсли;
    Запись = Набор.Добавить();
    Запись.Период = Период;
    Запись.Регистратор = Регистратор;
КонецПроцедуры

Процедура ПроверитьСвоюЗапись(Запись, Период, Регистратор)
    Если ТипЗнч(Запись.Период) <> Тип("Дата") Или ТипЗнч(Запись.Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
        ВызватьИсключение "Типы фактической собственной записи не совпали";
    КонецЕсли;
    Если Запись.Период <> Период Или Запись.Регистратор <> Регистратор Тогда
        ВызватьИсключение "Период или регистратор собственной записи не совпал";
    КонецЕсли;
КонецПроцедуры

Разбор по шагам

  1. Заново получить свои три строки января/февраля/марта по полной подготовке, без чтения базы.

  2. Выгрузить весь набор: три строки, два столбца. Проверить оба поля каждой строки снимка.

  3. ВыгрузитьКолонки("Период,Регистратор") создаёт таблицу с двумя столбцами и нулём строк; не выдавать её за копию данных.

  4. В массив выбора добавить саму вторую запись своего набора, не индекс и не строку ТаблицаЗначений.

  5. Выгрузить выбранные строки с колонкой Период: проверить единственную февральскую дату и отсутствие Регистратор.

  6. Изменить только январскую дату снимка на декабрьскую и повторно сверить все три исходные записи.

Как проверить результат

  1. Снимок 3×2, пустая схема 0×2, проекция 1×1 с точной февральской датой.

  2. В проекции нет колонки Регистратор; исходный набор после изменения снимка по-прежнему январь/февраль/март со своими ссылками.

Ожидаемый результат

Три разные формы выгрузки решают разные задачи, а независимость копии проверена кодом.

На что обратить внимание

  1. Набор создаётся пустым: это не чтение существующих регистраций. Количество считает только строки своего экземпляра памяти, не документы базы.

  2. Плановые ссылки принадлежат своему типу, но документы не записаны. Не читайте у них дату/номер и не объявляйте их существующими.

  3. Для индексных методов нумерация с нуля. После удаления индексы оставшихся строк меняются; ссылка на строку и её текущий индекс — разные вещи.

  4. Удалить и Очистить здесь удаляют лишь черновые строки памяти. Они не отменяют документ и не исправляют границу последовательности.

  5. Readonly-свойство набора нельзя заменить новым значением. ДополнительныеСвойства допускает работу с содержимым возвращённой структуры, не присваивание новой структуры свойству.

  6. Модифицированность не обнаруживает изменения других пользователей и не подтверждает сохранение. ЭтотОбъект относится к модулю набора; в общем модуле данного урока не применяется.

  7. Python-тесты не исполняют платформу. Полный модуль надо отдельно скомпилировать и испытать в собственной подготовленной конфигурации; рабочие данные здесь не менялись.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.