|
Доступ к реквизиту формы из модуля менеджера | ☑ | ||
---|---|---|---|---|
0
user321
29.02.20
✎
02:43
|
Как из модуля менеджера документа узнать значение реквизита(элемента, не связан с объектом) открытой формы. От этого будет зависеть логика процедуры в ММ ?
УНФ, управляемые формы. |
|||
1
ДенисЧ
29.02.20
✎
06:08
|
Никак. ММ работает на сервере.
|
|||
2
MiniMuk
29.02.20
✎
06:34
|
(1) Зачем вводите в заблуждение,
его можно передать параметром |
|||
3
Ненавижу 1С
гуру
29.02.20
✎
14:14
|
(1) форма тоже частично живёт на сервере. Но дело не в этом. Нужен экземпляр формы
|
|||
4
Cthulhu
29.02.20
✎
14:30
|
для получения в любом модуле данных компонента формы (не связанного с данными объекта данных) - необходимым условием является выполнение следующих требований:
1) форма должна быть создана (в смысле - экземпляр формы а не компонент метаданных). 2) в этом самом "любом модуле" должна быть доступна ссылка на созданный экземпляр формы, или на нужные модулю ее реквизиты (ну или на копии этих значений). выполнение этих условий "в лоб" - создание/открытие формы и передача из этой формы нужного значения в нужный модуль (например, в параметре вызываемой из модуля формы процедуры/функции этого самого "любого модуля" - при прямом или опосредованном - предопределенно или по подписке вызове этой самой процедуры/функции этого самого "любого модуля"). как-то так. |
|||
5
user321
29.02.20
✎
14:52
|
// Функция проверяет, проведен документ или нет, и вызывает процедуру печати
// документа. // Функция ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета) Это функция типовой УНФ, в которой мне в зависимости от состояния чекбокса надо менять создание печатной формы. В этих параметрах ссылка на форму документа? |
|||
6
Cthulhu
29.02.20
✎
15:47
|
(5): сказать-то что хотел?
|
|||
7
Cthulhu
29.02.20
✎
15:48
|
(6)+: в смысле - без указания на то, в каком модуле эта функция - твой комментарий - просто выпуск желудочных газов в мелкий водоем, не более того
|
|||
8
palsergeich
29.02.20
✎
15:50
|
(7) Это как я понял стандартная подиситема печати.
В модуле команды можно пробросить учто угодно (5) это один из шагов печати же |
|||
9
palsergeich
29.02.20
✎
15:50
|
Открывай БСП подсистема Печать и читай мануалы
|
|||
10
palsergeich
29.02.20
✎
15:59
|
(9) Зависит много отчего,возможно тебе придется стандартную команду убрать или сделать новую командуформы, куда в параметры печати будешь передавать свой реквизит
|
|||
11
palsergeich
29.02.20
✎
16:00
|
(10) Значение своего реквизита точнее.
Ты просто неверно выбрал точку модификации, она раньше. Глянь по стеку вызова откуда именно происходит вызов и модифицируй его или делай новую точку вызова. |
|||
12
D_E_S_131
29.02.20
✎
16:03
|
+ к (11), там есть прям ПараметрыПечати, куда можно передать нужное значение и уже в ММ его обрабатывать.
|
|||
13
Cthulhu
29.02.20
✎
16:09
|
(9),(10),(11): попробуй по слогам перечитать то, на что ты отвечаешь. попробуй ответить на вопрос - в каком модуле приведенная тобой процедура. сам изучи мануалы сначала. а потом берись возражать (если такое желание еще останется). если, конечно, ты заинтересован в том, чтобы не выглядеть глупо.
|
|||
14
palsergeich
29.02.20
✎
16:11
|
(13) И что это меняет?
Если подход неверен в принципе. Начинать модификацию надо раньше |
|||
15
palsergeich
29.02.20
✎
16:14
|
Парень хочет что бы типоавя печать работала по другому, ну и пусть это делает раньше, это вполне себе возможно.
|
|||
16
Cthulhu
29.02.20
✎
16:15
|
(14): что "это"? какой "подход"? какую "модификацию"? кто на ком стоял?
(какая-то каша у вас в голове. извините, но по теме уже сформулировано и отвечено как минимум в основном, ваши унылые попытки спорить ради спора а потом постараться сохранить лицо - скучны. есть вопросы по существу - спрашивайте содержательно, иначе - будьте здоровы и удач вам) |
|||
17
palsergeich
29.02.20
✎
16:17
|
(16) Ужас какой.
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати - вот вызов самой печати и там проведен документ или нет по процедуре не проверяется, а идет до непосредственного вызова обработчика печати и на всем пути доступны ПараметрыПечати. |
|||
18
palsergeich
29.02.20
✎
16:19
|
А то что у него скорее всего в можуле команды есть вызов УправлениеПечатьюКлиент.ПроверитьДокументыПроведены - такя именно про это.
Зайди в команду и при необходимости на значении каких то реквизитов делай вызов этой функции или нет |
|||
19
palsergeich
29.02.20
✎
16:21
|
В конце концов всегда можно под уникальных ход мыслей сделать новую команду печати
|
|||
20
palsergeich
29.02.20
✎
16:23
|
По факту задача стоит так - есть печ форма, сейчас она формируется так.
А хочу что бы про одном значении реквизита она формировалась так, а по другому - так. точка входа - модуль команды или обработчик, где идет непосредственный вызов УправлениеПечатьюКлиент.ВыполнитьКомандуПечати |
|||
21
user321
29.02.20
✎
16:23
|
Cthulhu
В форме документа изменили чекбокс. Значение чекбокса есть только в реквизите формы. Потом нажали ПЕЧАТЬ. Вызвалась стандартная функция ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета) В отладчике вижу, что в параметре МассивОбъектов[0] есть ссылка на мой документ. Мне же нужен, как ты пишешь, экземпляр формы, для доступа к значению реквизита. Вопрос: Как мне здесь экземпляр получить? |
|||
22
palsergeich
29.02.20
✎
16:24
|
(21) До вызова ПечатнаяФорма - происходит много интересного
|
|||
23
user321
29.02.20
✎
16:26
|
(22) Согласен. Но значение реквизита нужно здесь для формирования печатной формы
|
|||
24
user321
29.02.20
✎
16:28
|
(7) Модуль менеджера
|
|||
25
palsergeich
29.02.20
✎
16:30
|
(23) Смотри. В этой процедуре происходит проверка проведенности и вызов УправлениеПечатью
ИМХО не зная документа в общем я бы решил это так: вместо вызова команды печать на уровень раньше по стеку написал бы код по проверке и вызвал бы УправлениеПечатью уже оттуда |
|||
26
vde69
29.02.20
✎
16:32
|
(21)
1. кто тебе сказал, что печатать не сохраненные данные это гуд? в 1с другая идеология печатать можно только то, что записано в базу... 2. печать - это команда и ее совсем не обязательно захотят вызывать из формы объекта, например все типовые предусматриваюи печать нескольких ссылок сразу (форма списка - выделяем несколько строк и нажимаем печать), в этом случае какую форму ты хочешь получить в принцепе? |
|||
27
palsergeich
29.02.20
✎
16:41
|
Даже специально открыл УНФ. Так и есть, печатнаяФорма - делает проверку и потом по условию возвращает табДок.
Нужно уникальное поведение - придется отказаться от Функции Печать в этом документе и написать аналог. там где вызывается функция Печать - параметры ПечатиДоступны. |
|||
28
palsergeich
29.02.20
✎
16:41
|
Причем сама функция печатнаяФорма - очень простая и написать ее аналог не должно вызвать проблем
|
|||
29
palsergeich
29.02.20
✎
16:42
|
(16) Пока в лужу набздел только ты
|
|||
30
user321
29.02.20
✎
16:43
|
(26)
Документ сохранен неделю назад. Сегодня пользователь открыл документ, на форме чекбокс не отметил, нажал ПЕЧАТЬ и распечаталась вся табличная часть документа. После этого отметил чекбокс, нажал ПЕЧАТЬ и распечаталась первая строчка табличного документа. Формирование печатной формы происходит в функции ПечатнаяФорма ММ. Значит там мне требуется значение чекбокса. |
|||
31
palsergeich
29.02.20
✎
16:48
|
(30) а я про что.
Модифицируешь или пишешь новую команду печати. Передаешь в параметры печати свои чекбоксы и модифицируешь строчку где вызывается Печатная форма и в зависимости от условий вызываешь стандартную или свою. В лоб то что ты хочешь сделать нельзя, ибо архитектура по другому сделана, благо модификаций надо минимуи |
|||
32
vde69
29.02.20
✎
16:50
|
(30) для этого делается ДВЕ разные печатные формы, полная и краткая.... никакие чекбоксы не нужны
|
|||
33
palsergeich
29.02.20
✎
16:51
|
||||
34
user321
29.02.20
✎
16:52
|
(31) Буду пробовать. Может через глобальную переменную получится
|
|||
35
palsergeich
29.02.20
✎
16:53
|
(32) Я об этом еще когда написал)
|
|||
36
user321
29.02.20
✎
16:56
|
(32) Через три дня пользователь скажет "Вместо чекбокса хочу поле для ввода числа от одного до ста, чтоб указать какие строки печатать!"
|
|||
37
palsergeich
29.02.20
✎
16:58
|
(36) Ну обычно стандартную и правдане трогают.
А все извращения пишут в доп команду и называют ее соответствующе печать(По чекбокасм и числу) например |
|||
38
vde69
29.02.20
✎
16:59
|
(36) тогда сделаешь по технологии внешних обработок вызов ОТДЕЛЬНОЙ формы (не отчет а обработка) и в нее напихаешь и галочек и палочек
|
|||
39
vde69
29.02.20
✎
17:01
|
(36) если ты для этого будешь модифицировать форму объекта - то тебе надо пальцы линейкой отбить :)))
|
|||
40
user321
29.02.20
✎
17:03
|
(39) Пользователя не устраивает форма элемента, приходится.
|
|||
41
vde69
29.02.20
✎
17:06
|
(40) послать пользователя в лес и все, делай правильно или не делай совсем....
|
|||
42
user321
01.03.20
✎
02:32
|
При трассировке столкнулся с кодом в функции:
// Возвращает описание команды по имени элемента формы. Команды = ПолучитьИзВременногоХранилища(АдресНастроек); Думаю хранилище инициализируется при запуске программы. В каком модуле может происходить инициализация? |
|||
43
Провинциальный 1сник
01.03.20
✎
06:49
|
(26) "кто тебе сказал, что печатать не сохраненные данные это гуд? в 1с другая идеология печатать можно только то, что записано в базу..."
Вот только до появления чюда под названием "управляемое приложение" идеология была другая и процедура печати документа была в модуле объекта, и она не требовала наличия ссылки. Новая идеология - попытка объяснить ситуацию "мы ввязались в гонку за веб-технологиями, из-за чего множество фич стало недоступно, и теперь отсутствие возможности мы назовем новой прогрессивной идеологией". |
|||
44
Провинциальный 1сник
01.03.20
✎
06:59
|
А по сути, среда 1с стала значительно сложнее и запутаннее, объединив в себе всё худшее из традиционных подходов веб-программирования и 1с-разработки. Все эти костыли РеквизитФормыВЗначение, не имеющие никакого смысла в рамках бизнес-логики, но необходимые для связи контекста клиента с контекстом сервера, а далее - отказ от модальности и синхронных вызовов, в результате то что было реализовано 3 строчками - теперь требует 30.
БСП не облегчила ситуацию ничуть - просто перенесла узлы сложности на другой уровень. |
|||
45
ProxyInspector
01.03.20
✎
08:17
|
(44) +
И если раньше выполнялось за 3 сек, то теперь требуется 30 сек |
|||
46
palsergeich
01.03.20
✎
08:44
|
(42) Смотри ПриСозданииНаСервере
Как правило БСП шные вызовы обрамлены. Тебе нужна та часть, которая Управление печатью. |
|||
47
palsergeich
01.03.20
✎
08:46
|
Но на самом деле, скорее всего тебе и это не надо - тебе надо найти процедуру обработчик команды, это делается проще.
Отладка->остановить в конфигураторе и тут же жми на кнопку в пользовательском. Так ты быстро попадешь в обработчик |
|||
48
vde69
01.03.20
✎
11:32
|
(44) я с тобой согласен, что 1с обосрало все, что можно со своей совершенно тупой реализации разделения контекста на клиентский и серверный...
но это не как не говорит о том, что концепция "печатаю только то, что записано" не верная, лично я считаю ее вполне правильной для компаний где в базе работает не 3 человека а поболее, ибо она не позволяет печатать фиктивные документы.... а на 7.7 я несколько раз ловил пользователей которые печатали складские документы с измененным количеством товара и потом тупо воровали |
|||
49
user321
01.03.20
✎
13:22
|
(47) Точку входа я нашел. Там структура с одной записью едет от начала до конца. Хочу вставить запись для себя. При инициализации Хранилища.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |