|
УФ. Вопрос по передаче параметра между клиентом и сервером | ☑ | ||
---|---|---|---|---|
0
suvolod
20.01.14
✎
09:17
|
С управляемыми формами работаю нечасто, поэтому прошу подсказки. В 1С Розница 2.0 хочу типовую обработку "печати этикеток и ценников" заменить на свою.
Для этого в модуле формы типовой обработки сделал следующее: //1 Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Адрес = ПоместитьВоВременноеХранилище(Параметры, УникальныйИдентификатор); ??? = Адрес; Возврат; //2 Процедура ПриОткрытии(Отказ) Адрес = ???; Парам = ПолучитьИзВременногоХранилища(Адрес); ОткрытьФорму("Обработка.ПечатьЭтикетокИЦенниковНОВАЯ.Форма.Форма", Парам); Отказ = Истина; Возврат; Как видно из кода, у меня проблема с сохранением адреса во врем. хранилище. Понятно, что у обработки можно создать реквизит и хранить адрес в нем. Но уж больно некрасиво получается, не хочется создавать новый реквизит в типовых объектам только ради хранения строчки с адресом. Может, есть другой способ сохранения адреса? |
|||
1
Адский плющ
20.01.14
✎
09:21
|
Реквизит формы.
|
|||
2
olegves
20.01.14
✎
09:21
|
(0) в процедуру печати правильнее передавать ссылку (массив ссылок) на объект, саму процедуру размещать в модуле менеджера, а для печати создавать команду объекта
|
|||
3
Адский плющ
20.01.14
✎
09:22
|
А вообще в приоткрытии какой-то лютый г-код.
|
|||
4
Cube
20.01.14
✎
09:23
|
(0) Так идентификатор сделай постоянным...
|
|||
5
suvolod
20.01.14
✎
09:23
|
(4) Это как?
|
|||
6
Cube
20.01.14
✎
09:24
|
(5) "b608aede-4189-49a6-bdf8-c94a65733962"
|
|||
7
suvolod
20.01.14
✎
09:28
|
(6)не понимаю, как мне это применить на практике. Уникальный идентификатор и так у меня постоянный, потому-что ПриСозданииНаСервере и ПриОткрытии принадлежат одной форме.
Но как с сервера вытащить адрес без сохранения в промежуточном реквизите, не понимаю.. Вот если бы была какая-нибудь клиентская функция по обратному получению адреса из внешнего хранилища по ИД формы, тогда такая проблема бы даже не обсуждалась... |
|||
8
suvolod
20.01.14
✎
09:31
|
На обычных формах было все проще. Достаточно в проц. ПередОткрытием прописать
ОткрытьФорму("Обработка.ПечатьЭтикетокИЦенниковНОВАЯ.Форма.Форма", Парам); Отказ = Истина; ... и все работало. А на УФ мало того что нужно две типовые проц. править, так и еще отдельный реквизит создавать для хранения адреса. |
|||
9
banco
20.01.14
✎
09:33
|
(8) в УФ вроде еще проще, есть же обработчик ОбработкаПолученияФормы
|
|||
10
Cube
20.01.14
✎
09:39
|
(7) Да не, это я затупил что-то)))
Я так понял, что (0) выполняется в одной форме? Ну а чем реквизит формы плох? Его ведь можно и программно создать... |
|||
11
suvolod
20.01.14
✎
09:51
|
(9) спасибо, сейчас посмотрю что это за обработчик.. не знал
(10) Программно было-бы самое то, только... как это сделать? |
|||
12
suvolod
20.01.14
✎
10:32
|
(9)Попробовал обработчик... задумка хорошая, но у меня не работает. Точнее, если я щелкаю на кнопке "Печать этикеток и ценников" в главном окне программы, то обработчик срабатывае. А вот если я окно печати ценников открываю из формы документа (по кн. Печать > Ценники), то обработчик не срабатывает :(....
|
|||
13
Cube
20.01.14
✎
10:34
|
(11) "как это сделать?"
Примерно, так: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) МассивДобавляемых = Новый Массив; МассивДобавляемых.Добавить(Новый РеквизитФормы("МойРеквизит", Новый ОписаниеТипов("Строка"))); ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемых); |
|||
14
Defender aka LINN
20.01.14
✎
10:36
|
Одинэснеги такие одинэснеги...
(0) Оставь форму в покое и меняй КОМАНДУ |
|||
15
suvolod
20.01.14
✎
10:43
|
(13) спасибо.
(14) с УФ мало работал.. можно чуть подробнее как меняется команда.. или что погуглить |
|||
16
Cube
20.01.14
✎
10:44
|
(15) "как меняется команда"
Программно можно: 1). Создаешь свою команду. 2). Находишь элемент на форме. 3). Меняешь ему команду на свою из п. 1. |
|||
17
Cube
20.01.14
✎
10:46
|
То есть, (14) тебе предлагает заменить выполняемое действие на кнопке вызова обработки "печати этикеток и ценников"
|
|||
18
Defender aka LINN
20.01.14
✎
10:47
|
(16) Рукалицо...
(15) Что значит "как меняется"? Берешь и меняешь. |
|||
19
suvolod
20.01.14
✎
10:48
|
спасибо.. Cube, тебе особенно.... Пойду дальше пытать свою УФ
|
|||
20
Cube
20.01.14
✎
10:50
|
(18) "Рукалицо"
Что, не угадал? Ну, знаешь, телепатов тут нет. Тебе нужно яснее выражать свои мысли... Возможно, ты предлагал поменять модуль команды, но кто об этом знает, кроме тебя? |
|||
21
suvolod
20.01.14
✎
15:06
|
Кажется разобрался..
1// Подписка на событие не подойтет, потому-что типовой код 1С Розницы везде использует вызов вида "Обработка.ПечатьЭтикетокИЦенников.Форма.Форма", а подписка срабатывает только при вызове вида ОткрытьФорму("Обработка.ПечатьЭтикетокИЦенников.Форма") 2// "Рукалицо" со сменой команды вообще не годиться. Это нужно будет править еще больше кода.. каждый документ, где будет вызываться эта команда. 3// Наиболее приемлимый вариант - это вар. от Cube с программным созданием реквизита формы. Небольшой косяк, который еще вылез и пытаюсь победить - это то, что в обработчике ПриСозданииНаСервере свойство ЭтаФорма.Параметры имеют вид ДанныеФормаСтруктура, а вызываемая позже на клиенте команда ОткрытьФорму просит в качестве параметров обычную структуру... Как проще преобразовать ДанныеФормаСтруктура в обычную Структуру? |
|||
22
Defender aka LINN
20.01.14
✎
15:48
|
(21) "Это нужно будет править еще больше кода.. каждый документ, где будет вызываться эта команда"
http://www.miataturbo.net/attachments/build-threads-57/99478-adventures-my-drift-miata-2408017-epic-facepalm_zpsdaaf296c-jpg%3Fdateline%3D1389368159 Команда печати ценников - ОДНА |
|||
23
suvolod
21.01.14
✎
06:19
|
(22) Ты заблуждаешься. Я смотрю код Розницы: в документах поступления, перемещения, установки цен и некоторых других есть команды печати ценников (и их модули)
Документ.ОприходованиеТоваров.Команда.ПечатьЦенников.Модуль команды Документ.ПеремещениеТоваров.Команда.ПечатьЦенников.Модуль команды Документ.ПоступлениеТоваров.Команда.ПечатьЦенников.Модуль команды Документ.ПрименениеЦенНоменклатуры.Команда.ПечатьЦенников.Модуль команды ... и т.д. Соотвественно, глобальный хак в одном месте на вызов команды печати ценников я поставить не смогу, придется править, перехватывать и вызывать свою обработку печати ценников в каждом из этих документов. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |