Элементы формы бизнес-процесса в зависимости от вида документа
1С:Предприятие 8.3
Документооборот 8 КОРП, редакция 2.1
--
Помогите с кодом, пожалуйста!
Нужно, чтобы в форме бизнес-процесса, в зависимости от типа документа, менялись названия элементов формы. Как скрыть кнопки или переименовать элементы могу написать, а вот как привязаться к виду документа - нет ((
Для примера: Есть вид внутреннего документа "Оценка риска". По нему запущен комплексный процесс. В бизнес-процессе "Исполнить" для этого вида документа элемент формы "Исполнено" нужно переименовать "Оценка".
Документооборот 8 КОРП, редакция 2.1
--
Помогите с кодом, пожалуйста!
Нужно, чтобы в форме бизнес-процесса, в зависимости от типа документа, менялись названия элементов формы. Как скрыть кнопки или переименовать элементы могу написать, а вот как привязаться к виду документа - нет ((
Для примера: Есть вид внутреннего документа "Оценка риска". По нему запущен комплексный процесс. В бизнес-процессе "Исполнить" для этого вида документа элемент формы "Исполнено" нужно переименовать "Оценка".
По теме из базы знаний
- Использование нотации eEPC для графического описания бизнес-процессов
- "Процессы 3.0: CRM, Бизнес-процессы, Управление по целям". Универсальная система управления процессами и показателями для любой конфигурации 1С
- Консультация для сдачи экзамена "1С:Специалист" по конфигурированию платформы
- Поздравление с Новым Годом! (Управляемые формы, авто год)
- Решение задач на Управляемые формы из Сборника задач для подготовки к экзамену 1С:Специалист по платформе
Найденные решения
(24)Может из-за того что когда файл добавляют нет основного предмета ( файл будет вспомогательным)
Перед строкой
попробуйте добавить проверку
Перед строкой
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента");
попробуйте добавить проверку
Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы);
Если ЗначениеЗаполнено(Документ ) и ТипЗнч(Документ) = Тип("СправочникСсылка.ВнутренниеДокументы") тогда
ВидОценкаРиска = Справочники.ВидыВнутреннихДокументов.НайтиПонаименованию("Оценка риска");
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента");
Если ВидДокумента = ВидОценкаРиска тогда
........
КонецЕсли;
КонецЕсли;
(14)
ПредметыВыборка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект, "Предметы");
Предметы = ПредметыВыборка.Выгрузить();
Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы);
ВидОценкаРиска = Справочники.ВидыВнутреннихДокументов.НайтиПонаименованию("Оценка риска");
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента");
Если ВидДокумента = ВидОценкаРиска тогда
........
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Для изменения имени отображаемого реквизита формы можно в переменной документ соответственно должен быть Ваш документ, не обязательно в процедуре ПриСозданииНаСервере главное в серверной процедуре
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ Элементы.Найти("Исполнено") = Неопределено Тогда
Если ТипЗнч(Документ) = Тип("ДокументСсылка.ОценкаРиска") Тогда
Элементы.Исполнено.Заголовок = "Оценка";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
(8)
ПредметыВыборка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект, "Предметы");
Предметы = ПредметыВыборка.Выгрузить();
Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы);
Если ТипЗнч(Документ) = Тип("ДокументСсылка.ОценкаРиска") Тогда
........
КонецЕсли;
(14)
ПредметыВыборка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект, "Предметы");
Предметы = ПредметыВыборка.Выгрузить();
Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы);
ВидОценкаРиска = Справочники.ВидыВнутреннихДокументов.НайтиПонаименованию("Оценка риска");
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента");
Если ВидДокумента = ВидОценкаРиска тогда
........
КонецЕсли;
Показать
(19)
Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты) Экспорт
Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда
Если ПустаяСтрока(Реквизиты) Тогда
Возврат Новый Структура;
КонецЕсли;
Реквизиты = СтрРазделить(Реквизиты, ",", Ложь);
КонецЕсли;
СтруктураРеквизитов = Новый Структура;
Если ТипЗнч(Реквизиты) = Тип("Структура") Или ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда
СтруктураРеквизитов = Реквизиты;
ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив") Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда
Для Каждого Реквизит Из Реквизиты Цикл
СтруктураРеквизитов.Вставить(СтрЗаменить(Реквизит, ".", ""), Реквизит);
КонецЦикла;
Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный тип второго параметра Реквизиты: %1'"), Строка(ТипЗнч(Реквизиты)));
КонецЕсли;
ТекстПолей = "";
Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение),
СокрЛП(КлючИЗначение.Значение),
СокрЛП(КлючИЗначение.Ключ));
Псевдоним = СокрЛП(КлючИЗначение.Ключ);
ТекстПолей = ТекстПолей + ?(ПустаяСтрока(ТекстПолей), "", ",") + "
| " + ИмяПоля + " КАК " + Псевдоним;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
|" + ТекстПолей + "
|ИЗ
| " + Ссылка.Метаданные().ПолноеИмя() + " КАК ПсевдонимЗаданнойТаблицы
|ГДЕ
| ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка
|";
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Результат = Новый Структура;
Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
Результат.Вставить(КлючИЗначение.Ключ);
КонецЦикла;
ЗаполнитьЗначенияСвойств(Результат, Выборка);
Возврат Результат;
КонецФункции
Показать
(21) Не поможете с неожиданно возникшей и вполне логичной ошибкой?
Всё хорошо работало, все были счастливы, пока кто-то не решил создать отдельно процесс и прикрепил к нему файл.
На формах, где добавлен ваш код возникает ошибка
{ОбщийМодуль.ОбщегоНазначения.Модуль(86)}: Значение не является значением объектного типа (Метаданные)
Запрос.Текст =
Всё хорошо работало, все были счастливы, пока кто-то не решил создать отдельно процесс и прикрепил к нему файл.
На формах, где добавлен ваш код возникает ошибка
{ОбщийМодуль.ОбщегоНазначения.Модуль(86)}: Значение не является значением объектного типа (Метаданные)
Запрос.Текст =
(24)Может из-за того что когда файл добавляют нет основного предмета ( файл будет вспомогательным)
Перед строкой
попробуйте добавить проверку
Перед строкой
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента");
попробуйте добавить проверку
Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы);
Если ЗначениеЗаполнено(Документ ) и ТипЗнч(Документ) = Тип("СправочникСсылка.ВнутренниеДокументы") тогда
ВидОценкаРиска = Справочники.ВидыВнутреннихДокументов.НайтиПонаименованию("Оценка риска");
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента");
Если ВидДокумента = ВидОценкаРиска тогда
........
КонецЕсли;
КонецЕсли;
(15) В форме бизнес-процессов всё работает отлично.
По образу и подобию подправила для элемента Согласовано в форме Задачи ЗадачиИсполнителя ЗадачиМне, процедура:
Что может быть не так с Подсказкой? Поле не найдено.
По образу и подобию подправила для элемента Согласовано в форме Задачи ЗадачиИсполнителя ЗадачиМне, процедура:
Процедура ПолучитьРеквизитыИСвойстваЗадачиСогласованиеСогласовать(Задача, Знач РеквизитыЗадачи, ДополнительныеРеквизиты, СвойстваЭлементов)
Что может быть не так с Подсказкой? Поле не найдено.
//Наименования кнопок в задаче согласование в зависимости от вида документа (Реестр Рисков)
ПредметыВыборка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Задача, "Предметы");
Предметы = ПредметыВыборка.Выгрузить();
ПредметДокумент = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы);
ВидРеестрРисков = Справочники.ВидыВнутреннихДокументов.НайтиПонаименованию("Реестр рисков");
РеквизитыЗадачи.Вставить("ПредметДокумент", ПредметДокумент);
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПредметДокумент, "ВидДокумента");
// заголовки и видимость команд
СвойстваЭлементов.Вставить("Согласовано", Новый Соответствие);
СвойстваЭлементов.Вставить("НеСогласовано", Новый Соответствие);
СвойстваЭлементов.Вставить("СогласованоСЗамечаниями", Новый Соответствие);
Если ВидДокумента = ВидРеестрРисков тогда
ЗаголовокСогласовано = "Отправить";
ПодсказкаСогласовано = ЗаголовокСогласовано;
ВидимостьНеСогласовано = Ложь;
ВидимостьСогласованоСЗамечаниями = Ложь;
КонецЕсли;
СвойстваЭлементов.Согласовано.Вставить("Заголовок", ЗаголовокСогласовано);
СвойстваЭлементов.Согласовано.Вставить("Подсказка", ПодсказкаСогласовано);
СвойстваЭлементов.НеСогласовано.Вставить("Видимость", ВидимостьНеСогласовано);
СвойстваЭлементов.СогласованоСЗамечаниями.Вставить("Видимость", ВидимостьСогласованоСЗамечаниями);
Показать
(14)
Я к сожалению, не программист, мне дали ДО и сказали "Делай", поэтому я вынуждена изучать с нуля методом проб и ошибок) Иногда делаю очень тупые вещи)
огда - вот это тоже неправильно, скопировала не глядя.
Вам надо проверять что вид внутреннего документа это ОценкаРиска.
Вам надо проверять что вид внутреннего документа это ОценкаРиска.
Я к сожалению, не программист, мне дали ДО и сказали "Делай", поэтому я вынуждена изучать с нуля методом проб и ошибок) Иногда делаю очень тупые вещи)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот