Надо сделать отбор по текущему пользователю, т.е. в документе находиться сотрудники(пользователи) и если он зашел не под этим пользователем, то он галку поставить не может. Например, согласующий "администратор", я зашел под пользователем "администратор", соответственно я могу поставить галку только у себя, другим не могу.
Кто знает как сделать это?
Кто знает как сделать это?
Прикрепленные файлы:
По теме из базы знаний
- Отборы в отчётах. Нюансы работы компоновщика настроек.
- [Расширение] Бухгалтерия государственного учреждения 2.0 (с версии 2.0.78.32)
- СКД не только для отчетов
- Панель #Расширение объекта: Редактор, Права, Поиск, Сторно, Обмен
- Методы работы с универсальным отчетом в подсистеме "Варианты отчетов" на БСП
Найденные решения
(24) Переписав код для работы на клиенте
&НаКлиенте
Процедура СогласующиеПередНачаломИзменения(Элемент, Отказ)
ТекПольз = фПолучитьТекущегоВользователяНаСервере();
ТекСтрока = Элементы.СписокСогласующий.ТекущиеДанные;
Если ТекСтрока.Согласующие <> ТекПольз Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Нужно прописать, что то вроде:
Если ПараметрыСеанса.ТекущийПользователь <> Объект.Ответственный Тогда
//Запретить менять.
КонецЕсли;
Более детально не напишу, так как не понятно, что это список или обработка. Открывается документ или через список изменение делается.
Если ПараметрыСеанса.ТекущийПользователь <> Объект.Ответственный Тогда
//Запретить менять.
КонецЕсли;
Более детально не напишу, так как не понятно, что это список или обработка. Открывается документ или через список изменение делается.
Процедура ТЧОдобреноПриИзменении(Элемент)
Если (Элементы.ТЧ.ТекущиеДанные.Согласующие <> ПараметрыСеанса.ТекущийПользователь) Тогда
Элементы.ТЧ.ТекущиеДанные.Одобрено = НЕ Элементы.ТЧ.ТекущиеДанные.Одобрено;
КонецЕсли;
КонецПроцедуры
Но я бы добавил еще одну колонку булево в ТЧ, скрыл бы ее и при открытии документа заполнял бы Истина или Ложь в зависимости от того какой пользователь там указан. А дальше в условном оформлении прописал бы доступность в зависимости от значения нашей колонки ТЧ. Условное оформление применяется для каждой строки ТЧ в отдельности. Если не хотите добавлять колонку - можно создавать условное оформление программно. Вот как я это делаю:
УсловноеОформление.Элементы.Очистить();
Для каждого строка из ОповещенияПользователю Цикл
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОповещенияПользователю.Имя);
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.Использование = Истина;
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОповещенияПользователю.УИНУведомления");
Отбор.ПравоеЗначение = ПараметрыСеанса.ТекущийПользователь;
ЦветФона = Элемент.Оформление.Элементы.Найти("ЦветФона");
ЦветФона.Значение = WebЦвета.СеребристоСерый;
ЦветФона.Использование = Истина;
КонецЦикла;
Показать
(19)Сейчас попробую зайти под пользователем, которого вообще нет в этом списке.
Еще надо сделать что бы, после того как первый по списку пользователь поставил галку, у другого открывалась возможность тоже поставить галку и так до конца. Т.е. второй по списку не может поставить галку , если первый не поставил, третий - если 2 и 1.
Еще надо сделать что бы, после того как первый по списку пользователь поставил галку, у другого открывалась возможность тоже поставить галку и так до конца. Т.е. второй по списку не может поставить галку , если первый не поставил, третий - если 2 и 1.
(24) Переписав код для работы на клиенте
&НаКлиенте
Процедура СогласующиеПередНачаломИзменения(Элемент, Отказ)
ТекПольз = фПолучитьТекущегоВользователяНаСервере();
ТекСтрока = Элементы.СписокСогласующий.ТекущиеДанные;
Если ТекСтрока.Согласующие <> ТекПольз Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Показать
(30)Ну вот Согласующий "Администратор" стоит по списку 1, ему соответственно всегда можно ставить галку.
Если "Администратор" поставил согласовано, то у второго по списку открывается возможность ставить галку , если у 2 галка поставлена согласован, то и у 3 по списку открывается возможность ставить галки и т.д.
Но если кто либо, не зависимо 1-2-3, поставил Отказано, то у след согласующего возможность ставить галку отсутствует.
Понятно?)
Если "Администратор" поставил согласовано, то у второго по списку открывается возможность ставить галку , если у 2 галка поставлена согласован, то и у 3 по списку открывается возможность ставить галки и т.д.
Но если кто либо, не зависимо 1-2-3, поставил Отказано, то у след согласующего возможность ставить галку отсутствует.
Понятно?)
Прикрепленные файлы:
С кодом не подскажу, тут уже сам попробуй разобраться.
Но алгоритм таков, в цикле надо обойти все строки и сравнивать текущую строку и строку в цикле.
Таким образом, пока предыдущая строка не одобрена, следующую одобрить нельзя.
Но алгоритм таков, в цикле надо обойти все строки и сравнивать текущую строку и строку в цикле.
Для каждого стр из Объект.Согласующие Цикл
Если стр = ТекСтрока Тогда
//Тот код который выше написали
Прервать;
ИначеЕсли НЕ стр.Одобрено Тогда
Отказ = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
ПоказатьТаким образом, пока предыдущая строка не одобрена, следующую одобрить нельзя.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот