|   |   | 
| 
 | Доступ к реквизиту формы из модуля менеджера | ☑ | ||
|---|---|---|---|---|
| 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) Точку входа я нашел. Там структура с одной записью едет от начала до конца. Хочу вставить запись для себя. При инициализации Хранилища.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |