После выхода платформы 8.2.11 появилась задача установить на один физический сервер несколько серверов приложений 1С 8.2 - 8.2.10 и 8.2.11. Информацию как это сделать в документации по 1С я не нашел, более того, говорилось о том, что второй сервер возможно запускать только в ручном режиме.
Для начала необходимо распаковать архив в какую-нибудь папку, зайти в нее командной строкой и запустить команду создания сервиса, например:
"INSTSRV "Агент сервера 8.2.11" "C:\Program Files\1cv82\8.2.11.229\bin\ragent.exe"", Где Агент сервера 8.2.11 - придуманное имя сервиса. Если всё сделано правильно, то появится сообщение, подтверждающее успешное создание сервиса:
Теперь зайдите в Администрирование - Службы (Services). Находите только что созданную службу, двойной клик вызывает свойства сервиса. На первой вкладке можно выбрать параметры запуска - Automatic (автоматически при загрузке компьютера), Manual (Вручную) и Disabled (отключено). Для работы созданного сервиса в отдельном окне необходимо отметить на второй вкладке (Вход в систему) пункт Allow Service to Interact with Desktop (Разрешить взаимодействие с рабочим столом) + указать параметры входа в систему.
Следующим шагом является редактирование реестра. Запускаем редактор реестра Regedit. Ищем строку "C:\Program Files\1cv82\8.2.11.229\bin\ragent.exe" и меняем ее на правильную команду запуска с параметрами, например: ""C:\Program Files\1cv82\8.2.11.229\bin\ragent.exe" /Debug -srvc -agent -regport 11641 -port 11640 -range 11660:11691 -d "C:\Program Files\1cv82\srvinfo2""
Запустить сервис, если он не отключен, можно несколькими способами, во-первых через командную строку: Net Start ServiceName - где SеrviceName - имя Вашего сервиса. И другим способом - непосредственно через апплет административной панели - службы.
Чтобы удалить сервис, его сначала необходимо остановить: net stop ServiceName, затем опять же в коммандной строке выполнить команду INSTSRV ServiceName remove.
P.S. - информация для "особо умных" скептиков:
На http://users.v8.1c.ru/Adm3413.aspx цитата:
Установка нового экземпляра сервера 1С:Предприятия 8.1/8.2 при работающем сервере 1С:Предприятия той же версии
В 1С:Предприятии отсутствуют штатные возможности по регистрации нескольких экземпляров сервера 1С:Предприятия одной версии (8.1 или 8.2).
Если после установки предполагается запуск нового экземпляра сервера, а не простое обновление версии 1С:Предприятия, то при установке 1С:Предприятия с теми же первыми двумя цифрами номера версии не следует регистрировать сервер 1С:Предприятия как сервис.
Дополнительные экземпляры сервера 1С:Предприятия могут быть запущены только из командной строки. При этом важно, чтобы они различались не только портами, но и каталогами реестра кластера.
Скорее всего у вас не установлена или установлена старая версия шрифта EanGnivc. Для корректного отображения штрих-кода нужно:
1. Скачать последнюю версию шрифта, например, здесь (скачать Файл шрифта EanGnivc) или взяв из нового дистрибутива конфигурации с первого диска (DISK1)
2. Для установки шрифта выполните следующие действия:
- откройте Панель управления (Control Panel) операционной
системы, для этого нажмите кнопку "Пуск", выберите команды
"Настройка" (Settings) и "Панель управления" (Control
Panel);
- в Панели управления дважды щелкните значок "Шрифты" (Fonts);
- в меню "Файл" (FilE) выберите команду "Установить шрифт"
(Install New Font);
- в поле со списком "Диски" (Drives) выберите нужный диск;
- в поле "Папки" (Folders) откройте каталог, в котором находится
файл EANG000.ttf
- в списке "Список шрифтов" (List of fonts) выберите строку
"EanGnivc (True Type)" и нажмите кнопку OK. Все...
Программа rundll32.exe входит в стандартную поставку всех операционных систем семейства Windows и позволяет выполнять различные функции, описанные в библиотеках, драйверах или ActiveX-объектах, как будто они выполняются из программы. Также эта программа входит в состав новой операционной системы Windows Vista, поэтому обзор новой операционной системы, предназначенный для опытных пользователей, никак нельзя назвать законченным, если он не будет содержать описание команд rundll32.exe, доступных в Windows Vista.
Синтаксис использования программы rundll32.exe следующий: rundll32.exe «библиотека», «функция» «параметры». При этом очень важно понимать, что название функции, хранящейся в библиотеке, зависит от регистра, которым вы ее написали. То есть, например, функции MessageBox и messageBox, в понимании программы rundll32.exe, являются различными функциями, поэтому если в названии функции вы напишете вместо прописной буквы строчную, программа rundll32.exe выдаст ошибку. Название же самой программы rundll32.exe и название библиотеки можно указывать как строчными, так и прописными символами.
Пример:
Приведу список наиболее значимых команд (в котором найдете ОЧЕНЬ интересные команды, ну а как их использовать, думайте сами!):
* rundll32 shell32.dll,Control_RunDLL hotplug.dll - диалоговое окно Отключение или извлечение аппаратного устройства
* rundll32 diskcopy,DiskCopyRunDll - вызов диалога "Копирование диска".
* rundll32 keyboard,disable - отключение клавиатуры, действует до следующей перезагрузки.
* rundll32 mouse,disable - отключение мыши вплоть до перезагрузки.
* rundll32 krnl386.exe,exitkernel - выгрузить ядро системы, выход из Windows.
* rundll32 mshtml.dll,PrintHTML "HtmlFileNameAndPath" - распечатать документ HTML, где "HtmlFileNameAndPath" - путь к файлу и его имя.
* rundll32 мсprint2.dll,RUNDLL_PrintTestPage - распечатать тестовую страницу на принтере.
* rundll32 netplwiz.dll,AddNetPlaceRunDll - вызов мастера подключения нового сетевого ресурса "Добавление в сетевое окружение".
* rundll32 rnaui.dll,RnaWizard - вызов мастера "Удаленный доступ к сети".
* rundll32 rnaui.dll,RnaWizard /1 - вызов мастера "Удаленный доступ к сети" без отображения начального окна.
* rundll32 shell,ShellExecute - открыть Проводник (папка "Рабочий стол").
* rundll32 shell32,Control_RunDLL - открыть в Проводнике папку "Панель управления".
* rundll32 shell32,Control_RunDLL appwiz.cpl,,n - вызов диалогового окна "Установка и удаление программ", в котором будет открыта вкладка с номером "n" (от 1 до 3).
* rundll32 shell32,Control_RunDLL main.cpl @0 - открыть диалог "Свойства мыши".
* rundll32 shell32,Control_RunDLL main.cpl @1 - открыть диалог "Свойства клавиатуры".
* rundll32 shell32,Control_RunDLL main.cpl @2 - открыть папку "Принтеры".
* rundll32 SHELL32,SHHelpShortcuts_RunDLL PrintersFolder - открыть папку "Принтеры" (другой способ).
* rundll32 shell32,Control_RunDLL main.cpl @3 - открыть папку "Шрифты".
* rundll32 SHELL32,SHHelpShortcuts_RunDLL FontsFolder - открыть папку "Шрифты" (другой способ).
* rundll32 SHELL32,Control_RunDLL modem.cpl, add - открыть диалог "Свойства модема".
* rundll32 shell32,Control_RunDLL timedate.cpl - открыть диалог "Дата и время".
* rundll32 shell32,OpenAs_RunDLL - вызвать диалог "Открыть с помощью...".
* rundll32 shell32,ShellAboutA WINHOWTO.RU - информация о версии Windows.
* rundll32 shell32,SHExitWindowsEx 0 - закрыть все программы, перегрузить оболочку.
* rundll32 shell32, SHExitWindowsEx 1 - выключить ПК.
* rundll32 SHELL32, SHExitWindowsEx -1 - перегрузить оболочку Windows.
* rundll32 shell32, SHExitWindowsEx 2 - перегрузить ПК.
* rundll32 shell32,SHExitWindowsEx 4 - принудительно закрыть все программы.
* rundll32 shell32,SHExitWindowsEx 8 - выход из Windows и выключение ATX-совместимого ПК.
* rundll32 shell32,SHFormatDrive - вызов диалога форматирования диска А:.
* rundll32 SHELL32,SHHelpShortcuts_RunDLL AddPrinter - запуск "Мастера установки принтера".
* rundll32 shell32,SHHelpShortcuts_RunDLL Connect - запуск мастера подключения сетевого диска.
* rundll32 SHELL32,SHHelpShortcuts_RunDLL PrintTestPage - распечатать тестовую страницу.
* rundll32 sysdm.cpl,InstallDevice_Rundll - вызов мастера установки оборудования.
* rundll32 url.dll,FileProtocolHandler %1 - открыть веб-страницу, где %1 - URL сайта (включая http://).
* rundll32 url.dll,MailToProtocolHandler %1 - создать новое письмо, где %1 - e-mail адресата.
* rundll32 user,CASCADECHILDWINDOWS - расположить все окна каскадом.
* rundll32 user,TILECHILDWINDOWS - расположить все окна по экрану.
* rundll32 user,disableoemlayer - сбой системы (!) - выключить все функции ввода-вывода
(клавиатура, дисплей, мышь). В результате будет черный экран с курсором и ни на что не реагирующая система, однако Windows продолжает работать.
* rundll32 user,ExitWindowsExec - быстрая перезагрузка Windows.
* rundll32 user,RepaintScreen - выполнить команду "Обновить".
* rundll32 user,SetCaretBlinkTime n - задать частоту мигания курсора, соответствующую значению параметра n.
* rundll32 user,SetCursorPos - переместить курсор мыши в верхний левый угол экрана.
* rundll32 user,SetDoubleClickTime n - задать скорость двойного нажатия левой кнопки мыши (Double Click), соответствующую параметру n.
* rundll32 user,SwapMouseButton - поменять местами клавиши мыши (обратная смена невозможна).
* rundll32 user,WNetConnectDialog - вызов диалога "Подключение сетевого диска".
* rundll32 user,WNetDisconnectDialog - вызов диалога "Отключение сетевого диска".
* rundll32 AppWiz.Cpl,NewLinkHere %1 - запуск мастера создания нового ярлыка, где %1 - путь к исходному файлу.
* rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL Connect. Вызвать мастер подключения сетевых дисков.
* rundll32.exe shell32.dll, ShellAboutA. Вызвать диалог, отображающий версию операционной системы Windows. Также данный диалог можно отобразить, выполнив команду winver.exe.
* rundll32.exe IEAKENG.dll, BrowseForFileA. Отображает дерево файловой системы жесткого диска компьютера.
* rundll32.exe ndfapi.dll, NdfRunDllHelpTopic «html-страница». Вызвать диалог HELP AND SUPPORT на указанной странице. Например, в качестве html-страницы можно использовать вызов mshelp://Windows/?id=33307acf-0698-41ba-b014-ea0a2eb8d0a8.
* rundll32.exe shell32.dll, OpenAs_RunDLL "путь и имя файла". Вызвать диалог OPEN AS… для открытия данного файла.
* rundll32.exe shell32.dll, Control_RunDLL Cliconfg.dll. Отображает диалог SQL Server Client Network Utility.
* rundll32.exe shell32.dll, Control_RunDLL Hotplug.dll. Отображает диалог удаления съемного устройства.
* rundll32.exe admparse.dll, CheckDuplicateKeysA "путь и имя файла". Переписывает содержимое данного файла.
* rundll32.exe IEAKENG.dll, BToolbar_SaveA "путь к папке". Создает папку. Если данная папка уже существует, тогда все ее содержимое будет удалено.
* rundll32.exe appwiz.cpl, GetProgramsOnline. Запускает браузер Internet Explorer и загружает страницу http://g.msn.com/WMHFUSEN/101724.
* rundll32.exe shell32.dll, ShellExec_RunDLL "команда". Выполняет команду.
* rundll32.exe url.dll, FileProtocolHandler "каталог". Открыть папку. Если вы не укажете папки, тогда будет открыта папка вашего профиля.
* rundll32.exe WININET.dll, RunOnceUrlCache "путь к папке". Удаляет все файлы указанной папки, имеющие атрибут FILEATTRIBUTETAGINFORMATION.
* rundll32.exe xwizards.dll, ProcessXMLFile "путь и имя xml-файла". Выполнить xml-файл.
* rundll32.exe user32.dll, mouse_event. Выполнить нажатие правой клавиши мыши.
* rundll32.exe user32.dll, SetCursorPos. Установить курсор в правый нижний угол экрана.
* rundll32.exe dfshim.dll, KillService. Остановить работу службы фонового обновления dfsvc.exe
* rundll32.exe IERNONCE.dll, RunOnceExProcess. Выполняет команды, описанные в ветви реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx (или в ветви корневого раздела HKCU).
Оптимальным решением является установка Bullzip PDF Printer . После установки в системе появляется виртуальный принтер, с помощью которого можно "печатать" в файл pdf из любого приложения. Программа бесплатная, работает в терминале и имеет поддержку русского языка.
После установки, можно печатать напрямую используя код:
Здесь функция ПолучитьПринтерПоУмолчанию() нужна для того чтобы вернуть печатной форме принтер по умолчанию, т.к. если напечатать без предварительного просмотра то печать пойдет на виртуальный PDF принтер BullzipPDFPrinter.
Копирование данных из одного созданного экселя в другой и открытие excel (с сохранением шрифта, рамки положения текста) и с созданием закладки на которую как раз копируются данные:
Зарегистрированная внешняя компонента хранится в реестре следующим образом:
Предположим, что у нас есть внешняя компонента E:\Events\Events.dll.
В 1С мы пишем:
Теперь зайдем в программу regedit.exe (Пуск-Выполнить-Regedit.exe).
Если регистрация прошла успешно, то в реестре мы увидим следующие записи (я сделал поиск по подстроке "AddIn.Events" в редакторе реестра regedit.exe, нажав сочетание клавиш Ctrl-F):
Значение {2E5E6B2C-EFE0-4872-9AB6-DF187B9CE397} является уникальным для каждого OLE-объекта идентификатором (CLSID). Его должен явно задать разработчик в коде внешней компоненты.
Значение ProgID, которое в нашем случае - "AddIn.Events" также задает разработчик внешней компоненты.
Чтобы в реестре появились эти записи, необходимы права доступа:
Начиная с Windows 2000, обычный пользователь не имеет прав доступа к указанным выше ветвям реестра. Нужны права или администратора, или привилегированного пользователя Windows. После первой загрузки компонента пропишет себя в реестре, и ее смогут использовать и непривилегированные пользователи Windows.
Где 1С ищет внешнюю компоненту?
Если при загрузке внешней компоненты вы не указываете полный путь, такой как E:\Events\Events.dll или сетевой путь наподобие \\ВашСервер\ПапкаГдеЛежатВК\Events.dll, то 1С ищет внешние компоненты
-относительно папки 1Cv7\BIN (КаталогПрограммы())
-относительно каталога информационной базы (КаталогИБ())
Метод ЗагрузитьВнешнююКомпоненту(), обнаружив ВК по новому пути, обновляет ее регистрацию в реестре
Это означает, например, что на терминальном сервере программист, который вошел в тестовую базу, где лежит ВК, и потом ее стер, оставит у всех пользователей запись в реестре о несуществующей ВК.
Аналогичная проблема - когда ВК по данному пути недоступна тем или иным пользователям.
А поскольку пользователи не имеют права на изменение записей в реестре, то у них перестанет загружаться и внешняя компонента.
В 1С:Предприятие 8.0 убрана возможность загрузки ВК относительно каталога ИБ.
В 7.7 же, чтобы избежать проблем, всегда убирайте ВК из каталога ИБ, и прописывайте полные пути (или складывайте DLL в общую для всех пользователей папку BIN).
Кардинальное решение проблемы - VKLoader и RegsvrEx
Имеется компонента VKLoader.dll (автор - Александр Орефков), которая позволяет решить проблемы с регистрацией компонент.
Цитата:
"vkloader (далее ВК) - внешняя компонента для 1С-Предприятия 7.7, которая может загружаться без ее регистрации в реестре, и загружать другие внешние компоненты без их регистрации. Предназначена для беспроблемной загрузки внешних компонент пользователями, не имеющими прав на запись в HKCR ветку реестра.
Принцип работы основан на перехвате обращения 1С к WinAPI функциям CLSIDFromProgID и CoCreateInstance.
Также ВК решает проблему "зависания" процесса 1С в памяти при закрытии программы при использовании несовсем корректно написанных сторонних внешних компонент".
Пример использования vkloader:
Замечу, что сама vkloader "умеет" загружать себя без прав доступа к реестру.
Еще одно решение: RegsvrEx
Автор - AlexQC.
Регистрирует компоненты (OLE-объекты) в пользовательской ветке реестра. RegsvrEX
Функция возвращает список значений содержащий список баз установленных на данном компьютаре. В котором в качестве значения указывается путь до базы, а в представлении название базы, так как она отображается в окне выбора баз при запуске 1С. Если баз не обнаруженно то возвращает строку "Error"
При разработке отчетов или обработок рано или поздно приходится сталкиваться с необходимостью определения имени локального диска, сменного накопителя (флешки), сетевого диска. В данной статье представлены 3 способа получения списка дисков компьютера:
Примеры для 8-ой версии, для того чтобы заработало в 7-ой замените:
Установка:
1. Убедитесь, что на сервере установлена MS Windows NT Server и он является PDC; MS IE (не ниже 4.01) и протокол TCP/IP.
2. Запустить установку MS SQL Server 7.0-2000, выбрав следующие параметры:
* Install SQL Server 7.0-2000 Components
* Database Server – Standard Edition
* SQL Server authentication
* Оставить по умолчанию Login: System Account (sa)
Остальные пункты оставить по умолчанию.
3. Запустить установку MS SQL Service Pack 1, используя параметры по умолчанию, кроме указанных выше.
Перезагрузить сервер.
Настройка на сервере Enterprise Manager:
1. Убедиться, что SQL Server запускается автоматически при старте системы (Control PanelServices).
2. Запустить MS SQL ServerEnterprise Manager и сделать следующее:
* Databasesправой кнопкой мышиNew Database
* Задать Name: (например Cv77) не должно начинаться с цифры
* Установить GeneralInitial Size – 64 MB
* Установить Transaction LogInitial Size – 32 MB
* SERVER_NAMEправой кнопкой мышиEdit SQL Server Registration:Use SQL Server Log: sa, Pas: задать.
* SERVER_NAMEправой кнопкой мышиProperties
* GeneralAutostart SQL Server
* SecurityAuthenticationSQL Server and Windows NT
* SecurityStartup and run SQL Server in the following accountSystem Account (sa)
3. В Windows 2000 Server в свойствах сетевого подключения выбрать "служба доступа к файлам ...", в ее свойствах установить "макс. пропускная способность для сетевых приложений", а в свойствах "мой компьютер", закладка "дополнительно", параметры быстродействия "для служб ...", нажать "изменить" проверить объем файла подкачки: исходный размер = размер_операт._памяти х 1,5; максимальный размер = размер_операт._памяти х 2, также проверить объем свободного место на диске, где расположен файл подкачки.
Выключить сервер.
Установка на сервер 1С:Предприятие 7.7 для SQL:
1. Выключить сервер и установить ключ защиты на LPT порт.
2. Установить 1С:Предприятие для SQL.
3. Установить драйвер защиты, скопировать его в папку Startup (All Users) и запустить (он всегда должен быть запущен!).
4. Создать новую папку (например DbSQL).
5. Скопировать в DbSQL из существующего каталога базы данных или каталога типовой конфигурации (если создается новая база): каталоги пользователей (как правило совпадают с именами пользователей), каталог USERDEF.
6. Запустить Конфигуратор (в формате DBF), указав путь к существующей (DBF) базе или типовой конфигурации (если создается новая база).
7. В Конфигураторе: АдминистрированиеВыгрузить данные, в папку DbSQL, задав имя zip-файла (например Db.zip), закрыть Конфигуратор.
8. Запустить Конфигуратор в формате SQL, указав путь к новому каталогу DbSQL.
9. В Конфигураторе: АдминистрированиеПараметры базы данных, указать: Сервер: (имя сервера в сети), База Данных: (созданная в Enterprise ManagerDatabases) Cv77, Пользователь: sa, Пароль: ранее заданный.
10. В Конфигураторе: АдминистрированиеЗагрузить данные из DbSQLDb.zip, закрыть Конфигуратор.
Пути к старой базе DBF лучше не удалять!
Установка на рабочую станцию клиента MS SQL Server 7.0-2000:
1. ТОЛЬКО в Windows-95: Запустить установку MS SQL Server 7.0-2000, выбрав следующие параметры:
* Install SQL Server 7.0-2000 Prerequisites
* Windows-95
* DCOM95
2. Далее на всех клиентах установка производится точно так же, как на сервер, за исключением следующего:
* Необходимо выбрать только компоненту Client Connectivity, остальные галочки убрать.
3. В MS SQL ServerClient Network Utility выбрать протокол TCP/IP.
4. Установить MDAC_2.7 или более позднюю версию (устанавливается при наличие MS IE не ниже 4.01).
Установка на рабочую станцию 1С:Предприятие 7.7 для SQL:
1. Установка производится точно так же, как на сервер, потом прописать путь к каталогу SQL базы DbSQL.
После разнесение сервера 1С:Предприятия и SQL-сервера на разные машины при загрузке dt-файла в базу расположенную на SQL-сервере стали получать ошибку "Недостаточно свободной памяти на сервере 1С:Предприятия".
или (Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: there is insufficient memory in resource pool ‘default’ to run this query. HRESULT=80040E14 )
Решение проблемы:
1. При возникновении ошибки перезапустить службу сервера 1С.
2. Использовать много процессов(В свойствах кластера поставить галочку "Много процессов"). Добавить рабочие процессы, оптимальное значение 4-5 процессов.
3. Использовать регламентный перезапуск рабочих процессов. Но это не снимет проблему. Просто сократит "утечку" памяти.
4. Для операций с базой данных, например копирование базы данных использовать средства ms sql, а не работу с файлами dt.
5. Включите запись событий DBMSSQL в Технологический журнал
(Смотрите текст файла "logcfg.xml" ниже или воспользуйтесь обработкой с ИТС НастройкаТехнологическогоЖурнала.epf) и определите, на загрузке какой таблицы происходит ошибка. Если config, то выполните загрузку в файловый вариант и очистку конфигурации поставщика:
5.1 Для этого надо проверить конфигурацию на наличие некорректной информации. Для этого следует выполнить команду меню Конфигурация - "Проверка конфигурации" (НЕ ТЕСТИРОВАНИЕ!) с ОДНИМ установленным флажком "Проверка логической целостности конфигурации". При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически
5.2 Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении ("Удалена некорректная информация о метаданных"), значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика.
Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать - Процесс", галочкой Включить процесс.
Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка "Много процессов"
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов
По поводу перезапуска рабочих процессов - с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.
Оптимизация перезапуска рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.