1с как снять защиту с файла конфигурации

Обновлено: 07.07.2024

В 1С можно защитить исходный код общих модулей и модулей объектов.
Код формы защитить нельзя.
Защитить можно только те модули, которые не содержат

Пароль на код модуля

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

Откройте любой код модуля.
Выберите пункт меню Текст - Установить Пароль. Введите пароль и подтверждение.

Исключение кода модуля

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

Открываете конфигурацию.
Через пункт Конфигурация - Поставка конфигурации - Настройка поставки заходите в форму настройки поставки, выбираете текст каких модулей нужно исключить из поставки (можно выбрать сразу все для каждого уровня иерархии). Выберите также галочку "Файл поставки может использоваться для обновления".

Далее через пункт Конфигурация - Поставка конфигурации - Комплект поставки создаете CF-файл.

Теперь этот CF файл можно загружать у клиента - в этом CF файле нужные модули исключены (защищены от просмотра).

Настройки поставки хранятся в CF-файле, но к сожалению их нельзя изменить через сравнение конфигураций, только путем полной загрузки CF-файла. Поэтому лучше сделать один общий модуль "КлиентСервер", где хранить функции, которые используют директивы препроцессора, а все остальные модули закрыть.

Но к сожалению это слабая защита. Простенький пример подтверждает это.
ВНИМАНИЕ! ДАЛЕЕ ТЕКСТ ПИСАЛ НЕ АВТОР СТАТЬИ, ГЕНИЙ 1С
Просьба не обращаться к Гению с просьбами рассказать, как расшифровать байт-код или как его получить из закрытой конфигурации. Я этого никогда не делал.
Чтобы получить байт код, рекомендую открытый конфигуратор SQL для 1С8 (ищите на инфостарт)
Чтобы расшифровать байт-код, посмотрите обработки автора TormozIT там же.
Точнее не знаю.
Вот маленький кусок программы:

имеющий вот такой байт-код:
(он получается когда ставится пароль на модуль и когда делается поставка без текстов)

А вот программа декомпилирования этого примера, написать которую может каждый второй 1С-ник:

Описание байт-кода имеет разделы:
- описание алгоритма
- описание констант
- описание переменных
- описание процедур

Разбор байт-кода показывает, что движок 1С это простая стековая машина с "польской" системой вычислений.
Данная система исчисления хорошо знакома большинству программистов по калькуляторам БЗ-34 и другим этой серии.

Основываясь на этом можно, сказать об упрощенном понимании заложенном в приведенный алгоритм.
На самом деле, так называемый спусковой крючок для калькулятора не сам оператор как в приведенном алгоритме, а завершающий оператор "".

Не разбираемый в приведенном коде набор "", на самом деле возврат управления из выполняемого фрагмента на выше стоящий уровень.

Естественно, мы не приводим полный набор команд этого макро языка, составить список сможет, каждый второй 1С-ник, готовый потратить на это какое то время.

Приведу, только фрагмент:




№ п/пОператорКоличество данных подним в стекеНаименование
1561СокрЛП
2572Лев
3582Прав
4593Сред
5602Найти

Как понятно, структура байт-кода такова:

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

Второй приводимый фрагмент, рассматривает код более обобщенно по сравнению с предыдущим, но не претендует на абсолютную истину и написан только для демонстрации обобщенного взгляда на проблему.

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

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

Создатели системы 1С: Предприятие 8 позаботились о защите кода. К сожалению, пароль на доступ можно установить только на модули объектов, общие модули, модули обработок и отчетов. В том числе и внешних. Но и этого немало, так как можно значимые процедуры и функции разместить в модуле и потом к ним обращаться.

В данной статье я хочу разобраться, как установить защиту и снять её, если Вы забыли пароль.

Установка защиты на модуль 1C

установка пароля на модуль

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

вопрос

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Что же, посмотрим, во что это выльется. Устанавливаем пароль.


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

Вывод однозначный: не все модули можно защитить. Однако ничего Вам не мешает вынести функции и процедуры с директивами препроцессора в отдельный модуль.

Осталось проверить обработки. Возьмем для интереса внешнюю. Защита прошла без проблем.

Проверка надежности защиты с помощью декомилятора модулей 1С


выполнение обработки

Пробуем открыть модуль в конфигураторе, и он прекрасно открывается.

На форумах пишут, что иногда нужно запускать 1С от имени администратора, если выходит ошибка.

Теперь осталось проверить, как декомпилятор справится с общими модулями. Сохраняем конфигурацию в файл.

Выбираем в обработке:

выбор конфигурации для декомпилирования


Загружаем конфигурацию из файла и проверяем защиту. Защита полностью снята.

Данный материал предоставлен только в ознакомительных целях с целью обзора механизма защиты платформы 1С. Запрещено использовать данный материал для получения доступа к защищенным авторским правом разработкам.

Ввод пароля в 1С
Восстановление пароля 1С, если база файловая

1 шаг

Путь к базе

2 шаг

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

1CD изнутри

3 шаг

Нужный символ для снятия пароля

Пароли сняты, поздравляю!

Обновление от наших читателей для новых платформ 1С (например, 1С: Предприятие 8.3.5.1383):

Обновление №2 от нашего читателя Evil Grym от 07.10.2017:

Снятие пароля, если база 1С клиент-серверная

Если у Вас на предприятии клиент-серверный вариант 1С, необходимо действовать немного иначе.

Шаг 1

Шаг 2

Снятие пароля в MS SQL

Шаг 3

users.usr

Обновление: в релизе платформы 1С 8.3.5.1460 описанный выше способ не дает должного результата. Из опыта наших читателей известно, что необходимо попробовать удалить таблицу Usersv8.

Готово! Вы удалили пароли 1С!

Если же у Вас так и не получилось произвести взлом пароля от 1С самостоятельно, Вы всегда можете обратиться за помощью к специалисту 1С

Другие статьи по 1С:

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

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

Внешние обработки можно подключить в 1С в список дополнительных отчетов и обработок и разместить в нужном для себя разделе.

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


Разберем, почему происходит такая ситуация в 1С 8.3, и как ее решить.

Как открыть обработку интерактивно

При интерактивном открытии обработки ее не нужно никуда подключать. Достаточно зайти в раздел «Сервис и настройки — Файл — Открыть» или нажать CTRL + O на клавиатуре.

Получите понятные самоучители по 1С бесплатно:


Затем выбираем саму обработку. В этот момент и выходит ошибка.

Для исправления ошибки назначим пользователю роль, которая позволяет открывать обработки интерактивно. Роль так и называется — Интерактивное открытие внешних отчетов и обработок. Отметим, что эту роль нужно назначить даже пользователю с полными правами.

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

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

Профиль для открытия внешних обработок

Зайдем в меню «Администрирование — Настройки программы — Настройки пользователей и прав».


Раскроем раздел «Группы доступа» и перейдем по ссылке «Профили групп доступа».


Нужный профиль в программе уже создан и называется «Открытие внешних отчетов и обработок».


Откроем его и увидим, что в нем содержится единственная роль «Интерактивное открытие внешних отчетов и обработок».


Как назначить профиль пользователю

В том же разделе, где находится профиль групп доступа, откроем справочник «Пользователи».


Выберем пользователя, которому нужно назначить профиль. Перейдем по ссылке «Права доступа». Ставим флажок для пункта «Открытие внешних отчетов и обработок» и нажмем «Записать» для сохранения настроек.


Обязательно закрываем 1С и запускаем заново. Открываем обработку и ошибки больше не будет.

Юрий Сухарев

Мой опыт подсказывает, что вы – пользователь (не системный администратор и не программист*), а ваша информационная база – файловая (если база SQL, вашей проблемой уже занимаются специалисты). Для начала надо понять, в какой папке (каталоге) она расположена и удалить в этой папке один файл — 1Сv8.cdn (файл можно не сохранять, он больше не понадобится).

*Если вы ИТ-специалист, можете смело переходить к чтению раздела «Блокировка и снятие блокировки с информационной базы 1С».

В окне со списком информационных баз найдите свою базу (цифра 1 на иллюстрации ниже) и нажмите на нее один (и только один!) раз мышкой. Затем нажмите кнопку «Изменить» (цифра 2).

В списке может быть только одна база, поэтому это окно вам может быть знакомо как «окно запуска 1С». В этом случае просто нажмите кнопку «Изменить».

Если вы видите, что информационная база расположена на данном компьютере или в локальной сети — мой опыт не подвел – база файловая, и мы все делаем правильно. Скопируйте этот путь (цифры 3 и 4).

Теперь зайдите в эту папку.

На всякий случай, вот несколько вариантов запуска Проводника:

  • У вас Windows XP или Windows 7. Нажмите Пуск, Выполнить, вставьте ранее скопированное расположение информационной базы. Откроется Проводник.
  • У вас Windows 7. Но пункта «Выполнить» нет. Вставляйте расположение сразу после нажатия Пуск. Откроется Проводник.
  • У вас Windows 8 или Windows 10. Нажмите Пуск, в правом верхнем углу нажмите на Лупу, вставьте ранее скопированное расположение информационной базы, нажмите Enter. Откроется Проводник.
  • Найдите на панели задач желтую дискету и нажмите на нее. Вставьте расположение информационной базы в адресную строку в верхней части окна Проводника. (Правой кнопкой мыши на адресную строку, Изменить адрес, правой кнопкой еще раз на адресную строку, Вставить).
  • Универсальный способ для всех версий Windows и ее настроек. Нажмите на клавиатуре кнопку с флажком и, не отпуская ее, нажмите на клавиатуре латинскую R (или русскую К). Откроется окно «Выполнить», вставьте туда ранее скопированное расположение информационной базы и нажмите ОК.

Воспользовавшись одним из предложенных вариантов, вы попадете в окно проводника с расположением информационной базы.

Рис.5 Окно проводника с расположением информационной базы

Рис.5 Окно проводника с расположением информационной базы

В окне проводника найдите в списке файлов файл 1Сv8.cdn, нажмите на нем правой кнопкой мыши, выберите «Удалить», как показано на предыдущем рисунке.

Готово! Ваша «1С:Бухгалтерия» или «1С:Зарплата и управление персоналом» или «1С:Управление торговлей» снова запускаются.

Блокировка и снятие блокировки с информационной базы 1С. Разрушаем мифы.

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

Как установить блокировку?

Механизм блокировки информационной базы предназначен для завершения текущих открытых сеансов и предотвращения новых подключений. Расположение функционала блокировки в меню может различаться в зависимости от конфигурации. Например, в УТ, редакция 11 (11.3.3.163) это НСИ и администрирование, [Сервис] Блокировка работы пользователей. Альтернативный вариант: НСИ и администрирование, Поддержка и обслуживание, Блокировка работы пользователей. В УТ, редакция 10.3 (10.3.21.2) это Сервис, Пользователи, Блокировка установки соединений с информационной базой.

*Существуют специальные отраслевые конфигурации, в которых блокировка с точки зрения интерфейса и с точки зрения механизма будет выглядеть не так, как описано в данной статье. Поскольку мы рассматриваем стандартный механизм для большинства конфигураций 1С, специальные отраслевые конфигурации затрагивать не будем.

Поскольку вводится начало и окончание действия блокировки, необходимо быть крайне внимательным в этом диалоге и ввести информацию в явном виде. Если бы в диалоге была бы возможность ввести начало блокировки «через 15 минут» длительностью «на 20 минут», или хотя бы справочно отображались эти величины на основании абсолютного времени начала и окончания блокировки, то было бы сложно установить блокировку длительностью в год, как это может случиться при ошибке ввода даты-времени.

Параметр «Время начала» рекомендуется установить как текущая дата/время + время, необходимое пользователям на подготовку к выходу с сохранением редактируемых документов. Например, сейчас 9 ч 50 мин, даем 10 минут пользователям для сохранения их результатов. Итого время начала блокировки должно быть 10 ч 00 мин.

Время конца – можно не вводить, при этом блокировка объекта будет установлена бессрочно (навечно).

Код для разблокировки – однократный «пароль» на запуск «с нуля», вопреки установленной блокировке, который может понадобиться в некоторых случаях (будет сказано далее). Вводить и запоминать обязательно. Этот параметр в случае SQL-варианта информационной базы виден в оснастке «Администрирование серверов 1С предприятия» и называется там «Код разрешения».

В случае SQL-варианта информационной базы дополнительно потребуется авторизация администратора информационной базы или администратора кластера.

Итак, после нажатия кнопки «Установить блокировку» и положительного ответа на подтверждение…

…вы вернетесь в предыдущее диалоговое окно, внешний вид которого изменился:

Запланирована? Быть может это как-то связано с регламентными заданиями?

Сработает ли запланированная блокировка работы пользователей, если установлена блокировка регламентных заданий? Да, сработает. Механизм блокировки не использует регламентные задания.

Что увидят пользователи и я сам?

До момента начала блокировки активные пользователи будут получать «вежливые» напоминания о необходимости завершения работы. В данном диалоге по таймауту срабатывает «Да», поэтому отсутствующие на рабочем месте пользователи успешно выйдут из сеанса 1С.

Рис.12 Предупреждение для пользователей о запланированной блокировке

Рис.12 Предупреждение для пользователей о запланированной блокировке

Бомба взрывается точно в назначенное время. Сирена воет до взрыва.

Вопреки распространенному мнению, что завершение сеансов активных пользователей производится мягко, после предупреждения, которое можно игнорировать и продолжить работу, на самом деле завершение, а лучше сказать, «обрубание», активных сеансов происходит точно по расписанию, жестко и с потерей всех несохраненных результатов. Все предупреждения выдаются в интервале от времени нажатия кнопки «Установить блокировку» до времени начала блокировки, после наступления которого, завершение активного сеанса произойдет без какого-либо уведомления, а 1С перейдет в цикл попыток запуска конфигурации заново, с интервалом в 1 минуту.

Не составляют исключения режимы ввода справочных значений, при которых введено значение, отсутствующее в справочнике – выйти из режима ввода нельзя (например, закрыть 1С крестиком), но это не помешает завершить работу. Более значительный интерес представляет режим модального диалога, поэтому о нем будет сказано подробнее.

*Завершение сеансов пользователей в старых конфигурациях происходит чуть позже назначенного времени, т.к. пользователи сначала получают оповещение «Работа системы завершается».

А точно взорвется?

Для начала отметим, что в старых конфигурациях может не сработать блокировка для инициатора блокировки. А теперь перейдем к рассмотрению вопроса для платформы 8.3.

И это не единственная причина, по которой блокировка может не сработать (cм. далее разделы «По чьим часам?» и «А как же мои пользователи во Владивостоке?»).

Модальный диалог в SQL-варианте информационной базы на управляемых формах

Модальный диалог в SQL-варианте информационной базы на обычных формах

Сеансы пользователей завершаются.

Сработает ли блокировка, если установить блокировку и закрыть диалог?

Сработает ли блокировка, если установить блокировку и сразу выйти из 1С (т.е. завершить сеанс 1С до начала действия блокировки)?

Да. Механизм реагирования на установленную блокировку не предусматривает взаимодействия между инициатором блокировки и остальными пользователями. Сеансы пользователей самостоятельно проверяют, можно ли им работать.

По чьим часам сработает блокировка, если время на компьютерах немного отличается?

Проблема рассинхронизации часов

При файловой ИБ каждый компьютер сам проверяет, имеется ли в ИБ установленный временной диапазон блокировки, и сравнивает его со своими локальными часами. От точности своих часов зависит, сможет ли данный компьютер осуществить завершение сеанса точно в нужное время. Если база блокируется с 10:00, для одного компьютера этот момент наступит раньше, а для другого – позже.

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

Кажется, что речь может идти о секундах, в крайнем случае, минутах. Но на самом деле, на компьютере может быть, например, не установлено обновление операционной системы, поддерживающее переход на сезонное (зимнее/летнее) время, и ошибка уже может составлять не секунды, а часы. Легко провести такой эксперимент: запланируйте блокировку на 10 утра длительностью полчаса, а на одном из компьютеров переведите время на час вперед – блокировка на него не подействует.

Поэтому перед установкой блокировки внимательно сверьте время в правом нижнем углу компьютера со своими наручными часами, а также заблаговременно обратитесь к своему системному администратору с вопросом, работает ли синхронизация времени в вашей ИТ-инфраструктуре.

А как же мои пользователи во Владивостоке?

Проблема абсолютного времени при пользователях из разных часовых поясов

Временной диапазон блокировки сохраняется в информационной базе. Посмотрите на содержимое блокировочного файла 1Сv8.cdn (который создается в файловом варианте ИБ), в нем записано время начала блокировки 17.07.2017 13:59 в формате ГГГГММДДЧЧММСС без какого-либо указания на часовой пояс:

Без указания на часовой пояс было бы понятно, о каком абсолютном времени идет речь, если время всегда относилось бы к какому-то конкретному часовому поясу, например UTC+0. Но в базе сохраняется локальное время по часам компьютера, который являлся инициатором блокировки. Из какого часового пояса был этот компьютер – неизвестно, а значит неизвестно абсолютное время блокировки.

Если в Москве, в централизованной ИБ, вы устанавливаете блокировку в 13:59, и этот момент времени для московских пользователей находится в будущем, то у пользователей этой же ИБ во Владивостоке 13:59 было 7 часов назад. И в зависимости от технического решения, в соответствии с которым осуществляется работа с ИБ пользователей Владивостока, блокировка этих пользователей либо сработает, либо нет.

Какие могут быть технические решения, в которых блокировка будет работать неправильно для пользователей Владивостока? Те, при которых клиентская часть 1С получит время по Владивостоку, а не по Москве. Например, офисы связаны в локальную сеть по VPN, а клиентская часть 1С запускается с локального компьютера, имея время UTC+10. Но если они работают с базой через RDP-соединение или в режиме RemoteApp на московском сервере, запуская на этом сервере клиентскую часть 1С – все будет хорошо, т.к. она будет иметь время UTC+3.

Имеется ли проблемы рассинхронизации часов и часового пояса в случае SQL-варианта информационной базы?

Нет. В данном варианте есть «часы сервера», которые принимаются за эталон.

Выкинет ли меня из Конфигуратора, если я был в нем, а блокировка начала действовать?

Можно ли будет зайти в Конфигуратор после начала действия блокировки?

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

Как снять блокировку?

В том же диалоге, в котором блокировка устанавливалась. Напоминаем, что после установки блокировки в нем вместо кнопки «Установить блокировку» кнопка «Снять блокировку».

В случае SQL-варианта ИБ снятие блокировки возможно также в оснастке «Администрирование серверов предприятия 1С». (см. далее)

Для чего нужен код разблокировки?

Для входа в ИБ в тот момент, когда действует блокировка. Ситуации, в которых это необходимо:

  • После установки блокировки был завершен сеанс работы с ИБ (вручную или в результате действия блокировки на самого инициатора), и требуется начать новый сеанс;
  • Время окончания блокировки по ошибке было не заполнено вообще;
  • Время окончания блокировки было заполнено ошибочно (например, был нечаянно введен следующий месяц или год);
  • Информационная база в SQL-варианте, и для отмены неверно установленной блокировки невозможно удалить файл 1Сv8.cdn в каталоге информационной базы.

В таком случае воспользуйтесь подсказкой, которая дается при запуске. Т.е. в окне со списком информационных баз нажмите «Изменить» и введите в дополнительные параметры запуска строку:

ENTERPRISE /F"Z:\Обмен\УТ 11" /CРазрешитьРаботуПользователей /UC12345

… с учетом каталога расположения и кода разблокировки.

В случае правильного ввода и последующего запуска 1С в режиме предприятия, 1С автоматически снимет блокировку и завершит свою работу. После этого можно будет удалить дополнительные параметры и запускать 1С как обычно.

Что делать, если я не устанавливал блокировку, а SQL-база кем-то заблокирована? При этом я не знаю код разблокировки.

Блокировка информационной базы может устанавливаться самой конфигурацией на время создания архивной копии. Если процесс ее создания не был завершен нормально, SQL-база может остаться в состоянии блокировки. В этом случае необходим доступ к консоли (более правильно – оснастке) «Администрирование серверов 1С:Предприятия».

Где ее искать?

Оснастка «Администрирование серверов 1С:Предприятия» часто установлена на том же сервере, где развернут SQL server, а также где развернут сам «Сервер 1С» (или «Сервер приложений 1С»). Хотя это и не обязательно: SQL может быть установлен на одном компьютере, «Сервер приложений 1С» – на другом, а оснастку можно развернуть и на своей рабочей станции. С большой вероятностью успеха можно достигнуть, сделав следующее:

  • Подключитесь по RDP к серверу, который указан в строке Srvr=… используя свой доменный логин и пароль. При невозможности подключения попросите системного администратора добавить вас в группу пользователей удаленного рабочего стола. (В случае отказа в таких правах – разверните и настройте на рабочей станции оснастку «Администрирование серверов предприятия 1С»);
  • На сервере найдите оснастку «Администрирование серверов 1С:Предприятия»;
  • Запустите оснастку, разверните дерево до узла с вашей информационной базой;
  • В свойствах информационной базы снимите чекбокс «Блокировка начала сеансов включена» или исправьте время начала и конца блокировки или посмотрите «код разрешения» для входа в ИБ (он же «код для разблокировки» в диалоге установки блокировки).

Что делать, если все пользователи информационной базы SQL вышли, а запустить Конфигуратор по-прежнему нельзя, т.к. имеются активные пользователи?

В узле «Соединения» информационной базы, в правой части экрана можно удалить имеющиеся соединения.

Это далеко не все вопросы, связанные с темой блокировки информационной базы.

Если у вас остались вопросы:

  • Можно ли работать по московскому времени, если вы арендуете сервер в Европе и не хотите зависеть от его часового пояса?
  • Как найти Сервер приложений 1С, если неизвестно, где он установлен?
  • Как развернуть оснастку «Администрирование серверов 1С:Предприятия» и как ее настроить?
  • Если в одной локальной сети несколько серверов приложений, как быть?
  • Как быть в случае кластерной системы? и т.д.

. наши сертифицированные консультанты по технологическим вопросам 1С с удовольствием на них ответят и предоставят консультации по вопросам 1С:Предприятие.

Читайте также: