Имя: Пароль:
1C
1C 7.7
v7: Как при программном создании документа достучаться до процедур создаваемого документа?
0 Масянька
 
12.12.17
11:58
День добрый!
Из одного док-та создается другой: программно, без открытия и пр.
Как бы добраться до процедур, которые есть в модуле создаваемого?
Спасибо.
1 Рэйв
 
12.12.17
12:00
Через точку от переменной объекта, но процедуры должны быть экспортными
2 Umga2002
 
12.12.17
12:01
Всегда делал

Приоткрытии

Параметры

Закрыть
3 Масянька
 
12.12.17
12:05
(1) В создаваемом сделала - Функция ПробитьЧекНаККМ() Экспорт
В другом:     ДокЧек.ПробитьЧекНаККМ();
Выдало:
ДокЧек.ПробитьЧекНаККМ();
{Документ.ТоварныйЧек.Форма.Модуль(357)}: Поле агрегатного объекта не обнаружено (ПробитьЧекНаККМ)
ЧЯДНТ?
4 Масянька
 
12.12.17
12:06
(2) Как обходной вариант - знаю. Но хочется по-человечески...
5 Остап Сулейманович
 
12.12.17
12:10
(4) По-человечески - код нужно вынести в глобальный модуль. И потом уже вызывать и из формы документа и из дополнительных обработок.
6 silent person
 
12.12.17
12:15
(3) в 7.7 ? там оно так не работает.
штатно, функции и процедуры доступны только в контексте открытой формы.
7 Масянька
 
12.12.17
12:18
А как можно эмулировать нажатие кнопки? Не открывая форму и пр.
8 Остап Сулейманович
 
12.12.17
12:18
(6) Экспортные процедуры глобального модуля доступны в любом контексте.
9 silent person
 
12.12.17
12:21
(8) так это понятно, но
в (0) Как бы добраться до процедур, которые есть в модуле создаваемого?

(7) ну или через formex можно попробовать, но там тоже надо форму открывать.

ВыполнитьПроцедуру / CallAsProcedure
Синтаксис: ВыполнитьПроцедуру(Контекст, ИмяПроцедуры, СписокАргументов)
Параметры:
•    Контекст - тип: ГрупповойКонтекст. Контекст, в котором необходимо выполнить процедуру. Необязательный. По умолчанию - текущий контекст.
•    ИмяПроцедуры - тип: Строка. Имя процедуры.
•    СписокАргументов - тип: СписокЗначений. Список значений, содержащий аргументы процедуры. Если размер списка меньше, чем количество аргументов процедуры, то в оставшиеся аргументы передаются пустые значения. Лишние значения игнорируются. Значения по умолчанию игнорируются. Необязательный. По умолчанию - пустой список.
Возвращает: результат выполнения метода в виде числа: 1 в случае успеха, 0 в противном случае.
Описание: Метод предназначен для выполнения процедуры в заданном контексте.
Пример:

Перем Конт;
Сервис = СоздатьОбъект("Сервис");
Если ОткрытьФорму("Обработка.Демо", Конт) = 1 Тогда
        Список = СоздатьОбъект("СписокЗначений");
        Список.ДобавитьЗначение("Первый параметр");
        Список.ДобавитьЗначение("Второй параметр");
        Список.ДобавитьЗначение("Третий параметр");
        Сервис.ВыполнитьПроцедуру(Конт, "Выполнить", Список);
КонецЕсли;
10 Остап Сулейманович
 
12.12.17
12:21
(7) Непонятно чего вы хотите. Поместить код нажатой клавиши в буфер очереди клавиатуры можно при помощи vbscript. Точнее - wshell. Вызвать обработчик без собственно нажатия - просто вызвать соответствующую процедуру из кода.
11 Ёпрст
 
12.12.17
12:31
(0) исли включишь turbobl в настройках 1cpp, то просто, через Конт.ИмяПроцы
12 Масянька
 
12.12.17
12:32
(11) А как? Включить.
13 MadDAD
 
12.12.17
12:41
(11) Для этого все равно нужен контекст. А через Документ.Новый() мы просто получим запись в БД. Надо по любому открывать форму.


Примерно так:

Конт = 0;
ОткрытьФорму(Док, Конт);
Конт.ПроцедураМодуляФормы();
Конт.Форма.Закрыть();
14 MadDAD
 
12.12.17
12:42
(12)

УН=СоздатьОбъект("УправлениеНастройками");
УН.Включить("TurboBL");
15 MadDAD
 
12.12.17
12:44
(12) Ну и собственно через Контекст открытой формы можно все и заполнить.
16 Масянька
 
12.12.17
12:44
Блин... Как же не хотелось...
Спасибо.
17 MadDAD
 
12.12.17
12:47
(7)
Сервис - объект 1С++

Сервис = СоздатьОбъект("Сервис");
Сервис.ЭмулироватьКлавиатуру("{ESC}");
18 Ёпрст
 
12.12.17
12:49
(16) не хотелось чего ?
19 Fragster
 
гуру
12.12.17
12:50
есть "слайдшоу", может поможет
http://catalog.mista.ru/public/16514/
20 Ёпрст
 
12.12.17
12:51
форму открывать ? Или что ?

Для этого процы, которые заполняют документ помещают в глобальник, и пользуют их.

Типа глЗаполнитьШапку()
21 Масянька
 
12.12.17
12:53
(18) Чтобы форма мелькала. Которая на фиг не нужна.
22 Масянька
 
12.12.17
12:54
(19) Ты меня совсем за дуру держишь? Шоу и я могу устроить...
А вот без шоу...
23 MadDAD
 
12.12.17
12:55
(22) А без шоу сделать класс - наследник от документа. И в нем описать все что должно делаться без открытия формы.
24 Масянька
 
12.12.17
13:04
(23) Блондинка не потянет :(
25 Масянька
 
12.12.17
13:04
А с минимизацией окна стоит поиграться или нет? Чтобы не мелькало.
26 MadDAD
 
12.12.17
13:07
(25) Мне кажется тогда все окна начнут мелькать.
27 Масянька
 
12.12.17
13:08
(26) Мне тоже так кажется. Вот и спрашиваю.
28 MadDAD
 
12.12.17
13:12
(27) А вот сделать прозрачным можно попробовать.
29 Ёпрст
 
12.12.17
13:12
(27) нужно как-то себя заставиь перестать страдать х--ней, и переписать процы заполнения доков к себе в обработку. Или поместить их в глобальник
30 MadDAD
 
12.12.17
13:22
(29) Ну это же самый очевидный и простой вариант. Пионеры не ходят по прямой.
31 Табуретко
 
12.12.17
13:33
(25) Если все правильно прописать в ПриОткрытии() то и мелькать ничего не должно...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан