Как проверить одинаковый ли у элементов родитель?
Здравствуйте, на форме бп есть тч в нем реквизит Риск с типом СправочникСсылка.Услуги(Иерархический справочник)
"Риск"
Риск1
Риск2
Риск3
Так вот, как проверить одинаковый ли у этих: Риск1, Риск2, Риск3 Родитель? И выдать ошибку если он не одинаковый
и куда вешать Событие?
Для наглядности структура справочника:
Группа1
Группа1.1
Элемент1
Элемент2
Элемент3
Группа2
Группа2.1
Элемент1
Элемент2
Элемент3
И вот Я выбрал Элемент1 из группы1.1 и элемент1 из группы2.1
У них разные родители. Как это проверить?
"Риск"
Риск1
Риск2
Риск3
Так вот, как проверить одинаковый ли у этих: Риск1, Риск2, Риск3 Родитель? И выдать ошибку если он не одинаковый
и куда вешать Событие?
Для наглядности структура справочника:
Группа1
Группа1.1
Элемент1
Элемент2
Элемент3
Группа2
Группа2.1
Элемент1
Элемент2
Элемент3
И вот Я выбрал Элемент1 из группы1.1 и элемент1 из группы2.1
У них разные родители. Как это проверить?
По теме из базы знаний
- XPath в 1С - как с этим работать.
- Создаем свою библиотеку для OneScript
- Платформа интеграции 1С с чат-ботами (Telegram, Viber, WhatsApp, Instagram, Skype, ICQ, Facebook, ВКонтакте, Одноклассники, Яндекс.Алиса, Verbox, Jivochat, Avito)
- Полный перевод кода УНФ 1.6 на английский язык с помощью обучаемой системы машинного перевода
- Гарри Поттер и подкапотное пространство веб-клиента
Найденные решения
(4) Тоже самое видимо:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Услуги.Родитель) = 1 КАК РодителиОдинаковые
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В (&Элементы)";
Запрос.УстановитьПараметр("Элементы", МассивЭлементов);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Если Выборка.РодителиОдинаковые Тогда
Сообщить("У всех одинаковые родители");
Иначе
Сообщить("Некоторые или все родители разные");
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Еще так можно:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Услуги.Родитель) = 1 КАК РодителиОдинаковые
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В (&Элемент1, &Элемент2)";
Запрос.УстановитьПараметр("Элемент1", Элемент1);
Запрос.УстановитьПараметр("Элемент2", Элемент2);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Если Выборка.РодителиОдинаковые Тогда
Сообщить("Родители одинаковые");
Иначе
Сообщить("Родители разные");
КонецЕсли;
Показать
(4) Тоже самое видимо:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Услуги.Родитель) = 1 КАК РодителиОдинаковые
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В (&Элементы)";
Запрос.УстановитьПараметр("Элементы", МассивЭлементов);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Если Выборка.РодителиОдинаковые Тогда
Сообщить("У всех одинаковые родители");
Иначе
Сообщить("Некоторые или все родители разные");
КонецЕсли;
Показать
(9)
Вот написал, теперь как то надо вызвать этот обработчик?
ПроверитьЗаполнение()?
А где вызыватЬ?
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРевизиты)
МассивЭлементов = Причины.ВыгрузитьКолонку("Риск");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Услуги.Родитель) = 1 КАК РодителиОдинаковые
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В (&Элементы)";
Запрос.УстановитьПараметр("Элементы", МассивЭлементов);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Если Выборка.РодителиОдинаковые Тогда
Сообщить("У всех одинаковые родители");
Иначе
Сообщить("Некоторые или все родители разные");
КонецЕсли;
ПоказатьВот написал, теперь как то надо вызвать этот обработчик?
ПроверитьЗаполнение()?
А где вызыватЬ?
(11)Спасибо большое, сделал. А можно еще вопрос?
у меня в бизнес процессе задачи создаются автоматически для каждой точки маршрута, но мне надо на определенной точке маршрута выключить это автоматическое создание задач и создать самому несколько задач, а дальше продолжить автоматическое создание, как \то сделать? Подскажите пожалуйста.
Когда точка маршрута
Мне надо отключить автоматическое создание задач, я создаю сам задачи, и после их выполнения, продолжить дальше автоматически создавать задачи.
Вот весь код:
у меня в бизнес процессе задачи создаются автоматически для каждой точки маршрута, но мне надо на определенной точке маршрута выключить это автоматическое создание задач и создать самому несколько задач, а дальше продолжить автоматическое создание, как \то сделать? Подскажите пожалуйста.
Когда точка маршрута
// Мероприятие
ИначеЕсли ТочкаМаршрутаБизнесПроцесса = ТочкиМаршрута.Мероприятие Тогда
Мне надо отключить автоматическое создание задач, я создаю сам задачи, и после их выполнения, продолжить дальше автоматически создавать задачи.
Вот весь код:
Процедура ПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
ФормируемаяЗадача = ФормируемыеЗадачи[0];
Если 1=0 Тогда
ФормируемаяЗадача = Задачи.УниверсальнаяЗадача.НайтиПоНаименованию();
КонецЕсли;
ФормируемаяЗадача.Дата = ТекущаяДата();
// Согласование
Если ТочкаМаршрутаБизнесПроцесса = ТочкиМаршрута.Согласование Тогда
ИсполнительЗадачи = ДиректорЦОАвтора;
ФормируемаяЗадача.СрокВыполненияЗадачи = ФормируемаяЗадача.Дата + 86400;
ФормируемаяЗадача.Описание = "Согласовать / отклонить Бизнес-Процесс 'Снижение Рисков' " + Номер + " за " + Формат(Дата, "ДФ='ММММ ггг ""г.""'");
// Мероприятие
ИначеЕсли ТочкаМаршрутаБизнесПроцесса = ТочкиМаршрута.Мероприятие Тогда
Для Каждого Элемент из Причины Цикл
НоваяЗадача = Задачи.УниверсальнаяЗадача.СоздатьЗадачу();
НоваяЗадача.БизнесПроцесс = ЭтотОбъект.Ссылка;
НоваяЗадача.ТочкаМаршрута = БизнесПроцессы.СнижениеРисков.ТочкиМаршрута.Мероприятие;
НоваяЗадача.Дата = ТекущаяДата();
НоваяЗадача.Наименование = БизнесПроцессы.СнижениеРисков.ТочкиМаршрута.Мероприятие.НаименованиеЗадачи;
НоваяЗадача.Исполнитель = Элемент.Ответственный;
НоваяЗадача.СрокВыполненияЗадачи = Элемент.Срок;
НоваяЗадача.Описание = "Выполнение мероприятий по снижению риска' " + Номер + " за " + Формат(Дата, "ДФ='ММММ ггг ""г.""'");
НоваяЗадача.Записать();
КонецЦикла;
// ПроверкаОУК
ИначеЕсли ТочкаМаршрутаБизнесПроцесса = ТочкиМаршрута.ПроверкаОУК Тогда
ИсполнительЗадачи = Подразделение.Родитель.ОтветственныйОУК;
ФормируемаяЗадача.СрокВыполненияЗадачи = ФормируемаяЗадача.Дата + 86400;
ФормируемаяЗадача.Описание = "Проверить в ОУК 'Снижение рисков' " + Номер + " за " + Формат(Дата, "ДФ='ММММ ггг ""г.""'");
// ДокументОценкаРиска
ИначеЕсли ТочкаМаршрутаБизнесПроцесса = ТочкиМаршрута.ДокументОценкаРиска Тогда
ИсполнительЗадачи = Автор;
ФормируемаяЗадача.СрокВыполненияЗадачи = КонецКвартала(ТекущаяДата());
ФормируемаяЗадача.Описание = "Создать документ 'Оценка значимости риска' по БП 'Снижение рисков' " + Номер + " за " + Формат(Дата, "ДФ='ММММ ггг ""г.""'") ;
ИначеЕсли ТочкаМаршрутаБизнесПроцесса = ТочкиМаршрута.Отказ Тогда
ИсполнительЗадачи = Автор;
ФормируемаяЗадача.Описание = "Вам отказали в согласовании БП 'Снижение Рисков' " + Номер + " за " + Формат(Дата, "ДФ='ММММ ггг ""г.""'") ;
КонецЕсли;
ФормируемаяЗадача.Исполнитель = ИсполнительЗадачи;
КонецПроцедуры
Показать
(13) Да, перед созданием задач я отключаю автоматическое создание "СтандартнаяОбработка = Ложь",
Все создается как мне надо, но я не знаю как включить обратно автоматическое создание. потому задача создается автоматом для след точки бизнес процесса, хотя предыдущие задачи на предыдущей точке еще не выполнены
Все создается как мне надо, но я не знаю как включить обратно автоматическое создание. потому задача создается автоматом для след точки бизнес процесса, хотя предыдущие задачи на предыдущей точке еще не выполнены
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот