Имя: Пароль:
1C
1С v8
Ввод на основании - как перейти на клиента перед стандартными процедурами
,
0 slafor
 
29.04.22
15:12
Надо ввести ПКО на основании Списания товаров, но перед Обработкой заполнения надо, чтобы пользователь мог выбрать хозяйственную операцию. Сама ОбработкаЗаполнения выполняется на сервере, а нам надо вывести на экран список значений для выбора нужного. А сделать это можно только на клиенте. Не подскажете, как лучше? Может быть, что-то выполняется перед Обработкой заполнения?
1 lubitelxml
 
29.04.22
15:17
Выбирайте хозяйственную операцию в док. Списание товаров и ее передавайте в обработку заполнения
2 Ryzeman
 
29.04.22
15:20
(0) А в каком контексте ты собираешься это делать если у тебя документ создаётся на сервере и фактически ни в каком виде не существует на клиенте? Либо (1) либо уже в открывающейся форме нового документа выбирать.
3 slafor
 
29.04.22
15:23
(1) Да это я понимаю, не пойму только, выполняется ли вообще что-то клиентское в Списании, если я использую типовой механизм Ввода на основании?
4 slafor
 
29.04.22
15:23
Я ведь могу и из формы списка выбрать ввод на основании...
5 hhhh
 
29.04.22
15:26
(3) сделай отдельную кнопку, что ты уперся в этот ввод на основании?
6 slafor
 
29.04.22
15:27
(2) А если выбирать в "уже в открывающейся форме нового документа", то форма, наверное, будет неправильная - она же зависит от вида хоз. операции.
7 slafor
 
29.04.22
15:28
(5) А ссылки в стандартных отчетах (Связанные документы) не будет работать, наверное?
8 Ryzeman
 
29.04.22
15:29
(4) Особых событий для ввода на основании точно нет. В типовом ты можешь конечно вклиниться в клиентские процедуры которые параметры формы получают и туда что-нибудь дописать... Но я ХЗ, так делать за гранью добра и зла ИМХО)
9 Kassern
 
29.04.22
15:29
(0) оповещения вам в помощь
10 lubitelxml
 
29.04.22
15:31
(7) будут, связанные документы ищут связь по реквизитам указанным в критерии отбора. Главное поле для связи заполни
11 lubitelxml
 
29.04.22
15:32
То есть выводишь свою кнопку - по ней - выбираешь на клиенте операция, далее методом Заполнить() попадаешь в обработку заполнения
12 ptiz
 
29.04.22
15:47
(6) В форме анализируй при открытии:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    Если ЗначениеЗаполнено(ПараметрыОснование) Тогда
        
        Если НЕ ЗначениеЗаполнено(ВидОперации) Тогда
        
            Отказ = Истина;
            
            Список = Новый СписокЗначений;
            Список.Добавить("Значение1");
            Список.Добавить("Значение2");
            
            Список.ПоказатьВыборЭлемента(Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект), "Выберите операцию");
        Иначе
            Сообщить(ВидОперации);
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытииЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
    
    ВыбЭлемент = ВыбранныйЭлемент;
    
    Если ВыбЭлемент <> Неопределено Тогда
    
        Струк = Новый Структура("ВидОперации,Основание", ВыбЭлемент.Значение, ПараметрыОснование);
        
        ОткрытьФорму("Документ.Документ2СоставнойТип.Форма.ФормаДокумента", Струк);
    
    КонецЕсли;
    

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ПараметрыОснование = Параметры.Основание;
    
    Если Параметры.Свойство("ВидОперации") Тогда
        ВидОперации = Параметры.ВидОперации;
    КонецЕсли;
    
КонецПроцедуры

ПараметрыОснование - это реквизит формы
13 lubitelxml
 
29.04.22
15:51
(12) тоже вариант, но в том случае, если хоз. операция не участвует в коде обработки заполнения
14 lubitelxml
 
29.04.22
15:52
сначала ведь обработка заполнения, потом при создании на сервере, и только потом при открытии
15 hhhh
 
29.04.22
17:05
(14) просто код из обработки заполнения надо перенести в ПриОткрытии
16 lubitelxml
 
29.04.22
17:48
(15) то есть предлагаешь сломать весь типовой код по заполнению, потом в ПриОткрытии сделать серверный вызов с кодом обработки заполнения? Тогда надо и код при создании на сервере повторить будет... короче гемор еще тот
17 Kassern
 
29.04.22
17:55
(0) всю ветку не читал, но не понимаю проблемы. Надо вызвать открытие формы выбора перед вводом на основании? Так не проблема, переопределите процедуру ввода на основании, выполните оповещение с выбором хоз операции. Далее в зависимости от выбора выполняйте ввод на основании с выбранной хоз операцией.
18 slafor
 
29.04.22
18:55
Все спасибо, уйма новой информации )

На самом деле, вопрос решили иначе - просто анализируем документ-основание, и на основании того, какая аналитика указана в списании, выбираем и аналитику в ПКО. А вот мысль в отчете (17) интересна, но непонятна - как же я смогу переопределить процедуру ввода на основании?
19 lubitelxml
 
29.04.22
19:11
(18) это верное решение.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан