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

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

Метки:

Открытие формы для ввода новой записи и автоматическое заполнение ее полей

Я
   MC
 
16.04.04 - 20:37
Господа, подскажите, плиз:
Как бы сделать так, чтобы в самодельном отчете ( непосредственно в таблице ) при щелчке на одну специальную ячейку открывался для
заполнения новый Приходный Ордер и в качестве КоррСчета авоматически указывался 62.1 ???
 
  Рекламное место пустует
   skunk
 
1 - 16.04.04 - 21:10
Для открытия смотри:
ОткрытьФорму(<?>,,)
OpenForm(<?>,,)
Синтаксис:
ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>)
Назначение:
Открывает визуальную форму ввода нового документа (в т.ч. в режиме ввода на основании).
Возвращает: 1 - если действие выполнено, 0 - иначе.
Параметры:
<ОписательОбъекта> - строка-описатель документа вида:
 'Документ.ХХХХХ', где ХХХХХХ - вид документа;
<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);
<ДокументОснование> - документ-основание для открытия формы ввода нового документа в режиме ввода на основании (необязателен).
Замечание:
Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0.

а для автоматического заполнения, проще всего иметь эмдишник... в форме нужного документа, в процедуре ВводНового ставишь что типа:

если Форма.Параметр = "чего-то" тогда
  КоррСчет = "62.1";
конецесли;

а в своем отчете для открытия нужного дока ставишь строчку:

формаОткрыть("Документ.ХХХХХХХ", "чего-то");
   427
 
2 - 16.04.04 - 21:12
В поле Расшифровка этой ячейки пишешь идентификатор СпПарам

В обработке перед выводом этой ячейки пишешь
СпПарам=СоздатьОбъект("СписокЗначений");
СпПарам.Set ("Команда", "НовыйПриходник");
СпПарам.Set ("КоррСчет", AccountByCode("62.1")); 
СпПарам.Set ("ИмяНужногоРеквизита", ЗначениеНужногоРеквизита); 
    
   
при выводе ячейки в таблицу значение СпПарам заносится в поле расшифровка
   
   
в глобальнике в процедуре ОбработкаЯчейкиТаблицы добавляешь
   
   
   
                       
Процедура ОбработкаЯчейкиТаблицы(Расшифровка, СтандартнаяОбработка, Таблица) Экспорт    
    
if ValueTypeStr(Расшифровка) = "СписокЗначений"  then
   if EmptyValue(Расшифровка.Get("Команда")) <> 1 then
        if Расшифровка.Get("Команда") = "НовыйПриходник" then
            Кон = "";
            OpenForm ("Document.ПриходныйОрдер",Кон );
            Кон.КоррСчет = Расшифровка.Get(КоррСчет);
            return;
        endIf; 
    endIf;    
endIf;                                
   
далее идет существующий текст этой процедуры


все..... наслаждаешься .....
   Рупор абсурда
 
3 - 16.04.04 - 21:14
Не надо так ..., тут проще ч/з контекст заполнить ...
Перем Конт;
ОткрытьФорму("Документ.ПриходныйОрдер", Конт); 
Конт.КоррСчет = "62.1";
 
(1) Последняя твоя строчка - развод? ;))
   skunk
 
4 - 16.04.04 - 21:18
(3)нет просто у кого-то именины... а кто уже наверное нажрался... надро спать идти... а то опять леший куда-нить понесет
   427
 
5 - 16.04.04 - 21:20
(3) Конт.КоррСчет = "62.1";  - точно развод.... КоррСчет - тип Счет...
   Рупор абсурда
 
6 - 16.04.04 - 21:41
(5) Почему ты так уверен? Про это (0) ничего не сказал ... :))
   427
 
7 - 16.04.04 - 21:50
62.1 - Россия..... а в приходнике КоррСчет - тип Счет.... нигде не видел просто строки
   MC
 
8 - 17.04.04 - 16:38
Не ожидал, что так шустро отреагируете - за что еще одно спасибо.
Можно ли в открываемую форму передать значения ее полей не внося изменений в модуль этой формы, типа как в VBA  
   MyForm.Field1.Value = "62.1"
А то как не хочется портить модуль часто используемых документов своими кривыми руками.
По поводу слов уважаемого Рупора "тут проще ч/з контекст заполнить ..."
   Перем Конт; 
   ОткрытьФорму("Документ.ПриходныйОрдер", Конт); 
  Конт.КоррСчет = "62.1";
Не понял (извиняюсь конечно), где писать эти строчки и что тогда писать в расшифровке ячейки "Обновить"
   GrayT
 
9 - 17.04.04 - 23:05
"Обновить" я так понимаю это та самая ячейка приклике по которой надо создать новый ПриходныйОрдер?
Если больше ни каких расшифровок использоваться не будешь, то напиши в расшифровке что угодно, хошь число, хошь слово какое. По клику в этой ячейки вызоветься процедура ОбработкаЯчейкиТаблицы().
Вот в ней и напишешь
ОткрытьФорму("Документ.ПриходныйОрдер", Конт); 
  Конт.КоррСчет = СчетПоКоду("62.1"); 

Конт.  и есть ссылка на вновь открытую форму (MyForm)

См. также Использование расшифровки
   Asmody
 
10 - 17.04.04 - 23:48
(8) чтоб было как в VBA (ну или почти так) используй 1С++ (а точнее FormEx, но 1С++ - это все и сразу). Там есть такое ServiceFormEx::SetContextVar(Context, VarName, NewValue) - установка значения переменной в заданном контексте.
 
  Рекламное место пустует
   MC2
 
11 - 18.04.04 - 00:32
Сорри за смену ника - это глупость, но я забыл пароль к старому ( МС )
To CrayT: Дружище, ты не прав. Во-первых эта байда
   ОткрытьФорму("Документ.ПриходныйОрдер", Конт); 
   Конт.КоррСчет = СчетПоКоду("62.1"); 
НЕ РАБОТАЕТ!
Здесь Конт - это как я понимаю свойство MyForm.Tag в VBA

Во-вторых - если в процедуре ОбработкаЯчейкиТаблицы()писать
ОткрытьФорму("Документ.ПриходныйОрдер", Конт);
то  эта форма будет открываться при формировании основного отчета, т.е. никуда кликать не надо - а форма уже открыта - это не есть гуд
   GrayT
 
12 - 20.04.04 - 00:15
Прав. Вот внешний отчет:
Процедура Сформировать()
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Отчет");        
    
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,0,0);
    Таб.Показать("");
 КонецПроцедуры
                
//_____________________________________________________________________________

Процедура ОбработкаЯчейкиТаблицы()
  конт = "";
  ОткрытьФорму("Документ.ПриходныйОрдер", Конт); 
  Конт.КоррСчет = СчетПоКоду("62.1"); 
  Конт.Форма.Обновить();
КонецПроцедуры .

В стандартной бухне. В секции "Отчет" всего одна ячейка с надписью "Прав", а в поле расшифровка стоит 1.
У меня работает.


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