Имя: Пароль:
1C
1С v8
Как обратится к функции модуля формы документа, в 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
НО это не всё... СтартБатч не описан...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший