![]() |
![]() |
![]() |
|
Как обратится к функции модуля формы документа, в 7.7. ? | ☑ | ||
---|---|---|---|---|
0
Honn
19.01.10
✎
15:01
|
Создаю программно документ
Док=СоздатьОбъект("Документ.ЗаписиКнигиПокупок"); Док.Новый(); В модуле формы этого документа есть функция, заполнения на основании.. Как можно к неё обратиться, передать ДокОсн, и чтобы выполнить заполнение на основании имеющегося документа? |
|||
1
Chum
19.01.10
✎
15:03
|
копипаст в твою внешнюю обработку, или открыть форму нового документа с передачей параметром документа-основания
|
|||
2
filh
19.01.10
✎
15:03
|
посмотри что в этой функции и по аналогии
|
|||
3
chelentano
19.01.10
✎
15:03
|
Скопировать функцию в обработку, либо Док.Открыть(), ПриОткрытии()
|
|||
4
also
19.01.10
✎
15:04
|
Загрузить формекс
|
|||
5
Чел
19.01.10
✎
15:05
|
Можно с помощью 1с++ )))
|
|||
6
Honn
19.01.10
✎
15:05
|
скопировать функцию не хотелось бы..
она большая...и везде к реквизитам добавлять Док. ....запаристо |
|||
7
skunk
19.01.10
✎
15:06
|
есть штатная функция создания документов на основании
|
|||
8
Чел
19.01.10
✎
15:08
|
(7) ага, может, и штатная функия заполнения?? ))
|
|||
9
Обработка
19.01.10
✎
15:08
|
(7) тогда ни как. Тебе дали путь в (3) как себе облегчит жизнь. Если не понял уточняй...
|
|||
10
Sserj
19.01.10
✎
15:09
|
Так как процедура в форме, то нужно всеравно открывать форму дока, типа такого:
... Док.Записать(); ОткрытьФормуМодально(Док.ТекущийДокумент(), "ЗаполнитьШапку"); В форме Процедура ПриОткрытии() Если Форма.Параметр = "ЗаполнитьШапку" Тогда НужнаяПроцедура(); Записать(); СтатусВозврата(0); Возврат; КонецЕсли; Хотя вроде можно и без записываний, но лень вспоминать :) |
|||
11
Обработка
19.01.10
✎
15:09
|
Ой пардон в (9) ЭТо к (6) обращение....
|
|||
12
skunk
19.01.10
✎
15:09
|
(8)нет заполнение надо самому реализовывать
(9)это ты к чему? |
|||
13
Honn
19.01.10
✎
15:14
|
Док.Открыть()
такого-же в 7.7 нету... |
|||
14
skunk
19.01.10
✎
15:17
|
(13)и где хоть слово за Док.Открыть() ??????
говорят за открытьформу... вникаем ... ОткрытьФорму(<?>,,) Синтаксис: ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>) Назначение: Открывает визуальную форму ввода нового документа (в т.ч. в режиме ввода на основании). Возвращает: 1 - если действие выполнено, 0 - иначе. Параметры: <ОписательОбъекта> - строка-описатель документа вида: 'Документ.ХХХХХ', где ХХХХХХ - вид документа; <КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен); <ДокументОснование> - документ-основание для открытия формы ввода нового документа в режиме ввода на основании (необязателен). |
|||
15
Honn
19.01.10
✎
15:25
|
(14) а как в таком случае....изменить реквизит документа, не изменяя алгоритма модуля формы, с использованием Форма.Параметр...?
|
|||
16
skunk
19.01.10
✎
15:31
|
После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);
а далее КонтекстФормы.НужныйРеквизит |
|||
17
victuan1
19.01.10
✎
15:35
|
(16) Но при этом не будет доступа к реквизитам таб. части документа
|
|||
18
Sadovnikov
19.01.10
✎
15:35
|
(17) Будет.
|
|||
19
victuan1
19.01.10
✎
15:36
|
(18) Без формекса не будет.
|
|||
20
Sadovnikov
19.01.10
✎
15:37
|
(19) Ну вот и пиши сразу :)
|
|||
21
Sadovnikov
19.01.10
✎
15:37
|
+(20) Только я все время забываю - формэкс это или 1С++
|
|||
22
Honn
19.01.10
✎
15:39
|
вот часть кода..
ОткрытьФорму("Документ.ЗаписьКнигиПокупок",КонтекстФормы,СписокДок.ПолучитьЗначение(Сч,)); КонтекстФормы.Комментарий = "1223123"; А комментарий в открытой форме всё равно остаётся не изменённым... |
|||
23
ДенисЧ
19.01.10
✎
15:41
|
(22) А записать()?
|
|||
24
Sadovnikov
19.01.10
✎
15:43
|
(22) Форму обнови...
|
|||
25
victuan1
19.01.10
✎
15:43
|
(20) Умолчальная установка - это "без формекса". А про формекс было умолчено у skunk
|
|||
26
Sadovnikov
19.01.10
✎
15:44
|
(25) "Умолчальная установка - это "без формекса"." - извини, но для меня - наоборот...
|
|||
27
victuan1
19.01.10
✎
15:44
|
(20)+ А если формекс/1с++ загружен, то (14) не к чему, т.к. рулит (5)
|
|||
28
victuan1
19.01.10
✎
15:44
|
(26) Мы обсуждаем не что у ТЕБЯ, а что у АВТОРА топика.
|
|||
29
Sadovnikov
19.01.10
✎
15:46
|
(28) Сказал, как отрезал :)
|
|||
30
victuan1
19.01.10
✎
15:46
|
(29) ;)
|
|||
31
Honn
19.01.10
✎
15:54
|
КонтекстФормы.Провести();
{C:\DOCUMENTS AND SETTINGS\РАБОЧИЙ СТОЛ\UnRTr.ERT(55)}: Данная команда не может выполняться в формуле элемента диалога! .... Как можно провести новый документ, и закрыть форму ? |
|||
32
also
19.01.10
✎
15:59
|
(31) Олег щас подскажет :) в 1с++ есть
|
|||
33
also
19.01.10
✎
16:00
|
вот так можно
Перем Фл; //****************************************************************************** // Запись() // Процедура Запись() Фл = 1; Форма.Закрыть(0); КонецПроцедуры // Запись() //****************************************************************************** // ПриЗакрытии() // Процедура ПриЗакрытии() Если Фл = 1 Тогда Фл = 0; Записать(); СтатусВозврата(0); КонецЕсли; КонецПроцедуры // ПриЗакрытии() //*** Запись() - вызывается из формулы элемента диалога. |
|||
34
Honn
19.01.10
✎
16:01
|
p.s. кстате через КонтекстФормы.
реквизиты нормально меняются...спасибо! Осталось только сохранить, провести и закрыть форму :) |
|||
35
also
19.01.10
✎
16:01
|
или так
оСистема = СоздатьОбъект("Система"); //Связка StartBatch / EndBatch нужна для того, чтобы при проведении по кнопке не //вылазило ругательство "Метод не может быть выполнен из элемента диалога" оСистема.StartBatch(КонтекстФормы); фДокументПроведен = КонтекстФормы.Провести(); оСистема.EndBatch(КонтекстФормы, 0); //См. предыдущий комментарий |
|||
36
ДенисЧ
19.01.10
✎
16:02
|
(35) Блин, я не успел свою ветку найти :-)
|
|||
37
Sadovnikov
19.01.10
✎
16:02
|
(32) Не успел :)
|
|||
38
also
19.01.10
✎
16:04
|
(37) а я успел :))) (36) из твоей ветки как раз
|
|||
39
Honn
19.01.10
✎
16:10
|
у меня никаких внешних компонент нету :)
|
|||
40
also
19.01.10
✎
16:15
|
(39) так загрузи :)
|
|||
41
Honn
19.01.10
✎
16:15
|
т.е. получается в 7-ке никак нельзя записать открытую форму нового документа, провести и закрыть, пограммным методом ?
|
|||
42
also
19.01.10
✎
16:17
|
(41) см (33)
|
|||
43
Honn
19.01.10
✎
16:19
|
(42) это получается модуль формы документа надо коряжить ?
|
|||
44
also
19.01.10
✎
16:20
|
(43) получается...если не хочется, возьми решение из (35)
|
|||
45
Honn
19.01.10
✎
16:22
|
(44) А что для этого нужно, чтобы такой код выполнить ?
|
|||
46
also
19.01.10
✎
16:24
|
(45) Закинуть 1срр.dll в каталог иб или БИН и
Попытка ЗагрузитьВнешнююКомпоненту("1cpp.dll"); Исключение Сообщить("Не удалось загрузить внешнюю компоненту 1с++!"); КонецПопытки; |
|||
47
Ёпрст
гуру
19.01.10
✎
16:38
|
И не надоело ?
Один хрен, потом придешь к выводу, что написание кода в обработке и его выполнение там в разы быстрее открытия формы и "псевдонажатия кнопок" там.. |
|||
48
Honn
19.01.10
✎
16:45
|
ооо...
заработал код оСистема = СоздатьОбъект("Система"); //Связка StartBatch / EndBatch нужна для того, чтобы при проведении по кнопке не //вылазило ругательство "Метод не может быть выполнен из элемента диалога" оСистема.StartBatch(КонтекстФормы); фДокументПроведен = КонтекстФормы.Провести(); оСистема.EndBatch(КонтекстФормы, 0); //См. предыдущий комментарий а как при помощи 1с++ ещё и закрыть открытую форму? КонтекстФормы.Закрыть(); не работает.. |
|||
49
also
19.01.10
✎
16:52
|
(48) должно работать..Покажи код
|
|||
50
Honn
19.01.10
✎
16:54
|
оСистема = СоздатьОбъект("Система");
//Связка StartBatch / EndBatch нужна для того, чтобы при проведении по кнопке не //вылазило ругательство "Метод не может быть выполнен из элемента диалога" оСистема.StartBatch(КонтекстФормы); фДокументПроведен = КонтекстФормы.Провести(); КонтекстФормы.Закрыть(); оСистема.EndBatch(КонтекстФормы, 0); //См. предыдущий комментарий |
|||
51
ДенисЧ
19.01.10
✎
16:57
|
(48) оСистема.ЗакрытьФорму(Конт);
|
|||
52
Honn
19.01.10
✎
17:04
|
а где почитать можно, какие ещё методы есть у объекта "Система" ?
|
|||
53
ДенисЧ
19.01.10
✎
17:05
|
Класс Система / System
Класс предоставляет различные вспомогательные функции. Методы ЗакрытьФорму / CloseForm Немедленно закрывает форму с отработкой всех событий, обработчики которых есть в форме. РегистрироватьКомпонентыВ_HKCU / RegisterAddinsInHKCU Переназначение ветки реестра, в которой приисходит регистрация внешних компонент. Уснуть / Sleep Делает паузу путем вызова системной функции Sleep(КоличествоМиллисекунд). СохранитьКартинку / SavePic позволяет сохранить картинку в файловую систему. Если значения параметров Каталог и/или ИмяФайла не были заданы, то метод сохранит картинку в каталог временных файлов с уникальным именем. Для создаваемых файлов метод сам подставляет расширение. Метод может выбросить исключение, в случае возникновения ошибочных ситуаций. Сохранению подлежат картинки следующих типов: ICO, BMP. ПолучитьOLEКартинку / GetOlePicture позволяет получить картинку типа OLE.Picture. Получению подлежат картинки следующих типов: ICO, BMP. Сериализовать / Serialize Выполнение ObjRef-сериализации для возможности передачи объектов 1С (например, ТаблицаЗначений, СписокЗначений) в скрипты и различные внешние компоненты. |
|||
54
ДенисЧ
19.01.10
✎
17:05
|
НО это не всё... СтартБатч не описан...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |