Версия для печати темы (https://pro1c.org.ua/index.php?s=f1cecd2c09d52db2421c1e9a5dbbb4f4&showtopic=10522)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Как разделить доступ в справочнике?

Автор: Mkk 08.01.13, 18:30

Доброго времени суток!
Издревне ведется программа коммунального хозяйства (учет квартплаты, централиз.отопления, вода и электр-во). Конфа и база (7.7 опер.учет +MSSQL) одна для всех видов учета.Все крутится в сетке (одновременно 7-10 пользователей). В справочнике лицевых счетов реквизиты этих видов разложены по закладкам, т.е. бухгалтера (их четверо) работают со "своими" учетами на своих закладках. Проблема в том, что они очень часто "забывают" житейские правила работы в программе (собственно в 1С), второпях что-то путают, случайно не туда залезут - вобщем друг-другу (вольно или невольно) мешают. А начальство обычно работает сразу со всеми видами учета - тоже че-нить да напартачит...
Попытка при открытии элем. справочника программно показывать каждому бухгалтеру только "свою" закладку - не помогла. Например, учетчик по квартплате изменяет "свои" данные по лицевому счету-нажимает Сохранить-диалог по сохранению периодических реквизитов-он выбирает "Изменить все" ("забывая" нажать только Изменить) - и 1С сохраняет ВСЕ периодические реквизиты (т.е. всех видов учета) элемента справочника. Учетчик по отоплению хочет изменить "свои" реквизиты на определенную дату - меняет - и уверен что они актуальны! НО находится в неведении, что его реквизиты уже кто-то перезаписал в периоде (бывает по нескольку раз)!
Всемогущий алл, нужна ваша помощь в совете, идее, подсказке - как в такой ситуации разделить учетные реквизиты, дабы бухгалтера могли менять только СВОИ данные?
Где-то я читал пример решения подобной проблемы в том, что перед изменением реквизитов (при открытии элемента) загонять их в таблицу значений, а при записи - записывать только измененные. Но как перейти на свою процедуру записи и как при этом сохранять только "свои" периодические реквизиты? Имхо долго и кропотливо надо в конфе все это описывать sad.gif
А может уже кто-то сталкивался с этим и имеется более "красивое" решение? Буду рад .MD-шнику с решением проблемы smile.gif

Автор: Ardi 08.01.13, 19:02

Менять периодические реквизиты документами.

Автор: Cthulhu 08.01.13, 22:19

Цитата
СохранениеПериодическихРеквизитов

Установить режим отображения диалога сохранения периодических реквизитов при записи элемента справочника.
Синтаксис:
СохранениеПериодическихРеквизитов(<ВариантВызова>, <Список>)
Англоязычный синоним:
РегiodicAttributesSaving
Параметры:

<ВариантВызова> Число, определяет вариант вызова метода:
0 — отключить автоматический режим определения списка измененных реквизитов и показ диалога (параметр <Список> не используется);
1 — включить автоматический режим определения списка измененных реквизитов с показом диалога (параметр <Список> определяет набор анализируемых реквизитов);
2 — включить автоматический режим определения списка измененных реквизитов без показа диалога (параметр <Список> определяет набор анализируемых реквизитов);
3 — выполнить определение списка измененных реквизитов с показом диалога (параметр <Список> определяет набор анализируемых реквизитов);
4 — выполнить определение списка измененных реквизитов без показа диалога (параметр <Список> определяет набор анализируемых реквизитов);
5 — выдать/установить список сохраняемых периодических реквизитов. Метод возвращает установленный список периодических реквизитов, которые будут записываться на момент до вызова метода. Если параметр <Список> указан, то устанавливается список периодических реквизитов, которые должны быть записаны.
<Список> Необязательный параметр. Строковое выражение, в котором через запятую перечислены имена периодических реквизитов справочника, которые должны выводится в диалоге (если диалог показывается), или по которым будет записан элемент истории (если диалог не показывается). По умолчанию предполагается, что в списке все периодические реквизиты справочника. Если указан символ "*", то считается, что в список включены все периодические реквизиты справочника.
Описание:
Метод СохранениеПериодическихРеквизитов управляет режимом автоматического определения списка измененных периодических реквизитов, показом диалога для выбора записываемых периодических реквизитов, а также предоставляет доступ непосредственно к списку записываемых периодических реквизитов.
Если данный метод опущен, то при записи элемента справочника диалог отображается со всеми периодическими реквизитами.

Замечание. Данный метод доступен только в контексте Модуля формы элемента справочника (см. «Виды программных модулей»). Действие данного метода относится только к текущему элементу справочника, который доступен в локальном контексте Модуля формы элемента справочника.

Пример:
// Здесь мы работаем в локальном контексте модуля Формы
// элемента справочника.
// в справочнике есть несколько реквизитов,
// которые являются периодическими реквизитами.
СохранениеПериодическихРеквизитов(1, "ЦенаРозн, ЦенаОптов");

Недорого продам Синтакс-Помощник.

Автор: Mkk 09.01.13, 22:17

Спс за синтаксис-помочник smile.gif Это и есть тот трудоемкий способ (гулявший по инету) отслеживания всех реквизитов через ТаблицуЗначений с последущей проверкой перед записью. Видимо "красивое" решение или не пришло сюда, или еще не создано в природе. smile.gif Или реализовано в коммерческом варианте sad.gif

Автор: Cthulhu 09.01.13, 23:22

Странно. Ведь так или иначе для каждого пользователя [и/или набора прав] [и/или названия интерфейса] [и/или других признаков] - придется определять перечень периодических реквизитов, историю которых можно и нужно изменять. это - не "самый трудоемкий", но единственный способ (точнее - его часть).
или как хотелось бы?.. чтобы в наборе прав можно было галковать права на уровне реквизитов?.. ну, так этого нет, это верно.

Автор: Стрелок 10.01.13, 0:45

Хм.. а скажите, разве перезапись НЕИЗМЕНЯЮЩЕЙСЯ периодики (записать все) как то влияет на её (периодики) значение? Оно ведь не менялось?

Автор: Cthulhu 10.01.13, 12:06

Цитата(Стрелок @ 10.01.13, 0:45) *
Хм.. а скажите, разве перезапись НЕИЗМЕНЯЮЩЕЙСЯ периодики (записать все) как то влияет на её (периодики) значение? Оно ведь не менялось?

Хм. конечно влияет. на значения. получаемые между датой "старой" записи и "новой" записи.
Ну, например, была такая женщина - Иванова = элемент справочника Сотрудники (ФИО=периодика, изменяется документами+вручную).
в 2001-м году вышла замуж за Петрова - и стала Петрова - запись в истории.
в 2012-м году развелась с Петровым и вышла замуж за Сидорова - записать в историю как-то позабыли.
и вот 2013-й год,
Оператор №1, ответственный за изменение количества детей, открывает этот самый элемент справочника. Сохраняет - включая "Петрова" на 2013-й год.
Оператор №2, ответственый за изменения ФИО, ввоит документ, который устанавливает при проведении значение ФИО="Сидорова" на 2002-й год.
После этого формируется плат.ведомость на выплату денех, Сидорова с паспортом идет в кассу получать деньги - а Сиддоровой в ведомости нет!.. а есть Петрова!..

Автор: volodya1122 10.01.13, 14:16

Цитата(Стрелок @ 10.01.13, 0:45) *
Хм.. а скажите, разве перезапись НЕИЗМЕНЯЮЩЕЙСЯ периодики (записать все) как то влияет на её (периодики) значение? Оно ведь не менялось?

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

Автор: Cthulhu 10.01.13, 15:31

Цитата(volodya1122 @ 10.01.13, 14:16) *
При изменении периодических реквизитов документом. Даже если само значение не меняется, в базу каждый раз при сохранении нового документа (документа в котором прописано изменение этих периодических реквизитов) устанавливается новое значение с датой изменения что соответствуэт дате документа.

Это - если сделать установку значения периодического реквизита, простите, безграмотно, не зависящей от режима проведения документа - методом "Установить", программно дублирующим "ручноой режим" установки значения периодического реквизита.
Если же использовать для этого метод "УстановитьРеквизитСправочника" модуля(!) документа - то значение устанавливается на любую (указанную в соотв.параметре данного метода) дату, причем только при проведении документа (можно даже наустанавливать при проведении несколько значений одного периоддического реквизита на несколько разных дат!) -- причем, если документ сделать непроведенным, то установленные значения вычищаются из истории (если, конечно, у этого ддокумента установлено "автоматическое удаления движений" при отмене проведения - как в подавлющем большинстве случаев и по умолчанию).

Автор: volodya1122 10.01.13, 16:10

Цитата(Cthulhu @ 10.01.13, 15:31) *
"УстановитьРеквизитСправочника"


Я этот метод и имел в виду.

Автор: Cthulhu 10.01.13, 16:56

Цитата(volodya1122 @ 10.01.13, 16:10) http://pro1c.org.ua/index.php?act=findpost&pid=62969
значение устанавливается на любую (указанную в соотв.параметре данного метода) дату

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua