|
8.3 Внешняя обработка заполнения ТЧ | ☑ | ||
---|---|---|---|---|
0
Sun125
14.03.15
✎
19:23
|
Управляемая форма, 8.3.
Нужно с помощью внешней обработки ТЧ получить текущую строку ТЧ. Подскажите, пожалуйста, чайнику в УФ, как это можно сделать? &НаСервере Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт ЭтаФорма = ПараметрыВыполнения.ЭтаФорма; Объект = ЭтаФорма.Объект; ЭтаФорма.Модифицированность = Истина; ТекСтрока = Объект.Контрагенты.ТекущиеДанные; Программа ругается, что поле объекта не обнаружено (ТекущиеДанные) |
|||
1
hhhh
14.03.15
✎
19:30
|
У Объект и не бывает ТекущиеДанные. 1С-ка правильно ругается. Копай ЭтаФорма.Элементы.
|
|||
2
Sun125
14.03.15
✎
19:39
|
(1) ТекСтрока = ЭтаФорма.Элементы.Контрагенты.ТекущиеДанные
Текущие данные таблицы недоступны на сервере. Как можно обратиться к клиенту из внешних обработок? |
|||
3
hhhh
14.03.15
✎
20:13
|
ну, выполняйте на клиенте
|
|||
4
Otkr
14.03.15
✎
20:18
|
(1) (2) У внешней обработки заполнения ТЧ нет формы, вот хоть тресни
|
|||
5
hhhh
14.03.15
✎
20:35
|
(4) он берет форму из параметров. Не форму внешней обработки.
|
|||
6
zladenuw
14.03.15
✎
20:41
|
а выбранная строка есть или там только на клиенте
|
|||
7
Sun125
14.03.15
✎
21:31
|
(3) Так проблема, как перейти обратиться к Клиенту, если
процедура ВыполнитьКоманду() на Сервере? |
|||
8
Sun125
14.03.15
✎
21:32
|
Помогите примером кода, кому не жалко? Или где подсмотреть в типовых конфигурациях?
|
|||
9
Wern
14.03.15
✎
21:44
|
С сервера на клиент обратится нельзя. Получай до того как перейдешь на сервер. т.е. не в этой процедуре которая в (0) а там где она вызывается.
|
|||
10
Sun125
14.03.15
✎
22:07
|
Пытаюсь сделать обработку как печатную форму (цель-получить текущую строку ТЧ документа и вывести макет)
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = НСтр("ru = 'МК'"); НоваяКоманда.Идентификатор = "МК"; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода(); НоваяКоманда.ПоказыватьОповещение = Истина; НоваяКоманда.Модификатор = "ПечатьMXL"; Использую клиентский вызов, теперь программа не понимает процедуру Печать() (метод объекта не обнаружен) |
|||
11
Sun125
14.03.15
✎
22:13
|
(10) Разобрался с процедурой) буду дальше пытаться найти текущую строку ТЧ)
|
|||
12
zladenuw
14.03.15
✎
22:21
|
форма есть ?
ТаблицаФормы (FormTable) ТекущаяСтрока (CurrentRow) Использование: Чтение и запись. Описание: Тип: Произвольный. Идентификатор текущей строки таблицы. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. |
|||
13
Sun125
14.03.15
✎
22:22
|
В форме обработки:
&НаКлиенте Процедура Печать(Идентификатор, МассивОбъектов) Экспорт Для Каждого Ссылка Из МассивОбъектов Цикл ФормаДок = Ссылка.ПолучитьФорму(); ТекСтрокаДок = ФормаДок.Элементы.ТЧ.ТекущиеДанные; КонецЦикла; Программа ругается, что метод объекта не обнаружен ПолучитьФорму() |
|||
14
zladenuw
14.03.15
✎
22:24
|
Идентификатор
тут что ? |
|||
15
zladenuw
14.03.15
✎
22:25
|
можно изврат. при открытие давай свой уник идентификатор. потом почему получать форму.
но думаю 1с умная. и сама назначает идентификатор при открытие внешний обработки. может и ошибаюсь. |
|||
16
zladenuw
14.03.15
✎
22:27
|
<Уникальность> (необязательный)
Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма. Ложь - искать форму с ключом уникальности по умолчанию, Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск. Значение по умолчанию: Ложь. |
|||
17
Sun125
14.03.15
✎
22:31
|
Почему я не могу в форме обработке на Клиенте ПолучитьФорму() документа?
|
|||
18
zladenuw
14.03.15
✎
22:37
|
а она откуда знает кто ее вызвал. она что получает и что потом отдает
|
|||
19
Sun125
14.03.15
✎
22:41
|
(18) Т.е. я не смогу из внешней печатной формы, получить данные текущей строки ТЧ документа?
|
|||
20
Sun125
14.03.15
✎
22:42
|
(18) А не смогу, потому что не могу получить форму документа..так чтоли?
|
|||
21
zladenuw
14.03.15
✎
22:42
|
ща. смотрю
|
|||
22
zladenuw
14.03.15
✎
22:44
|
та блин нарисуй свою кнопку туда параметр тек строка. и засунь ее, а в обработке ты уже этот парамер можешь получить
|
|||
23
Sun125
14.03.15
✎
22:49
|
(22) Где нарисовать кнопку? На форме документа? конфигурация типовая, без изменений
|
|||
24
zladenuw
14.03.15
✎
22:49
|
так. моя бп 3 мертва... ща.
|
|||
25
zladenuw
14.03.15
✎
22:55
|
http://forum-mista.pro/topic.php?id=702845
(12) комент |
|||
26
zladenuw
14.03.15
✎
22:55
|
(25) ха. не тот. но ты найди...
|
|||
27
zladenuw
14.03.15
✎
22:56
|
помогло ?
|
|||
28
Sun125
14.03.15
✎
23:11
|
(27) Если использовать обработку как "Обработка заполнения ТЧ", я могу получить форму, но не могу из формы получить текущую строку, потому что процедура ВыполнитьКоманду() уже на Сервере.
А если использовать клиентский вызов, то программа ругается на процедуру ВыполнитьКоманду() |
|||
29
Sun125
14.03.15
✎
23:14
|
(27) &НаСервере
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт ЭтаФорма = ПараметрыВыполнения.ЭтаФорма; Объект = ЭтаФорма.Объект; ТЧ =Объект.ТЧ; Как после этого получить текущую строку ТЧ? |
|||
30
Sun125
14.03.15
✎
23:20
|
(27) Спасибо, получилось! таким способом:
ФормаПроверки = ПолучитьФорму("Документ.ОТ_Проформа.ФормаОбъекта",Новый Структура("Ключ",Проформа),ЭтаФорма); |
|||
31
Sun125
14.03.15
✎
23:23
|
В форме ВПФ:
&НаКлиенте Процедура Печать(Идентификатор, МассивОбъектов) Экспорт Для Каждого Ссылка Из МассивОбъектов Цикл ФормаДок = ПолучитьФорму("Документ.Заказ.ФормаОбъекта",Новый Структура("Ключ",Ссылка),); ТекСтрока = ФормаДок.Элементы.ТЧ.ТекущиеДанные; сообщить("" + ТекСтрока.НомерСтроки); |
|||
32
zladenuw
14.03.15
✎
23:39
|
ну так все возможно. и нет магии :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |