Имя: Пароль:
1C
1С v8
Ограничить выбор конкретной номенклатуры во всех документах
0 cmex
 
29.08.13
11:10
Доброго времени суток.
Управляемое приложение. Нужно, чтобы пользователь не мог использовать конкретную номенклатуру нигде в конфе, например, в ТЧ любого документа. Я создал реквизит у Номенклатуры - блокировка, тип булево.Поставил на форме выбора Номенклатуры фильтр - блокировка = ложь. Все отлично робит, но пользователь же может не из формы выбора подставить, а по коду или наименованию найти, как тут быть? К сожалению, нету подписки на событие НачалоВыбора(( Или есть?
1 ale-sarin
 
29.08.13
11:11
РЛС?
2 Rie
 
29.08.13
11:12
(0) И как _пользователь_ найдёт по коду/наименованию, минуя форму выбора?
3 cmex
 
29.08.13
11:14
(2) он уже знает код, просто напишет его в строке и нажмет ентер
4 cmex
 
29.08.13
11:15
ВводПоСтроке называется вроде
5 Kreont
 
29.08.13
11:15
+(1) можно вообще прямо в рлс вписать для роли что то типа:
ГДЕ Номенклатура.Код <> НенужнКод
6 Cube
 
29.08.13
11:15
(0) "Поставил на форме выбора"
Надо ставить параметры выбора у реквизита документа, тогда всё будет пучком.
7 cmex
 
29.08.13
11:15
(1) не знаком с этим механизмом, его один раз написать надо будет, или в каждый док лезть и везде прописывать?
8 ale-sarin
 
29.08.13
11:16
(7) В типовых посмотрите.
9 Wobland
 
29.08.13
11:17
(7) один раз у номенклатуры. тогда некоторые нельзя будет прочитать, например
10 cmex
 
29.08.13
11:18
(6) опять таки в каждый док лезть и каждую ТЧ просматривать?
11 cmex
 
29.08.13
11:19
(9) а можно поподробней,куда в типовой смотреть и какой именно?
12 Wobland
 
29.08.13
11:19
(11) в роли, в шаблоны ограничений
13 cmex
 
29.08.13
11:20
(12) а если не по ролям,а в принципе, чтоб никто не мог выбрать номенклатуру конкретную?
14 ale-sarin
 
29.08.13
11:21
(7) Если сложно изучать или неохота создайте подписку на событие например ПередЗаписью, запихните туда все документы, вызывайте оттуда функцию где можно проверить на наличие табчасти, на наличие в табчасти реквизита с ссылкой на номенклатуру и проверить на запрещенную номенклатуру. Если есть отказ = истина.
15 cmex
 
29.08.13
11:25
(14) такой вариант не устроит( нужно вообще не давать выбрать запрещенную номенклатуру
16 ale-sarin
 
29.08.13
11:31
(15) Тогда либо РЛС, либо в каждом доке в событиях табполя проверять. Я так думаю.

Только вот засада. Почему в типовых не сделали ограничение на чтение номенклатуры? А потому, объясняют, что непонятно что делать с чтением табчасти документа, где есть и доступные и недоступные номенклатуры.
Так и у Вас, если в РЛС пропишете запрет на чтение номенклатуры, что делать с документами, где она уже есть?
17 Lama12
 
29.08.13
11:31
(1) РЛС штука хороша, но даже 1С написали что не знают как настраивать РЛС на справочник Номенклатура. Единственное что они смогли сделать, это запретить редактировать определенную номенклатуру.
Так что я бы не стал рекомендовать подобный механизм для решения данной задачи.
18 Lama12
 
29.08.13
11:31
(16) Опередил :)
19 cmex
 
29.08.13
11:45
(16) (17) Спасибо, значит остается лезть в каждый док и в каждую ТЧ?
20 sixis
 
29.08.13
11:51
19

в модуле менеджера номенклатуры написать

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    Параметры.Отбор.Вставить("ИмяТвоегоБулевогоРеквизита",Ложь);
КонецПроцедуры

и эта номенклатура не будет доступна при вводе по строке
21 ИС-2
 
naïve
29.08.13
11:55
подписка на событие с удалением строк в ТЧ по данной номенклатуре
22 Serg_1960
 
29.08.13
12:14
(21) Лучше Отказ = Истина и сообщение пользователю.

Сорри, но это не есть хорошо - в подписке удалять строки в документе - пользователь этого может не заметить и не оперативно отреагировать. "Отказ = Истина" - лучше. Ибо не факт что нужно обязательно "удалять" - пользователь, может быть, будет заменять эту номенклатуру на другие позиции справочника.
23 cmex
 
29.08.13
12:20
(20) Спасибо большое, все как надо работает!
24 cmex
 
29.08.13
12:20
Всем спасибо, вопрос исчерпан
25 ale-sarin
 
29.08.13
12:22
(20) Вот оно что! Интересно. Надо срочно УФ заняться.