Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 июн 2021, 21:00

Доступность бух. проводок в ручной операции

Автор igwtbox, 03 ноя 2016, 12:35

0 Пользователей и 1 гость просматривают эту тему.

igwtbox

Добрый день, уважаемые профессионалы! Помогите, пожалуйста!
Вводные данные: 8.3, Управляемое приложение, Самописная конфа, Документ "Операция" для ввода бухгалтерских проводок в базу (На форме документа таблица отображает реквизит формы - набор записей регистра бухгалтерии. Собственно, как в типовой). В регистре есть балансовое измерение Организация. Есть справочник Пользователи, в котором в табличной части пользователям предоставляются права доступа к проводкам определенных организаций. В одной Операции могут быть проводки по разным Организациям.
Внимание вопрос!
Не могу сообразить, как ограничить доступ к проводкам в документе Операция, так чтобы пользователь не видел "чужие" проводки?

igwtbox

ДОПОЛНЕНИЕ:
Пытаюсь ограничить доступ к данным. В правах на чтение регистра пишу следующее ограничение:

Основной ИЗ РегистрБухгалтерии.Основной КАК Основной
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
    ПО (Основной.Организация В (Пользователи.ДоступПоОрганизациям.Огранизация))
ГДЕ Пользователи.Наименование = &ИмяПользователя

Работает, когда есть доступ ко всем организациям, имеющимся в Операции. И не работает, когда доступ предоставлен не ко всем. Ошибка: "У пользователя недостаточно прав на исполнение операции над базой данных". Ошибка возникает из-за того, что при чтении набора записей регистра бухгалтерии отсутствует возможность установить отбор по измерениям регистра. Можно только по регистратору.

LexaK

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

а в вашем варианте только по очереди!

то что вы хотите, это в форме объекта (документа) надо рулить, Отборы, Фильтры и т.д.
да и не логично это когда в одном документе у вас несколько организаций.
ответ Понравился? (в смысле пригодился?)

igwtbox

Не скажите! Задача - очень логично звучит. Есть группа компаний. Одна компания дает другой заем. Один пользователь отвечает за одну компанию, другой - за другую. Один пользователь не должен видеть учета другой организации - это элементарная безопасность. С точки зрения управленческого учета - операция одна - у владельца группы деньги перетекли из одного кармана в другой. Значит и операция должна быть одна, в которой отражаются проводки обоих организаций. Более того, в этой же операции есть проводка и по управленческому учету (Деньги из одного кармана переместились в другой). А это вообще святая святых. Сюда доступ уже имеет только третий пользователь. И в логике "Одна хоз.операция - одна операция в 1С" это должен быть один документ.

LexaK

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

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

но что бы весь учет строить одной ТЧ одного документа Операция.  :xfbnsdfb:

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

igwtbox

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

ilyay

Можно в форму читать данные с помощью запроса с опцией РАЗРЕШЕННЫЕ.

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


Добавлено: 03 ноя 2016, 14:52


На мой взгляд возможны следующие варианты архитектуры, как идеи:

1. Наличие буферной зоны (некая область регистров, справочников...), к которой все имеют доступ.
Доступ пользователя 1 - Буферная зона (общая информация) - Доступ пользователя 2.
( Орг1.ссылка - Орг1.Наименование, Орг2.Наименование - Орг2.Ссылка )

Тогда все запросы пользователя 1 должны работать в первых двух зонах. А пользователя 2 в последних двух.
Пользователь 1 не знает ничего о ссылке пОльзователя 2, но отображение реквизитов сохраняется.

2. Обезличивание закрытой информации.
Добавить в справочник специальную организацию "Другая организация".
Если данные получить нельзя (возвращается null), тогда заменить значение организации на специальную организацию.

Пример:

выбрать &Док, ЕстьNull(орг.Ссылка, Значение(Справочники.Организации.ДругаяОрганизация)) как НаименованиеОрганизации
из документы.док как док
левое соединение
справочник.организации как орг
по док.организация = орг.ссылка Где Док.Ссылка = &Док


igwtbox

Да, спасибо! Согласен.

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

ilyay

Цитата: igwtbox от 03 ноя 2016, 15:15

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

Как-то сложно предлагаете. Достаточно либо в привилегированном модуле операцию делать, либо использовать УстановитьПривилегированныйРежим(Истина) - то есть вообще без RLS. Но автоматически представления данных вы не получите, пользователю будут отображаться битые ссылки.
Добавлено: 03 ноя 2016, 16:04


Еще предложение, соответствующее вашей текущей архитектуре.
Можно сделать, чтобы каждый документ относился к одной организации, как вам и предлагали. А операция будет управлять такими документами (создавать, читать из них...).
Документы, которые делают проводки, должны иметь в отдельном реквизите ссылку на этот документ операция.
Документ операция при открытии затягивает данные документов, относящихся к ней (какие можно).
Сама операция не делает проводок, только через создание и проведение подчиненных документов.
В этом случае возможно, что разные пользователи видят и корректируют только доступные им данные.

igwtbox

О! Становится теплее! Привилегированный режим!
Его можно включать перед чтением набора записей и перед записью набора записей.

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск