Имя: Пароль:
1C
1С v8
Ограничение доступности элементов справочника.
0 cmex
 
30.09.13
08:44
Доброе утро.
БП 3.0. Нужно ограничить доступность тех Договоров контрагентов, которых нет в регистре сведений, то есть договор нельзя нигде выбрать. Как такое организовать? Но только не так,чтобы в каждой форме,где встречается данный тип, писать код.
1 kosts
 
30.09.13
08:50
(0) По крайней мере в подписке на проведение документов можно отказ сделать. И в форме выбора договоров отмечать например цветом, те которые запрещены.
2 shuhard
 
30.09.13
08:50
(0) либо RLS, либо подписка перед записью
3 Мимохожий Однако
 
30.09.13
08:51
фильтр в форме подбора добавить
4 cmex
 
30.09.13
08:52
(2) (1) перед записью плохой вариант, надо онлайн. например, при выборе элемента из формы выбора что то придумать может?
5 cmex
 
30.09.13
08:53
(3) можно поподробнее?
6 shuhard
 
30.09.13
08:55
(4) RLS
7 KishMish
 
30.09.13
08:55
(5) в самой форме выбора подбора установить фильтр. но это не спасет от текстового ввода в поле.
8 cmex
 
30.09.13
08:55
(6) что такое RLS?
9 kosts
 
30.09.13
08:55
(4) Перед записью как раз всегда должно проверяться, иначе каким-нибудь способом когда нибудь запишут неправильный договор...

Остальное - это уже для удобства пользователей формы, фильтры.
10 cmex
 
30.09.13
08:56
(7) на какое событие повесить проверку? когда пользователю откроется форма выбора и он выберет выберет нужный договор? я думаю текстовый ввод тут вряд ли будет использоваться
11 cmex
 
30.09.13
08:57
(9) перед записью сделаю,остается для пользователя удобно сделать
12 kosts
 
30.09.13
08:58
(9) > Перед записью как раз всегда должно проверяться
Ну конечно за исключением случаев, когда записывать такие можно, но они в данный момент не нужны...
13 Мимохожий Однако
 
30.09.13
08:58
Полезнее для дела проверять перед записью. Пользователь пару раз получить по лбу )) запомнит.
14 kosts
 
30.09.13
09:03
(10) >я думаю текстовый ввод тут вряд ли будет использоваться
А еще список выбора вряд ли будет использоваться...
:-)
15 kosts
 
30.09.13
09:04
Как говорили, в форме выбору нужно мутить, смотреть как там сейчас реализовано, от этого и отталкиваться...
16 cmex
 
30.09.13
09:11
написал вот такой код

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    Если Не ДоговорДоступен(ВыбраннаяСтрока) Тогда
        Предупреждение("Данный договор не зарегистрирован в системе Электронного архива. Работа с ним запрещена");
        ВыбраннаяСтрока = ВернутьПустуюСсылку();
    КонецЕсли;
КонецПроцедуры
// Конец СтандартныеПодсистемы.Печать

&НаСервере
Функция ДоговорДоступен(Договор)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    омкШтрихКодДокумента.Штрихкод
                   |ИЗ
                   |    РегистрСведений.омкШтрихКодДокумента КАК омкШтрихКодДокумента
                   |ГДЕ
                   |    омкШтрихКодДокумента.Документ = &Документ";
    Запрос.УстановитьПараметр("Документ", Договор);
    Результат = Запрос.Выполнить();
    Возврат Не Результат.Пустой();
КонецФункции

&НаСервере
Функция ВернутьПустуюСсылку()
    Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецФункции


но все равно возвращается договор,который выбрал юзер, как допилить чтобы остаться в форме выбора?
17 kosts
 
30.09.13
09:14
(16) Договор имеет тип справочник

Может СтандартнаяОбработка нужно отключить?
18 dmpl
 
30.09.13
09:15
Скрывать что-то от пользователя - это верный путь получить дубли в итоге. Он же суров как Чак Норрис - нет договора - заведет...
19 Мимохожий Однако
 
30.09.13
09:16
Отключить стандартную обработку, запросом получить только возможные договоры и список передать в поле выбора.
20 kosts
 
30.09.13
09:16
И какой тип у ВыбраннаяСтрока?
21 cmex
 
30.09.13
09:27
(20) пустая ссылка договоры
22 cmex
 
30.09.13
10:36
(19) взлетело. спасибо.
а насчет ввода по строке - в модуле менеджера стандартная процедура есть "ОбработкаПолученияДанныхВыбора", там все и запиливается.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан