|   |   | 
| 
 | Обращение к модулю формы | ☑ | ||
|---|---|---|---|---|
| 0
    
        ShramkoRS 06.12.22✎ 12:25 | 
        В превый раз тут, ньюфаг в 1с.
 Выдали следующую задачу: нужно при проведении документа автомтаически ставить галочки (флажки) отражатть в бух учете и в налоговом учете находящиеся на форме документа. Дано: 1. Проведение документа вынесено в подписку на событие (подписка реализована в общем модуле) 2. При проставлении галочек нужно обязательно вызывать событие ПриИзменении у каждого из флажков, так как именно оно и осуществляет подключение к регистрам. Сложность: я не понимаю как мне в подписке на событие обратится к процедуре в модуле формы документа. Экспорт не спасает. | |||
| 1
    
        Kassern 06.12.22✎ 12:30 | 
        (0) конфигурация самописная? Если нет, то событий особых не должно происходить при изменении флага. Из общего модуля не надо пытаться вызывать логику формы. Вообще бизнес логику лучше в формах не хранить. В вашем случае я бы посмотрел кусок кода, который выполняется при изменении флагов. Если запускается какая-то экспортная процедура, то вызывал бы сразу ее, либо перенес логику в общий модуль.     | |||
| 3
    
        Адинэснег 06.12.22✎ 12:37 | 
        надо было заполнение реквизитов объекта реализовать в отдельном серверном методе и дергать его как из событий формы, так и перед записью в модуле объекта     | |||
| 4
    
        ShramkoRS 06.12.22✎ 12:41 | 
        (1) Полагаю что да. Я пытался изначально вызвать при записи если это новый документ и при открытии если уже созданный, но это вызвало несколько ошибок в работе кладовщиков, меня попросили переделать чтоб оно работало именно при проведении.     | |||
| 5
    
        Ryzeman 06.12.22✎ 13:36 | 
        (0) (4) Ты немного запутался в событиях и сущностях похоже. Уточни свою задачу.
 Если у тебя >>Проведение документа вынесено в подписку на событие<< то, ни о каком события при изменении или модуле формы речи идти не должно. Тебе не нужна форма документа в принципе - подписка у тебя на сервере, там идёт работа с объектом. Сделай объект таким, каким он должен быть при проставлении всех нужных галочек, и когда его откроют - там уже как раз увидят что все галочки есть. Если же речь идёт об интерактивном проведении самого документа, то ты там в любой удобный момент в модуле формы делаешь всё что положенно и меняешь - хоть перед записью хоть при записи | |||
| 6
    
        mikecool 06.12.22✎ 13:53 | 
        (5) только передзаписью, какой после?     | |||
| 7
    
        Ryzeman 06.12.22✎ 13:56 | 
        (6) Я не писал после.
 Можно перед записью, можно в обработке проверки заполнения, можно при записи на сервере - тут в зависимости от того что он там конкретно делает. | |||
| 8
    
        ShramkoRS 06.12.22✎ 14:12 | 
        (5) в том то и проблема, мне мало чтоб стояли галочки, мне еще нужно чтоб скрипт при этом был отработанный. Я не знаю с какой целью но в скрипте, при изменении галочек вылазит окно с сообщением, спрашивающее подтверждение, если окно не вылезет, то никакой связи между документом и регистром не появится. То есть в любом случае нужно участие пользователя. Если б не это сообщение, я бы в тряпочку молчал. Мне просто нужно чтоб ставилась галочка и отрабатывал скрипт при проведении, ни при записи и не перед ней, а именно при проведении, если точнее то перед проведением, чтоб проведение проходило с уже отработанным скриптом. Выглядеть должно так. Пользователь открыл форму документа, если надо покопался в ней, записал, распечатал закрыл, галочки ни как не дали о себе знать. А вот если нажал провести, то галочки ставятся, вылазят эти уточняющие сообщения, пользователь соглашается и только потом проводка проходит.     | |||
| 9
    
        Ryzeman 06.12.22✎ 14:18 | 
        (8) Нет, не обижайся, но ты говоришь глупость. Без контекста никаких скриптов и галочек не существует от слова совсем. Есть объект - это набор таблиц который хранится в базе данных. Все эти скрипты на форме и прочая шняга в конце концов влияют какие данные в этот объект запишутся. Вне контекста ты не должен (и не можешь) вести никакой диалог с пользователем.
 И именно поэтому я тебя и спрашиваю - у тебя вся эта логика должна отрабатываться в форме самого документа? Тогда у тебя есть модуль этой формы, спокойно делай в ней всё что хочешь, она и так доступна. Если у тебя это происходит в какой-то совершенно другой форме по подписке события ДРУГОГО объекта, то незачем трогать модуль формы вообще (хотя это возможно, но в твоём случае не нужно), у тебя уже есть сам объект, меняй его как хочешь | |||
| 10
    
        magicSan 06.12.22✎ 14:24 | 
        в расширение форму.     | |||
| 11
    
        ShramkoRS 06.12.22✎ 14:36 | 
        (9) Я не обидчивый. Я ж говорю, изначально я все реализовал в форме. Для новых документов сделал при записи, для уже созданых при открытии. Но из-за этого у кладовщицы одной случилась накладка, когда ей надо было распечтать документ, который был без БУ и НУ, он у нее открылся, галочки проставилсь, ддя печати док попросил записать и провести, но у нее было прав для проведения и ей нужен был документ проведенный изначальным числом, а сегодняшним. Может вы хотите донести до меня, то что мне стоило в обоих случаях ставить эти галочки при записи документа?     | |||
| 12
    
        Ryzeman 06.12.22✎ 14:43 | 
        (11) Нет, я хочу сказать что вот эти слова
 >>Проведение документа вынесено в подписку на событие (подписка реализована в общем модуле) Тогда вообще не в тему. По теме зачем "Для новых документов сделал при записи, для уже созданых при открытии." Во-первых у тебя так модифицированность будет взводиться каждый раз - оно тебе надо? Ну и какая цель у этого? Если поменять все существующие, то это надо обработкой делать, а не в надежде что их кто-то откроет. Во-вторых, если процитировать: >>Выдали следующую задачу: нужно при проведении документа автомтаически ставить галочки (флажки) отражатть в бух учете и в налоговом учете находящиеся на форме документа. Опустим все нюансы и предположим что у задача состоит в том, что бы у всех проведённых документов стояли эти галки. Реализовать можно двумя путями - либо в модуле объекта\подписке, либо на форме. На форме это можно сделать при записи, там проверяешь режим записи, и если проведение - выполняешь код. При открытии это делать НЕ надо, тем более там какой то диалог у тебя. Его же не просто так придумали? Если будешь делать в модуле объекта (это нужно например что бы это правило работало и для программно созданных документов, вне зависимости что там его создатель захотел) - тогда всё что я писал выше справедливо - тебе не нужен модуль формы. Смотришь откуда эти галки берутся и что делается при их нажатии - и повторяешь то же в модуле события - запись или проведение или что ты там решил. Это либо реквизиты объекта либо запись в регистре сведений соответсвующем, я не знаю как конкретно в твоей конфе это реализовано. Посмотри сам по коду что происходит. | |||
| 13
    
        Обработка 06.12.22✎ 14:54 | 
        (0) Ваша задача сводится к тому что:
 1. Есть записанные или проведенные документы без включения галочек. Тут надо выяснить это только небольшое количество доков которые по случайной невнимательности были записаны? Или же это намеренный с чем то обоснованный метод записи доков чтоб потом как-то программа сама включала галочки и провела. В любом случае вам нужно написать обработку по изменению реквизита доков и проведению. Сделайте это без использования методов процедур и функции формы документа. Не важно разово или постоянно но нужно это написать и протестировать. 2. Если писать обработку то нужно быть уверенным что все должно быть предопределено. никаких диалогов. 3. Все это делать надо в событии перед записью. Ни в коем случае при проведении. ТАк не кошерно!. | |||
| 14
    
        Обработка 06.12.22✎ 14:56 | 
        + (13)
 Даже если это подписка на событие то событие передзаписью. Там все пропишите и если надо придется скопипастить все функции из формы или написать такой же с изменениями. | |||
| 15
    
        ShramkoRS 06.12.22✎ 14:57 | 
        (12) понял спасибо     | |||
| 16
    
        Ryzeman 06.12.22✎ 14:58 | 
        (14) Ну, диалог в подписке он вести не сможет, если на кой то чёрт он действительно нужен (хотя очень вряд ли).     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |