Объекты доступа документов

При обновлении конфигурации периодически может возникать ошибка "Записи регистра сведений стали неуникальными" или "Имеются записи с одинаковыми измерениями"

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

Однако у пользователя в этом регисте указано, что для "Главного склада" за помещение "Продукты" отвечает Иванов, а за помещение "Холодильники" — Петров.
При обновлении информационной базы платформа должна оставить только одну запись с ответственным. Но она не может решить за пользователя, кого поставить ответственным за "Главный склад" вцелом (Иванова или Петрова).
Поэтому выдается сообщение об ошибке.
В зависимости от конкретной ситуации, сообщение может звучать как "Записи регистра сведений стали неуникальными" либо "Имеются записи с одинаковыми измерениями".
Смысл сообщения одинаков.
Это сообщение означает, что в новой структуре регистров образовалось несколько записей с одним набором измерений и их нужно свернуть в одну.


Для решения проблемы удаляем одну из записей, чтобы 1С однозначно знала, что за "Главный склад" отвечает Иванов.

Ошибки неуникальности записей в 1С

В типовых конфигурациях в большинстве случаев эта проблема решается разработчиком программно. Т.е. обновление конфигурации само при необходимости сворачивает записи регистра.
Однако в некоторых случаях (например, если выполняется обновление с пропуском части релизов, или конфигурация доработана) данные могут не свернуться и их нужно свернуть самостоятельно.
Для того, чтобы определить, что именно изменилось, выполняем режим "Конфигурация" — "Сравнить конфигурации". И сравниваем основную конфигурацию с конфигурацией базы данных. При таком сравнении мы однозначно можем определить, какие именно поля удалены или изменились.

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

Инструкция по свертке неуникальных записей:

1. Открыть обработку.
2. Выбрать регистр сведений, в котором появились неуникальные записи.
3. Отметить измерения которые будут удалены при обновлении.
4. Нажать "Свернуть дубли".

Обработка найдет дублирующиеся строки и свернет их в одну строку.
После этого обновление конфигурации пройдет корректно.

Также можно просто проверить наличие дублей без изменения данных

Read Full Article

Права доступа в 1С:Предприятии 8

В 1С:Предприятии различают два типа прав – основные и интерактивные.

Основные (неинтерактивные) – проверяются всегданезависимо от способа обращения к объектам информационной базы.

Интерактивные – проверяются при выполнении интерактивных операций (например, операция "Установить пометку удаления").

Нужно учитывать, что проверку интерактивных прав можно обойти, создав, например, при конфигурировании форму самостоятельно и заменив стандартные команды своими, а проверку неинтерактивных прав нельзя обойти ни при каких обстоятельствах. Неинтерактивными правами защищается характерная для объекта фундаментальная функциональность, за это отвечают, например, такие права, как: "Добавление", "Чтение", "Изменение", "Удаление".

Для построения защищенных прикладных решений достаточно управлять только 4-мя основными правами доступа — "Добавление", "Чтение", "Изменение" и "Удаление".

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

Пример проверки прав из языка:

Копировать в буфер обменаПроцедура КнопкаНажатие(Элемент) Разрешено = ПравоДоступа("ИнтерактивноеУдаление", Метаданные.Документы.Документ1);ЕслиНе Разрешено Тогда Предупреждение ("Удалять не разрешено");// … необходимые действияКонецЕсли// … необходимые действияКонецПроцедуры

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

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

Проверка основных и интерактивных прав используется расширениями формы, табличного поля и поля ввода (расширение формы определяется ее основным реквизитом, а табличного поля и поля ввода — типом редактируемых данных). Благодаря этому, если не установлено право "Просмотр", то форма списка или форма объекта не откроется, и будет выдано стандартное сообщение о нарушении прав доступа.

Рассмотрим проверку прав расширениями формы, табличного поля и поля ввода на примере документа:

  • При открытии формы документа проверяется право "Просмотр", после чего, если это форма нового объекта, то проверяется право "ИнтерактивноеДобавление", а если нет — право "Редактирование". Если выполняется запись с проведением, то проверяются права "ИнтерактивноеПроведение",  "ИнтерактивнаяОтменаПроведения" или "ИнтерактивноеПроведениеНеОперативное", в зависимости от режима записи.

    Записи регистра сведений стали неуникальными

  • Расширение табличного поля для журнала документов при открытии формы, в которой журнал установлен основным реквизитом, проверяет, что право "Просмотр" установлено хотя бы у одного документа журнала. При проведении документов из журнала проверяются права "ИнтерактивнаяОтменаПроведения", "ИнтерактивноеПроведение" и "ИнтерактивноеПроведениеНеОперативное". При удалении документов проверяется право "ИнтерактивноеУдаление", а при установке/снятии пометки на удаление проверяются права "ИнтерактивнаяПометкаУдаления" и "ИнтерактивноеСнятиеПометкиУдаления". При добавлении нового документа, после выбора его типа, расширение табличного поля журнала документов проверяет право "ИнтерактивноеДобавление".
  • Поле ввода для документа проверяет только право "ВводПоСтроке".

Связанные права

Часть прав в системе 1С:Предприятия связаны друг с другом. Это означает, что основные права доступа, такие как "Чтение", "Изменение", "Добавление" и "Удаление" и некоторые другие могут влиять на права, отвечающие за такие операции с объектом, которые, в конечном счете, приведут к простейшим операциям. Например, нельзя разрешить право "Изменение", не выдав право "Чтение".

Интерактивные права напрямую зависят от их неинтерактивных аналогов, т.е. право "Интерактивное удаление" зависит от права "Удаление". На практике при конфигурировании это выглядит так, что при разрешении интерактивных прав аналогичные им неинтерактивные будут автоматически разрешены, и, наоборот, при снятии неинтерактивных прав соответствующие им интерактивные автоматически будут сброшены. Допускается лишь установка неинтерактивного права и сброс интерактивного, но не наоборот. Например, нельзя разрешить интерактивное право "Интерактивное удаление" и запретить неинтерактивное "Удаление".

Зависимость прав может выстраиваться в сложные цепочки, например, у объекта "Документ" право "Интерактивная отмена проведения" зависит от прав "Отмена проведения" и "Просмотр" одновременно, где первое зависит от "Изменение", которое, в свою очередь, зависит от права "Чтение" (см. рисунок).

Ключевым является право "Чтение", при его отсутствии автоматически пропадают любые другие права на доступ к объекту.

Алфавитный список прав доступа 1С:Предприятия

Право доступа Описание
Automation Разрешает использование 1С:Предприятие в режиме automation.
Администрирование Разрешает административные действия, например, ведение списка пользователей или открытие конфигурации.
АктивныеПользователи Разрешает просмотр списка активных пользователей. Это право может использоваться при организации "гостевого входа" в прикладном решении.
ВводПоСтроке Разрешает использование режима ввода по строке для различных объектов.
ВнешнееСоединение Разрешает использование 1С:Предприятия через COM соединение.
Добавление Разрешает добавление объектов данного вида. Проверяется на уровне объекта и на уровне БД.
ЖурналРегистрации Разрешает просмотр журнала подключений и протоколов работы
Изменение Разрешает изменение объектов данного вида. Проверяется на уровне объекта и на уровне БД.
ИнтерактивнаяОтменаПроведения Разрешает интерактивную отмену проведения
ИнтерактивнаяПометкаУдаления Разрешает интерактивную установку пометки удаления
ИнтерактивноеДобавление Разрешает интерактивное добавление объектов данного вида
ИнтерактивноеОткрытиеВнешнихОбработок Разрешает открытие внешних обработок стандартными командами меню
ИнтерактивноеПроведение Разрешает интерактивное проведение документов данного вида
ИнтерактивноеПроведениеНеОперативное Разрешает интерактивное проведение (стандартными командами форм) документа в неоперативном режиме
ИнтерактивноеСнятиеПометкиУдаления Разрешает интерактивное снятие пометки на удаление
ИнтерактивноеУдаление Разрешает интерактивное непосредственное удаление
ИнтерактивноеУдалениеПомеченных Разрешает интерактивное удаление помеченных объектов
Использование Разрешает использование обработки, отчета, интерфейса
МонопольныйРежим Разрешает переключение в монопольный режим при работе в режиме 1С:Предприятия.
ОтменаПроведения Разрешает отмену проведения документов
Проведение Разрешает проведение документов
Просмотр Разрешает просмотр объектов (например, в списках)
Редактирование Разрешает редактирование объекта
Удаление Разрешает удаление
УправлениеИтогами Разрешает управление итогами регистра бухгалтерии и регистра накопления — установку периода, по который рассчитаны итоги, и пересчет итогов
Чтение Разрешает чтение данных из информационной базы