Имя: Пароль:
1C
 
Задолбало отсутвие конструктора массива, написал свой
0 Гений 1С
 
гуру
07.07.06
18:39
Функция КонстМассив(
   З1=Неопределено, З2=Неопределено, З3=Неопределено, З4=Неопределено, З5=Неопределено,
   З6=Неопределено, З7=Неопределено, З8=Неопределено, З9=Неопределено, З10=Неопределено,
   З11=Неопределено, З12=Неопределено, З13=Неопределено, З14=Неопределено, З15=Неопределено,
   З16=Неопределено, З17=Неопределено, З18=Неопределено, З19=Неопределено, З20=Неопределено
   ) Экспорт
   Перем М;
   М=Новый Массив();
   
   Если З1=Неопределено Тогда Возврат М; Иначе М.Добавить(З1); КонецЕсли;
   Если З2=Неопределено Тогда Возврат М; Иначе М.Добавить(З2); КонецЕсли;
   Если З3=Неопределено Тогда Возврат М; Иначе М.Добавить(З3); КонецЕсли;
   Если З4=Неопределено Тогда Возврат М; Иначе М.Добавить(З4); КонецЕсли;
   Если З5=Неопределено Тогда Возврат М; Иначе М.Добавить(З5); КонецЕсли;
   Если З6=Неопределено Тогда Возврат М; Иначе М.Добавить(З6); КонецЕсли;
   Если З7=Неопределено Тогда Возврат М; Иначе М.Добавить(З7); КонецЕсли;
   Если З8=Неопределено Тогда Возврат М; Иначе М.Добавить(З8); КонецЕсли;
   Если З9=Неопределено Тогда Возврат М; Иначе М.Добавить(З9); КонецЕсли;
   Если З10=Неопределено Тогда Возврат М; Иначе М.Добавить(З10); КонецЕсли;
   Если З11=Неопределено Тогда Возврат М; Иначе М.Добавить(З11); КонецЕсли;
   Если З12=Неопределено Тогда Возврат М; Иначе М.Добавить(З12); КонецЕсли;
   Если З13=Неопределено Тогда Возврат М; Иначе М.Добавить(З13); КонецЕсли;
   Если З14=Неопределено Тогда Возврат М; Иначе М.Добавить(З14); КонецЕсли;
   Если З15=Неопределено Тогда Возврат М; Иначе М.Добавить(З15); КонецЕсли;
   Если З16=Неопределено Тогда Возврат М; Иначе М.Добавить(З16); КонецЕсли;
   Если З17=Неопределено Тогда Возврат М; Иначе М.Добавить(З17); КонецЕсли;
   Если З18=Неопределено Тогда Возврат М; Иначе М.Добавить(З18); КонецЕсли;
   Если З19=Неопределено Тогда Возврат М; Иначе М.Добавить(З19); КонецЕсли;
   Если З20=Неопределено Тогда Возврат М; Иначе М.Добавить(З20); КонецЕсли;
   Возврат М;
КонецФункции

Массив=КонстМассив(1,2,3);

сообщить(ЗначениеВСтрокуВнутр(Массив));
1 TormozIT
 
гуру
07.07.06
18:53
Согласен. Пора бы уже его в платформе реализовать.
Идея хорошая. Берем на вооружение.
2 Гений 1С
 
гуру
07.07.06
19:08
(1) взялся за перо после того, как задолбал передавать в бух запросы списки счетов... :)
3 а лю 427
 
07.07.06
19:09
Задолбал гений своей генитальностью... Как бы его в платформу засунуть?
4 Гений 1С
 
гуру
07.07.06
19:11
5 а лю 427
 
07.07.06
19:12
а лучше в ЖЖЖЖ
6 Кецалькоатль
 
07.07.06
19:19
Операторы Если лучше сделать вложенными, быстрее будет :)
7 Shaytan
 
07.07.06
19:30
(1) Я бы не назвал эту функцию конструктором. Функция не универсальна. Какой практический смысл в ней?
8 Лемур
 
07.07.06
19:32
ну просто настоящий "гений"
9 TormozIT
 
гуру
07.07.06
19:43
(6)
Масштабировать будет неудобно и наглядность ухудшиться.
Чуть быстрее - это да.
10 dimoff
 
07.07.06
20:04
Не въехал, почему цифровые идентификаторы?
11 Shaytan
 
07.07.06
20:26
(10) Это буква "зэ".

Не думаю, что подобные функции следует помещать базу знаний.
12 fishca
 
08.07.06
10:11
Какая польза от этой функции, где можно применить?
13 Добрый
 
08.07.06
10:18
(0) Чего ж ты на 1С то пишешь? Напиши свою платформу, тада долбать перестанет.
Заодно ник смени, например "Гениталий 1С" просто и величественно, как раз в тему. И форум заодно смени тоже.
14 fishca
 
08.07.06
10:24
(13) он уже не один форум сменил.
15 Neco
 
08.07.06
11:05
Так и не понял практической ценности функции. Наверное Гений 1С достиг такого уровня когда его высокие мысли простым смертным не понятны ;-)))
16 fishca
 
08.07.06
12:50
да-да. Если ты умнее всех, то как это смогут понять другие?
17 OFF
 
08.07.06
14:36
Покайся Осипов :D, именно генияльность твоя лишила тебя доступа к партнерскому форуму?
18 ottto
 
08.07.06
20:29
Кстати никто не в курсе на партнерский форум, почему доступ могут закрыть. Перешел в другую фирму из-за этого чтоли? Или как то по времени лимитировано (ровно год назад получил).
19 Neco
 
08.07.06
22:18
(18) С партнерского форума:
"Доступ в раздел для разработчиков предоставляется зарегистрированным пользователям NFR-версии комплекта (как юридическим, так и физическим лицам).
Организации, зарегистрированные пользователи NFR-версии

От лица организации - зарегистрированного пользователя NFR-версии комплекта к разделу могут быть допущены все сертифицированные (по любому продукту) специалисты и руководитель, а также максимум два несертифицированных сотрудника.

В случае удовлетворения заявки доступ будет предоставлен ответственному и руководителю (доступ для руководителя будет открыт только в случае, если в закрытых конференциях сайта www.1c.ru существует его зарегистрированный эккаунт).

Допуск остальных сотрудников к разделу будет осуществляться руководителем или ответственным (если допуск для руководителя предоставлен не будет) самостоятельно через специальный веб-интерфейс.
Специалисты, приобретшие "1С:Предприятие 8.0. Комплект специалиста по разработке и внедрению"

Для специалистов, приобретших "1С:Предприятие 8.0. Комплект специалиста по разработке и внедрению", также может быть предоставлен доступ к разделу для разработчиков по решению руководителя фирмы-франчайзи, продавшей продукт."
20 Гений 1С
 
гуру
10.07.06
09:51
(7) что значит не универсальна? гыгыгы... для массива не более чем из 20 элементов что ли?
21 GROOVY
 
10.07.06
10:04
Чет я не понял назначения?
А так

Массив = Новый Массив(33);

не канает чтоль?
22 Salvador Limones
 
10.07.06
10:05
(21) Советует преподаватель ЦСО? :-)))
23 GROOVY
 
10.07.06
10:07
(22) Да я бы сказал что преподаватель ЦСО долго въезжал в смысл написанного... и посему забыл что он может что то советовать.
Не мож я че не понял? Но в чем ноу хау в (0)?
24 Гений 1С
 
гуру
10.07.06
10:09
(21) чувак, ты ваще не въехал в тему.
А так можешь А=Массив("Вася", "+","Маша", "=", "секс")?

Теперь дошло?
25 Гений 1С
 
гуру
10.07.06
10:09
(21) долго ржал
26 GROOVY
 
10.07.06
10:16
(24) Все равно практическое применение с ограниченным количеством параметров... Хм... Да и массив с примитивными типами...
Не ну конечно кому как удобнее. Я не напрягусь и подобавляю в массив локально все что надо без твоего конструктора.
Все таки я не понял в чем гениальность.
27 ZolotarevAA
 
10.07.06
10:34
(26) +1
28 Гений 1С
 
гуру
10.07.06
10:40
(26) мне лень писать добавление 5 элементов. Я юзаю конструктор массива.
29 Гений 1С
 
гуру
10.07.06
10:40
(26) видимо нуралиев и ко тоже не понимают, зачем нужны конструкторы...
30 АП
 
10.07.06
10:58
(29) я думаю г. Нуралиеву глубоко .... на конструкторы массивов
31 fabrikant
 
10.07.06
11:06
(0) Толпооп. Передавай строку с разделителями и парсь ее в функции. Тогда не нужно всей этой кучи.
32 clappa
 
10.07.06
11:08
Кажется, ник автора вызывает больше претензий, чем собственно функция.

Но иногда действительно проще и понятней написать

НайтиСсылки(КонстМассив(Ссылка));

чем

МассивСсылок = Новый Массив;
МассивСсылок.Добавить(Ссылка);
НайтиСсылки(МассивСсылок);
33 Гений 1С
 
гуру
10.07.06
11:22
(30) Пусть бы он подарил миру хотя бы указатель на функцию в 1С... Эх...
(31) еще один малолетний грамотей. А если у меня тип не строчный, а числовой или дата? Тоже парсить? А накладные расходы на обработку строк ты посчитал, умница?
34 s22
 
10.07.06
11:27
(33) указатель на функцию это БОЛЬШОЙ ВРЕД! просто будет множество новых ошибок в конфигурациях, которые сложно отловить.... + проблемы с утечкой памяти и т д....
35 TormozIT
 
гуру
10.07.06
11:28
(34) +1
36 fabrikant
 
10.07.06
11:29
(33) Как видно из (0), даже такой дятел как ты знает функцию ЗначениеВСтрокуВнутр. Ей можно воспользоваться при формировании строки для непростых типов. Зато будет нормальный код, а не такое говно, как в (0)
37 Гений 1С
 
гуру
10.07.06
11:31
(36) нет, молодые "гении" меня удивляют своей наивностью... :)
Ну, приведи пример кода, чудак...
Увидишь, насколько это "Прозрачно" и короче, чем просто добавление элементов в массив. И еще одно - ЗначениеВСтрокуВнутр не очень-то штатный механизм, если ты не в курсе.
38 Гений 1С
 
гуру
10.07.06
11:32
(34) ты не знаешь что такое указатель на функцию... Это не страшнее, чем наличие метода выполнить.
Видишь ли, указатель на функцию - это не ссылка на место в памяти.
Это номер функции в списке функций. По этому номеру функция вызывается...
Где здесь утечки памяти?
Садись, два, переэкзаменовка по программированию.
39 Гений 1С
 
гуру
10.07.06
11:34
(34) мы будем на счетах, зато любой тупой чувак с костяшками разберется.
Да, к сожалению в 1С идут по пути "тупого 1С-ника". Не дай бог тупой 1с-ник не разберется. :)
40 fabrikant
 
10.07.06
11:36
(37) Да ты что? И чем же он не штатный. А если у меня в массиве 100 000 элементов. Заведешь под свою функцию отдельный модуль?
41 Гений 1С
 
гуру
10.07.06
11:41
(40) еще раз поучаю чайника - сей конструктор сделан для случаев, когда нужен небольшой массив , смотри (32) - идеально расписано. Например, когда нужно два-три счета передать в параметр запроса в виде массива.
42 Гений 1С
 
гуру
10.07.06
11:41
(40) А ты чего, будешь 10000 элементов добавлять ручками? гыгыгы
43 s22
 
10.07.06
11:43
(38) Тогда введити в 1с мой любимый ассемблер!
есть механизмы которые не надежны.... к ним относятся ссылки на память и ссылки на функции кроме того переходы на метку....

боюсь, что может по программированию мне и 2 зато тебя точно нельзя подпускать к проектированию систем....
44 Гений 1С
 
гуру
10.07.06
11:50
(43) читай 38, я про другой указатель на функцию... а не про твой ассемблеровский вызов CALL
45 Гений 1С
 
гуру
10.07.06
11:51
(43) Человека, который любит ассемблер тем более нельзя подпускать к программированию систем. :)
46 TormozIT
 
гуру
10.07.06
11:52
(43) Ссылки на память гораздо страшнее ссылок на функции. Утечек памяти в случае ссылки на функцию не будет, если в платформе это грамотно организовать.
Другое дело - более тяжелая читаемость программы. Это безусловный минус.
47 Diman000
 
10.07.06
11:52
(0) Смысл в таком конструкторе есть. Он действительно немного облегчает написание кода на передачу параметров в запросы типа счетов, кодов/видов операций, и т.д. Что-то типа того:
Запрос.УстановитьПараметр("Счета91_94", КонстМассив(ПланыСчетов.Хозрасчетный.ПрочиеДоходыИРасходы,ПланыСчетов.Хозрасчетный.НедостачиИПотериОтПорчиЦенностей));
Правда я использовать его не буду))) По мне так писать чуть дольше:

Счета91_94 = Новый Массив;
Счета91_94.Добавить(ПланыСчетов.Хозрасчетный.ПрочиеДоходыИРасходы);
Счета91_94.Добавить(ПланыСчетов.Хозрасчетный.НедостачиИПотериОтПорчиЦенностей);
Запрос.УстановитьПараметр("Счета91_94", Счета91_94);

Зато код нагляднее
48 Гений 1С
 
гуру
10.07.06
11:53
(47) Я пишу так:

М = Новый Массив;
М.Добавить(ПланыСчетов.Хозрасчетный.ПрочиеДоходыИРасходы);
М.Добавить(ПланыСчетов.Хозрасчетный.НедостачиИПотериОтПорчиЦенностей);
Запрос.УстановитьПараметр("Счета91_94", М);

Чуствуешь разницу? :)
49 Гений 1С
 
гуру
10.07.06
11:55
(46) я предлагаю именно ссылки на функцию.

Типа Указатель=@глРассчитатьНДС();
@Указатель(100, 20);

Хоть какой-то вариант замены бесконечным ЕслиТоИначе...
50 s22
 
10.07.06
11:55
(46) поэтому ссылки на память я привел первыми....
на счет ссылок на функцию....
они есть в паскале.... и ВСЕГДА когда ими пользуются не для примеров это приводит рано или поздно к падению системы!
51 s22
 
10.07.06
11:56
(49) ты давно бросил Си?
поюзай джаву.... там ссылки убрали.... и убрали не дураки и не потому что было лень делать....
52 s22
 
10.07.06
11:57
(49) проверку передачи параметров на каком этапе ты собираешься реализовывать?
53 TormozIT
 
гуру
10.07.06
11:57
Предлагаю создать отдельную тему, посвященную разумности внедрения в платформе указателей на функции и процедуры.
54 Добрый
 
10.07.06
11:59
+(53) Я предлагаю лучше ввести новую секцию о Величии Гениталия 1С и все подобные темы рассматривать там. Возлагать венки тотему Гениталия там же.
55 TormozIT
 
гуру
10.07.06
12:00
(49) Не совсем корректно написал код. Во втором случае унарный оператор должен быть обратным.

Типа Указатель=@глРассчитатьНДС();
^Указатель(100, 20);
56 Diman000
 
10.07.06
12:04
(48) Конечно, чуствую))) Что бы не говорил, но у меня имя переменной более говорящее. Может это в данном случае и не важно, но я давно отучил себя использовать переменные А,Б1,М0, и т.д. Только говорящие названия! Все имхо.
Кстати, а зачем ты пишешь так, если у тебя есть твой конструктор?))
57 Гений 1С
 
гуру
10.07.06
12:09
(56) я всего лишь хотел сказать, что такой код проще в шаблон загнать.
Всегда М, а у тебя кждый раз надо весде прописывать имя переменной.
58 s22
 
10.07.06
12:11
(49) проверку передачи параметров на каком этапе ты собираешься реализовывать?
59 Гений 1С
 
гуру
10.07.06
12:11
(50) факты, факты пожалста. Конечно, в жава заменили ссылку на функцию объектами. В 1с нам это не светит, так хоть ссылки на функцию дали бы.
Классический пример:
Если эторастение(объект) тогда поливать(объект) иначеесли этоживотное(объект) тогда кормить(объект) конецесли

заменяется вызовом объект.питать()

Объект - структура
60 Гений 1С
 
гуру
10.07.06
12:11
(58) рантайм или функция с неопредеелнным числом параметров.
61 s22
 
10.07.06
12:13
"функция с неопредеелнным числом параметров" - вот четкое место где будет все валится....
А реалтайм.... прикольно.... про падение скорости не забыл?
62 Гений 1С
 
гуру
10.07.06
12:14
(61) порой наглядность лучше скорости, не забыл?
не вижу причин для падения
63 Гений 1С
 
гуру
10.07.06
12:15
Если есть функция А(Х1,Х2,...Х10)
А я вызываю ее как @Pointer(Х1,Х3), то 7 параметров примут значение неопределено...

какие проблемы?
64 Гений 1С
 
гуру
10.07.06
12:16
(61) ты забыл, что выполнить тоже рантайм проверяет синтаксис
65 Гений 1С
 
гуру
10.07.06
12:16
(64) команда "Выполнить" имелось ввиду
66 s22
 
10.07.06
12:16
(62) кроме Си "функция с неопредеелнным числом параметров" вообще нигде насколько я знаю не встречается..... да и там это очень редко
67 Гений 1С
 
гуру
10.07.06
12:17
(66) для (0) пригодилось бы
68 s22
 
10.07.06
12:18
Тогда все просто применяй выполнить :)
просто в выполнить падение этой функции не приводит к падению конфы :)
69 s22
 
10.07.06
12:20
(67) это частный случай... в основном в бухе желательны железные вызовы
70 TormozIT
 
гуру
10.07.06
12:24
71 Гений 1С
 
гуру
10.07.06
12:32
(70) по указателю на функцию я перешел туда
72 fabrikant
 
10.07.06
13:31
(0)
Специально для дятлов, типа фиксина.

Функция СформироватьСтрокуДляМассива(Знач СтрокаПараметров)
   СтрокаКВыполнению = "М=Новый Массив();";
   ПозРазд = Найти(СтрокаПараметров,";");
   Пока ПозРазд > 0 Цикл
       СтрокаКВыполнению = СтрокаКВыполнению + " М.Добавить("+Лев(СтрокаПараметров,ПозРазд-1)+"); ";
       СтрокаПараметров  = Сред(СтрокаПараметров,ПозРазд+1);
       ПозРазд = Найти(СтрокаПараметров,";");
   КонецЦикла;
   Возврат СтрокаКВыполнению;
КонецФункции


Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   Перем М;
   А = "Фиксин";
   б = "Дятел";
   С = " - это общеизвестно";
   Выполнить(СформироватьСтрокуДляМассива("А;Б;С;"));
КонецПроцедуры
73 fabrikant
 
10.07.06
13:42
"Слегка" по универсальней и "чуть-чуть" покороче
74 TormozIT
 
гуру
10.07.06
14:01
(72) Ну уж тогда так. Покороче на 2 строки и попонятнее намного.

Функция СформироватьСтрокуДляМассива(Знач СтрокаПараметров)
   СтрокаКВыполнению = "Новый Массив();";
   СтрокаАргументов = СтрЗаменить(СтрокаПараметров, ",", Символы.ПС);
   Для Счетчик = 1 По СтрЧислоСтрок(СтрокаАргументов) Цикл
       СтрокаКВыполнению = СтрокаКВыполнению + " М.Добавить(" + СтрПолучитьСтроку(СтрокаАргументов, Счетчик) + ");";
   КонецЦикла;
   Возврат СтрокаКВыполнению;
КонецФункции


Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.

   Перем М;
   А = 1;
   Б = 2;
   С = 4;
   Выполнить("М = " + СформироватьСтрокуДляМассива("А, Б, С"));
КонецПроцедуры
75 fabrikant
 
10.07.06
14:03
(74) Главное идея. Реализация её дело каждого.
76 TormozIT
 
гуру
10.07.06
14:06
(75) Идея имеет право существование, как и идея (0).
77 fabrikant
 
10.07.06
14:08
(76) Ну не знаю. Имхо в (0) просто классика мегаотстоя и пример, как никогда не нужно делать. Ну а оптимизация твоя правильная.
78 GROOVY
 
10.07.06
14:13
(77, 76) Дык запостите в КЗ свою реализацию.
79 Гений 1С
 
гуру
10.07.06
14:20
(72) Фабрикант - очень горячий молодой человек. Конечно скорость компиляции выполнить можно не учитывать при таких малых масивах, но меня честно говоря напряжет пистаь КонстМассивАляФабрикант("""Вася;"";""Маша""")
И точку с запятой экранировать.
Напиши свой вариант в КЗ, но это отстой... гыгыгы
80 fabrikant
 
10.07.06
14:22
(79) Пользуйся шаблонами. и будет тебе много щастья
81 Гений 1С
 
гуру
10.07.06
14:23
(80) гыгыгы... клиника, похоже...
82 TormozIT
 
гуру
10.07.06
14:29
(79) Да, метод (72) накладывает заметные ограничения на его применение. Практически, он будет менее применим, чем (0).
83 s22
 
10.07.06
14:31
просто заменить ; на пробел
84 Гений 1С
 
гуру
10.07.06
14:32
(83) КонстМассивАляФабрикант("""Вася Иванов"";""Маша Иванова""")
И че это даст?
85 s22
 
10.07.06
14:33
Гений 1С Где ты видел в 1с переменные с пробелом?
86 s22
 
10.07.06
14:34
КонстМассивАляФабрикант("Вася Маша")
87 GROOVY
 
10.07.06
14:36
Вот я все читаю и думаю нахрена так извращаться? Ну не позволяет платформа описывать массив конструктором, так и Бог с ним! Пишите просто "Добавить()".
88 s22
 
10.07.06
14:38
(87) ну я думаю в УПП нашлось пару случаев, когда бы это позволило уменьишть код на пару строк
89 GROOVY
 
10.07.06
14:42
(88) ИМХО читабельность конфигурации падает, а это тоже не маловажно.
90 s22
 
10.07.06
14:43
GROOVY вот это не правда....
91 Гений 1С
 
гуру
10.07.06
14:46
(85) между переменными и добавить разницы не вижу, нифига код не сокращается.
А еще по хорошему все локальные переменные надо объявлять, так что бредите, батенька...
92 s22
 
10.07.06
14:47
согласен
93 Гений 1С
 
гуру
10.07.06
14:58
блин, народ. Структура имеет конструктор, а массив нет. Неужели вы в типовых видели мало случаев использования конструктора структур? Нет? То-то. То ж самое было бы и с массивом, будь бы нормальный конструктор.
Пусть те, кто грят, что конструктор массива не нужен, юзают шаблоны и не вопят.
94 Гений 1С
 
гуру
12.07.06
17:30
фабрикант, отпусти статью в кз
95 vhl
 
12.07.06
18:36
(72) А где преимущества?
Сравнить ваш код
А = 1;
Б = 2;
С = 4;
Выполнить("М = " + СформироватьСтрокуДляМассива("А, Б, С"));
И обычный:
М=Новый Массив();
М.Добавить(1);
М.Добавить(2);
М.Добавить(3);
96 SilentMan
 
12.07.06
19:37
(95) Преимущество в том, что в первом варианте используется "гениальная" функция, а во втором - стандартные средства системы.
97 TormozIT
 
гуру
12.07.06
20:22
(95) Некорректное сравнение!
Корректное - такое:

А = 1;
Б = 2;
С = 4;
Выполнить("М = " + СформироватьСтрокуДляМассива("А, Б, С"));
И обычный:
А = 1;
Б = 2;
С = 4;
М=Новый Массив();
М.Добавить(А);
М.Добавить(Б);
М.Добавить(С);

и такое:

Выполнить("М = " + СформироватьСтрокуДляМассива("1, 2, 4"));
И обычный:
М=Новый Массив();
М.Добавить(1);
М.Добавить(2);
М.Добавить(4);
98 Vozhd
 
12.07.06
22:04
(93) А когда можно ожидать появление конструктора для переменных? А то в УПП дофига переменных и все без конструктора - такая возможность улучшить код пропадает!
99 vhl
 
13.07.06
09:49
(97) в такй массиве нельзя будет добавить строки, в составе которых будут ",". А если использовать для этого переменные, то лучше лучше уж стандартым способом
100 vhl
 
13.07.06
09:52
(99)+ функция Гения этим не страдает :)
101 TormozIT
 
гуру
13.07.06
09:53
(99) Согласен, тут не поспоришь. ПОЭТОМУ давайте юзать (0)
102 TormozIT
 
гуру
13.07.06
09:55
(96) На гениальность между прочим этот способ и не собирался претендовать. Фабрикант привел его как демонстрацию своего негативного отношения к автору (0)
103 Гений 1С
 
гуру
13.07.06
16:53
Да, мой вариант вне конкуренции
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.