Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как обратиться к реквизитам формы документа из внешней обработки

Как обратиться к реквизитам формы документа из внешней обработки
Я
   Nzzzz
 
21.10.20 - 12:50
Доброго времени суток. Как обратиться к реквизитам формы документа из внешней обработки в процедуре ВыполнитьКомандуЗавершение?
ВладелецФормы.Объект.Товары - не работает.
   Nzzzz
 
1 - 21.10.20 - 12:52
Внешняя обработка добавлена в Администрировании в базу и открывается через документ
   Vadim_37
 
2 - 21.10.20 - 12:53
а почему именно формы, а не объекта?
   Pro-tone
 
3 - 21.10.20 - 12:59
(0) у реквизита формы есть путь, как правило там либо реквизит объекта, либо программное заполнение на основе данных регистров, посмотри путь откуда берутся данные и обращайся к ним из обработки
   Nzzzz
 
4 - 21.10.20 - 13:01
(3) А если документ ещё не записан?
   Галахад
 
5 - 21.10.20 - 13:16
Хм. "ВыполнитьКомандуЗавершение" это вообще что за процедура?
   kobzon2
 
6 - 21.10.20 - 13:18
(4) А если документ не записан, зачем к нему обращаться? Цель итоговая какая?
   banco
 
7 - 21.10.20 - 13:22
(0) Реквизитам формы надо обращаться как ВладелецФормы[Имяреквизита]
   Nzzzz
 
8 - 21.10.20 - 13:31
(6) Открываю документ - нажимаю кнопку(моя внешняя обработка) - открывается форма, в ней выбираю значение(например склад "Основной") - в табличной части документа удалиться все записи с товарами ,которые не лежат на "Основном".
   Strogg
 
9 - 21.10.20 - 13:34
(8) ну так и обрабатывай форму после закрытия твоей вешней обработки. Тогда все параметры передадутся в твою форму-владельца. И там уже делай с ними что хочешь...
   Nzzzz
 
10 - 21.10.20 - 13:37
(9) нет во владельце после закрытия..
   Nzzzz
 
11 - 21.10.20 - 13:41
(10) Вот весь код в форме обработки:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    ОткрытьФорму("ВнешняяОбработка.ЗаполнениеТЧ.Форма", , , ,  , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьКомандуЗавершение(Результат, ДополнительныеПараметры) Экспорт     
    Если Результат = Неопределено Тогда 
        Возврат;
    КонецЕсли;
    ЭтаФорма.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
    
    Оповещение = Новый ОписаниеОповещения("ВыполнитьКомандуЗавершение", ЭтотОбъект);
    ВыполнитьОбработкуОповещения(Оповещение, НужныйСклад);
КонецПроцедуры
   Nzzzz
 
12 - 21.10.20 - 13:47
В какой процедуре обращаться??
Вот например в первой процедуре "ВыполнитьКоманду", я там могу обратиться через владельца
   Strogg
 
13 - 21.10.20 - 13:47
(11) погугли параметры Открытьформу(). Там есть описание оповещения при закрытии формы. Сейчас это у тебя безымянная запятая в параметрах.
   Nzzzz
 
14 - 21.10.20 - 13:51
(13) А зачем мне  оповещения при закрытии формы?
   Strogg
 
15 - 21.10.20 - 13:55
(14) ты хочешь, чтобы у тебя во владельце что-то изменилось после каких-то действий с твоей обработкой, я правильно понимаю?
   Pro-tone
 
16 - 21.10.20 - 13:56
(8) >Открываю документ - нажимаю кнопку(моя внешняя обработка) - открывается форма, в ней выбираю значение(например склад "Основной") - в табличной части документа удалиться все записи с товарами ,которые не лежат на "Основном"

а зачем вообще надо обработку внешнюю открывать-то? обработка нужна чтоб внутри нее происходило какое-то шаманство (допустим, как в обработке подбора товаров - там остатки и цены видны, можно список товаров собрать с аналогами и тп)
   Pro-tone
 
17 - 21.10.20 - 13:57
(14) это тебе наследие прошлого программиста досталось и ты не знаешь что с ним делать? я вообще не вижу смысла в открытии внешней обработки для изменения склада
   Nzzzz
 
18 - 21.10.20 - 13:57
(16) "а зачем вообще надо обработку внешнюю открывать-то?" - потому что именно во внешней обработке я выбираю нужный склад. Чтобы в ТЧ документа показаны были товары на выбранном во внешней обработке складе
   Nzzzz
 
19 - 21.10.20 - 13:58
(17) Вот так вот надо, чтобы по кнопке из документа удалялись ненужные записи. Чтобы был только выбранный склад.
   Nzzzz
 
20 - 21.10.20 - 13:59
(15) Ну да. Выбираю во внешней обработке склад, нажимаю во внешней обработке "Заполнить" и в документе должна перезаполняться ТЧ(то есть удалять все записи которые не равны выбранному складу)
   Pro-tone
 
21 - 21.10.20 - 14:01
(18) нет, склад ты выбираешь в форме документа, а в обработке должен происходить подбор самих товаров, и после ее закрытия через ОК они должны попадать в таблицу формы
   Pro-tone
 
22 - 21.10.20 - 14:02
бывают случаи когда складов несколько, тогда список складов можно выбрать в форме обработки подбора
   Strogg
 
23 - 21.10.20 - 14:04
(20) ну так я тебе об этом и говорю. При закрытии формы твоей обработки передавай в параметре выбранный склад. А в обработке оповещения после закрытия обрабатывай переданный параметр (выбранный склад). Тебе же не интерактивно все это надо удалять, а после нажатия кнопки...
(21) зачем тогда вообще нужна внешняя обработка)
   Nzzzz
 
24 - 21.10.20 - 14:06
(21) Не на форме документа выбираю склад, а именно по этой кнопке во внешней обработке.
   Nzzzz
 
25 - 21.10.20 - 14:08
(23) "При закрытии формы твоей обработки передавай в параметре выбранный склад" -в какой процедуре её закрывать и куда передавать выбранный склад?
   Nzzzz
 
26 - 21.10.20 - 14:12
Вообще надо полностью очищать тч.
В общем надо так:

Открываю док - Нажимаю кнопку(моя обработка) - на ней выбираю склад - нажимаю кнопку "Заполнить" - запросом заполняется ТЧ с нужным складом.
Как мне обратиться к этой ******* табличной части??
   ГдеСобакаЗарыта
 
27 - 21.10.20 - 14:27
Открой типовую, да посмотри как там подбор сделан. Вкратце 
1. Открываешь свою форму обработки указывая ей владельца - форму документа
2. Заполненные в обработке данные кладешь во временное хранилище, вызываешь метод Закрыть(АдресВХранилище) где параметром указываешь адрес твоих данных в хранилище
3. В форме документа в ОбработкаПодбора() в параметрах будет адрес в хранилище. По нему получаешь данные загружаешь себе в ТЧ.

Но лучше все-таки позвать программиста
   Галахад
 
28 - 21.10.20 - 14:44
Как-то так:

ОбъектДокумента = ВладелецФормы.Объект;
    
ЗафигачитьНаСервере(ОбъектДокумента);
    
КопироватьДанныеФормы(ОбъектДокумента, ВладелецФормы.Объект);
ВладелецФормы.Модифицированность = Истина;
   Nzzzz
 
29 - 21.10.20 - 14:51
(28) Это в какой процедурке писать?
   kobzon2
 
30 - 21.10.20 - 14:55
(26) Ты же нажимаешь кнопку (моя обработка), по ней открывается какая та процедура. Вот в ней и обращайся в самом конце к ТЧ документа. В процедуре обработки в конце напиши:
Результат = Новый Структура;
Результат.Вставить("КакойТоСклад", Склад);    
Закрыть(Результат);

И используй потом это.
Мне вобще не понятно на кой ляд тут обработка нужна?.
 
 Рекламное место пустует
   Nzzzz
 
31 - 21.10.20 - 14:58
(30) Нажимая на кнопку "моя обработка", появляется форма моей обработки в которой выбираю склад. После выбора склада жму кнопку "Заполнить ТЧ"
   Nzzzz
 
32 - 21.10.20 - 15:06
(30) Так не совсем понятно..В процедуре обработки в конце напиши - это в какой? Выше код моей обработки..
   Nzzzz
 
33 - 21.10.20 - 15:15
Всем спасибо за помощь.
   kobzon2
 
34 - 21.10.20 - 15:15
(32) Вон у тебя в процедуре ВыполнитьКомандуЗавершение() возвращается какой-то результат. Что там сейчас?
Из обработки верни свой склад в этот результат - Закрыть(Результат);
И дальше используй как тебе надо.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Программист всегда исправляет последнюю ошибку.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.