Кэш сервера 1С — это не одна папка. Клиент хранит кэш конфигурации и клиент-серверных вызовов в профиле пользователя Windows, кластер — сеансовые данные в каталоге srvinfo\reg_1541\snccntx…. «Странности после обновления» чаще всего лечатся очисткой кэша клиента, сервер чистят реже и только с остановкой службы. Ниже — что удалять, что трогать нельзя, скрипты для Windows и Linux и код 1С для подготовки к обслуживанию.
| Симптом | Что чистить | Поможет? |
|---|---|---|
| После обновления конфигурации у части пользователей старые формы, ошибки при открытии форм, «Ошибка формата потока» при запуске | Кэш клиента у этих пользователей | Обычно да |
| Та же ошибка у всех сразу, особенно после аварийной остановки сервера | Сеансовые данные кластера (snccntx) при остановленной службе | Часто да |
| «Версия хранилища сеансовых данных отличается от версии платформы» | snccntx при остановленной службе | Да |
| Диск сервера забит, srvinfo весит десятки гигабайт | Сначала понять, что растёт: snccntx, журнал регистрации или dumps | Частично |
| «Несоответствие версий клиента и сервера 1С:Предприятия» | Ничего: поставить клиент версии сервера | Нет |
| «Файл базы данных поврежден» в файловой базе | Ничего: тестирование и исправление, утилита chdbfl.exe | Нет |
| 1С просто медленно работает | Искать причину: блокировки, запросы, СУБД, память rphost | Почти никогда |
Правило простое: ошибка у одного-двух пользователей — чистим их клиентский кэш, у всех сразу — сеансовые данные на сервере, ошибка про версию или повреждение базы — кэш ни при чём. Если «кэшем» называют память, которую набрал rphost, файлы не помогут: в консоли кластера есть перезапуск рабочих процессов и лимиты «Временно допустимый объем памяти процессов» и «Критический объем памяти процессов».
Кэш живёт в профиле Windows, отдельно для каждого пользователя и каждой базы. Имя папки — ID базы из списка баз %APPDATA%\1C\1CEStart\ibases.v8i: строка ID= в разделе с именем базы.
| Путь | Что там | Удалять? |
|---|---|---|
%LOCALAPPDATA%\1C\1cv8\<ID базы> | кэш конфигурации (Config, ConfigSave, SICache) и кэш клиент-серверных вызовов (vrs-cache в подпапке пользователя) | Да, при закрытой 1С — это и есть кэш |
%APPDATA%\1C\1cv8\<ID базы> | локальные настройки клиента, файлы *.pfl | Можно, если не помогла очистка кэша: настройки форм и отчётов хранятся в базе |
%APPDATA%\1C\1CEStart | список баз ibases.v8i и настройки программы запуска | Нет |
%APPDATA%\1C\1cv8\tmplts | шаблоны конфигураций и обновлений, бывают гигабайты | Нет, иначе типовую будет нечем обновлять |
%APPDATA%\1C\1cv8\ExtCompT | внешние компоненты, установленные в клиенте | Нет |
%LOCALAPPDATA%\1C\1cv8\conf | программные лицензии, активированные для пользователя | Нет |
%LOCALAPPDATA%\1C\1cv8\appsrvrs.lst | список серверов в консоли кластера | Нет |
%LOCALAPPDATA%\1C\1cv8\dumps | дампы падений клиента | Да |
Папки баз, которые убрали из списка, остаются на диске — их тоже можно удалить.
Ключ /ClearCache. В окне запуска выделите базу, нажмите «Изменить…» и в поле «Дополнительные параметры запуска» впишите /ClearCache. По справке платформы ключ очищает кэш клиент-серверных вызовов (метаданные форм, модули) и сохранённый индекс поиска по текстам модулей. После проверки ключ уберите, иначе каждый запуск будет начинаться с пустого кэша.
Удаление папки радикальнее: уходит и кэш конфигурации, поэтому первый запуск будет долгим — клиент заново скачает метаданные. Скрипт удаляет только папки с GUID в имени и не трогает лицензии и служебные файлы:
# clear-1c-client-cache.ps1 — очистка кэша 1С на компьютере пользователя. Сначала закройте 1С.
# .\clear-1c-client-cache.ps1 кэш всех баз текущего пользователя
# .\clear-1c-client-cache.ps1 -BaseName "Торговля" кэш одной базы из списка баз
# .\clear-1c-client-cache.ps1 -AllUsers все профили терминального сервера
param(
[string]$BaseName = '',
[switch]$AllUsers
)
$guid = '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
$homes = if ($AllUsers) { (Get-ChildItem (Split-Path $env:USERPROFILE) -Directory).FullName } else { @($env:USERPROFILE) }
foreach ($userHome in $homes) {
$cache = Join-Path $userHome 'AppData\Local\1C\1cv8'
if (-not (Test-Path $cache)) { continue }
# Папка кэша называется по ID базы — строке ID= в разделе [Имя базы] файла ibases.v8i
$ids = @()
if ($BaseName) {
$list = Join-Path $userHome 'AppData\Roaming\1C\1CEStart\ibases.v8i'
$section = ''
foreach ($line in (Get-Content $list -Encoding UTF8 -ErrorAction SilentlyContinue)) {
if ($line -match '^\[(.+)\]$') { $section = $Matches[1] }
elseif ($section -eq $BaseName -and $line -match '^ID=(.+)$') { $ids += $Matches[1].Trim() }
}
}
# Только папки с GUID в имени: conf (лицензии), appsrvrs.lst, dumps и logs остаются
Get-ChildItem $cache -Directory |
Where-Object { $_.Name -match $guid -and (-not $BaseName -or $ids -contains $_.Name) } |
ForEach-Object {
$dir = $_.FullName
try {
Remove-Item $dir -Recurse -Force -ErrorAction Stop
Write-Host "Удалён кэш $dir"
}
catch { Write-Warning "Не удалось удалить $dir — у пользователя открыта 1С?" }
}
}
На терминальном сервере запускайте его с -AllUsers от имени администратора, когда пользователи вышли: кэш лежит в профиле каждого. Если не помогло, удалите и одноимённую папку в %APPDATA%\1C\1cv8.
Кнопка в самой 1С. Команда для пользователей перезапускает клиент с ключом /ClearCache:
// Команда «Перезапустить с очисткой кэша» в форме обработки или общей форме.
// Тонкий и толстый клиент: новый сеанс стартует с ключом /ClearCache.
&НаКлиенте
Процедура ПерезапуститьСОчисткойКэша(Команда)
Оповещение = Новый ОписаниеОповещения("ПерезапуститьСОчисткойКэшаЗавершение", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Программа закроется и сразу запустится снова с очисткой кэша. Продолжить?",
РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет);
КонецПроцедуры
&НаКлиенте
Процедура ПерезапуститьСОчисткойКэшаЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
// Первое Истина — спросить про несохранённые документы, второе — перезапуск.
// Ключ добавится к параметрам, с которыми запущен текущий сеанс.
ЗавершитьРаботуСистемы(Истина, Истина, "/ClearCache");
КонецПроцедуры
Все файлы сервера 1С лежат в каталоге кластера. На Windows по умолчанию это C:\Program Files\1cv8\srvinfo, а точный путь записан в ключе -d командной строки службы «Агент сервера 1С:Предприятия 8.3 (x86-64)»: свойства службы, поле «Исполняемый файл». На Linux по умолчанию — /home/usr1cv8/.1cv8/1C/1cv8. Внутри — каталог reg_1541, где 1541 — порт главного менеджера кластера. Как устроены служба и порты, разобрано в статье «Установка сервера 1С 8.3».
| Что | Назначение | Удалять? |
|---|---|---|
1cv8wsrv.lst в корне | список кластеров центрального сервера | Нет |
reg_1541\1CV8Clst.lst, 1CV8Clsto.lst | реестр кластера: базы, параметры подключения к СУБД, рабочие серверы, администраторы | Нет |
reg_1541\<GUID базы>\1Cv8Log | журнал регистрации базы | Нет |
reg_1541\<GUID базы>\1Cv8FTxt, 1Cv8FTxt2 | индекс полнотекстового поиска | Не стоит: индекс придётся строить заново |
reg_1541\snccntx<GUID> | сеансовые данные: данные форм, временное хранилище | Да, только при остановленной службе |
dumps в корне | дампы падений rmngr и rphost | Да |
Папки с GUID в reg_1541 — это базы, а не кэш: в 8.3.27 там лежат журнал и индекс. Чья папка, видно в 1CV8Clst.lst: найдите GUID Блокнотом, сразу за ним идёт имя базы. В том же файле параметры подключения к СУБД — никому его не пересылайте. Служебные каталоги вроде 1Cv8DbDA тоже не трогайте.
Служба одна на все базы кластера: её остановка отключит пользователей всех баз и прервёт фоновые задания. Порядок такой:
1cv8wsrv.lst и 1CV8Clst.lst, остановите службу и дождитесь завершения rmngr.exe и rphost.exe.snccntx* в резервную папку и запустите службу./UC, проверьте базу и откройте вход. Через пару дней удалите резервную папку.Блокировка входа. Кто попробует войти, получит «Начало сеанса с информационной базой запрещено.» и ваш текст. Регламентные задания блокировка не останавливает: для них в БСП отдельный флажок «Запретить работу регламентных заданий», в консоли кластера — «Блокировка регламентных заданий включена» (как управлять заданиями из кода — в статье «Регламентное задание 1С»).
// Модуль формы обработки «Обслуживание», команды ЗакрытьВход и ОткрытьВход.
// Нужны административные права. В клиент-серверной базе блокировка хранится
// в кластере и переживает перезапуск службы: после очистки вы входите
// с параметром /UC <код> и проверяете базу, пока пользователи ждут.
&НаКлиенте
Процедура ЗакрытьВход(Команда)
КодРазрешения = ЗакрытьВходНаСервере(120);
ПоказатьПредупреждение(, СтрШаблон("Вход закрыт на 2 часа. Свой вход — с параметром запуска /UC %1",
КодРазрешения));
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВход(Команда)
ОткрытьВходНаСервере();
ПоказатьОповещениеПользователя("Вход в базу открыт");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗакрытьВходНаСервере(Знач Минут)
Генератор = Новый ГенераторСлучайныхЧисел;
Блокировка = Новый БлокировкаСеансов;
Блокировка.Установлена = Истина;
Блокировка.Начало = ТекущаяДатаСеанса();
Блокировка.Конец = Блокировка.Начало + Минут * 60; // забудете снять — снимется сама
Блокировка.КодРазрешения = Формат(Генератор.СлучайноеЧисло(100000, 999999), "ЧГ=0");
Блокировка.Сообщение = "Идёт обслуживание сервера 1С. Вход откроется после проверки.";
УстановитьБлокировкуСеансов(Блокировка);
Возврат Блокировка.КодРазрешения;
КонецФункции
&НаСервереБезКонтекста
Процедура ОткрытьВходНаСервере()
Блокировка = ПолучитьБлокировкуСеансов();
Блокировка.Установлена = Ложь;
УстановитьБлокировкуСеансов(Блокировка);
КонецПроцедуры
Сеансы всех баз кластера — через COM-коннектор. Сначала смотрите список: долгий BackgroundJob — повод подождать, а не рубить. Потом завершайте:
// Модуль объекта обработки: код выполняется на сервере 1С под Windows.
// Нужен COM-коннектор версии кластера: regsvr32 "<каталог платформы>\bin\comcntr.dll".
// Пароль администратора кластера в код не пишите — передавайте из формы.
// Пример: Сеансы = СеансыКластера("srv01:1540", 1541, Администратор, Пароль);
Функция СеансыКластера(Знач АдресАгента, Знач ПортКластера, Знач Администратор, Знач Пароль) Экспорт
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("База", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("НомерСеанса", Новый ОписаниеТипов("Число"));
Результат.Колонки.Добавить("Приложение", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Пользователь", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Компьютер", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Начало", Новый ОписаниеТипов("Дата"));
Подключение = ПодключениеККластеру(АдресАгента, ПортКластера, Администратор, Пароль);
Для Каждого Сеанс Из Подключение.Агент.GetSessions(Подключение.Кластер) Цикл
НоваяСтрока = Результат.Добавить();
НоваяСтрока.База = Сеанс.InfoBase.Name;
НоваяСтрока.НомерСеанса = Сеанс.SessionID;
НоваяСтрока.Приложение = Сеанс.AppID; // 1CV8C, WebClient, BackgroundJob, Designer...
НоваяСтрока.Пользователь = Сеанс.UserName;
НоваяСтрока.Компьютер = Сеанс.Host;
НоваяСтрока.Начало = Сеанс.StartedAt;
КонецЦикла;
Результат.Сортировать("База, Начало");
Возврат Результат;
КонецФункции
// Завершает все сеансы кластера, кроме текущего, и возвращает их число.
// Несохранённые данные пользователей пропадут: сначала предупредите и закройте вход.
Функция ЗавершитьСеансыКластера(Знач АдресАгента, Знач ПортКластера, Знач Администратор, Знач Пароль,
Знач Сообщение = "Сервер 1С перезапускается для обслуживания") Экспорт
СвояБаза = НРег(ИмяБазыВКластере());
СвойСеанс = НомерСеансаИнформационнойБазы();
Завершено = 0;
Подключение = ПодключениеККластеру(АдресАгента, ПортКластера, Администратор, Пароль);
Для Каждого Сеанс Из Подключение.Агент.GetSessions(Подключение.Кластер) Цикл
Если НРег(Сеанс.InfoBase.Name) = СвояБаза И Сеанс.SessionID = СвойСеанс Тогда
Продолжить; // сеанс, из которого запущен этот код
КонецЕсли;
Попытка
Подключение.Агент.TerminateSession(Подключение.Кластер, Сеанс, Сообщение);
Завершено = Завершено + 1;
Исключение
// Сеанс мог закончиться сам, пока мы шли по списку.
ЗаписьЖурналаРегистрации("ОбслуживаниеСервера", УровеньЖурналаРегистрации.Предупреждение, , ,
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
Возврат Завершено;
КонецФункции
Функция ПодключениеККластеру(АдресАгента, ПортКластера, Администратор, Пароль)
Коннектор = Новый COMОбъект("V83.COMConnector");
Агент = Коннектор.ConnectAgent(АдресАгента);
Для Каждого Кластер Из Агент.GetClusters() Цикл
Если Кластер.MainPort = ПортКластера Тогда
Агент.Authenticate(Кластер, Администратор, Пароль);
Возврат Новый Структура("Агент, Кластер", Агент, Кластер);
КонецЕсли;
КонецЦикла;
ВызватьИсключение СтрШаблон("На сервере %1 нет кластера с портом %2", АдресАгента, Формат(ПортКластера, "ЧГ=0"));
КонецФункции
// Имя базы в кластере — Ref из строки соединения вида Srvr="srv01";Ref="trade";
// При входе через веб-сервер Ref в строке нет, и свой сеанс тоже будет завершён.
Функция ИмяБазыВКластере()
Для Каждого Часть Из СтрРазделить(СтрокаСоединенияИнформационнойБазы(), ";", Ложь) Цикл
Позиция = СтрНайти(Часть, "=");
Если Позиция > 0 И НРег(СокрЛП(Лев(Часть, Позиция - 1))) = "ref" Тогда
Возврат СтрЗаменить(Сред(Часть, Позиция + 1), """", "");
КонецЕсли;
КонецЦикла;
Возврат "";
КонецФункции
Сама очистка — скрипт PowerShell. Путь к srvinfo и порт он берёт из параметров службы, поэтому работает и при нестандартной установке; другое имя службы передайте в -ServiceName:
# clear-1c-session-data.ps1 — очистка сеансовых данных кластера 1С (каталоги snccntx*).
# Запуск от имени администратора, когда в базах никто не работает:
# powershell -ExecutionPolicy Bypass -File .\clear-1c-session-data.ps1
# Сохраните файл в UTF-8 с BOM, иначе Windows PowerShell 5.1 исказит русский текст.
param(
[string]$ServiceName = '1C:Enterprise 8.3 Server Agent (x86-64)'
)
$ErrorActionPreference = 'Stop'
# 1. Каталог кластера и порт берём из командной строки службы:
# ragent.exe ... -regport 1541 ... -d "C:\Program Files\1cv8\srvinfo"
$cmd = (Get-CimInstance Win32_Service -Filter "Name='$ServiceName'").PathName
if (-not $cmd) { throw "Служба '$ServiceName' не найдена" }
if ($cmd -match '-d\s+"([^"]+)"' -or $cmd -match '-d\s+(\S+)') { $srvinfo = $Matches[1].TrimEnd('\') }
else { throw "В командной строке службы нет ключа -d: $cmd" }
$regPort = if ($cmd -match '-regport\s+(\d+)') { $Matches[1] } else { '1541' }
$reg = Join-Path $srvinfo "reg_$regPort"
# 2. Резервная папка рядом с srvinfo и копия реестра кластера — до любых действий
$backup = Join-Path (Split-Path $srvinfo -Parent) ('srvinfo-backup-' + (Get-Date -Format 'yyyyMMdd-HHmm'))
New-Item -ItemType Directory -Path $backup | Out-Null
Copy-Item -Path (Join-Path $srvinfo '1cv8wsrv.lst'), (Join-Path $reg '1CV8Clst.lst') -Destination $backup
# 3. Останавливаем агент и ждём, пока завершатся rmngr и rphost именно этого кластера
Stop-Service -Name $ServiceName
$deadline = (Get-Date).AddMinutes(3)
do {
$alive = Get-CimInstance Win32_Process -Filter "Name='rmngr.exe' or Name='rphost.exe'" |
Where-Object { $_.CommandLine -match "-(reg)?port\s+$regPort\b" }
if ($alive) { Start-Sleep -Seconds 5 }
} while ($alive -and (Get-Date) -lt $deadline)
if ($alive) { throw "Процессы кластера ещё работают (PID $($alive.ProcessId -join ', ')), файлы не трогаю" }
# 4. Сеансовые данные не удаляем, а переносим: на том же диске это мгновенно
Get-ChildItem -Path $reg -Directory -Filter 'snccntx*' | ForEach-Object {
Move-Item -Path $_.FullName -Destination $backup
Write-Host "Перенесён $($_.Name)"
}
# 5. Запускаем службу: каталог snccntx платформа создаст заново
Start-Service -Name $ServiceName
Write-Host "Готово. Реестр кластера и старые сеансовые данные лежат в $backup"
На Linux то же самое делают руками:
# Linux, платформа 8.3.21 и новее (служба systemd). Версию и порт подставьте свои.
V=8.3.27.1786
D=/home/usr1cv8/.1cv8/1C/1cv8 # каталог кластера по умолчанию
B=/home/usr1cv8/srvinfo-backup-$(date +%Y%m%d-%H%M)
sudo systemctl stop srv1cv8-$V@default
pgrep -l -u usr1cv8 'rmngr|rphost' # пусто — можно продолжать
sudo -u usr1cv8 mkdir "$B"
sudo -u usr1cv8 cp "$D/1cv8wsrv.lst" "$D/reg_1541/1CV8Clst.lst" "$B/"
sudo sh -c "mv $D/reg_1541/snccntx* $B/"
sudo systemctl start srv1cv8-$V@default
PathName службы хранит каталог кластера (-d) и порт (-regport): srvinfo часто переносят на другой диск.-(reg)?port\s+1541 по командной строке процессов: на сервере бывает несколько агентов разных версий, ждём только свои rmngr и rphost.Move-Item вместо удаления: на том же диске перенос мгновенный, а каталог можно вернуть.GetSessions(Кластер), а не GetInfoBaseSessions: служба останавливается для всех баз, значит, и сеансы нужны все.TerminateSession — текст, который пользователь увидит вместо стандартного «Выполнение текущей операции прервано администратором».НомерСеансаИнформационнойБазы()»: номер сеанса уникален только внутри базы.Блокировка.Конец страхует от забытой блокировки, а КодРазрешения пускает в базу только вас.Сеансовые данные — key-value хранилище кластера. Туда попадают данные форм и всё, что код кладёт во временное хранилище: ПоместитьВоВременноеХранилище, файлы, загруженные с клиента, результаты фоновых заданий. Если каталог пухнет, ищите код, который держит большие данные в хранилище дольше, чем нужно. Срок жизни значения задаёт второй параметр:
УникальныйИдентификатор, не связанный с формой, — проживёт до конца сеанса, а сеанс у бухгалтера длится весь день;// Модуль формы загрузки прайса. Файл с клиента попадает во временное хранилище,
// то есть в сеансовые данные сервера (snccntx). Держим его там не дольше, чем нужно.
&НаКлиенте
Асинх Процедура ЗагрузитьПрайс(Команда)
// Идентификатор формы: файл живёт, пока открыта форма, и удалится при её закрытии,
// даже если загрузка сорвётся на середине.
Помещенный = Ждать ПоместитьФайлНаСерверАсинх(, , , Новый ПараметрыДиалогаПомещенияФайлов("Выберите прайс"),
УникальныйИдентификатор);
Если Помещенный = Неопределено Или Помещенный.ПомещениеФайлаОтменено Тогда
Возврат;
КонецЕсли;
КоличествоСтрок = ЗагрузитьПрайсНаСервере(Помещенный.Адрес);
ПоказатьОповещениеПользователя("Прайс загружен", , СтрШаблон("Строк в файле: %1", КоличествоСтрок));
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗагрузитьПрайсНаСервере(Знач Адрес)
Данные = ПолучитьИзВременногоХранилища(Адрес);
УдалитьИзВременногоХранилища(Адрес); // данные уже в переменной, место в хранилище освобождаем
Текст = ПолучитьСтрокуИзДвоичныхДанных(Данные, КодировкаТекста.UTF8);
КоличествоСтрок = СтрЧислоСтрок(Текст);
// Здесь разбор строк и запись цен в базу.
Возврат КоличествоСтрок;
КонецФункции
Как вернуть результат фонового задания через хранилище и не оставить мусор — в статье «Фоновое задание 1С».
-AllUsers чистит только того, кто его запустил.Новый COMОбъект("V83.COMConnector") — COM-коннектор не зарегистрирован: выполните regsvr32 для comcntr.dll той же версии и разрядности, что и кластер. В безопасном режиме COM-объект не создаётся вовсе.Нет. Клиентский кэш чистят на компьютере пользователя при закрытой 1С. Служба нужна только для сеансовых данных на сервере.
Там же, в профиле пользователя: %LOCALAPPDATA%\1C\1cv8\<ID базы>, и /ClearCache работает так же. В каталоге самой базы кэша нет: 1Cv8.1CD — данные, 1Cv8Log — журнал регистрации. Файл 1Cv8snc.1CD по смыслу — сеансовые данные файловой базы: если ошибка у всех и чистка клиентов не помогла, выгоните всех из базы и переименуйте его.
Нет. Платформа сама собирает мусор в сеансовых данных, а регулярная чистка только прячет проблему: нехватку места на диске с srvinfo или код, который забивает временное хранилище. Следите за свободным местом: по методическим материалам 1С сборке мусора нужно около четверти объёма каталога сеансовых данных.
Это другой кэш — в памяти сеанса, файлы тут ни при чём. После изменения данных, которые читает общий модуль с повторным использованием, вызовите ОбновитьПовторноИспользуемыеЗначения(): метод очищает сохранённые значения таких функций в текущем сеансе. Остальным пользователям надёжнее перезапустить сеансы.
Если очистка кэша не помогла, а 1С продолжает тормозить, падать или съедать диск, причина глубже: тяжёлые запросы, блокировки, память rphost, настройки СУБД или код, который забивает временное хранилище. Такие задачи разбирают в рамках услуги «1С тормозит». Опишите симптомы и разместите задачу на площадке — оценка бесплатная, ответ в течение рабочего дня.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.