|
УТ 11.5. Заказ клиента. Запретить создавать пко, эквайринговую операцию | ☑ | ||
---|---|---|---|---|
0
sanyaka
29.06.23
✎
06:55
|
Всем привет.
Подскажите, как скрыть из верхнего меню документа заказ клиента некоторые пункты (пко, эквайринговая операция). Чтобы пользователь не мог создать данные документы на основании заказа клиента. Достаточно ли в конфигураторе открыть документ заказ клиента и в мастере снять соответствующие галочки с нужных документов. Или нужно в функциях в документах пко/экв.операция которые вызываются анализировать что это документ заказ клиента и ругаться например. Как правильно реализовать, чтобы потом при обновлении меньше проблем было. |
|||
1
PuhUfa
29.06.23
✎
06:59
|
(0) убрать у пользователя права на эти документы не предлагать?
|
|||
2
sanyaka
29.06.23
✎
07:12
|
(1) Мысль с правами тож была. Нужно чтобы данные документы пользователь мог создавать на основании РТУ. Правами так можно разрулить?
|
|||
3
PuhUfa
29.06.23
✎
07:43
|
(2) тогда лучше делай расширение и в нем регулируй данный момент
|
|||
4
sanyaka
29.06.23
✎
09:41
|
(3) В любом случае и для расширения нужно найти место где данный список формируется. Там глубоко запрятано, где-то в общих модулях. Скорее всего этот метод для всех документов вызывается чтобы сформировать список. Быстро не получилось найти. Мож кто знает носом ткнет. А так буду продолжать искать в отладке.
|
|||
5
sanyaka
29.06.23
✎
09:47
|
Ну или в модуле документа Заказ клиента можно ли отловить начало выполнения этих команд...
|
|||
6
Мультук
29.06.23
✎
10:02
|
(5)
Как запретить открывание формы нового ПКО в зависимости от основания: Начало этих команд нужно ловить при создании формы эквайринговой операции и далее смотреть по стеку кто и что вызывает. В УТ создание формы документа ВСЕГДА прилетит вот сюда МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Ставим точку останова в этой функции, создаем ПКО на основании заказа и смотрим в отладчике на Форма.Имя Форма.Основание Форма.Объект.Ссылка Нужно уметь пользоваться функциями ТипЗнч(), Тип(), ЗначениеЗаполнено() Понимать что такое переменная Отказ и зачем она нужна |
|||
7
PuhUfa
29.06.23
✎
10:11
|
(4) все гораздо ближе чем ты думаешь. Идешь в ММ своего ЗаказКлиента и там есть:
// Определяет список команд создания на основании. // // Параметры: // КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании // Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры // Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт |
|||
8
sanyaka
29.06.23
✎
13:58
|
(6) Спасибо большое! Получилось вот так:
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт попытка Если(ТипЗнч(Форма.Основание) = Тип("ДокументСсылка.ЗаказКлиента")) тогда Если (Форма.ИмяФормы = "Документ.ПриходныйКассовыйОрдер.Форма.ФормаДокумента" или Форма.ИмяФормы = "Документ.РасходныйКассовыйОрдер.Форма.ФормаДокумента" или //Форма.ИмяФормы = "Документ.ОперацияПоПлатежнойКарте.Форма.ФормаДокумента" или Форма.ИмяФормы = "Документ.ОперацияПоПлатежнойКарте.Форма.ФормаДокумента") тогда Отказ = Истина; Сообщить("Нельзя создать "+Форма.ИмяФормы+" на основании ЗаказКлиента"); конецесли; конецесли; исключение конецпопытки; КонецПроцедуры Единственное не понял как правильно проверить что существует свойство основание в Форма.Основание пока обернул в попытку/исключение иначе падало если открыть журнал заказов. Также для возврата эквайринга почему-то не заполнено основание... не понятно как проверить для этого случая. ---- Отладка по стеку показало, что в модуле документа заказ клиента выполняется сначала &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); КонецПроцедуры |
|||
9
sanyaka
29.06.23
✎
14:00
|
(7) Нет там процедуры "ДобавитьКомандыСозданияНаОсновании". Скорее всего версия у Вас более старая.
Есть тут методы которые видимо и используются для наполнения меню командами: Процедура Подключаемый_ОбновитьКоманды() ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); КонецПроцедуры Процедура ИнициироватьПолучениеДокументовНаОсновании() ДанныеПоФоновомуЗаданиюПолучениеДокументовНаОсновании = ПродажиСервер.ПолучениеДокументовНаОснованиивФоне(ЭтотОбъект, Объект); КонецПроцедуры |
|||
10
PuhUfa
29.06.23
✎
14:07
|
(7) так и ты не указал версию, поэтому это может просто у тебя их еще нет -)
|
|||
11
Мультук
29.06.23
✎
14:08
|
(8)
1) Наверное сначала стоит проверить имя формы Если (Форма.ИмяФормы = "Документ.ПриходныйКассовыйОрдер.Форма.ФормаДокумента" или Форма.ИмяФормы = "Документ.РасходныйКассовыйОрдер.Форма.ФормаДокумента" или Форма.ИмяФормы = "Документ.ОперацияПоПлатежнойКарте.Форма.ФормаДокумента") тогда Если(ТипЗнч(Форма.Основание) = Тип("ДокументСсылка.ЗаказКлиента")) тогда 2) Наверное всё же стоит проверять на не ЗначениеЗаполнено(Форма.Объект.Ссылка) иначе это будет срабатывать и уже на существующие документы 3) Приучите себя писать функции и процедуры. Таких вставочек из 5-6 строк будет много и вы несколько позже будете в них тонуть Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт //Задача 12345 Постановщик: Иванов А.А., Выполнил:sanyaka 28.06.2023 ОграничениеСозданияПлатежныхДокументов(Форма, Отказ, СтандартнаяОбработка); КонецПроцедуры |
|||
12
sanyaka
29.06.23
✎
14:47
|
(10) 11.5.12.73
|
|||
13
sanyaka
29.06.23
✎
14:50
|
(11) Спасибо за подсказки. Чувствую себя студентом перед преподавателем )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |