Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Доступ к реквизиту формы из модуля менеджера

Доступ к реквизиту формы из модуля менеджера
Я
   user321
 
29.02.20 - 02:43
Как из модуля менеджера документа узнать значение реквизита(элемента, не связан с объектом) открытой формы. От этого будет зависеть логика процедуры в ММ ?
УНФ, управляемые формы.
   ДенисЧ
 
1 - 29.02.20 - 06:08
Никак. ММ работает на сервере.
   MiniMuk
 
2 - 29.02.20 - 06:34
(1)  Зачем вводите в заблуждение, 
его можно передать параметром
   Ненавижу 1С
 
3 - 29.02.20 - 14:14
(1) форма тоже частично живёт на сервере. Но дело не в этом. Нужен экземпляр формы
   Cthulhu
 
4 - 29.02.20 - 14:30
для получения в любом модуле данных компонента формы (не связанного с данными объекта данных) - необходимым условием является выполнение следующих требований:
1) форма должна быть создана (в смысле - экземпляр формы а не компонент метаданных).
2) в этом самом "любом модуле" должна быть доступна ссылка на созданный экземпляр формы, или на нужные модулю ее реквизиты (ну или на копии этих значений).
выполнение этих условий "в лоб" - создание/открытие формы и передача из этой формы нужного значения в нужный модуль (например, в параметре вызываемой из модуля формы процедуры/функции этого самого "любого модуля" - при прямом или опосредованном - предопределенно или по подписке вызове этой самой процедуры/функции этого самого "любого модуля").
как-то так.
   user321
 
5 - 29.02.20 - 14:52
// Функция проверяет, проведен документ или нет, и вызывает процедуру печати

// документа.
//

Функция ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета)

Это функция типовой УНФ, в которой мне в зависимости от состояния чекбокса надо менять создание печатной формы.
В этих параметрах ссылка на форму документа?
   Cthulhu
 
6 - 29.02.20 - 15:47
(5): сказать-то что хотел?
   Cthulhu
 
7 - 29.02.20 - 15:48
(6)+: в смысле - без указания на то, в каком модуле эта функция - твой комментарий - просто выпуск желудочных газов в мелкий водоем, не более того
   palsergeich
 
8 - 29.02.20 - 15:50
(7) Это как я понял стандартная подиситема печати.
В модуле команды можно пробросить учто угодно (5) это один из шагов печати же
   palsergeich
 
9 - 29.02.20 - 15:50
Открывай БСП подсистема Печать и читай мануалы
   palsergeich
 
10 - 29.02.20 - 15:59
(9) Зависит много отчего,возможно тебе придется стандартную команду убрать или сделать новую командуформы, куда в параметры печати будешь передавать свой реквизит
   palsergeich
 
11 - 29.02.20 - 16:00
(10) Значение своего реквизита точнее.
Ты просто неверно выбрал точку модификации, она раньше. Глянь по стеку вызова откуда именно происходит вызов и модифицируй его или делай новую точку вызова.
   D_E_S_131
 
12 - 29.02.20 - 16:03
+ к (11), там есть прям ПараметрыПечати, куда можно передать нужное значение и уже в ММ его обрабатывать.
   Cthulhu
 
13 - 29.02.20 - 16:09
(9),(10),(11): попробуй по слогам перечитать то, на что ты отвечаешь. попробуй ответить на вопрос - в каком модуле приведенная тобой процедура. сам изучи мануалы сначала. а потом берись возражать (если такое желание еще останется). если, конечно, ты заинтересован в том, чтобы не выглядеть глупо.
   palsergeich
 
14 - 29.02.20 - 16:11
(13) И что это меняет?
Если подход неверен в принципе.
Начинать модификацию надо раньше
   palsergeich
 
15 - 29.02.20 - 16:14
Парень хочет что бы типоавя печать работала по другому, ну и пусть это делает раньше, это вполне себе возможно.
   Cthulhu
 
16 - 29.02.20 - 16:15
(14): что "это"? какой "подход"? какую "модификацию"? кто на ком стоял?
(какая-то каша у вас в голове. извините, но по теме уже сформулировано и отвечено как минимум в основном, ваши унылые попытки спорить ради спора а потом постараться сохранить лицо - скучны. есть вопросы по существу - спрашивайте содержательно, иначе - будьте здоровы и удач вам)
   palsergeich
 
