Вход | Регистрация


1С:Предприятие ::

Метки: 

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) Если все правильно прописать в ПриОткрытии() то и мелькать ничего не должно...



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