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

На первый взгляд может показаться, что «ввод по строке» — это просто разрешение на редактирование отдельных строк. Но на практике здесь есть нюансы: от различий между интерактивным вводом и программной записью до особенностей работы с подчиненными объектами. Неправильная настройка этого права может привести как к избыточным ограничениям, так и к уязвимостям в безопасности. Давайте разберёмся, как оно работает на самом деле.

Если вы только начинаете разбираться в правах 1С, рекомендуем сначала изучить базовые понятия ролей и полномочий. Для опытных администраторов эта статья станет проверкой знаний и источником редко документированных деталей — например, как право «ввод по строке» взаимодействует с Управляемыми формами или Регламентными заданиями.

Что такое право «Ввод по строке» и зачем оно нужно

В классической модели прав 1С пользователь либо имеет полный доступ к объекту (например, справочнику Номенклатура), либо нет. Право «Ввод по строке» вносит градацию: оно позволяет редактировать конкретные записи в объекте, не открывая доступ ко всем данным. Типичный пример — когда менеджер должен вносить только свои заказы, но не чужие.

Технически это право привязано к режиму записи (интерактивный/программный) и контексту выполнения (тонкий клиент, веб-клиент, фоновое задание). Важно понимать, что «ввод по строке» не равносилен «чтению по строке»: первое разрешает изменения, второе — только просмотр.

Где это используется на практике:

  • 📝 Справочники: ограничение редактирования только «своими» контрагентами (например, по ответственному менеджеру).
  • 📄 Документы: разрешение ввода только своих накладных или счетов.
  • 📊 Регистры сведений: изменение только своих записей в регистре Цены номенклатуры.
  • 🔄 Обработки: ограничение прав на редактирование данных в массовых обработках.

Ключевое отличие от права «Изменение» — последнее даёт доступ ко всем полям объекта, тогда как «ввод по строке» может быть ограничен конкретными реквизитами (например, только поле Количество в документе Реализация товаров).

📊 Где вы чаще всего применяете право "Ввод по строке"?
В справочниках
В документах
В регистрах сведений
В отчетах
Не использую

Как право «Ввод по строке» работает на уровне платформы

Механизм реализован через RLS (Row-Level Security) — контроль доступа на уровне строк. Когда пользователь пытается сохранить изменения, платформа 1С:Предприятие 8.3 проверяет:

  1. Есть ли у роли право «Ввод по строке» для данного объекта.
  2. Соответствует ли запись условиям отбора (если они заданы в настройках прав).
  3. Выполняется ли операция в разрешённом контексте (например, не из фонового задания, если это запрещено).

Особенности реализации:

  • 🔧 В управляемых формах право проверяется при сохранении данных (ПередЗаписью).
  • 🖥️ В обычных формах — при вызове метода Записать().
  • 📡 При обмене данными (например, через Универсальный формат обмена) право может игнорироваться, если не настроена дополнительная проверка.

Важно: право «ввод по строке» не блокирует чтение других строк объекта. Если пользователю нужно скрыть чужие записи, требуется дополнительно настроить право «Чтение по строке» с условием отбора.

💡

Чтобы проверить, какие именно строки доступны пользователю для редактирования, используйте отладчик 1С с включенной опцией Показать права доступа в контекстном меню объекта.

Настройка права в конфигураторе: пошаговая инструкция

Рассмотрим процесс на примере справочника Контрагенты. Предположим, нужно разрешить менеджерам редактировать только «своих» контрагентов по полю Ответственный.

Шаг 1. Открытие ролей

В конфигураторе перейдите в ветку Общие → Роли и выберите роль, которую нужно изменить (например, МенеджерПоПродажам). Если подходящей роли нет, создайте новую на основе шаблона.

Шаг 2. Настройка прав для справочника

В дереве прав найдите справочник Контрагенты и установите флаги:

  • Чтение (чтобы пользователь видел справочник).
  • Изменение (полный доступ не нужен).
  • Ввод по строке (разрешаем редактировать отдельные записи).

Шаг 3. Задание условия отбора

Нажмите кнопку Условие рядом с правом «Ввод по строке» и укажите:

Ответственный = &ТекущийПользователь

Здесь &ТекущийПользователь — это предопределённое значение, которое 1С подставит автоматически. Для сложных условий можно использовать конструктор запросов.

Шаг 4. Проверка в пользовательском режиме

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

☑️ Проверка настройки права "Ввод по строке"

Выполнено: 0 / 5

Типичные ошибки и как их избежать

Даже опытные администраторы сталкиваются с проблемами при настройке этого права. Вот наиболее распространённые ошибки и их решения:

1. Право не работает в управляемых формах

Причина: в управляемых формах проверка прав происходит на стороне сервера, и иногда кэш мешает применению изменений. Решение:

  • Очистите кэш клиента (%APPDATA%\1C\1Cv8\).
  • Перезапустите сеанс пользователя.
  • Проверьте, что в модуле формы нет кода, обходящего стандартную проверку прав.

2. Пользователь видит все строки, но не может редактировать свои

Причина: отсутствует право «Чтение» или неправильно задано условие отбора. Решение:

  • Убедитесь, что право «Чтение» включено.
  • Проверьте синтаксис условия (например, = вместо <>).
  • Используйте отладчик для проверки значения &ТекущийПользователь.

3. Право работает в тонком клиенте, но не в веб-клиенте

Причина: различия в обработке прав между клиентами. Решение:

  • Обновите платформу 1С до актуальной версии (в старых версиях были баги с RLS в веб-клиенте).
  • Проверьте настройки публикации на веб-сервере.
Почему право может игнорироваться в фоновых заданиях?

Фоновые задания выполняются от имени системного пользователя Администратор или специальной роли. Если в коде задания явно не указан контекст пользователя (через УстановитьПользователя()), право "Ввод по строке" проверяться не будет.

4. После обновления конфигурации права сбросились

Причина: при обновлении могли быть перезаписаны роли или объекты метаданных. Решение:

  • Сравните версии конфигураций в Конфигураторе (меню Конфигурация → Сравнить конфигурации).
  • Экспортируйте роли перед обновлением и импортируйте после.
💡

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

Взаимодействие с другими правами и механизмами

Право «Ввод по строке» не существует в вакууме — оно пересекается с другими механизмами безопасности 1С. Разберём ключевые взаимодействия:

1. Право «Добавление» vs «Ввод по строке»

«Добавление» позволяет создавать новые записи, а «ввод по строке» — редактировать существующие. Если пользователю нужно и то, и другое, требуются оба права. Например, для справочника Номенклатура:

  • 📌 Добавление — создать новый товар.
  • 📝 Ввод по строке — изменить цену или остаток у существующего товара (при условии, что он «свой»).

2. Право «Удаление» и «Ввод по строке»

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

3. Взаимодействие с «Полными правами»

Если роль имеет флаг «Полные права», все остальные настройки (включая «ввод по строке») игнорируются. Это частая причина «неработающих» прав — проверьте, не включены ли полные права случайно.

4. Работа с подчиненными объектами

Если справочник имеет подчиненные объекты (например, Контрагенты → Контактная информация), право «ввод по строке» для родительского справочника не автоматически распространяется на дочерние. Их нужно настраивать отдельно.

Право Взаимодействие с «Ввод по строке» Пример
Чтение Необходимо для работы «Ввод по строке» Без права «Чтение» пользователь не увидит записи для редактирования
Изменение Конкурирует с «Ввод по строке» Если есть «Изменение», то «Ввод по строке» не нужен (и наоборот)
Добавление Дополняет «Ввод по строке» Позволяет создавать новые записи + редактировать существующие
Удаление по строке Аналог «Ввод по строке», но для удаления Разрешает удалять только «свои» записи
Полные права Отменяет «Ввод по строке» При включенных полных правах все ограничения снимаются
💡

Если нужно разрешить пользователю редактировать только определённые реквизиты строки (например, только поле Цена), используйте комбинацию прав «Ввод по строке» + настройку прав на реквизиты в конфигураторе.

Практические примеры применения

Рассмотрим реальные сценарии, где право «ввод по строке» решает бизнес-задачи.

Пример 1: Ограничение редактирования цен в прайс-листе

Задача: менеджеры должны видеть весь прайс-лист, но изменять цены только по «своей» номенклатуре.

Решение:

  1. В регистре сведений Цены номенклатуры настройте право «Ввод по строке» с условием:
  2. Номенклатура.Ответственный = &ТекущийПользователь
  3. Добавьте право «Чтение» без условий.

Пример 2: Разграничение доступа к документам по подразделениям

Задача: сотрудники бухгалтерии должны видеть все счета, но редактировать только счета своего подразделения.

Решение:

  1. В документе Счет на оплату установите право «Ввод по строке» с условием:
  2. Подразделение = &ТекущийПользователь.Подразделение
  3. Проверьте, что поле Подразделение заполняется автоматически при создании документа.

Пример 3: Ограничение редактирования в массовых обработках

Задача: пользователь должен запускать обработку Массовое изменение цен, но редактировать только свои товары.

Решение:

  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: Частые вопросы по праву «Ввод по строке»

Можно ли настроить «ввод по строке» для отчётов?

Нет, право «ввод по строке» применимо только к объектам, поддерживающим запись данных (справочники, документы, регистры). Для отчётов используйте механизм «Дополнительные отборы»** или настройку видимости данных в схеме компоновки.

Почему пользователь видит все строки, но не может редактировать ни одну?

Вероятные причины:

  • 🔹 Отсутствует право «Чтение» (без него «ввод по строке» не работает).
  • 🔹 Условие отбора задано неверно (например, сравнение с пустым значением).
  • 🔹 В модуле объекта есть код, блокирующий редактирование.

Проверьте права в Конфигураторе и включите отладку для диагностики.

Как сделать, чтобы пользователь мог редактировать только определённые реквизиты строки?

Для этого:

  1. Настройте право «Ввод по строке» для объекта.
  2. В конфигураторе перейдите в настройки прав на реквизиты (вкладка «Реквизиты» в окне прав роли).
  3. Установите флаги только для тех реквизитов, которые нужно разрешить редактировать.
Работает ли «ввод по строке» в фоновых заданиях?

По умолчанию — нет. Фоновые задания выполняются от имени системного пользователя, и права RLS не применяются. Чтобы это исправить:

  • 🔹 Явно укажите пользователя в коде задания через УстановитьПользователя().
  • 🔹 Или настройте дополнительную проверку прав в модуле задания.
Можно ли ограничить «ввод по строке» по времени (например, только в рабочие часы)?

Прямой функции для этого нет, но можно реализовать через:

  • 🔹 Условие отбора с проверкой текущего времени (например, ТекущаяДата() Между НачалоДня(ТекущаяДата()) И КонецДня(ТекущаяДата()) + 18*3600 для работы до 18:00).
  • 🔹 Глобальный обработчик в модуле приложения, который блокирует запись вне рабочего времени.