Вход | Регистрация
 
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) Вон у тебя в процедуре ВыполнитьКомандуЗавершение() возвращается какой-то результат. Что там сейчас?
Из обработки верни свой склад в этот результат - Закрыть(Результат);
И дальше используй как тебе надо.


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