Имя: Пароль:
1C
 
Исключить выбор перечисления в реквизите
0 NIGHTHUNTER
 
14.04.22
14:13
Пользователю, нельзя дать возможность, выбрать одно из значений перечисления.
Если у одного значения табличной части, есть галки.
В какой процедуре свойств поля это нужно делать?
Подскажите пожалуйста.
ПриИзменении() не подойдет наверное.

НачалоВыбора()
ОбработкаВыбора()

?
1 1Сергей
 
14.04.22
14:14
НачалоВыбора
2 dreizehn
 
14.04.22
14:16
(1) А он ручками, текст введет =)

(0) Проверять при записи, грязно ругаться и не давать записать.
Грязо ругаться умеешь?
3 NIGHTHUNTER
 
14.04.22
14:20
(1) Сейчас буду пробовать, поставил точки останова.

(2) Нужно при вводе, не дать ему выбрать это значение. если в табличной части есть галки, в одном из полей.
4 Kassern
 
14.04.22
14:21
создайте свое поле с блек джеком и списком выбора с нужными элементами.
5 dreizehn
 
14.04.22
14:22
(3) Сначала выбираем запрещенное значение, а потом ставим галку. Жизнь становится еще интереснее.
6 NIGHTHUNTER
 
14.04.22
14:23
(1) А как ей пользоваться? если выбранное значение есть только в процедуре ОбработкаВыбора()

ОбнработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
7 DimG
 
14.04.22
14:24
Правильно это заполнить ПараметрыВыбора при НачалоВыбора
8 dreizehn
 
14.04.22
14:27
(7) Правда всегда одна. Это сказал фараон. Он был очень умен. И за это его называли. Тутанхамон.
=)
9 NIGHTHUNTER
 
14.04.22
14:59
А как присвоить пустое значение реквизиту типа перечисление, если нельзя выбирать значение?
10 Kassern
 
14.04.22
15:00
(9) ТвоеПолеСПеречисление=Перечисления.ТвоеПеречисление.ПустаяСсылка()
11 Kassern
 
14.04.22
15:00
Скорее всего можно и еще проще, прописать ТвоеПолеСПеречисление="";
12 NIGHTHUNTER
 
14.04.22
15:01
(10) А Неопределено можно?
13 NIGHTHUNTER
 
14.04.22
15:01
(11) Даже пусто можно? Кавычки?!
14 Kassern
 
14.04.22
15:02
(12) (13) Конфигуратор в руки и веред, проверить это 1минута
15 NIGHTHUNTER
 
14.04.22
15:02
(14) Я это делаю. Продолжительно грузится стоит. Занимаюсь. Продвигаюсь к цели.
16 dreizehn
 
14.04.22
15:04
Предлагаю присвоить 0, это сэкономит нажатия на кнопки и ресурс клавиатуры. Насколько я помню, для Андрея это критично.
17 dreizehn
 
14.04.22
15:05
(15) Вот представь себе, насколько ты уже свою клавиатуру испортил бестолковыми нажатиями для пустого общения на форуме?
18 NIGHTHUNTER
 
14.04.22
15:21
не получается через неопределено обнулить реквизит типа перечисления, значение в нем остается

делаю на клиенте

Объект.СтатусНарядЗадания = Неопределено;

ничего это не дает.
19 NIGHTHUNTER
 
14.04.22
15:22
(18+)  В отладчике обнуляется. А на форме остается.
20 Kassern
 
14.04.22
15:22
(19) это точно из серии 18+))
21 NIGHTHUNTER
 
14.04.22
15:24
(20) Как обнулить? На форме не исчезает, только в отладчике.
22 NIGHTHUNTER
 
14.04.22
15:25
может нужно на сервере обнулять?
23 dreizehn
 
14.04.22
15:25
Интересно, а нет ли в "обнуляется" политического подтекста?
24 NIGHTHUNTER
 
14.04.22
15:27
в чем ошибка? Почему остается значение, хотя обнулилось в отладчике?
25 Kassern
 
14.04.22
15:27
(21) а в элементе формы какой путь к данным прописан?
26 NIGHTHUNTER
 
14.04.22
15:30
(25) Объект.СтатусНарядЗадания
27 Kassern
 
14.04.22
15:31
(26) Попробуйте вместо неопределено присвоить пустую ссылку на перечесление
28 NIGHTHUNTER
 
14.04.22
15:32
(27) Пробую сейчас
29 NIGHTHUNTER
 
14.04.22
15:34
(26) Все равно остается

Объект.СтатусНарядЗадания = ПредопределенноеЗначение("Перечисление.НарядЗаданиеСтатус.ПустаяСсылка");
30 NIGHTHUNTER
 
14.04.22
15:35
В отладчике его нет, но на форме в поле есть
31 NIGHTHUNTER
 
14.04.22
15:36
делаю в процедуре обработка выбора, какой тут секрет?

&НаКлиенте
Процедура Закупки_ХХХ_СтатусНарядЗаданияОбработкаВыбораПосле(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Если ПроверкаВыбораПринятоОТКНаСервере() и ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.ХХХ_НарядЗаданиеСтатус.ПринятоОТК") Тогда
        Объект.ХХХ_СтатусНарядЗадания = ПредопределенноеЗначение("Перечисление.ХХХ_НарядЗаданиеСтатус.ПустаяСсылка");
        Объект.ХХХ_СтатусНарядЗадания = 0;
        Объект.ХХХ_СтатусНарядЗадания = Неопределено;
    КонецЕсли;
КонецПроцедуры
//
32 Kassern
 
14.04.22
15:37
(31) беда...
33 NIGHTHUNTER
 
14.04.22
15:38
(32) В чем? Что поправить?
34 Kassern
 
14.04.22
15:38
(33) зачем вы 3 раза переприсваиваете Объект.ХХХ_СтатусНарядЗадания?
35 Kassern
 
14.04.22
15:38
зачем это делаете на клиенте?
36 NIGHTHUNTER
 
14.04.22
15:39
(31+) По разному сбросить значение пытаюсь уже
37 NIGHTHUNTER
 
14.04.22
15:39
(34) Потому что не работает, долго обновляется, я пробовал все три варианта. Не работает, решил все три попробовать
38 NIGHTHUNTER
 
14.04.22
15:43
Подскажете секрет, почему в табло значение пропадает в (31), а на форме нет ?
Что ещё обнулять, как?
39 unbred
 
14.04.22
15:44
если выбранное значение = "запретное значение" тогда
выбранное значение = прошлое значение
сообщить("ацтань,пратиный");
конецесли;
40 NIGHTHUNTER
 
14.04.22
15:45
пропадает оно в отладчике к стати только в этой процедуре (31)
после перехода в другую оно снова появляется
41 unbred
 
14.04.22
15:45
(38) потому что ты, скорее всего, в (26) наврал
42 unbred
 
14.04.22
15:46
в топике у тебя не было задачи по обнулению.
43 Kassern
 
14.04.22
15:46
(38) А вы на кой с табло то сравниваете? На Сервере присвойте пустую ссылку вашему реквизиту
44 NIGHTHUNTER
 
14.04.22
15:47
(43) тогда нужно с клиента на сервер передавать, выбранное значение

&НаКлиенте
Процедура Закупки_ХХХ_СтатусНарядЗаданияОбработкаВыбораПосле(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
45 Kassern
 
14.04.22
15:48
(44) И в чем проблема?
46 NIGHTHUNTER
 
14.04.22
15:51
(45) Сейчас буду пробовать, подумал что может стандартную обработку нужно в ложь? Пробую.

Проблема в утомлении.

Я пробую сейчас эти моменты.
47 NIGHTHUNTER
 
14.04.22
15:59
Вот так работает, если так оставить, будет ли нормально?

&НаКлиенте
Процедура Закупки_ХХХ_СтатусНарядЗаданияОбработкаВыбораПосле(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    СтандартнаяОбработка = ложь;
    
    Если ПроверкаВыбораПринятоОТКНаСервере() и ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.ХХХ_НарядЗаданиеСтатус.ПринятоОТК") Тогда
        Объект.ХХХ_СтатусНарядЗадания = ПредопределенноеЗначение("Перечисление.ХХХ_НарядЗаданиеСтатус.ПустаяСсылка");
    Иначе
        Объект.ХХХ_СтатусНарядЗадания = ВыбранноеЗначение;
    КонецЕсли;
КонецПроцедуры
48 NIGHTHUNTER
 
14.04.22
16:05
Странно, но если я ставлю в ложь в (47) почему то перестала запускаться процедура при изменении
49 Kassern
 
14.04.22
16:07
создайте внешнюю обработку и балуйтесь в ней с событиями реквизитов формы, чтобы долго не ждать обновления конфигурации. А перед этим почитайте за эти события и что значит СтандартнаяОбработка
50 NIGHTHUNTER
 
14.04.22
16:10
(49) То есть, так и есть? Вызов процедуры ПриИзменении, не производится, потому что я ставлю стандартную обработку в ложь?

Значит после КонецЕсли, нужно ее в истину вернуть?
51 NIGHTHUNTER
 
14.04.22
16:15
(49) я думал, стандартная обработка устанавливается в разрезе процедуры, на другую не распространяется
52 NIGHTHUNTER
 
14.04.22
16:27
я обнуляю на сервере, но все равно значение не обнулилось ((((


Объект.ХХХ_СтатусНарядЗадания = ПредопределенноеЗначение("Перечисление.ХХХ_НарядЗаданиеСтатус.ПустаяСсылка");
53 NIGHTHUNTER
 
14.04.22
16:28
(43) это не работает
54 NIGHTHUNTER
 
14.04.22
16:34
Как можно обнулить значение реквизита, типа перечисление?
55 NIGHTHUNTER
 
14.04.22
16:35
не работает

&НаСервере
Процедура ПроверкаВыбораПринятоОТКНаСервере(МАСС)
    ЧастичноПринято = Объект.ХХХ_Товары.Выгрузить().Найти(Истина,"ЧастичноПринято");
    Если ЧастичноПринято <> Неопределено и МАСС[0].ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.ХХХ_НарядЗаданиеСтатус.ПринятоОТК") Тогда
        Объект.ХХХ_СтатусНарядЗадания = Перечисления.ХХХ_НарядЗаданиеСтатус.ПустаяСсылка();
    КонецЕсли;
КонецПроцедуры


так же, в процедуре обнуляет, при переходе в другую там значение и на форме так же остается
56 vde69
 
14.04.22
16:50
кодить не надо от слова совсем...

установить "режим выбора из списка"
и заполнить список выбора
57 dreizehn
 
14.04.22
17:21
(56) > кодить не надо
Читать тоже. Там разные списки в зависимости от настроения галочки в табличной части.
58 NIGHTHUNTER
 
15.04.22
04:42
Вот решение данного вопроса.

Суть, была в том, что нужно обнулять не реквизит, а переменную ВыбранноеЗначение.

//
&НаКлиенте
Процедура Закупки_ХХХ_СтатусНарядЗаданияОбработкаВыбораПосле(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Если ПроверкаВыбораПринятоОТКНаСервере2() и ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.ХХХ_НарядЗаданиеСтатус.ПринятоОТК") Тогда
        ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.ХХХ_НарядЗаданиеСтатус.ПустаяСсылка");
    КонецЕсли;
КонецПроцедуры
//
&НаСервере
Функция ПроверкаВыбораПринятоОТКНаСервере2()
    ЧастичноПринято = Объект.ХХХ_Товары.Выгрузить().Найти(Истина,"ЧастичноПринято");
    Если ЧастичноПринято <> Неопределено Тогда
        Возврат Истина;
    КонецЕсли;
Возврат Ложь;
КонецФункции
//
59 NIGHTHUNTER
 
15.04.22
04:43
(56)(57)  С этими методиками не знаком. Пока вот решил, имеющимися средствами.
60 DEVIce
 
15.04.22
05:14
Не проще через выбор из списка и заполнить только разрешенными значениями?
61 NIGHTHUNTER
 
15.04.22
06:35
(60) На что хватило сил.
Я сделал то что мне было проще.
Это же можно сделать, разными методами и возможностями. Я вот сделал какой мне был ближе. и то с переделками разными.
Какой из методов, показался ближе. тот и стал рассматривать.
На прочие, которые ближе кому то, у меня не хватило уже энергии.
Программист всегда исправляет последнюю ошибку.