Имя: Пароль:
1C
1C 7.7
v7: Определение типа группового контекста
,
0 1snik_d
 
18.08.20
12:03
Всем привет. Есть в 7.7 такая вещь как "ГрупповойКонтекст". Он может быть у формы, а может быть у модуля объекта. Есть ли какой-нибудь способ различить эти 2 вида контекста, потому что функция ТипЗначенияСтр() просто возвращает "ГрупповойКонтекст"?
1 Злопчинский
 
18.08.20
12:05
есть
2 1snik_d
 
18.08.20
12:06
(1) А конкретнее?
3 Злопчинский
 
18.08.20
12:07
(0) и не надо в 77 тянуть 8-ые принципы. 77 - это не 8-ка. в 77 - свой устав.
нет в 77 "модуля объекта".
4 Злопчинский
 
18.08.20
12:08
(2) отрекись от богомерзкой 8-ки, признай православную 77...
ща... комп включу
5 1snik_d
 
18.08.20
12:09
(3) Ну ладно, модуль проведения ))
6 HawkEye
 
18.08.20
12:12
(0) зачем?
7 big
 
18.08.20
12:16
Попытка
   п = ГрупКонтекст.НомерДок;
Исключение
   Сообщить("Это точно не документ");
КонецПопытки

Попытка
   п = ГрупКонтекст.Владелец;
Исключение
   Сообщить("Это точно не справочник");
КонецПопытки
8 1snik_d
 
18.08.20
12:21
(7) А без попыток, нет там какого-нибудь специального реквизита?
9 1snik_d
 
18.08.20
12:22
(6) Нужно модифицированность() анализировать, а она есть только в контексте формы
10 Злопчинский
 
18.08.20
12:23
//******************************************************************************
//
Функция глВернутьТипКонтекста(Знач Конт) Экспорт
     ТипКонтекста="ТаблицаЗначенийСписокЗначенийСправочник.ФормаСпискаДокументЖурналОтчет";

     Попытка    А=Конт.КоличествоКолонок();
     Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"ТаблицаЗначений","");
     КонецПопытки;

     Попытка    А=Конт.РазмерСписка();
     Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"СписокЗначений","");
     КонецПопытки;
    
     Попытка    А=Конт.ТекущийЭлемент();
     Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"Справочник","");
     КонецПопытки;
                              
     Попытка    А=Конт.ИерархическийСписок();
     Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,".ФормаСписка","");
     КонецПопытки;
    
     Попытка    А=Конт.Проведен();
     Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"Документ","");
     КонецПопытки;
    
     Попытка    А=Конт.ТекущийДокумент;
     Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"Журнал","");
     КонецПопытки;
    
     Попытка    Конт.РасположениеФайла(А,А);
     Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"Отчет","");
     КонецПопытки;
    
     Возврат ТипКонтекста;
КонецФункции //глВернутьТипКонтекста()
11 Злопчинский
 
18.08.20
12:25
в Модуль проведения снаружи можно передать параметр, причем ШТАТНО
12 Злопчинский
 
18.08.20
12:27
Провести(<?>,);
Синтаксис:
Провести(<Режим>,<Знач>)
Назначение:
Выполнить проведение документа.
Возвращает: 1 - если проведение документа выполнено, 0 - иначе.
Параметры:
<Режим> - необязательный параметр. Число: 0 - проводить документ без сдвига ТА; 1 - проводить непроведенный документ реальным временем (со сдвигом ТА); 2 - перепроводить проведенный документ реальным временем (со сдвигом ТА); 3 - проводить любой (непроведенный, проведенный) документ реальным временем (со сдвигом ТА). Значение по умолчанию - 0.
<Знач> - выражение произвольного типа, которое передается при запуске предопределенной процедуры ОбработкаПроведения (необязателен, по умолчанию - пусто).
Замечание:
Метод нельзя использовать в теле предопределенной процедуры ОбработкаПроведения.
Если этот метод применяется в Модуле формы документа непосредственно к документу локального контекста, то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой ''#Провести''. В этом случае, если параметр <Режим> опущен, то документ проводится в режиме, соответствующем установкам системы меню Сервис-Параметры.
13 big
 
18.08.20
12:27
(9) Можно распарсить ИД объекта из ЗначениеВСтрокуВнутр(Объект). ;)
14 Злопчинский
 
18.08.20
12:29
И если модуль проведения написан так, что нужно в нем понимать откуда проводится - из формы или без формы - я бы очень сильно подумал над таким архитектурным решением... А тио потом начинаются "..ничего не пончимаююю.. когда пользователь прводит документ - все нормально. когда ночью восстановлегние ГП - деление на ноль.."
15 1snik_d
 
18.08.20
13:15
(14) Да не, просто при проведении интерактивном нужно вызывать обработку с вводом дополнительных параметров
16 Sserj
 
18.08.20
13:36
(15) НЕЛЬЗЯ ТАК ДЕЛАТЬ.
Пока кто-то там заполняет дополнительный параметр 100 человек вокруг сидят и курят глядя на ошибки ожидания завершения транзакции.
17 Злопчинский
 
18.08.20
13:40
(15) ты чо, в дуба рухнал?!
18 Злопчинский
 
18.08.20
13:40
это допустимо только в условиях а) когда работает только один человек в базе и не предусмотрено "бесчеловечного" проведения документов.
19 HawkEye
 
18.08.20
13:58
(9) модифицированность в модуле проведения?! зачем???
20 Злопчинский
 
18.08.20
15:32
(19) ну так известно же зачем. по вопросу скорее чел из мира 8-ки. там мозгов не надо - ставь галочки. ну и как следствие КАК задачу поставили - так и будет делать.. ;-)
21 Kigo_Kigo
 
18.08.20
15:42
(15) А сделать это до проведения нельзя, тем более интерактивном?
И веселуха будет с групповым проведением
и да все что должно быть заполнено и не вычесляется/получается программным путем, должно быть заполнено до проведения, и еще само проведение должно быть как можно коротким и однозначным
22 trdm
 
18.08.20
16:19
(16) (17) хватит подрывать производство вазелина!
23 Злопчинский
 
18.08.20
16:51
(22) зато проктологам работы прибавится!!!
24 1snik_d
 
18.08.20
17:07
(18) Так и есть
25 1snik_d
 
18.08.20
17:07
(16) Это я знаю
26 Злопчинский
 
18.08.20
17:30
(24) тут вопрос. что если дома не сдерживать себя в пердеже, то и в обществе оконфузиться можно. а если хуже - то и обосраться у всех на виду...
27 Калиостро
 
19.08.20
11:02
(0) При интерактивном проведении сначала формируй список параметров хоть с диалоговыми окнами, хоть с долгими расчетами.
А потом в команде Провести их передавай в модуль документа, как в (12) и (21) тебе написали.