Выгонялка пользователей с визуальным таймером

19.03.12

База данных - Инструменты администратора БД

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

К достоинствам данной реализации «выгонялки» стоит отнести:
- таймер обратного отчета предупреждающий о скором закрытии программы;
- работа как в файловом, так и в клиент-серверном варианте;
- выгоняет всех «без вопросов»(модальные окна не помеха);
- позволяет не только выгнать пользователей, но и заблокировать вход в систему;
- позволяет НЕ выгонять определенных пользователей (с определенной ролью, например), или же исключение можно сделать для одного конкретного пользователя;
Недостаток, пожалуй, только один – необходимо внесение небольших изменений в конфигурацию.

Скачать файлы

Наименование Файл Версия Размер
управление константой
.epf 5,76Kb
189
.epf 5,76Kb 189 Скачать

Приступим к реализации.

Перво-наперво необходимо подключить внешнюю компоненту(скачать последнюю версию можно на сайте (http://dev.1tsm.ru/project/110) автора).

Далее копируем  MiracleV8.dll в каталог программы 1С

Теперь вносим необходимые изменения в конфигурацию:

Если у вас нет, то необходимо создать новый модуль в «Общие модули». Назовем его СвойМодуль, там будут располагаться все новые процедуры и функции, дабы поменьше типовую конфигурацию изменять.

Добавим туда новую функцию:


Функция ЗагрузитьMiracleV8() Экспорт
   
Miracle=Неопределено;
   
ФайлВК=Новый Файл(КаталогПрограммы()+"MiracleV8.dll");
    Если НЕ
ФайлВК.Существует() Тогда
       
Miracle=Неопределено;
    Иначе
        Попытка
           
ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"MiracleV8.dll");
           
Miracle=ПолучитьCOMОбъект("","AddIn.MiracleClass");
        Исключение
           
Miracle=Неопределено;
        КонецПопытки;
    КонецЕсли;
    Возврат
Miracle;
КонецФункции
//ЗагрузитьMiracleV8

 

 После этого в Модуль обычного приложения  в разделе переменных опишем новую глобальную переменную:


//Kavar
Перем L Экспорт;
///Kavar

 

Переменная необходима для обращения к методам внешней компоненты.

А  процедуру ПриНачалеРаботыСичтемы() этого же модуля добавим следующий код:


//Kavar
   
L=СвойМодуль.ЗагрузитьMiracleV8();
    Если
L=Неопределено Тогда
       
Сообщить("Не удалось подключить компоненту  MiracleV8",СтатусСообщения.Информация);
    Иначе
       
СвойМодуль.ПриНачалеРаботыСистемыKavar();
    КонецЕсли;
///Kavar

При успешной регистрации ВК вызывается процедура ПриНачалеРаботыСистемыKavar(), о которой мы поговорим ниже.

Для регистрации ВК необходимо первый раз запустить 1С:Предприятие с правами администратора.

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

Компоненту успешно подключили, теперь перейдем к основной задаче нашей статьи.

 

Создадим в конфигурации новую константу ЗавершениеРаботы

Типа Булево. Админам даем полные права, а остальным чтение и просмотр.

Это и будет главный инструмент по управлению выгонялкой.

Установка константы в Истина инициирует «выгонялку», а так же блокирует базу для входа новых пользователей.

Далее нужено создать обработчик ожидания, который будет проверять состояние константы.

В Глобальный модуль добавляем новый обработчик:


//Kavar
#Если Клиент Тогда
Процедура ПроверитьНеобходимостьЗавершенияРаботы() Экспорт
    
//Если ВРЕГ(ИмяПользователя())="АДМИНИСТРАТОР" Тогда //Тут можноконкретного пользователя прописать, на которого не будет действовать выгонялка.
    
Если РольДоступна("ПолныеПрава") Тогда // либо всех пользователей с определенной ролью
         
Возврат;
     КонецЕсли;
      Если
Константы.ЗавершитьРаботу.Получить()=Истина Тогда
         
СвойМодуль.ОбработатьОбработчикОжидания("ЗАВЕРШЕНИЕ");
     КонецЕсли;
КонецПроцедуры
//ПроверитьНеобходимостьЗавершенияРаботы()
#КонецЕсли
///Kavar

Теперь возвращаемя в СвойМодуль и добавляем туда две процедуры:


Процедура ОбработатьОбработчикОжидания(ВидОбработчика) Экспорт
     Если
ВидОбработчика="ЗАВЕРШЕНИЕ" Тогда
         
ОтключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияРаботы");
         
L.CreateBackTimerWnd(180,"Сохраните открытые документы! Программа будет закрыта через, сек: ");
     КонецЕсли;
КонецПроцедуры
//ОбработатьОбработчикОжидания()

Метод CreateBackTimerWnd запускает визуальный таймер, первый параметр которого время обратного отчета, в секундах. В данном примере 180 (3 минуты). А второй сообщение, которое выводится пользователям.

Вторая процедура:

Процедура ПриНачалеРаботыСистемыKavar() Экспорт
//тут проверяем закрыта ли база.
     //Если ВРЕГ(ИмяПользователя())="АДМИНИСТРАТОР" Тогда
     
Если РольДоступна("ПолныеПрава") Тогда
          Если
Константы.ЗавершитьРаботу.Получить()=Истина Тогда
              
Режим = РежимДиалогаВопрос.ДаНет;
              
Текст = "Система закрыта! Открыть?";
              
Ответ = Вопрос(Текст, Режим, 0);
               Если
Ответ = КодВозвратаДиалога.Да Тогда
                   
Константы.ЗавершитьРаботу.Установить(Ложь);
               КонецЕсли;
          КонецЕсли;
          Возврат;
     КонецЕсли;
//Не пускаем простых пользователей в базу, если закрыта.
    
Если Константы.ЗавершитьРаботу.Получить()=Истина Тогда
         
Предупреждение("Работа с базой запрещена Администратором",5);
         
ЗавершитьРаботуСистемы(Ложь,Ложь);
     КонецЕсли;
    
ПодключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияРаботы",60,Ложь);
КонецПроцедуры
//ПриНачалеРаботыСистемыKavar()

А теперь последний штрих: в Модуле обычного приложения, в предопределенную процедуру ОбработкаВнешнегоСобытия() добавляем следующий код(если этой процедуры нет в вашей конфигурации, создаём)


//Kavar
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
   
Источник=ВРЕГ(Источник);
   
Событие=ВРЕГ(Событие);
    Если
Источник="MIRACLEV8" Тогда
        Если
Событие="BACK_TIMER_WINDOW" Тогда
           
ЗавершитьРаботуСистемы(Ложь,Ложь);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
///Kavar

Данный код отлавливает завершение обратного отчета таймера и завершает работу системы.

Теперь осталось только прикрутить механизм по управлению константой. Кому лень – можно скачть готовую обработку. (см. Прикрепленный файл)

Хотелось бы выразить отдельную благодарность автору ВК Abadonna//infostart.ru/profile/1329/ ) за предоставленную компоненту, а также консультации по работе с ней.(там еще много полезных возможностей – читайте описание). 

 

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2964    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3499    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177724    1073    0    

849

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27369    79    146    

59

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61309    88    59    

73

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11742    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31105    31    18    

47

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10974    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Magister 134 19.03.12 22:24 Сейчас в теме
А как же тонкий клиент? Веб-клиент?
2. Kavar 89 20.03.12 04:08 Сейчас в теме
(1) Я с ними, на данный момент, не работаю. В статье подход описан. заточить под свои нужды, я думаю, не проблема.
3. Abadonna 3958 20.03.12 07:18 Сейчас в теме
(1)
А как же тонкий клиент?

1. Миракл со всеми бантиками вполне благополучно работает в тонком клиенте (рис.)
2. Тонкий клиент 1С, по большому счету, - изврат, все нормальные люди в терминале работают, а он и есть тонкий клиент. Даже железо "тонкий клиент" уже есть.
Прикрепленные файлы:
4. SergioVB 21.03.12 08:14 Сейчас в теме
(3) Abadonna,
Изврат не изврат. Все равно к этому все идет. Посадят на управляемые формы, хочешь или нет.
7. Magister 134 21.03.12 23:26 Сейчас в теме
(3) Хм... тогда может сможете подсказть, как решить такую проблему:
имеем 10 пользователей, у каждого сканер штрихкодов, принтер штрихкодов, и обычный принтер.
Как это всё дело заставить нормально работать в терминале, без головной боли для админа?
Сейчас все в толстом клиенте, без терминала - но хотелось бы больше нагрузки перенести на сервер.
Тонкий клиент это решит, а вот как сделать такую схему управляемой (и расширяемой до произвольного количества пользователей) при использовании терминала? Да, каждый СШК работает как виртуальный COM-порт.

Спрашиваю не из праздного любопытства, реально есть такая проблема.

P.S. А то, что Миракл работает и в тонком клиенте - не знал, спасибо за информацию.
8. Abadonna 3958 22.03.12 06:35 Сейчас в теме
(7)
А то, что Миракл работает и в тонком клиенте - не знал, спасибо за информацию.

Вообще-то она открытым текстом лежит прям в кратком описании, где ей и положено
Сервис-М MiracleV8 ;)
имеем 10 пользователей, у каждого сканер штрихкодов, принтер штрихкодов, и обычный принтер.

Для сканеров ШК надо родную ПолучитьИмяКомпьютераТО() заменить на

// Функция возвращает строку c именем компьютера для нужд торгового оборудования.
//
// Возвращаемое значение:
// Строка - имя компьютера для торгового оборудования.
//

Функция ПолучитьИмяКомпьютераТО() Экспорт
WSS = Новый COMОбъект("WScript.Shell");
WSSE = WSS.Environment("Process");
мИмяКомпьютера = ВРег(WSSE.Item("ClientName"));
Если ПустаяСтрока(мИмяКомпьютера) Тогда
мИмяКомпьютера = ВРег(ИмяКомпьютера());
КонецЕсли;
Если мИмяКомпьютера = "CONSOLE" Тогда
мИмяКомпьютера = ВРег(ИмяКомпьютера());
КонецЕсли;
Возврат мИмяКомпьютера;
КонецФункции // ПолучитьИмяКомпьютераТО()

Тогда вернется имя компа, с которого проброшен порт в терминал (их родной вернет имя самого терминала)
Могу сказать, что спокойненько тестировал новый СШК из нашего офиса, подключившись через VPN на терминал клиента.
Lapitskiy; Magister; cleaner_it; +3 Ответить
9. Magister 134 22.03.12 21:53 Сейчас в теме
(8) Просто последний раз смотрел на Miracle давно-давно, как только она была выложена тут.
//
Спасибо, хороший вариант!
А номер порта какой получится? У каждого клиента будут свои COM1, COM2 и т.д., или нумерация сквозная?
5. Кафтан 21.03.12 10:14 Сейчас в теме
6. Abadonna 3958 21.03.12 13:26 Сейчас в теме
Я что-то решил у своих сделать не через Загрузить...

Функция ЗагрузитьMiracleV8() Экспорт
Попытка
ПодключитьВнешнююКомпоненту("AddIn.MiracleV8");
Miracle=Новый COMОбъект("AddIn.MiracleClass");
Исключение
Miracle=Неопределено;
Сообщить("Не удалось подключить MiracleV8",СтатусСообщения.Информация);
КонецПопытки;
Возврат Miracle;
КонецФункции
10. klel 23.03.12 20:47 Сейчас в теме
Спасибо огромное долго искал что то подобное :)
11. Lukich66 82 26.03.12 09:55 Сейчас в теме
Ничего не имею против данной реализации, но почему-то подумалось,а что в 1с не понимают,что подобный "сервис" необходим? А так "вламывать" в конфу черт-знает что- смысл? За что деньги плачены?
12. veforg 27 26.03.12 10:00 Сейчас в теме
(11) Lukich66, 1с поступает правильно. Если бы они всякий функционал встраивали, то нам, программистам, нечего будет есть )
13. Abadonna 3958 26.03.12 12:46 Сейчас в теме
(11) Lukich66,
но почему-то подумалось,а что в 1с не понимают,что подобный "сервис" необходим?

В свое время мне подумалось: а что им стоит сделать наипростейший индикатор прогресса на форме 7.7?
Это было еще на 13-ом релизе движка. Вышел и 27-й, а ведь так и не сделали!
Именно из-за этого прогресс-бара я и начал писать ВК ;)))
Или вот: что им стоит сделать в 8.2 индикатор раскладки клавиатуры? В Конфигураторе есть (на фиг там не нужен), а вот в самой проге - нет, хотя в терминальном режиме бывает нужен.
14. Lukich66 82 26.03.12 15:52 Сейчас в теме
Уровень активности сообщества 1с по 5-ти бальной шкале=1.5, думаю со временем мы сможем заставить "трудяг-производителей" сделать нам "красиво"- вроде все как бы к этому идет,ну с "отскоками" конечно, неоспоримо 8.2>8.1>8.0>7.7>6.0>2.0проф- явно прослеживаются парралели с MicroSoft Win- азарт и прыть оч.похожи. А нам "сообщникам" дел хватит и без "глобальных" замахов.
15. electronik 26.03.12 17:14 Сейчас в теме
16. jeniav 27.03.12 08:16 Сейчас в теме
Неплохая идея, надо попробовать, а то вечно пользователь ничего не видит и не читает
17. botcc 27.03.12 12:40 Сейчас в теме
Конечно круто, но у меня более 700 челов в 1ске регистрить dll каждому на компе... да меня свора наших сисадминов обгладает...
20. Kavar 89 27.03.12 15:04 Сейчас в теме
(17),(18), Если пользователи в терминале, то достаточно один раз на сервере(ах) 1С с админскими правами запустить.
А вот если по сети, тогда на каждом компе надо регить.
18. bissov 31 27.03.12 13:19 Сейчас в теме
Не совсем понимаю, а чтобы с SQL выгоняло надо компоненту у каждого пользователя регестрировать или вообще всем админские права давать?
23. Abadonna 3958 30.03.12 03:23 Сейчас в теме
(18) bissov,
надо компоненту у каждого пользователя регестрировать или вообще всем админские права давать?

Забавно, что новая генерация "чистых восьмерочников" задает вопросы, которые на сто рядов обсосаны семерочниками года эдак с 2000-го. Подключение ВК хоть к семерке, хоть к восьмерке а равно и проблема с правами по большому счету вообще к 1С отношения не имеют. Любой COM (ActiveX) обязан прописаться в реестре Windows, если у пользователя таких локальных прав нема - то и свободен он, как птица в полете;)
19. Pashikuss 27.03.12 14:16 Сейчас в теме
21. farg066 28.03.12 15:51 Сейчас в теме
Помогите, пожалуйста
Все сделал, как написано автором, но при завершении работы возникает следующая ошибка

---------------------------

{Обработка.ТОСервер(3321)}: Ошибка при вызове метода контекста (Найти): Неверное имя колонки
ТО = Оборудование.Найти(Источник, "ИмяИсточникаВнешнегоСобытия");
по причине:
Неверное имя колонки

---------------------------

До возникновения ошибки в переменной источник содержится след инфа “ MiracleV8 ”
22. Kavar 89 28.03.12 18:16 Сейчас в теме
(21) Добавь условие, что если Источник = “ MiracleV8 ”
не вызывался этот метод.
24. denj 30.03.12 08:51 Сейчас в теме
неплохая выгонялка! только вот окно маловатенькое библиотеки, пользователи поначалу не замечали ее
25. Kavar 89 30.03.12 09:26 Сейчас в теме
(24) Окно таймера? Нормальное окно. в глаза сразу бросается. очень сложно его не заметить.
26. denj 30.03.12 10:08 Сейчас в теме
(25) ну видимо пользователи слепые такие, им надо окно на полэкрана чтобы выскакивало наверное
27. Abadonna 3958 30.03.12 23:03 Сейчас в теме
(24) denj,
только вот окно маловатенькое библиотеки, пользователи поначалу не замечали ее

А сделай его побольше, эти [цензура] сразу начнут жаловаться, что оно мешает.
Плавали - знаем!
28. Alex353 6 03.04.12 08:26 Сейчас в теме
При загрузке компоненты выскакивает сообщение об ошибке, что не найден файл bass.dll. Поиск что это за файл и в какой пакет входит результатов не принес. Что это за файл никто не в курсе?
29. Kavar 89 03.04.12 10:11 Сейчас в теме
(28)Читайте последний комментарий на страничке ВК.
Короче, более старую версию надо загрузить.
30. vitn 19.04.12 00:00 Сейчас в теме
31. shurix 02.06.12 22:47 Сейчас в теме
Для 1С 7.7 работать не будет случаем?
33. Kavar 89 04.06.12 05:31 Сейчас в теме
(31) Эта ВК поддерживает 1С 7.7 так, что работать будет. код только переделать нужно.
32. eoego1 02.06.12 22:50 Сейчас в теме
Хороший которого не хватало. Спасибо!
34. ITEkb 05.06.12 09:59 Сейчас в теме
Идея хорошая, но мне к сожалению не помогла.
Сервер на линуксе. СОМ-объекты и регистрация dll не по адресу.
35. denj 06.06.12 12:34 Сейчас в теме
а на windows 7 не работает? почему то пишет что не подключена библиотека, хотя лежит в папке где полагается..
36. Kavar 89 06.06.12 12:37 Сейчас в теме
(35) Для регистрации библиотеки первый раз нужно запустить 1С от имени Администратора.
37. denj 06.06.12 12:37 Сейчас в теме
(36) ну я и есть администратор
38. Kavar 89 06.06.12 12:53 Сейчас в теме
(37) В Win7 если ты работаешь под учеткой администратора, не значит, что ПО у тебя от имени администратора запускается. Либо ПКМ -> "Запуск от имени администратора", либо отключить UAC, что крайне не рекомендуется.
39. AlX0id 10.07.12 08:31 Сейчас в теме
Я правильно понимаю, что для работы этой вещи необходимо наличие оной компоненты на каждом компьютере каждого пользователя?
40. Kavar 89 10.07.12 13:46 Сейчас в теме
(39) AlX0id, Если 1С сетевая и запускается у каждого пользователя локально - да. если работа идет в терминальном режиме - одна компонента на сервере.
41. AlX0id 10.07.12 14:00 Сейчас в теме
(40)
тады не вариант.. эт за каждым компом следить надо будет.. перерегистрировать ее в случае чего..
42. Kavar 89 11.07.12 13:36 Сейчас в теме
(41)Ну дык, платформу то так и так на всех обновляешь. при обновлении ее просто в новую папку перекинуть надо.
43. AlX0id 11.07.12 14:20 Сейчас в теме
(42)
Ну дык, платформу то так и так на всех обновляешь

.. и еще десяток компонент обновишь - так что ли?
Я не в претензии, конечно - просто указываю недостатки подобного подхода.
44. 4ittmk 08.07.13 17:39 Сейчас в теме
- выгоняет всех «без вопросов»(модальные окна не помеха);
У меня не выгоняет, например, если пользователь нажал перед этим Справка/О программе...
или
Просто запустил базу, вылетело окно "Итоги в информационной базе рассчитаны по..." и пользователь больше к базе не прикасался так и не закрыв окно.
45. 4ittmk 08.07.13 17:57 Сейчас в теме
Не понравилось, что если начать выгонять пользователей, а потом отменить секунд через 30, то все равно выгонит, хотя константа уже обнулена.
Оставьте свое сообщение