Имя: Пароль:
1C
 
пытаюсь программно воспроизвести интерактивное действие
0 Alexbttrckr
 
27.09.22
11:33
Бух 3.0

ДокСсылка = ДокПономеру("0000-000282", Дата);
Форма = ПолучитьФорму("Документ.ПриходныйКассовыйОрдер.ФормаОбъекта",Новый Структура("Ключ",ДокСсылка));
Форма.Открыть();
Форма.Объект.Контрагент = НовыйКонтр;
КонтрагентПриИзмененииСервер(Форма);

пытаюсь изменить Контрагента и воспроизвести то, что происходит при интерактивном его изменении на форме используя процедуру модуля формы
КонтрагентПриИзмененииСервер(Форма) Экспорт

в результате получаю:
Процедура или функция с указанным именем не определена (КонтрагентПриИзмененииСервер)
    <<?>>КонтрагентПриИзмененииСервер(Форма); (Проверка: Тонкий клиент)
1 Kassern
 
27.09.22
11:35
(0) Не правильно вы пытаетесь. Вы обращаетесь к процедуре в вашем модуле, а этой процедуры у вас нет
2 Dmitrii
 
гуру
27.09.22
11:39
(0) Сильно сомневаюсь, что КонтрагентПриИзмененииСервер() является экспортной.
Но даже если она экспортная, обращаться к ней надо было бы через Форма. То есть.

Форма.КонтрагентПриИзмененииСервер(Форма);

И вряд ли в качестве параметра этой процедуры прокатит Форма.
3 Dmitrii
 
гуру
27.09.22
11:43
И открыл бы ты форму и посмотрел что там происходит в коде.
Тебе нужно вызвать метод общего модуля ПриходныйКассовыйОрдерФормы.

ПриходныйКассовыйОрдерФормы.КонтрагентПриИзмененииСервер(Форма);
4 Alexbttrckr
 
27.09.22
11:48
(2) да, не сработало
Метод объекта не обнаружен (КонтрагентПриИзмененииСервер)
{ВнешняяОбработка.Отладка.Форма.Форма.Форма(115)}:Форма.ВладелецФормы = Форма.Объект.Контрагент;

(3) смотрел, ходил отладчиком, но, там такая многокаскадная конструкция, что воспроизводить ее будет долго и непросто
вот, думал, как-то воспользоваться тем, что уже есть
5 Kassern
 
27.09.22
11:51
(4) не правильный вы подход используете. Вам нужно было посмотреть стек вызовов процедур формы и посмотреть куда они обращаются. Скорее всего к какому-нибудь общему модулю, где происходит бизнес-логика. Вот туда вы программно и должны обращаться, чтобы у вас корректно заполнялся документ.
6 Alexbttrckr
 
27.09.22
11:57
(5) так я выше об этом писал, что процедура КонтрагентПриИзмененииСервер(Форма) находится
Общий модуль ПриходныйКассовыйОрдерФормы: Модуль [только для чтения]
как правильно к нему обратиться?
7 Dmitrii
 
гуру
27.09.22
11:59
(6) >> как правильно к нему обратиться?

Я ж тебе прямо код написал, который тебе на вставить в свой вместо КонтрагентПриИзмененииСервер(Форма).

ПриходныйКассовыйОрдерФормы.КонтрагентПриИзмененииСервер(Форма);

Что именно тут не работает?
8 Гипервизор
 
27.09.22
12:02
(4) Обманываете, в данном случае никакой многокаскадности. Вам в (3) ответили. До вызова нужной процедуры общего модуля пара переходов.
9 Alexbttrckr
 
27.09.22
12:38
(7) пишет такое

Переменная не определена (ПриходныйКассовыйОрдерФормы)
<<?>>ПриходныйКассовыйОрдерФормы.КонтрагентПриИзмененииСервер(Форма); (Проверка: Тонкий клиент)
10 Alexbttrckr
 
27.09.22
12:41
(8) я в 8-ке разбираюсь слабо, учусь
поэтому, возможно, что-то пишу не так
но, если по этой процедуре пойти отладчиком пошагово, то, открывается тьма окон с разными модулями, которые потом рука устает закрывать
это то, что я вижу, может, это и называется по-другому у профессионалов
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан