|
Выбор, Оповещение о статусе | ☑ | ||
---|---|---|---|---|
0
nightwing
02.11.22
✎
06:45
|
Здравствуйте. 1С 8,3.
Существует справочник "Оборудование"(Реквизиты: Наименование, Статус) и документ "Ремонт"(Реквизиты: Дата ремонта, табличная часть: Список Оборудования: Реквизит: Наименование.). Подскажите, пожалуйста, как сделать оповещение при выборе оборудования в документе, когда у оборудования уже стоит статус "ремонт"? Новичок в 1С. Надеюсь, понятно объяснил. |
|||
1
Йохохо
02.11.22
✎
06:57
|
сразу переделать, чтобы документ менял статус. Причем в регистре, а не в справочнике
|
|||
2
nightwing
02.11.22
✎
07:33
|
(1) Документ меняет статус. А как оповестить о статусе при выборе Оборудования?
|
|||
3
Мимохожий Однако
02.11.22
✎
08:12
|
(2) Что ты подразумеваешь под словами "оповестить о статусе"? Оборудование здесь причем?
|
|||
4
nightwing
02.11.22
✎
08:31
|
(3) Например, в справочнике видим стоит статус "Ремонт" у "Оборудования №1". При выборе "Оборудования №1" в документе, выходит сообщение "в ремонте".
|
|||
5
Ryzeman
02.11.22
✎
08:39
|
(4) В отрыве от примера звучит довольно бредово.
Сценарий А: у тебя у одного пользователя открыт документ Ремонт, второй в это время меняет оборудование и записывает его. Первый пользователь выбирает этот товар и ему пишут что статус "в ремонте". Правильнее просто не позволять ему выбрать это, то есть ограничивать ещё при выборе. Сценарий Б: у тебя пользователь меняет элемент справочника, потом открывает документ и ему должно написать что в документе есть товары в ремонте. Это тоже не правильный подход, надо проверять при смене статуса, есть ли это оборудование в документах, и если нужно, убирать их оттуда, например. По статусу тебе тоже написали правильно. Справочник должен быть статичным в идеале, такие вещи как статусы правильно хранить в регистре сведений. Опиши подробно свою задачу, возможно, мы просто тебя неправильно понимаем. |
|||
6
nightwing
02.11.22
✎
09:01
|
По статусу я не спорю: Документ меняет статус. С этим я полностью согласен, подходит для ограничения.
Видимо изначально, нужно было это написать. Сценарий: Пользователь создал "Оборудование №1", указал "Наименование", статус пустой(т.к. только просмотр). Создал и провел документ "Ремонт" с "оборудованием №1". Статус сменился на "Ремонт". Создает новый документ, пробует снова добавить "Оборудование №1", выходит сообщение "В ремонте". К сожалению, ограничить еще при выборе, нельзя. Нужно с оповещением. |
|||
7
Guk
02.11.22
✎
09:03
|
событие ПриИзменении в документе у реквизита Оборудование не подходит?...
|
|||
8
Ryzeman
02.11.22
✎
09:12
|
(6) Тогда ответ в (7). Событие табличной части ПриИзменении
|
|||
9
nightwing
02.11.22
✎
09:20
|
(7) (8) Примерный код, не подскажите?
|
|||
10
Ryzeman
02.11.22
✎
09:33
|
&НаКлиенте
Процедура ОборудованиеПриИзменении(Элемент) Если НаходитсяВРемонте(Элемент) Тогда Сообщить("Это оборудование уже находится в ремонте!"); КонецЕсли; КонецПроцедуры &НаСервере Функция НаходитсяВРемонте(СсылкаНаОборудование) Возврат СсылкаНаОборудование.Статус = Перечисления.СтатусыОборудования.ВРемонте; КонецФункции |
|||
11
nightwing
02.11.22
✎
09:59
|
(10) Спасибо за код. Уточнение: СсылкаНаОборудование - это СправочникСсылка.Оборудование? Или я уже всё путаю?
|
|||
12
Мимохожий Однако
02.11.22
✎
10:02
|
(11) Нет. Не всё
|
|||
13
Kassern
02.11.22
✎
10:04
|
(0) "Существует справочник "Оборудование"(Реквизиты: Наименование, Статус)" - вот тут уже ошибка. Не нужно статус хранить в оборудовании. Правильнее это сделать через регистр.
"Ремонт"(Реквизиты: Дата ремонта, табличная часть: Список Оборудования: Реквизит: Наименование.) - А где у вас ссылка на справочник "Оборудование" в ТЧ? Если это "Наименование", тогда лучше называть правильно реквизиты. Обычно Наименование - это строка и будет вводить в заблуждение. |
|||
14
Ryzeman
02.11.22
✎
10:05
|
(11) Это имя переменной-параметра функции, которую я задал, что бы тебе было максимально понятно) Её тип должен быть именно таким, если ты сделаешь всё правильно)
Естественно это примерный код, потому что я без понятия что у тебя является статусом - не удивлюсь если тоже справочник какой нибудь. Серверную функцию можно (и нужно) без контекста выполнить, вместо сообщить лучше использовать что нибудь вроде ПоказатьПредупреждение() и т.д. Но ты попросил примерный код |
|||
15
Ryzeman
02.11.22
✎
10:06
|
(13) Я так понимаю что там всё-таки оборудование, а в реквизитах таблицы выведено наименование. Хотя шут его знает, по-любому какая-то легаси-самописка)
|
|||
16
Kassern
02.11.22
✎
10:10
|
Если уж нужен выбор с оповещением, тогда откройте СП и почитайте за ПоказатьВводЗначения()
|
|||
17
Kassern
02.11.22
✎
10:12
|
&НаКлиенте
Процедура Команда1(Команда) Оповещение = Новый ОписаниеОповещения("ПослеВводаЗначения", ЭтотОбъект, Параметры); ПоказатьВводЗначения(Оповещение, ВыбЗнач, "Введите значение"); КонецПроцедуры &НаКлиенте Процедура ПослеВводаЗначения(ВыбЗнач, Параметры) Экспорт Если ВыбЗнач<>Неопределено Тогда // обработка введенного значения Сообщить("Введенное значение: " + ВыбЗнач); КонецЕсли; КонецПроцедуры Где ВыбЗнач переменная с типом СправочникСсылка.Оборудование. Либо можно через параметр <Тип> указать нужный тип выбираемых значений, а в ВыбЗнач пихнуть Неопределено. |
|||
18
Ryzeman
02.11.22
✎
10:16
|
(17) Не ломай джуна) Испугается и получится как тут
https://cs12.pikabu.ru/images/previews_comm/2022-01_4/1642408197140059858.jpg |
|||
19
Kassern
02.11.22
✎
10:27
|
(18) Так он же и хотел через оповещения при выборе оборудования что-то сообщать. в (17) Нужно вместо Сообщить("Введенное значение: " + ВыбЗнач); - написать Сообщить("Введенное значение: " + ВыбЗнач.Статус); и будет текущий статус сообщать оборудования)
|
|||
20
nightwing
02.11.22
✎
11:26
|
(13) Исправил. Наименование сменил на "НаименованиеОборудования", статус решил хранить в перечислениях, сразу же после первого комментария.
(16) Спасибо. Буду изучать и пробовать. |
|||
21
Kassern
02.11.22
✎
11:29
|
(20) Статус лучше хранить в справочнике, если планируется добавление/изменение статусов в дальнейшем. А вот связь статуса с оборудованием лучше хранить в регистре, а не в справочнике
|
|||
22
Kassern
02.11.22
✎
11:31
|
(20) Вы поймите, что само слово наименование подразумевает строку, так как это стандартный реквизит в справочниках. Лучше бы назвали просто Оборудование с типом Справочники.Оборудование.Ссылка.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |