![]() |
|
Обработка заполнения табличной части документа (УФ) | ☑ | ||
---|---|---|---|---|
0
antotti
10.10.14
✎
16:26
|
Есть документ, для него создана внешняя обработка заполнения тч(реквизит "ДокументОснование есть"), подключена. При вызове ее из документа - открывается форма с выбором документа. (назовем его ДокументОснование), и нужно вытащить данные из табличной части "Товары" документа основания и заполнить ими текущий документ... не пойму как обратиться и как передать данные??? например я получил Ссылку, Ссылка = Объект.ДокументОснование; А дальше как, не пойму??
В обычном такое сделал, а в УФ не выходит. Подскажите кто знает? |
|||
1
Dmitry1c
10.10.14
✎
16:30
|
(0) в управляемом режиме нет обработок заполнения ТЧ, есть обработка в целом для документа (можно заполнить ТЧ тоже)
но писать её надо по-другому, гугл в зубки и вперед |
|||
2
antotti
10.10.14
✎
16:35
|
Я делаю обработку внешнюю с видом"ЗаполненияОбъекта"
|
|||
3
antotti
10.10.14
✎
16:35
|
По типу как тут: http://infostart.ru/public/84119/
|
|||
4
antotti
10.10.14
✎
16:36
|
Но не могу получить документ, который сейчас открыт, и из которого запущена обработка, чтобы заполнить его тч...
|
|||
5
antotti
10.10.14
✎
16:41
|
HELP
|
|||
6
antotti
10.10.14
✎
16:42
|
Как получить ссылку на документ из которого идет вызов внешней обработки???
|
|||
7
antotti
10.10.14
✎
16:43
|
Из модуля формы или модуля объекта обработки?
|
|||
8
13_Mult
10.10.14
✎
16:46
|
Пятнично
|
|||
9
antotti
10.10.14
✎
16:47
|
???
|
|||
10
13_Mult
10.10.14
✎
16:48
|
||||
11
hhhh
10.10.14
✎
16:49
|
всё-таки (3) это для супермегаасов, вы пока таким не являетесь, пользуйтесь тем, что попроще.
|
|||
12
antotti
10.10.14
✎
16:52
|
а можно подсказать без издевок?
|
|||
13
Krolik Bezobraznik
10.10.14
✎
16:55
|
(12) Прежде всего следует отметить что заполнение ТЧ в УФ делается в серверной обработке.
|
|||
14
Krolik Bezobraznik
10.10.14
✎
16:57
|
Ты как то немного непонятно описал тему. Есть обработка в которой ты выбираешь какой то докуменнт а вот дальше ничего не понял
|
|||
15
antotti
10.10.14
✎
16:58
|
Ну смотрите, мой открытый документ, из которого вызывается обработка- хранится в массиве назначений.
МассивНазначений[0] Как получить этот элемент нулевой в модуле обработки? |
|||
16
Krolik Bezobraznik
10.10.14
✎
16:59
|
(15) Прошу прощения но документ и обработка это два разных объекта метаданных. Давайте не путаться в понятиях
|
|||
17
Krolik Bezobraznik
10.10.14
✎
17:01
|
(15) Вы хотите заполнить один документ данными из другого документа, я верно понимаю?
|
|||
18
antotti
10.10.14
✎
17:02
|
да
|
|||
19
Krolik Bezobraznik
10.10.14
✎
17:04
|
(18) Ну в таком случае можно воспользоваться механизмом заполнения на основании или же в документе приемнике в модуле объекта сделать экспортную процедуру заполнения ТЧ, в эту процедуру передавайте ссылку на документ источник.
|
|||
20
hhhh
10.10.14
✎
17:06
|
МассивНазначений - там названия документов, а самих документов там нет.
То есть просто строка "Реализация товаров и услуг", например. Из этой строки ничего не вытащишь. |
|||
21
antotti
10.10.14
✎
17:06
|
а как вытащить?
|
|||
22
antotti
10.10.14
✎
17:07
|
как н получить ссылку на документ из которого идет вызов обработки?
|
|||
23
Krolik Bezobraznik
10.10.14
✎
17:07
|
(20) С чего вы взяли что там нет ссылок на документы? Вы топик стартер, если нет то почему вы за него говорите...
|
|||
24
antotti
10.10.14
✎
17:09
|
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("ОбъектыНазначения") Тогда ТекущийДокумент = Параметры.ОбъектыНазначения[0]; Сообщить(ТекущийДокумент); КонецЕсли; КонецПроцедуры Может так? токлько как потом передать данные на клиент? или в другую серверную процедуры? |
|||
25
Krolik Bezobraznik
10.10.14
✎
17:11
|
(22) воспользуйтесь реквизитом Ссылка. например так
Процедура КакаяТоПроцедураНаДокеИсточнике() Док = Документы.ДокПолучатель.СоздатьДокумент(); Док.ПроцедураЗаполненияТЧ9Ссылка); Док.записать(РежимЗаписиДокумента.Проведение); КонецПроцедуры; Примерно так. А в модуле документа приемника должна быть экспортная процедура Процедура ПроцедураЗаполненияТЧ(Истоник) Экспорт ///Бла бла бла тут обходим в цикле ТЧ иточника и добавляем строки в ТЧ приемник КонецПроцедуры; |
|||
26
antotti
10.10.14
✎
17:12
|
&НаСервере
Функция ЗаполнитьДокументнаСервере(ТекущийДокумент) Для Каждого стч Из ТекущийДокумент.товары Цикл КонецЦикла; КонецФункции &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("ОбъектыНазначения") Тогда ТекущийДокумент = Параметры.ОбъектыНазначения[0]; КонецЕсли; ЗаполнитьДокументнаСервере(ТекущийДокумент); КонецПроцедуры А такой вариант? |
|||
27
hhhh
10.10.14
✎
17:12
|
(24) делаешь реквизит у формы "ТекущийДОкумент", он и будет виден везде.
|
|||
28
Krolik Bezobraznik
10.10.14
✎
17:13
|
(24) Можно наверно и так, только как мне кажется тогда в качестве параметра формы передавайте ссылку на документ источник, а не массив и потом в серверной процедуре присоздании выбирать из массива
|
|||
29
Krolik Bezobraznik
10.10.14
✎
17:16
|
(26)
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("ОбъектыНазначения") Тогда ТекущийДокумент = Параметры.ОбъектыНазначения[0]; КонецЕсли; ///Это уже серверная процедура тут прям и заполняй не надо вызывать какую то еще серверную процедуру // ЗаполнитьДокументнаСервере(ТекущийДокумент); КонецПроцедуры |
|||
30
antotti
10.10.14
✎
17:17
|
hhhh, и как в этот реквизит запхнуть тек док?
|
|||
31
Krolik Bezobraznik
10.10.14
✎
17:18
|
(26) Ты лучше скажи, ты из формы документа источника хочешь вызвать процедуру заполнения документа приемника или как?
|
|||
32
hhhh
10.10.14
✎
17:18
|
(30) ну как и написано
ТекущийДокумент = Параметры.ОбъектыНазначения[0]; |
|||
33
antotti
10.10.14
✎
17:31
|
пробую
|
|||
34
antotti
10.10.14
✎
17:34
|
{Форма.Форма.Форма(19)}: Ошибка при вызове метода контекста (Добавить)
СтрокаТаблицы = ТекущийДокумент.Продукция.Добавить(); по причине: Объект недоступен для изменения. при выполнение обработки |
|||
35
antotti
10.10.14
✎
17:38
|
код
&НаСервере Функция ПолучитьДокументОснованиенаСервере() ДокументОснованиеСсылка = Объект.ДокументПоступления; Возврат ДокументОснованиеСсылка; КонецФункции &НаКлиенте Процедура Заполнить(Команда) ЗаполнитьДокументнаСервере(); КонецПроцедуры &НаСервере Процедура ЗаполнитьДокументнаСервере() ТекущийДокумент = Объект.ТекДокумент.ПолучитьОбъект(); ДокументОснование = ПолучитьДокументОснованиенаСервере(); Для Каждого стч Из ДокументОснование.Товары Цикл СтрокаТаблицы = ТекущийДокумент.Продукция.Добавить(); СтрокаТаблицы.Номенклатура = стч.Номенклатура; СтрокаТаблицы.Количество = стч.Количество; СтрокаТаблицы.ПлановаяСтоимость = стч.Цена; СтрокаТаблицы.СуммаПлановая = стч.Сумма; КонецЦикла; ТекущийДокумент.Записать(); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Объект.ТекДокумент = Документы.ПоступлениеИзПереработки.ПустаяСсылка(); // Если Параметры.Свойство("ОбъектыНазначения") Тогда ТекущийДокумент = Параметры.ОбъектыНазначения[0]; КонецЕсли; Объект.ТекДокумент = ТекущийДокумент; КонецПроцедуры |
|||
36
antotti
10.10.14
✎
17:39
|
ошибки нет, но заполнение не происходит((
|
|||
37
hhhh
10.10.14
✎
17:42
|
ТекущийДокумент = Параметры.ОбъектыНазначения[0];
ТекущийДокумент = Объект.ТекДокумент.ПолучитьОбъект(); точно нет ошибки? совершенно два разных текущих документа? |
|||
38
antotti
10.10.14
✎
17:48
|
спасибо) работает)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |