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


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

Метки:документы

Как программно определить какой документ сейчас открыт?

Я
   Asmodeus
 
30.04.04 - 14:00
И получить его контекст соответственно... Аналогично с формой элемента справочника...
Я уже писал, что у меня есть обработка, которая выводит список реквизитов, их характеристик и значений, но я вставляю в форму документа кнопку для вызова внешнего отчета и передаю ему контекст...
Надоело! Хочу, чтобы при запуске отчета он сам определял текущий открытый документ и брал его данные...
Где-то когда-то что-то слышал про определение текущего документа через журнал, но никак не могу найти то, что мне надо...
 
  Рекламное место пустует
   mszsuz
 
1 - 30.04.04 - 14:02
А если открыто два?
   Asmodeus
 
2 - 30.04.04 - 14:03
(1) Тот, что на экране... :-)
   Asmodeus
 
3 - 30.04.04 - 14:04
(1) Есть же правда, метод ТекущийДокумент для журнала... Только никак не могу понять как им воспользоваться... Как мартышка с очками :-D
   SiMazx
 
4 - 30.04.04 - 14:07
А если оба на экране? Или ты хочешь отловить фокус?
   Поп Гапон
5 - 30.04.04 - 14:07
(0) Посмотри типовую ЗиК. Там есть
Перем ТаблицаОткрытыхФорм;                // таблица открытых форм элементов справочников, документов, ...

посмотри как используется.

В типовой бух есть процедурка, разрешение редактирования, туда можно вставить вызов, подобный в Зике.
   mszsuz
 
6 - 30.04.04 - 14:10
Если открыто несколько документов и переключение между ними производится через панель окон, то 1С нет возможности узнать про то, какой документ активный в данный момент.
   Asmodeus
 
7 - 30.04.04 - 14:12
(5) В ЗиК не хочу лезть... Уж извините... :-)
(4) Я тут подумал... Можно конечно, наверное, открыть выбор документов и ручками ткнуть в тот, который нужно описать... Громоздко только... Когда кнопочка на форме - открываешь нужный документ и нажимаешь... Хотелось так же просто, но без внесения изменений в конфу...
   Asmodeus
 
8 - 30.04.04 - 14:14
(6) Есть же метод Выбран()?? Только для того, чтобы перебрать документы через выборку, он будет срабатывать на каждом.
О! А вот через запрос, наверное, должно получиться!
   Поп Гапон
9 - 30.04.04 - 14:20
(7) мне нравится ход твоих мыслей "... без внесения изменений в конфу ..."
Золотые слова!!!
ЮЗЕРУ не удобно работать с доком - пишешь примочку внешней обработкой, вешаешь кнопкой с "волшебной палочкой" на панель.
открыл ЮЗЕР документ, или журнал, или справочник. Захотелось ему чуда - бустрее или удобней поработать с типовой - взмахнул он твоей "волшебной палочкой" и вуаля...
А типовая при этом остается типовой... И все довольны... чудеса, да и только...

(8) Обработка "волшебная палка" при наличии нескольких доков может и переспросить, что делать, в конце концов.
   mszsuz
 
10 - 30.04.04 - 14:26
(8) Точно, ЗАПРОСОМ! Блин, почему же я сам так не попробовал???
Выложи код запроса, очень интересно ...
 
  Рекламное место пустует
   Asmodeus
 
11 - 30.04.04 - 14:29
(9) Посмеялся... :-D
Вот..
    Запрос=СоздатьОбъект("Запрос");
    ТекстЗапроса="
    |Период с '01.01.2000' по '01.01.2005';
    |Док = Документ.ПоступлениеТоваров.ТекущийДокумент;
    |Условие(Док.Выбран()=1);
    |Группировка Док;";
    Запрос.Выполнить(ТекстЗапроса);
    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
        Сообщить("Запрос не выполнен!");
        Возврат;
    КонецЕсли;
    Док=СоздатьОбъект("Документ");
    ф=0;
    Пока Запрос.Группировка(1)=1 Цикл
        Док.НайтиДокумент(Запрос.Док);
        ТекДок=Док.ТекущийДокумент();
        ф=ф+1;
    КонецЦикла;
    Если ф>1 Тогда
        Сообщить(ф);
    КонецЕсли;

Тоже не работает... Значение "ф" выдает 837, т.е. тоже выбранным считает каждый документ из выборки. Плюс ограничение на виды документов
"Док = Документ.ПоступлениеТоваров.ТекущийДокумент;"
(я же не буду указывать ВСЕ виды документов в конфе)

Как же узнать какой открыт?
   Asmodeus
 
12 - 30.04.04 - 14:31
(11) В смысле не работает так, как надо... Результат отчета выдает.. но для последнего существующего документа...
   Поп Гапон
13 - 30.04.04 - 14:33
(11) Не понял про посмеялся... Видимо ЮЗЕРОВ тебе не жалко. Или с типовыми не работаешь... А может ты с ломаными, пиратскими версиями работаешь???
   mszsuz
 
14 - 30.04.04 - 14:33
мдя, неудача, но ты не унывай.
В 1С ещё много всяких методов ...
   Asmodeus
 
15 - 30.04.04 - 14:41
(13) Я думал, что это ирония с твоей стороны... :-)
Я-то так и хочу, пока не для юзеров, а для себя.. и пока только для описания, а не для внесения измений...
А предназначено это, как раз, для типовых и не только... Это попытка создания универсального инструмента, точнее инструмент уже есть - вопрос в том, как его лучше использовать... Правда, не хочется даже вносить лишнюю кнопку и три строчки кода... Хочется применять отчет целиком снаружи, так сказать...
   Asmodeus
 
16 - 30.04.04 - 14:43
Поставим вопрос проще и конкретнее: "Как определить в журнале, например в общем, спозиционированный документ?"
   Asmodeus
 
17 - 30.04.04 - 14:43
(16) Я об этом еще на курсах, кажется, слышал... Три года назад...
   Asmodeus
 
18 - 30.04.04 - 14:53
Воть... Вместо (11)

    Док=СоздатьОбъект("Документ");
    Если Док.Выбрать(,"Журнал.Общий")=0 Тогда
        Возврат;
    КонецЕсли;
    ТекДок=Док.ТекущийДокумент();

Тогда работает - выбираешь сам документ и.. как в (9).. "вуаля!" :-)
А как, все-таки, хотя бы приблизительно, можно определить что именно открыто (на экране)? Пусть даже надо будет проверять что мы получили (что за форма открыта?)...
   Поп Гапон
19 - 30.04.04 - 14:57
(18) ЕХИДНО: Ну ты будущий Билл гейтс. А в инете статью на эту тему искал?
Она там есть.
   Asmodeus
 
20 - 30.04.04 - 14:59
(19) А может сразу ссылку дашь? Я не уверен, что правильно сформулирую...
   Asmodeus
 
22 - 30.04.04 - 18:22
(21) А по существу можно что-нибудь сказать? Неужели никто не знает?
   Asmodeus
 
23 - 30.04.04 - 18:27
Я вот, сидел, сделал еще прикид по вариатам значений. Т.е. помимо описания реквизитов документа и значений текущего документа, определяется разброс значений. Полезно, потому что сразу видно: какие реквизиты задействованы однообразно (т.е. либо имеют во всех документах этого вида пустое значение, либо только одно конкретное), какие ограниченный набор (несколько вариантов значений), ну и знать все возможные значения, например, контрагента, наверное, вряд ли нужно.. хотя их распределение тоже представляется интересным... :-)
   Asmodeus
 
24 - 30.04.04 - 18:28
(+23) Все это для предварительного анализа перед тем, как, например, писать программу переноса данных из одной конфы в другую...



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