1c установить только чтение
В 1С 8.3 (8.2) для работы с файлами существует два объекта: Файл и ДиалогВыбораФайла.
Рассмотрим каждый по отдельности.
Диалог выбора файла
В указанных выше примерах есть одно неудобство. Путь к файлу прописан жестко в коде. Чтобы выбрать файл интерактивно, существует объект ДиалогВыбораФайла, о котором речь пойдет ниже.
Объект ДиалогВыбораФайла служит для открытия файла (файлов), сохранения файла или выбора каталога в диалоге специального вида.
Например, выберем и откроем некоторый файл с расширением txt:
Задаем режим диалога выбора. Доступны три варианта: ВыборКаталога, Открытие, Сохранение
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Нужно предоставить кому-либо доступ к базе в режиме только-просмотр. Новый сотрудник на испытательном сроке, или же аудиторы-проверщики. Легкий способ решить эту проблему изложен ниже, с приложенной подсистемой.
Основные плюсы:
- минимум доработки;
- не требуется сопровождение (работает после обновления основной конфигурации поставщика);
- позволяет для любого набора прав включить запрет редактирования.
Чтобы пользователь не мог не только редактировать документы, но и портить сознательно/несознательно наши справочники, нужно:
- создать пустую роль, не дающую доступ ни к какому элементу данных;
- создать три подписки на события перед записью: для всех Документов, Справочников, Регистров сведений;
- в обработчиках подписок анализировать доступность этой роли, и возвращать отказ, если роль доступна.
Поскольку роль ничего не разрешает, а, напротив, имеет запретительную природу, я назвал её "ЗапретРедактирования" (вместо того, чтобы именовать "Только просмотр"), но это дело вкуса. Для полноты картины еще можно создать подписки для констант, планов счетов, планов видов характеристик, но основное и самое критичное - документы, справочники и регистры сведений. При этом сам пользователь может иметь произвольный набор ролей в вашей конфигурации, тоесть можно создать кассира-только чтение, или экономиста-только-чтение, или кадровика без возможности изменять базу. Даже для полных прав будет работать, хотя специально не проверял проверено.
Тоесть с помощью имеющихся ролей мы даем доступ к тем данным, которые считаем нужными, а затем добавлением одной роли (одной на всех) запрещаем пользователю изменения. Таким образом, видеть он сможет то, что мы разрешим ролями (а не всю базу), а изменять не смощет ничего. При обновлении типовой конфигурации никаких дополнительных телодвижений, связанных с запретом редактирования, не потребуется.
В прилагаемом файлике набор - роль, подписки и модуль. Вы можете объединить их со своей конфигурацией и безбоязненно даваь доступ только на просмотр всяким аналитикам и контролёрам.
Картинка показывает содержимое cf-файла.
Этот путь считаю простым, а главное - разовым. После добавления документов/справочников/регистров, они всё так дже останутся недоступными для редактирования.
Поэтому работа с правами доступа – одна из частотных задач при внедрении типовых решений.
И, конечно, при добавлении новых документов или справочников – также нужно сразу настроить права доступа на них.
Комментарии / обсуждение (185):
В листинге процедуры Добавить упоминается метод оповещения ОткрытьТаблицуЗавершение.
Но его код не приведен. Можете подсказать, какая там логика должна быть описана?
Добрый день!
Указанный метод должен содержать действия, которые будут выполнены после того, как пользователь закроет открывшуюся форму объекта dbo_nomenklatura. Нам не требуются никакие действия после закрытия этой формы, поэтому обработчик может быть пустой.
В этой статье речь пойдет о настройке прав доступа пользователей к объектам системы 1С.
В 1С 8для управления доступа пользователей используется отдельный объект метаданных, который называется Роли.
Далее мы рассмотрим, как использовать и настраивать роли в 1С предприятие 8.3.
Обратите внимание! Эта статья написана в помощь программистам. Настройка прав в пользовательском режиме на примере 1С Бухгалтерия рассмотрена в данной статье.
Роль определяет набор прав пользователя, которые он имеет. Механизм ролей очень похож на механизмы прав Windows Active Directory. Для каждого из объектов (справочники, документы) разработчик устанавливает свой набор прав — чтение/запись/добавление/изменение/…
Набор доступных прав — совокупность всех разрешений в ролях пользователя.
Ниже мы рассмотрим подробно каждый атрибут метаданных при настройке роли пользователя 1С 8.3.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
В сегодняшнем видео
В видео мы рассмотрим, что нужно знать о системе прав доступа в типовых решениях:
- Возможности расширений конфигурации – работа с ролями
- Объекты типовых конфигураций для организации прав доступа
- Ограничения текущей версии БСП
- Права доступа на функциональность типовых решений с помощью функций БСП
Таким образом, Вы узнаете не только как дорабатывать права доступа, но и как выделить привилегированных пользователей, например, кому запрещена отгрузка ниже плановой себестоимости.
Если Вы хотите разобраться с этим прямо сейчас – у нас есть курс по администрированию 1С:
Не откладывайте свое обучение!
Удаление
Перемещение
Комментарии / обсуждение (45):
Добрый день. Подскажите, что делаю не так- беру стандартную роль которая отвечает за список выводимых разделов, переношу ее в расширение, в нее переношу описание раздела и снимаю полностью галку. После запуска раздел продолжается отображаться.
Добрый день!
Возможно, в конфигурации есть еще одна роль, которая предоставляет права на просмотр подсистемы, поэтому она и отображается в режиме “1С:Предприятие”.
Еще одно предположение – расширение не было подключено при старте сеанса, например, из-за того, что значение какого-либо из контролируемых свойств в расширении не совпало со значением этого свойства в основной конфигурации.
Добрый день.
Подскажите пожалуйста, в расширении создаю роль и даю права на реквизит документа, который создан в расширении конфигурации, а пользователям назначаю группу доступа с этими правами из расширения.
Но у меня с полными правами нет доступа к объекту, а у пользователя – есть. Причем проблема в том, что новые реквизиты объекта в расширении существуют для пользователя, например, Объект.НовыйРеквизит, как и Элементы.НовыйРеквизит, а вот для меня с полными правами Элементы.НовыйРеквизит не существует при открытии формы. БСП 3.0.3
Скорее всего Ваши полные права “не видят” реквизит из расширения. Заимствуйте полные права в расширение и проверьте, что для нового реквизита есть право доступа.
Добрый день.
Не хватало прав на работу с отдельными документами в Бух 3.0 (Расходный кассовый ордер). Точнее они есть, но уж больно широкие, почти полные. Пришлось добавить в расширение БП 3.0 соответствующую роль с правами на РКО и форму журнала. При открытии формы журнала под новой ролью, состав команд и кнопок не соответствует типовой заимствованной форме. Вроде дал все нужные права, в составе команд ничего не менял, функциональных опций не менял.А вот при добавлении на заимствованную форму новых кнопок – все отражается как надо…
Все проверил, трассировка кода ничего не показывает. Подскажите в каком направлении рыть. Спасибо!
В платформе начиная с версии 8.3.5 реализована возможность записи данных в таблицы внешних источников данных. В статье рассмотрена данная функциональность, расширяющая существующие возможности по интеграции конфигурации со сторонними системами.
Применимость
В статье рассматривается платформа 1C 8.3.5. Материал актуален и для текущих релизов платформы.
Запись во внешние источники данных в «1С:Предприятие 8»
В платформе 8.2.14 в дерево метаданных был добавлен новый объект – внешние источники данных. Назначение этого механизма – получение данных из внешних баз по отношению к 1С.
С выходами новых релизов платформы внешние источники данных развивались, например, стало возможным помещение во временные таблицы, выполнение соединений с обычными таблицами.
В статье мы рассмотрим, какие инструменты есть у разработчика для осуществления записи во внешние источники данных.
Все действия выполнялись на СУБД Microsoft SQL Server 2008 R2.
В платформе 8.3.4 была реализована возможность использования функций, описанных во внешних источниках данных.
Эта возможность позволяет запускать хранимые процедуры на стороне SQL Server, а при их помощи обращаться к данным внешних источников, в том числе и на запись.
Разберем пример. Создадим при помощи SQL Management Studio новую базу данных с именем kursy_test. Все дальнейшие эксперименты будут выполняться на ней.
В этой базе создадим таблицу nomenklatura, для этого напишем скрипт следующего содержания:
USE [ kursy_test ]
GO
CREATE TABLE [ dbo ] . [ nomenklatura ](
[ id ] [ int ] NOT NULL ,
[ description ] [ nvarchar ]( 150 ) NOT NULL ,
[ price ] [ numeric ]( 15 , 2 ) NULL ,
CONSTRAINT [ PK_id ] PRIMARY KEY ([ id ])
)
GO
В результате выполнения будет создана таблица следующей структуры:
Теперь нам нужно создать две хранимые процедуры, с помощью которых и будет выполняться модификация данных.
Первую процедуру назовем insert_nomenklatura. Она будет предназначена для добавления новой строки в таблицу. Скрипт для ее создания будет выглядеть так:
USE [ kursy_test ]
GO
CREATE PROCEDURE insert_nomenklatura
@id int ,
@description nvarchar ( 150 ),
@price numeric ( 15 , 2 )
AS
BEGIN
INSERT INTO [ kursy_test ] .dbo. [ nomenklatura ] ([ id ], [ description ] ,[ price ])
VALUES ( @id , @description , @price )
END
GO
Вторая процедура с именем update_nomenklatura будет выполнять обновление уже существующей в таблице записи. Чтобы ее создать, был запущен такой скрипт:
USE [ kursy_test ]
GO
CREATE PROCEDURE update_nomenklatura
@id int ,
@description nvarchar ( 150 ),
@price numeric ( 15 , 2 )
AS
BEGIN
UPDATE [ kursy_test ] .dbo. [ nomenklatura ]
SET [ description ]= @description ,[ price ]= @price
WHERE [ id ]= @id
END
GO
В Обозревателе объектов созданная таблица и две хранимые процедуры выглядят следующим образом:
Все подготовительные действия на стороне Microsoft SQL Server мы выполнили, теперь переходим в конфигуратор “1С:Предприятие 8”.
Создаем новый внешний источник данных с именем Nomenklatura. При создании новой таблицы в этом источнике данных указываем следующие параметры подключения к источнику данных:
Строку соединения укажем следующую:
При наличии пароля у пользователя sa его необходимо указать в параметре Password строки соединения.
Если все параметры подключения указаны корректно, при нажатии на кнопку ОК, откроется окно, содержащее таблицы, доступные в источнике данных:
Для увеличения нажмите на изображение.
Отмечаем галочками интересующие нас поля таблицы. При нажатии кнопки Готово во внешнем источнике данных Nomenklatura будет создана таблица dbo_nomenklatura:
Теперь переключаемся на закладку “Функции” нашего источника данных.
При помощи аналогичного мастера производим добавление двух хранимых процедур:
Получаем следующий внешний вид закладки “Функции”:
Теперь запрограммируем пользовательский интерфейс для работы с внешним источником данных.
В форме списка на командной панели расположим кнопку “Добавить” со следующим обработчиком:
&НаКлиенте
Процедура Добавить ()
Оповещение = Новый ОписаниеОповещения ( “ОткрытьТаблицуЗавершение” , ЭтотОбъект );
ОткрытьФорму (
“ВнешнийИсточникДанных.Nomenklatura.Таблица.dbo_nomenklatura.ФормаОбъекта” , , , , , ,
Оповещение , РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс );
КонецПроцедуры
В форме объекта разместим кнопку “Сохранить”, при нажатии на которую выполняется следующий код:
В режиме предприятия форма списка выглядит следующим образом:
Форма объекта представлена ниже:
Для увеличения нажмите на изображение.
После нажатия на кнопку “Сохранить” вызывается хранимая процедура на SQL Server, в таблицу базы данных будет добавлена новая запись.
Таким образом, при помощи хранимых процедур мы реализовали запись во внешние источники данных.
В платформе 8.3.5 появилась новая возможность – запись во внешние источники данных напрямую, минуя разобранный выше механизм хранимых процедур.
Данные можно редактировать как программно, так и интерактивно. И для нашего примера прибегать к конфигурированию не придется.
В командных панелях и в меню “Еще” можно увидеть стандартные кнопки, такие как “Создать”, “Скопировать”, “Изменить” и т.д.
Для увеличения нажмите на изображение.
А в форме объекта появились кнопки “Записать” и “Записать и закрыть”:
Как видно, теперь работа с внешними источниками похожа на работу со справочниками, документами и т.д.
Рассмотрим, какие изменения были произведены на уровне метаданных, чтобы сделать возможным запись во внешние источники данных.
У таблицы данных добавлено новое свойство ТолькоЧтение (тип – булево).
Если это свойство установлено в Истина, запись данных в эту таблицу средствами платформы невозможна.
Поле таблицы данных обладает теперь свойствами:
- ТолькоЧтение (тип – булево) – возможно ли изменение данных в этом поле;
- РазрешитьNull (тип – булево) – возможно ли в данном поле сохранять значение NULL.
Свойство Только чтение следует устанавливать в значение Истина для полей базы данных с автоматическим изменением, автоматически формируемые ключевые поля, вычисляемых полей и т. д.
Добавлять, изменять и удалять данные во внешних источниках можно с помощью встроенного языка.
Для этого у объектов ВнешнийИсточникДанныхТаблицаНаборЗаписей и ВнешнийИсточникДанныхТаблицаОбъект были реализованы новые методы Записать() и Удалить().
Рассмотрим пример программного добавления новой записи для внешнего источника данных, рассмотренного выше.
В модуле объекта таблицы внешнего источника данных теперь можно задать обработчики событий, возникающих при записи, такие как ПередЗаписью(), ПриЗаписи() и т. д.:
В данной статье были рассмотрены два варианта записи данных во внешние источники данных – при помощи хранимых процедур и при помощи новых механизмов платформы 8.3.5.
Таким образом, в платформе теперь реализованы механизмы для полноценной интеграции с внешними приложениями.
В редакции 8.3.6 описываемый выше функционал был расширен при помощи новых специальных методов ПолучитьИзменяемыеПоля() и УстановитьИзменяемыеПоля(). С помощью них предоставлена возможность выполнять операцию записи в те поля таблицы ВИД, которые помечены в конфигураторе как доступные только для чтения. Благодаря этому стало возможным реализовать такой сценарий, при которой запись в отдельные поля таблицы ВИД возможна только в тех случаях, когда это необходимо в соответствии с бизнес-логикой приложения.
В редакции 8.3.7 был доработан механизм, определяющий какие конкретно поля таблиц ВИД могут содержать значения NULL. До этого момента все таблиц ВИД могли принимать это значения. Такое изменение связано с увеличением скорости сортировки в динамических списках по этим полям.
В редакции 8.3.8, наконец, стало возможным определение того факта, что внешний источник данных находится в состоянии транзакции. Эта функциональность представлена новым методом ВнешнийИсточникДанныхМенеджер.ТранзакцияАктивна()
В заключении отметим, что для внешних источников данных, как было показано выше, описываются таблицы данных из классической реляционной модели. Платформа же использует иную парадигму работу с данными, предлагая разработчику некоторый набор типов прикладных объектов (справочники, документы, регистры и т.д.). Именно поэтому система при работе с таблицами внешних источников данных не поддерживает большую часть функциональности, которая присуща ее “родным” объектам. Поэтому рекомендуется воздержаться от разработки какой-то бизнес-логики, с учетом использования таблиц ВИД, если это не связано с задачами интеграции с уже существующими системами. Или, говоря по простому, нужно стараться избегать хранить данные, которые активно используются в вашем приложении, в какой-то другой таблице внешней системы, если они этой системой не используются.
В следующей статье мы рассмотрим логическое продолжение использования технологии внешних источников данных в системе «1С:Предприятие».
PDF-версия статьи для участников группы ВКонтакте
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.
Общие настройки роли 1С
Если открыть объект метаданных Роль, мы можем увидеть следующую картину:
У объекта есть две закладки — Права и Шаблоны ограничений. Права — основная закладка, Шаблоны — вкладка для настройки прав на уровне записи в 1С (RLS). Это очень важная тема, её я постараюсь описать в будущих статьях.
Будем рассматривать только вкладку Права.
- Объекты — список метаданных, на которые будут устанавливаться права.
- Права — список возможных для установки настроек прав.
- Ограничение доступа к данным — поля роли для настройки РЛС (настроек прав на уровне записей)
Следует обратить внимание на галочки в нижней части:
- Устанавливать права для новых объектов — если флаг установлен у роли, на новые объекты метаданных будут автоматически установлены разрешающие права. Рекомендую установить, если Вы часто забываете установить права на новые объекты.
- Устанавливать права для реквизитов и табличных частей по умолчанию — флаг, при установке которого реквизиты и табличные части будут наследовать права владельца(справочника, документа и т.д.)
- Независимые права подчиненных объектов — если флаг установлен, то система при определении права на объект конфигурации учтёт права на родительский объект
Чтение файла в 1С
Часто бывает необходимо прочитать текст файла построчно, например, для анализа каждой строки. Для этого используем объект ЧтениеТекста.
Копирование файла
Здесь все очень просто
Запись текста из 1С в файл
Заметим, что при записи текстового файла можно установить кодировку.
Нарушение прав доступа
Такую ошибку можно увидеть, если недостаточно прав на чтение/редактирование/удаление данных. Система выдаёт вот такую ошибку:
Объект 1С — файл
Объект Файл служит для управления параметрами файлов.
Сразу стоит заметить, что данный объект не предназначен для чтения и записи из файлов.
Например, прочитаем параметры некоторого файла, находящегося на диске C:
В результате мы получим следующую информацию (если файл найден):
Параметры файла:
Полное имя файла: C:\Работа с файлами\статья.txt
Имя: статья.txt
Имя без расширения: статья
Расширение: .txt
Путь без имени: C:\Работа с файлами\
Размер: 899
Это файл: Да
Изменен: 18.05.2015 16:21:28
Только чтение: Нет
Невидимость: Нет
Настройка прав 1С на другие объекты метаданных
Для остальных основных объектов (справочники, константы, документы, регистры…), набор прав у роли достаточно стандартен:
- Чтение — чтение (программное)
- Добавление — добавление (программное)
- Изменение — изменение (программное)
- Удаление — удаление (программное)
- Просмотр — просмотр
- Интерактивное добавление — интерактивное добавление
- Редактирование — редактирование
- Интерактивная пометка удаления — интерактивная пометка на удаление
- Интерактивное снятие пометки удаления — снятие пометки на удаление
- Интерактивное удаление помеченных— удаление помеченных объектов
- Ввод по строке — использование режима ввода по строке
- Интерактивное удаление — непосредственное удаление (shift +del)
Права только для документов:
- Интерактивное проведение — проведение
- Отмена проведения — отмена проведения документов
- Интерактивное проведение неоперативное — проведение (стандартными командами форм) документа в неоперативном режиме
- Интерактивная отмена проведения — интерактивная отмена проведения
- Интерактивное изменение проведенных — редактирование проведенного документа. Если право у роли не установлено, то пользователь не может удалить проведенный документ, установить пометку удаления, перепровести или сделать непроведенным. Форма такого документа открывается в режиме просмотра
Только для регистров накопления и бухгалтерии
- УправлениеИтогами — управление итогами регистра бухгалтерии и регистра накопления (установка периода, по который рассчитаны итоги, и пересчет итогов)
Только для обработок и отчетов:
Привилегированный режим 1С
Если Вы не хотите давать роли права на какие-либо действия, но эти метаданные нужно использовать в какой-то момент, можно воспользоваться методом «УстановитьПривилегированныйРежим()» (или использовать привилегированный режим общего модуля).
Все, что внутри, будет выполняться без проверки прав пользователя.
Настройки прав на всю конфигурацию
Если открыть Роль и кликнуть на корень конфигурации, мы увидим следующие настройки:
Подробнее о каждом из прав на всю конфигурацию:
- Администрирование — администрирование информационной базы (требуется наличие права «Администрирование данных»)
- Администрирование данных — право на административные действия над данными
- Обновление конфигурации базы данных — право на обновление конфигурации базы данных
- Монопольный режим — использование монопольного режима
- Активные пользователи — просмотр списка активных пользователей
- Журнал регистрации — журнал регистрации — право запуска тонкого клиента
- Веб клиент — право запуска веб-клиента
- Толстый клиент — право роли запуска толстого клиента
- Внешнее соединение — право запуска внешнего соединения
- Automation — право на использование automation
- Режим «Все функции» — доступ к пункту меню «Все функции» в режиме управляемого приложения
- Сохранение данных пользователя — разрешение или запрет на сохранение данных пользователя (настроек, избранного, истории). Особенно актуально для 1С управляемых форм.
- Интерактивное открытие внешних обработок — открытие внешних обработок
- Интерактивное открытие внешних отчетов — открытие внешних отчетов
- Вывод — вывод на печать, запись и копирование в буфер обмена
Объект не найден…
Ошибка, когда в полях отображается некое ( … ):
Как правило, специалисты думают, что это просто так называемая «битая ссылка». Но это не всегда так. Такая ошибка бывает и при неправильно настроенном механизме прав RLS. Это связано с тем, что у пользователя не хватает прав, чтобы получить представление ссылки.
Для того чтобы понять, битая ссылка или нет, просто зайдите в базу под пользователем с полными правами.
Для массового поиска таких ошибок подойдет статья как найти битые ссылки в базе 1С.
P.S. Если у Вас все же не получилось разобраться в ролях пользователей, Вы можете заказать услуги 1С программиста.
Видео с примером настройки прав в 1С бухгалтерии 3.0:
Другие статьи по 1С:
-
(обновление 1С, резервные копии и т.д); (для пользователей)
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Доступна ли роль 1С пользователю?
Чтобы узнать, нужно выполнить функцию РольДоступна(), передав туда название роли строкой.
Например:
Запись в файл
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Теперь, когда мы выбрали и открыли файл, можно с ним работать, т.е. прочитать его содержимое или записать в него что-нибудь.
Рассмотрим пример:
Читайте также: