Вход | Регистрация
 
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 человек.