|
Как обратиться к реквизитам формы документа из внешней обработки | ☑ | ||
---|---|---|---|---|
0
Nzzzz
21.10.20
✎
12:50
|
Доброго времени суток. Как обратиться к реквизитам формы документа из внешней обработки в процедуре ВыполнитьКомандуЗавершение?
ВладелецФормы.Объект.Товары - не работает. |
|||
1
Nzzzz
21.10.20
✎
12:52
|
Внешняя обработка добавлена в Администрировании в базу и открывается через документ
|
|||
2
Vadim_37
21.10.20
✎
12:53
|
а почему именно формы, а не объекта?
|
|||
3
Pro-tone
21.10.20
✎
12:59
|
(0) у реквизита формы есть путь, как правило там либо реквизит объекта, либо программное заполнение на основе данных регистров, посмотри путь откуда берутся данные и обращайся к ним из обработки
|
|||
4
Nzzzz
21.10.20
✎
13:01
|
(3) А если документ ещё не записан?
|
|||
5
Галахад
гуру
21.10.20
✎
13:16
|
Хм. "ВыполнитьКомандуЗавершение" это вообще что за процедура?
|
|||
6
kobzon2
21.10.20
✎
13:18
|
(4) А если документ не записан, зачем к нему обращаться? Цель итоговая какая?
|
|||
7
banco
21.10.20
✎
13:22
|
(0) Реквизитам формы надо обращаться как ВладелецФормы[Имяреквизита]
|
|||
8
Nzzzz
21.10.20
✎
13:31
|
(6) Открываю документ - нажимаю кнопку(моя внешняя обработка) - открывается форма, в ней выбираю значение(например склад "Основной") - в табличной части документа удалиться все записи с товарами ,которые не лежат на "Основном".
|
|||
9
Strogg
21.10.20
✎
13:34
|
(8) ну так и обрабатывай форму после закрытия твоей вешней обработки. Тогда все параметры передадутся в твою форму-владельца. И там уже делай с ними что хочешь...
|
|||
10
Nzzzz
21.10.20
✎
13:37
|
(9) нет во владельце после закрытия..
|
|||
11
Nzzzz
21.10.20
✎
13:41
|
(10) Вот весь код в форме обработки:
&НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт ОткрытьФорму("ВнешняяОбработка.ЗаполнениеТЧ.Форма", , , , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура ВыполнитьКомандуЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = Неопределено Тогда Возврат; КонецЕсли; ЭтаФорма.Закрыть(); КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) Оповещение = Новый ОписаниеОповещения("ВыполнитьКомандуЗавершение", ЭтотОбъект); ВыполнитьОбработкуОповещения(Оповещение, НужныйСклад); КонецПроцедуры |
|||
12
Nzzzz
21.10.20
✎
13:47
|
В какой процедуре обращаться??
Вот например в первой процедуре "ВыполнитьКоманду", я там могу обратиться через владельца |
|||
13
Strogg
21.10.20
✎
13:47
|
(11) погугли параметры Открытьформу(). Там есть описание оповещения при закрытии формы. Сейчас это у тебя безымянная запятая в параметрах.
|
|||
14
Nzzzz
21.10.20
✎
13:51
|
(13) А зачем мне оповещения при закрытии формы?
|
|||
15
Strogg
21.10.20
✎
13:55
|
(14) ты хочешь, чтобы у тебя во владельце что-то изменилось после каких-то действий с твоей обработкой, я правильно понимаю?
|
|||
16
Pro-tone
21.10.20
✎
13:56
|
(8) >Открываю документ - нажимаю кнопку(моя внешняя обработка) - открывается форма, в ней выбираю значение(например склад "Основной") - в табличной части документа удалиться все записи с товарами ,которые не лежат на "Основном"
а зачем вообще надо обработку внешнюю открывать-то? обработка нужна чтоб внутри нее происходило какое-то шаманство (допустим, как в обработке подбора товаров - там остатки и цены видны, можно список товаров собрать с аналогами и тп) |
|||
17
Pro-tone
21.10.20
✎
13:57
|
(14) это тебе наследие прошлого программиста досталось и ты не знаешь что с ним делать? я вообще не вижу смысла в открытии внешней обработки для изменения склада
|
|||
18
Nzzzz
21.10.20
✎
13:57
|
(16) "а зачем вообще надо обработку внешнюю открывать-то?" - потому что именно во внешней обработке я выбираю нужный склад. Чтобы в ТЧ документа показаны были товары на выбранном во внешней обработке складе
|
|||
19
Nzzzz
21.10.20
✎
13:58
|
(17) Вот так вот надо, чтобы по кнопке из документа удалялись ненужные записи. Чтобы был только выбранный склад.
|
|||
20
Nzzzz
21.10.20
✎
13:59
|
(15) Ну да. Выбираю во внешней обработке склад, нажимаю во внешней обработке "Заполнить" и в документе должна перезаполняться ТЧ(то есть удалять все записи которые не равны выбранному складу)
|
|||
21
Pro-tone
21.10.20
✎
14:01
|
(18) нет, склад ты выбираешь в форме документа, а в обработке должен происходить подбор самих товаров, и после ее закрытия через ОК они должны попадать в таблицу формы
|
|||
22
Pro-tone
21.10.20
✎
14:02
|
бывают случаи когда складов несколько, тогда список складов можно выбрать в форме обработки подбора
|
|||
23
Strogg
21.10.20
✎
14:04
|
(20) ну так я тебе об этом и говорю. При закрытии формы твоей обработки передавай в параметре выбранный склад. А в обработке оповещения после закрытия обрабатывай переданный параметр (выбранный склад). Тебе же не интерактивно все это надо удалять, а после нажатия кнопки...
(21) зачем тогда вообще нужна внешняя обработка) |
|||
24
Nzzzz
21.10.20
✎
14:06
|
(21) Не на форме документа выбираю склад, а именно по этой кнопке во внешней обработке.
|
|||
25
Nzzzz
21.10.20
✎
14:08
|
(23) "При закрытии формы твоей обработки передавай в параметре выбранный склад" -в какой процедуре её закрывать и куда передавать выбранный склад?
|
|||
26
Nzzzz
21.10.20
✎
14:12
|
Вообще надо полностью очищать тч.
В общем надо так: Открываю док - Нажимаю кнопку(моя обработка) - на ней выбираю склад - нажимаю кнопку "Заполнить" - запросом заполняется ТЧ с нужным складом. Как мне обратиться к этой ******* табличной части?? |
|||
27
ГдеСобака Зарыта
21.10.20
✎
14:27
|
Открой типовую, да посмотри как там подбор сделан. Вкратце
1. Открываешь свою форму обработки указывая ей владельца - форму документа 2. Заполненные в обработке данные кладешь во временное хранилище, вызываешь метод Закрыть(АдресВХранилище) где параметром указываешь адрес твоих данных в хранилище 3. В форме документа в ОбработкаПодбора() в параметрах будет адрес в хранилище. По нему получаешь данные загружаешь себе в ТЧ. Но лучше все-таки позвать программиста |
|||
28
Галахад
гуру
21.10.20
✎
14:44
|
Как-то так:
ОбъектДокумента = ВладелецФормы.Объект; ЗафигачитьНаСервере(ОбъектДокумента); КопироватьДанныеФормы(ОбъектДокумента, ВладелецФормы.Объект); ВладелецФормы.Модифицированность = Истина; |
|||
29
Nzzzz
21.10.20
✎
14:51
|
(28) Это в какой процедурке писать?
|
|||
30
kobzon2
21.10.20
✎
14:55
|
(26) Ты же нажимаешь кнопку (моя обработка), по ней открывается какая та процедура. Вот в ней и обращайся в самом конце к ТЧ документа. В процедуре обработки в конце напиши:
Результат = Новый Структура; Результат.Вставить("КакойТоСклад", Склад); Закрыть(Результат); И используй потом это. Мне вобще не понятно на кой ляд тут обработка нужна?. |
|||
31
Nzzzz
21.10.20
✎
14:58
|
(30) Нажимая на кнопку "моя обработка", появляется форма моей обработки в которой выбираю склад. После выбора склада жму кнопку "Заполнить ТЧ"
|
|||
32
Nzzzz
21.10.20
✎
15:06
|
(30) Так не совсем понятно..В процедуре обработки в конце напиши - это в какой? Выше код моей обработки..
|
|||
33
Nzzzz
21.10.20
✎
15:15
|
Всем спасибо за помощь.
|
|||
34
kobzon2
21.10.20
✎
15:15
|
(32) Вон у тебя в процедуре ВыполнитьКомандуЗавершение() возвращается какой-то результат. Что там сейчас?
Из обработки верни свой склад в этот результат - Закрыть(Результат); И дальше используй как тебе надо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |