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


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) Все это для предварительного анализа перед тем, как, например, писать программу переноса данных из одной конфы в другую...



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