В системе 1С:Предприятие права доступа — это основа безопасности данных. Среди множества настроек особое место занимает право «Ввод по строке», которое часто вызывает вопросы у администраторов и разработчиков. Этот механизм позволяет гибко управлять возможностями пользователей по редактированию конкретных записей в справочниках, документах и регистрах, не давая полного доступа ко всему объекту.
На первый взгляд может показаться, что «ввод по строке» — это просто разрешение на редактирование отдельных строк. Но на практике здесь есть нюансы: от различий между интерактивным вводом и программной записью до особенностей работы с подчиненными объектами. Неправильная настройка этого права может привести как к избыточным ограничениям, так и к уязвимостям в безопасности. Давайте разберёмся, как оно работает на самом деле.
Если вы только начинаете разбираться в правах 1С, рекомендуем сначала изучить базовые понятия ролей и полномочий. Для опытных администраторов эта статья станет проверкой знаний и источником редко документированных деталей — например, как право «ввод по строке» взаимодействует с Управляемыми формами или Регламентными заданиями.
Что такое право «Ввод по строке» и зачем оно нужно
В классической модели прав 1С пользователь либо имеет полный доступ к объекту (например, справочнику Номенклатура), либо нет. Право «Ввод по строке» вносит градацию: оно позволяет редактировать конкретные записи в объекте, не открывая доступ ко всем данным. Типичный пример — когда менеджер должен вносить только свои заказы, но не чужие.
Технически это право привязано к режиму записи (интерактивный/программный) и контексту выполнения (тонкий клиент, веб-клиент, фоновое задание). Важно понимать, что «ввод по строке» не равносилен «чтению по строке»: первое разрешает изменения, второе — только просмотр.
Где это используется на практике:
- 📝 Справочники: ограничение редактирования только «своими» контрагентами (например, по ответственному менеджеру).
- 📄 Документы: разрешение ввода только своих накладных или счетов.
- 📊 Регистры сведений: изменение только своих записей в регистре Цены номенклатуры.
- 🔄 Обработки: ограничение прав на редактирование данных в массовых обработках.
Ключевое отличие от права «Изменение» — последнее даёт доступ ко всем полям объекта, тогда как «ввод по строке» может быть ограничен конкретными реквизитами (например, только поле Количество в документе Реализация товаров).
Как право «Ввод по строке» работает на уровне платформы
Механизм реализован через RLS (Row-Level Security) — контроль доступа на уровне строк. Когда пользователь пытается сохранить изменения, платформа 1С:Предприятие 8.3 проверяет:
- Есть ли у роли право «Ввод по строке» для данного объекта.
- Соответствует ли запись условиям отбора (если они заданы в настройках прав).
- Выполняется ли операция в разрешённом контексте (например, не из фонового задания, если это запрещено).
Особенности реализации:
- 🔧 В управляемых формах право проверяется при сохранении данных (
ПередЗаписью). - 🖥️ В обычных формах — при вызове метода
Записать(). - 📡 При обмене данными (например, через Универсальный формат обмена) право может игнорироваться, если не настроена дополнительная проверка.
Важно: право «ввод по строке» не блокирует чтение других строк объекта. Если пользователю нужно скрыть чужие записи, требуется дополнительно настроить право «Чтение по строке» с условием отбора.
Чтобы проверить, какие именно строки доступны пользователю для редактирования, используйте отладчик 1С с включенной опцией Показать права доступа в контекстном меню объекта.
Настройка права в конфигураторе: пошаговая инструкция
Рассмотрим процесс на примере справочника Контрагенты. Предположим, нужно разрешить менеджерам редактировать только «своих» контрагентов по полю Ответственный.
Шаг 1. Открытие ролей
В конфигураторе перейдите в ветку Общие → Роли и выберите роль, которую нужно изменить (например, МенеджерПоПродажам). Если подходящей роли нет, создайте новую на основе шаблона.
Шаг 2. Настройка прав для справочника
В дереве прав найдите справочник Контрагенты и установите флаги:
- ✅ Чтение (чтобы пользователь видел справочник).
- ❌ Изменение (полный доступ не нужен).
- ✅ Ввод по строке (разрешаем редактировать отдельные записи).
Шаг 3. Задание условия отбора
Нажмите кнопку Условие рядом с правом «Ввод по строке» и укажите:
Ответственный = &ТекущийПользователь
Здесь &ТекущийПользователь — это предопределённое значение, которое 1С подставит автоматически. Для сложных условий можно использовать конструктор запросов.
Шаг 4. Проверка в пользовательском режиме
Сохраните роль, обновите конфигурацию базы и проверьте права в 1С:Предприятии. Пользователь с ролью МенеджерПоПродажам должен видеть всех контрагентов, но редактировать — только тех, где он указан как ответственный.
☑️ Проверка настройки права "Ввод по строке"
Типичные ошибки и как их избежать
Даже опытные администраторы сталкиваются с проблемами при настройке этого права. Вот наиболее распространённые ошибки и их решения:
1. Право не работает в управляемых формах
Причина: в управляемых формах проверка прав происходит на стороне сервера, и иногда кэш мешает применению изменений. Решение:
- Очистите кэш клиента (
%APPDATA%\1C\1Cv8\). - Перезапустите сеанс пользователя.
- Проверьте, что в модуле формы нет кода, обходящего стандартную проверку прав.
2. Пользователь видит все строки, но не может редактировать свои
Причина: отсутствует право «Чтение» или неправильно задано условие отбора. Решение:
- Убедитесь, что право «Чтение» включено.
- Проверьте синтаксис условия (например,
=вместо<>). - Используйте отладчик для проверки значения
&ТекущийПользователь.
3. Право работает в тонком клиенте, но не в веб-клиенте
Причина: различия в обработке прав между клиентами. Решение:
- Обновите платформу 1С до актуальной версии (в старых версиях были баги с RLS в веб-клиенте).
- Проверьте настройки публикации на веб-сервере.
Почему право может игнорироваться в фоновых заданиях?
Фоновые задания выполняются от имени системного пользователя Администратор или специальной роли. Если в коде задания явно не указан контекст пользователя (через УстановитьПользователя()), право "Ввод по строке" проверяться не будет.
4. После обновления конфигурации права сбросились
Причина: при обновлении могли быть перезаписаны роли или объекты метаданных. Решение:
- Сравните версии конфигураций в Конфигураторе (меню
Конфигурация → Сравнить конфигурации). - Экспортируйте роли перед обновлением и импортируйте после.
Всегда тестируйте права в режиме 1С:Предприятие от имени реального пользователя, а не администратора. Многие ошибки проявляются только в пользовательском контексте.
Взаимодействие с другими правами и механизмами
Право «Ввод по строке» не существует в вакууме — оно пересекается с другими механизмами безопасности 1С. Разберём ключевые взаимодействия:
1. Право «Добавление» vs «Ввод по строке»
«Добавление» позволяет создавать новые записи, а «ввод по строке» — редактировать существующие. Если пользователю нужно и то, и другое, требуются оба права. Например, для справочника Номенклатура:
- 📌 Добавление — создать новый товар.
- 📝 Ввод по строке — изменить цену или остаток у существующего товара (при условии, что он «свой»).
2. Право «Удаление» и «Ввод по строке»
«Ввод по строке» не подразумевает право на удаление. Чтобы пользователь мог удалять «свои» записи, нужно явно дать право «Удаление» с тем же условием отбора.
3. Взаимодействие с «Полными правами»
Если роль имеет флаг «Полные права», все остальные настройки (включая «ввод по строке») игнорируются. Это частая причина «неработающих» прав — проверьте, не включены ли полные права случайно.
4. Работа с подчиненными объектами
Если справочник имеет подчиненные объекты (например, Контрагенты → Контактная информация), право «ввод по строке» для родительского справочника не автоматически распространяется на дочерние. Их нужно настраивать отдельно.
| Право | Взаимодействие с «Ввод по строке» | Пример |
|---|---|---|
| Чтение | Необходимо для работы «Ввод по строке» | Без права «Чтение» пользователь не увидит записи для редактирования |
| Изменение | Конкурирует с «Ввод по строке» | Если есть «Изменение», то «Ввод по строке» не нужен (и наоборот) |
| Добавление | Дополняет «Ввод по строке» | Позволяет создавать новые записи + редактировать существующие |
| Удаление по строке | Аналог «Ввод по строке», но для удаления | Разрешает удалять только «свои» записи |
| Полные права | Отменяет «Ввод по строке» | При включенных полных правах все ограничения снимаются |
Если нужно разрешить пользователю редактировать только определённые реквизиты строки (например, только поле Цена), используйте комбинацию прав «Ввод по строке» + настройку прав на реквизиты в конфигураторе.
Практические примеры применения
Рассмотрим реальные сценарии, где право «ввод по строке» решает бизнес-задачи.
Пример 1: Ограничение редактирования цен в прайс-листе
Задача: менеджеры должны видеть весь прайс-лист, но изменять цены только по «своей» номенклатуре.
Решение:
- В регистре сведений Цены номенклатуры настройте право «Ввод по строке» с условием:
- Добавьте право «Чтение» без условий.
Номенклатура.Ответственный = &ТекущийПользователь
Пример 2: Разграничение доступа к документам по подразделениям
Задача: сотрудники бухгалтерии должны видеть все счета, но редактировать только счета своего подразделения.
Решение:
- В документе Счет на оплату установите право «Ввод по строке» с условием:
- Проверьте, что поле
Подразделениезаполняется автоматически при создании документа.
Подразделение = &ТекущийПользователь.Подразделение
Пример 3: Ограничение редактирования в массовых обработках
Задача: пользователь должен запускать обработку Массовое изменение цен, но редактировать только свои товары.
Решение:
- В обработке добавьте проверку прав перед изменением каждой строки:
- Настройте право «Ввод по строке» для справочника Номенклатура с нужным условием.
Если НЕ ЗначениеЗаполнено(ПраваДоступа.ВводПоСтроке("Справочник.Номенклатура")) Тогда
Продолжить;
КонецЕсли;
Как обойти ограничение "Ввод по строке" в коде?
В модуле объекта можно явно указать параметр РежимЗаписи = РежимЗаписиДанных.Программный, но это требует права «Программное изменение». Используйте с осторожностью!
Особенности в разных версиях 1С и клиентах
Поведение права «ввод по строке» может отличаться в зависимости от версии платформы и типа клиента. Вот ключевые различия:
1. 1С:Предприятие 8.3 vs 8.2
В 8.3 механизм RLS (включая «ввод по строке») был значительно доработан:
- 🔹 Поддержка сложных условий отбора с вложенными запросами.
- 🔹 Оптимизация производительности при проверке прав на больших объёмах данных.
- 🔹 Возможность настройки прав для виртуальных таблиц (например, остатков).
В 8.2 право работало менее гибко, и для сложных сценариев требовалось писать дополнительный код.
2. Тонкий клиент vs Веб-клиент vs Толстый клиент
| Клиент | Особенности работы права | Рекомендации |
|---|---|---|
| Тонкий клиент | Права проверяются на сервере, кэширование минимальное | Оптимален для работы с RLS |
| Веб-клиент | Возможны задержки при проверке сложных условий | Упрощайте условия отбора для веб |
| Толстый клиент | Права могут проверяться на клиентской стороне (небезопасно) | Избегайте использования в толстом клиенте для критичных данных |
3. Мобильная платформа
В 1С:Мобильной платформе право «ввод по строке» поддерживается, но:
- 📱 Условия отбора должны быть максимально простыми (без сложных запросов).
- 🔄 Синхронизация данных может игнорировать RLS, если не настроена правильно.
В веб-клиенте и мобильной платформе избегайте условий отбора с joins’ами по нескольким таблицам — это может сильно замедлить работу.
4. Работа с расширениями конфигурации
Если право настраивается в расширении, а не в основной конфигурации:
- 🔧 Права из расширения дополняют основные, а не заменяют их.
- 🔄 При отключении расширения права пропадут (если не были дублированы в основной конфигурации).
Альтернативные способы разграничения доступа
Право «ввод по строке» — не единственный инструмент для ограничения редактирования данных. В некоторых случаях целесообразнее использовать другие механизмы:
1. Механизм «Дополнительные отборы»
Позволяет гибко настраивать условия видимости и редактирования данных без изменения ролей. Пример:
- 🔹 Настройка отбора по
Ответственный = &ТекущийПользовательнепосредственно в форме справочника. - 🔹 Преимущество: не требует правки конфигурации (можно сделать в 1С:Предприятии).
- 🔸 Недостаток: работает только в управляемых формах.
2. Использование бизнес-процессов и задач
Если логика редактирования сложная (например, требуется согласование), лучше оформить её через:
- 📌 Бизнес-процессы: маршруты согласования изменений.
- 📌 Задачи: назначение прав на редактирование через механизм задач.
Пример: пользователь запрашивает изменение цены, а менеджер утверждает или отклоняет запрос.
3. Программная проверка прав в модулях
Для нестандартных сценариев можно добавить проверку в модулях объектов:
Процедура ПередЗаписью(Отказ, РежимЗаписи)
Если НЕ ПраваДоступа.ВводПоСтроке(Метаданные.Справочники.Номенклатура) Тогда
Если ЭтотОбъект.Ответственный <> ТекущийПользователь() Тогда
Отказ = Истина;
Сообщить("Вы можете редактировать только свои товары!");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
4. Разделение данных по информационным базам
Если требования к разграничению очень жёсткие (например, полная изоляция данных подразделений), рассмотрите вариант:
- 🔹 Выделение отдельных баз 1С для каждого подразделения.
- 🔹 Использование Распределённой информационной базы (РИБ).
Важно: механизм «Ввод по строке» не защищает от изменений данных через прямые SQL-запросы или внешние обработки. Для полной безопасности используйте его в комбинации с другими средствами (например, ограничением доступа к СУБД).
FAQ: Частые вопросы по праву «Ввод по строке»
Можно ли настроить «ввод по строке» для отчётов?
Нет, право «ввод по строке» применимо только к объектам, поддерживающим запись данных (справочники, документы, регистры). Для отчётов используйте механизм «Дополнительные отборы»** или настройку видимости данных в схеме компоновки.
Почему пользователь видит все строки, но не может редактировать ни одну?
Вероятные причины:
- 🔹 Отсутствует право «Чтение» (без него «ввод по строке» не работает).
- 🔹 Условие отбора задано неверно (например, сравнение с пустым значением).
- 🔹 В модуле объекта есть код, блокирующий редактирование.
Проверьте права в Конфигураторе и включите отладку для диагностики.
Как сделать, чтобы пользователь мог редактировать только определённые реквизиты строки?
Для этого:
- Настройте право «Ввод по строке» для объекта.
- В конфигураторе перейдите в настройки прав на реквизиты (вкладка «Реквизиты» в окне прав роли).
- Установите флаги только для тех реквизитов, которые нужно разрешить редактировать.
Работает ли «ввод по строке» в фоновых заданиях?
По умолчанию — нет. Фоновые задания выполняются от имени системного пользователя, и права RLS не применяются. Чтобы это исправить:
- 🔹 Явно укажите пользователя в коде задания через
УстановитьПользователя(). - 🔹 Или настройте дополнительную проверку прав в модуле задания.
Можно ли ограничить «ввод по строке» по времени (например, только в рабочие часы)?
Прямой функции для этого нет, но можно реализовать через:
- 🔹 Условие отбора с проверкой текущего времени (например,
ТекущаяДата() Между НачалоДня(ТекущаяДата()) И КонецДня(ТекущаяДата()) + 18*3600для работы до 18:00). - 🔹 Глобальный обработчик в модуле приложения, который блокирует запись вне рабочего времени.