17 - 29.02.20 - 16:17
(16) Ужас какой.
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати - вот вызов самой печати и там проведен документ или нет по процедуре не проверяется, а идет до непосредственного вызова обработчика печати и на всем пути доступны ПараметрыПечати.
   palsergeich
 
18 - 29.02.20 - 16:19
А то что у него скорее всего в можуле команды есть вызов УправлениеПечатьюКлиент.ПроверитьДокументыПроведены - такя именно про это.
Зайди в команду и при необходимости на значении каких то реквизитов делай вызов этой функции или нет
   palsergeich
 
19 - 29.02.20 - 16:21
В конце концов всегда можно под уникальных ход мыслей сделать новую команду печати
   palsergeich
 
20 - 29.02.20 - 16:23
По факту задача стоит так - есть печ форма, сейчас она формируется так.
А хочу что бы про одном значении реквизита она формировалась так, а по другому - так.
точка входа - модуль команды или обработчик, где идет непосредственный вызов УправлениеПечатьюКлиент.ВыполнитьКомандуПечати
   user321
 
21 - 29.02.20 - 16:23
Cthulhu
В форме документа изменили чекбокс. Значение чекбокса есть только в реквизите формы. Потом нажали ПЕЧАТЬ.
Вызвалась стандартная функция ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета)
В отладчике вижу, что в параметре МассивОбъектов[0] есть ссылка на мой документ.
Мне же нужен, как ты пишешь, экземпляр формы, для доступа к значению реквизита.
Вопрос: Как мне здесь экземпляр получить?
   palsergeich
 
22 - 29.02.20 - 16:24
(21) До вызова ПечатнаяФорма - происходит много интересного
   user321
 
23 - 29.02.20 - 16:26
(22) Согласен. Но значение реквизита нужно здесь для формирования печатной формы
   user321
 
24 - 29.02.20 - 16:28
(7) Модуль менеджера
   palsergeich
 
25 - 29.02.20 - 16:30
(23) Смотри. В этой процедуре происходит проверка проведенности и вызов УправлениеПечатью
ИМХО не зная документа в общем я бы решил это так: вместо вызова команды печать на уровень раньше по стеку написал бы код по проверке и вызвал бы УправлениеПечатью уже оттуда
   vde69
 
26 - 29.02.20 - 16:32
(21)

1. кто тебе сказал, что печатать не сохраненные данные это гуд? в 1с другая идеология печатать можно только то, что записано в базу...
2. печать - это команда и ее совсем не обязательно захотят вызывать из формы объекта, например все типовые предусматриваюи печать нескольких ссылок сразу (форма списка - выделяем несколько строк и нажимаем печать), в этом случае какую форму ты хочешь получить в принцепе?
   palsergeich
 
27 - 29.02.20 - 16:41
Даже специально открыл УНФ. Так и есть, печатнаяФорма - делает проверку и потом по условию возвращает табДок.
Нужно уникальное поведение - придется отказаться от Функции Печать в этом документе и написать аналог.
там где вызывается функция Печать - параметры ПечатиДоступны.
   palsergeich
 
28 - 29.02.20 - 16:41
Причем сама функция печатнаяФорма - очень простая и написать ее аналог не должно вызвать проблем
   palsergeich
 
29 - 29.02.20 - 16:42
(16) Пока в лужу набздел только ты
   user321
 
30 - 29.02.20 - 16:43
(26)
Документ сохранен неделю назад. Сегодня пользователь открыл документ, на форме чекбокс не отметил, нажал ПЕЧАТЬ и
распечаталась вся табличная часть документа. После этого отметил чекбокс, нажал ПЕЧАТЬ и распечаталась первая строчка табличного документа. Формирование печатной формы происходит в функции ПечатнаяФорма ММ. Значит там мне требуется значение чекбокса.
 
 Рекламное место пустует
   palsergeich
 
31 - 29.02.20 - 16:48
(30) а я про что.
Модифицируешь или пишешь новую команду печати.
Передаешь в параметры печати свои чекбоксы и модифицируешь строчку где вызывается Печатная форма и в зависимости от условий вызываешь стандартную или свою.
В лоб то что ты хочешь сделать нельзя, ибо архитектура по другому сделана, благо модификаций надо минимуи
   vde69
 
32 - 29.02.20 - 16:50
(30) для этого делается ДВЕ разные печатные формы, полная и краткая.... никакие чекбоксы не нужны
   palsergeich
 
33 - 29.02.20 - 16:51
   user321
 
34 - 29.02.20 - 16:52
(31) Буду пробовать. Может через глобальную переменную получится
   palsergeich
 
35 - 29.02.20 - 16:53
(32) Я об этом еще когда написал)
   user321
 
36 - 29.02.20 - 16:56
(32) Через три дня пользователь скажет "Вместо чекбокса хочу поле для ввода числа от одного до ста, чтоб указать какие строки печатать!"
   palsergeich
 
37 - 29.02.20 - 16:58
(36) Ну обычно стандартную и правдане трогают.
А все извращения пишут в доп команду и называют ее соответствующе печать(По чекбокасм и числу) например
   vde69
 
38 - 29.02.20 - 16:59
(36) тогда сделаешь по технологии внешних обработок вызов ОТДЕЛЬНОЙ формы (не отчет а обработка) и в нее напихаешь и галочек и палочек
   vde69
 
39 - 29.02.20 - 17:01
(36) если ты для этого будешь модифицировать форму объекта - то тебе надо пальцы линейкой отбить :)))
   user321
 
40 - 29.02.20 - 17:03
(39) Пользователя не устраивает форма элемента, приходится.
   vde69
 
41 - 29.02.20 - 17:06
(40) послать пользователя в лес и все, делай правильно или не делай совсем....
   user321
 
42 - 01.03.20 - 02:32
При трассировке столкнулся с кодом в функции:
// Возвращает описание команды по имени элемента формы.

Команды = ПолучитьИзВременногоХранилища(АдресНастроек);
Думаю хранилище инициализируется при запуске программы.
В каком модуле может происходить инициализация?
   Провинциальный 1сник
 
43 - 01.03.20 - 06:49
(26) "кто тебе сказал, что печатать не сохраненные данные это гуд? в 1с другая идеология печатать можно только то, что записано в базу..."
Вот только до появления чюда под названием "управляемое приложение" идеология была другая и процедура печати документа была в модуле объекта, и она не требовала наличия ссылки. Новая идеология - попытка объяснить ситуацию "мы ввязались в гонку за веб-технологиями, из-за чего множество фич стало недоступно, и теперь отсутствие возможности мы назовем новой прогрессивной идеологией".
   Провинциальный 1сник
 
44 - 01.03.20 - 06:59
А по сути, среда 1с стала значительно сложнее и запутаннее, объединив в себе всё худшее из традиционных подходов веб-программирования и 1с-разработки. Все эти костыли РеквизитФормыВЗначение, не имеющие никакого смысла в рамках бизнес-логики, но необходимые для связи контекста клиента с контекстом сервера, а далее - отказ от модальности и синхронных вызовов, в результате то что было реализовано 3 строчками - теперь требует 30.

БСП не облегчила ситуацию ничуть - просто перенесла узлы сложности на другой уровень.
   ProxyInspector
 
45 - 01.03.20 - 08:17
(44) +
   И если раньше выполнялось за 3 сек, то теперь требуется 30 сек
   palsergeich
 
46 - 01.03.20 - 08:44
(42) Смотри ПриСозданииНаСервере
Как правило БСП шные вызовы обрамлены. Тебе нужна та часть, которая Управление печатью.
   palsergeich
 
47 - 01.03.20 - 08:46
Но на самом деле, скорее всего тебе и это не надо - тебе надо найти процедуру обработчик команды, это делается проще.
Отладка->остановить в конфигураторе и тут же жми на кнопку в пользовательском. Так ты быстро попадешь в обработчик
   vde69
 
48 - 01.03.20 - 11:32
(44) я с тобой согласен, что 1с обосрало все, что можно со своей совершенно тупой реализации разделения контекста на клиентский и серверный...

но это не как не говорит о том, что концепция "печатаю только то, что записано" не верная, лично я считаю ее вполне правильной для компаний где в базе работает не 3 человека а поболее, ибо она не позволяет печатать фиктивные документы.... а на 7.7 я несколько раз ловил пользователей которые печатали складские документы с измененным количеством товара и потом тупо воровали
   user321
 
49 - 01.03.20 - 13:22
(47) Точку входа я нашел. Там структура с одной записью едет от начала до конца. Хочу вставить запись для себя. При инициализации Хранилища.


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