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