Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Как при программном создании документа достучаться до процедур создаваемого документа?

v7: Как при программном создании документа достучаться до процедур создаваемого документа?
Я
   Масянька
 
12.12.17 - 11:58
День добрый!
Из одного док-та создается другой: программно, без открытия и пр.
Как бы добраться до процедур, которые есть в модуле создаваемого?
Спасибо.
 
 
   Рэйв
 
1 - 12.12.17 - 12:00
Через точку от переменной объекта, но процедуры должны быть экспортными
   Umga2002
 
2 - 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) По-человечески - код нужно вынести в глобальный модуль. И потом уже вызывать и из формы документа и из дополнительных обработок.
   silent person
 
6 - 12.12.17 - 12:15
(3) в 7.7 ? там оно так не работает.
штатно, функции и процедуры доступны только в контексте открытой формы.
   Масянька
 
7 - 12.12.17 - 12:18
А как можно эмулировать нажатие кнопки? Не открывая форму и пр.
   Остап Сулейманович
 
8 - 12.12.17 - 12:18
(6) Экспортные процедуры глобального модуля доступны в любом контексте.
   silent person
 
9 - 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) А как? Включить.
   MadDAD
 
13 - 12.12.17 - 12:41
(11) Для этого все равно нужен контекст. А через Документ.Новый() мы просто получим запись в БД. Надо по любому открывать форму.


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

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

УН=СоздатьОбъект("УправлениеНастройками");
УН.Включить("TurboBL");
   MadDAD
 
15 - 12.12.17 - 12:44
(12) Ну и собственно через Контекст открытой формы можно все и заполнить.
   Масянька
 
16 - 12.12.17 - 12:44
Блин... Как же не хотелось...
Спасибо.
   MadDAD
 
17 - 12.12.17 - 12:47
(7)
Сервис - объект 1С++
Сервис = СоздатьОбъект("Сервис");
Сервис.ЭмулироватьКлавиатуру("{ESC}");
   Ёпрст
 
18 - 12.12.17 - 12:49
(16) не хотелось чего ?
   Fragster
 
19 - 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) Ты меня совсем за дуру держишь? Шоу и я могу устроить...
А вот без шоу...
   MadDAD
 
23 - 12.12.17 - 12:55
(22) А без шоу сделать класс - наследник от документа. И в нем описать все что должно делаться без открытия формы.
   Масянька
 
24 - 12.12.17 - 13:04
(23) Блондинка не потянет :(
   Масянька
 
25 - 12.12.17 - 13:04
А с минимизацией окна стоит поиграться или нет? Чтобы не мелькало.
   MadDAD
 
26 - 12.12.17 - 13:07
(25) Мне кажется тогда все окна начнут мелькать.
   Масянька
 
27 - 12.12.17 - 13:08
(26) Мне тоже так кажется. Вот и спрашиваю.
   MadDAD
 
28 - 12.12.17 - 13:12
(27) А вот сделать прозрачным можно попробовать.
   Ёпрст
 
29 - 12.12.17 - 13:12
(27) нужно как-то себя заставиь перестать страдать х--ней, и переписать процы заполнения доков к себе в обработку. Или поместить их в глобальник
   MadDAD
 
30 - 12.12.17 - 13:22
(29) Ну это же самый очевидный и простой вариант. Пионеры не ходят по прямой.
 
 Рекламное место пустует
   Табуретко
 
31 - 12.12.17 - 13:33
(25) Если все правильно прописать в ПриОткрытии() то и мелькать ничего не должно...


Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.