Имя: Пароль:
1C
1C 7.7
v7: Подписка на события
0 Fiasko
 
01.10.12
19:35
Коллеги, прошу поделиться советом :)
Я, возможно, и обленился, но, надеюсь, многие поймут, что проще "допилить" что-то, чем сделать самому "с нуля"...

Вообщем задача у меня такая: хочу сделать подпиську :) на некие события для своих коллег. Например, я изменяю какой-нибудь реквизит в 1С. При проведении этого реквизита пользователи, подписавшиейся на данный тип подписки получают сообщение... да желательно со 100% гарантией доставки, чтобы отвертеться уже не могли, типа: "а я не видел, а я не знал"...
Может видел кто-нибудь чо-то подобное? :) Я бы поковырял....
1 Mnemonic1C
 
01.10.12
19:36
Ник как бэ намекает...
2 Kreont
 
01.10.12
19:36
Шли все на почту, а вот ее заставить читать это уже проблема будет :)
3 Mnemonic1C
 
01.10.12
19:37
А вообще можешь поиграться с формексом, если времени не жалко
4 ДенисЧ
 
01.10.12
19:37
1c++ и класс Перехватчик...
5 Fiasko
 
01.10.12
19:40
(4) уже читаю....
6 Fiasko
 
01.10.12
19:47
можно даже и платное чего-то... я, если основа нормальная, купил бы...
7 Fiasko
 
01.10.12
19:51
(2) это не желательно... но если ничего путного в голову не придет, значит так и буду делать..
8 Злопчинский
 
01.10.12
19:55
тут товарищ один, кстати, смайстрячил "перехват" программного изменения реквизита...
9 Злопчинский
 
01.10.12
19:56
(0) в клюшках событийная форма работы находится.. да она вообще не находится.. ее нет... вообще, в принципе...
10 Злопчинский
 
01.10.12
19:57
кстати, сакраментоальный вопрос - а зачем?
11 Мимохожий Однако
 
01.10.12
20:02
(0)Вставь Предупреждение при записи ))) Доступно и всерьез.
12 Злопчинский
 
01.10.12
20:07
(11) и КТО его увидит?
13 Fiasko
 
01.10.12
20:14
(10) да у меня некое подобие CRM в 7-ке, бизнес-циклы и прочая дребедень... если бизнес-цикл в документе изменился - менеджер должен узнать об этом. Вот, пожалуй, главная цель...
14 Ахиллес
 
01.10.12
20:18
(13) Установи восьмёрку, будь мужиком, блеать!
15 Fiasko
 
01.10.12
20:18
(8) а вот это интересно...
16 Fiasko
 
01.10.12
20:20
(14) я морально готовлю себя, что буду переходить... но не в ближайшее время...
17 Злопчинский
 
01.10.12
20:20
(15) да, но у меня есть сомнения в применимости.. ибо на массовых например Куйня.Записать() - тормозить будет не по децки... конечно если придумать что-то типа Куйня.ОтключитьРегистрацию()
18 SWD
 
01.10.12
20:22
(13) У меня сделано (наследство но работает)- "глобальный справочник" события с полем документ\справочник. В нужный в работе документ или элемент справочника в процедуру ПриЗаписи() добавляется глобФункция "ЗаписатьИзменения". Потом - кому надо - по обработке ожидания читает этот "глобальный справочник". Компактно, в "гс" - только ссылки на измененые элементы справ\док. Все штатно. 1С++ - сбивался, платформы OC разные, от XP до Serv2k8
19 SWD
 
01.10.12
20:24
Массовая обработка при обновлении типовой - программа Inserter, сама парсит MD и вставляет в процедуре ПриЗаписи
20 Надсмотрщик
 
01.10.12
20:24
(0) Под самую письку?
21 Fiasko
 
01.10.12
20:26
(20) иногда и так приходиться...
22 Fiasko
 
01.10.12
20:27
(21) пля.. или "приходится"... часто с русским проблемы были..
23 Fiasko
 
01.10.12
20:32
(18) еще интересней... вопрос нескромный - демка есть? :)
24 ЗомбиТ1С
 
01.10.12
20:34
У меня так:
(сообщить ревизору, что пора работать- появились документы с признаком "Подтвержден")

Процедура ПриНачалеРаботыСистемы();
   Если глПользователь=Константа.Ревизор Тогда
       ОбработкаОжидания("Ревизору",600);
   КонецЕсли;
КонецПроцедуры

Процедура Ревизору()
   Доки=СоздатьОбъект("Документ.Корректировка");
   СпКорректировок=СоздатьОбъект("СписокЗначений");
   
   Доки.ВыбратьДокументы(РабочаяДата()-10,РабочаяДата());
   Пока Доки.ПолучитьДокумент()=1 Цикл
       Если Доки.ПометкаУдаления()=1 Тогда
           Продолжить;
       КонецЕсли;
       Если Доки.Подтвержден=0 Тогда
           Продолжить;
       КонецЕсли;
       Если Доки.Проведен()=1 Тогда
           Продолжить;
       КонецЕсли;
       
       СпКорректировок.ДобавитьЗначение(Доки.ТекущийДокумент(),СокрЛП(Доки.Автор.Наименование)+": №"+СокрЛП(Доки.НомерДок)+" от:"+Доки.ДатаДок);
   КонецЦикла;
   Если СпКорректировок.Размерсписка()=0 Тогда
       Возврат;
   КонецЕсли;
   ДокКорр=ПолучитьПустоеЗначение("Документ.Корректировка");
   Если СпКорректировок.ВыбратьЗначение(ДокКорр,"Выбираем необработанную корректировку",,0,0)=1 Тогда
       ОткрытьФорму(ДокКорр);
   КонецЕсли;
КонецПроцедуры
25 ADirks
 
01.10.12
20:35
(9) Нормальные люди эти ваши клюшки без 1С++ вообще не рассматривают. А там всё достаточно прилично с событиями.
26 SWD
 
01.10.12
20:35
завтра, под рукой нет, все на работе. Идет круглосуточный обмен, с демкой сложнее, SQL база каждая 12гб весит. Могу смысл обяснить + обработку синхронизации.
27 SWD
 
01.10.12
20:37
Смысл с (24) совпатает - спецпользователь-робот дергает обработку ожидания
28 Fiasko
 
01.10.12
20:38
(26) да смысл вроде ясен. Спасибо.
29 Fiasko
 
01.10.12
20:39
(24) спасибо, попробуем... думаю пищи для ума достаточно...
30 Kreont
 
01.10.12
20:40
Еще вариант:
Есть ОбработкаОжидания на 15 сек.
и в ф-ии такой код:
   ФС.УстТекКаталог(КаталогПользователя());
   Результат = ФС.НайтиПервыйФайл("rep-*.mxl");
   Если ПустоеЗначение(Результат) <> 1 Тогда
       Таб = СоздатьОбъект("Таблица");
       Таб.Открыть(КаталогПользователя() + "\" + Результат);
       Таб.Показать(,,1);
       Таб = 0;
       ФС.УдалитьФайл(КаталогПользователя() + "\" + Результат);
       Возврат;
   КонецЕсли;

А там где надо "что-то" показать конкретному пользователю, идет создание обычной табл.формы и она ложится в каталог нужного пользователя с именем rep-ГГГГММДД_ЧЧММСС.mxl
31 Злопчинский
 
01.10.12
20:40
(25) дай подписку на события программного изменения/записи реквизита!
32 Fiasko
 
01.10.12
20:43
(30) да, можно где-то и так..
33 ADirks
 
01.10.12
20:45
(31) Если прям сильно надо, то делается управляющий класс для документа, и вся работа через него. А панацеи от идиотов нет конечно.
34 Kreont
 
01.10.12
20:45
(32) Я рисовал mxl с большой огромной красной рамкой :) но все равно мало что помогало, закрывают сволочи не читая :))
35 SWD
 
01.10.12
20:46
А, забыл сказать, реализован 2x(вернее 3x) обмен между 2 типовыми и самопиской, а вариант со справочником - чтобы "интелектуально" убивать коллизии, когда одновременно 1 элем справочника пытаются редактировать.

Накладные разходы - перезапись 1 строчки с вызовом глПроцедуры "ЗаписатьВ_Сист_Справочник_Изм" при обновлении типовых.
36 Злопчинский
 
01.10.12
20:47
(33) исключительно в качестве инфо-обучаловик - что есть "управляющий класс"..?
37 Злопчинский
 
01.10.12
20:49
(34) для начала - раз не читают - не даем возможности закрыть форму предупреждения пок ане истечет 20 минут.
когда освоят чтение за 20 минут - переходим к освоению чтения за 10 минут.. и т.д. как вариант - кучу кнопочек на фоме типа "капчи" - каждый раз другая кнопочка... жмакнут не ту кнопочку - закрыааем как обычно но через 2 мин блокируем работу 1Ску... ;-)
38 SWD
 
01.10.12
20:50
(34) "закрывают сволочи не читая :))" - таймаут 30 сек с выводом сообщения с потемнением всего экрана и блокировкой мыши\клавиатуры (вот тут и работает Формекс) и скриншот экрана с датой - временем. Хватило полгода приучить 30 посменных операторов
39 ADirks
 
01.10.12
20:51
(36) ну типа
оДок = СоздатьОбъект("ТДокумент.ххх");
оДок.НазначтьКонтекст(СоздатьОбъект("Документ.ххх"));
оДок.НайтиДокумент(Док);
оДок.РеквХХХ = ...;
40 Kreont
 
01.10.12
20:52
Да уже прошли те времена, поставил 8-ку...
Да и сама бизнес логика процессов изменилась теперь не надобно такое :)
41 SWD
 
01.10.12
20:52
(37) Опередил. У меня посылать "злобное" - незлобное - переключается галочкой в справочнике пользователи. От рецедива
42 SWD
 
01.10.12
20:53
(40) Да вот хера, "люди везде одинаковы" и в 8 не читают
43 SWD
 
01.10.12
20:55
(40) реально используете "бизнесс-процессы" восмерочные, или так, к слову философскому?
44 ADirks
 
01.10.12
20:58
+(39) ну и в упр. классе переопределяем метод Записать(), который будет сравнивать предыдущие значения с новыми, и чё-то там делать
45 SWD
 
01.10.12
21:01
(44) Перехват идет в памяти, в Win7, 2k8 как то раз из 5 срабатывало. Подскажете как стабилизировать - буду искренне признателен
46 SWD
 
01.10.12
21:02
даже с отключенным DEP
47 Злопчинский
 
01.10.12
21:03
(44) ага, спсб.
48 Злопчинский
 
01.10.12
21:04
(44) хотя для меня все это пока мутно.. ;-)
товарищ из (8) вот как-то так и переопределил класс для Записать()
49 ADirks
 
01.10.12
21:04
(45) не очень понял, но возможно надо всё завернуть в одну транзакцию? Тогда или запишется всё, или ничего.
50 SWD
 
01.10.12
21:09
(49) Не, там же ипользуются хуки в памяти на метод, как я понял, а современные опереционки такого не любят, а антивирусы - и подавно. Сам перехват не всегда срабатывал. Правда тренировался 1,5 года назад и решил тупо влоб - т.е. штатными. Формекс !1С++ - только красивости и разукрашивание и просмотр ТЗ на лету
51 ADirks
 
01.10.12
21:09
(48) ну так понятно, что если не изучать - то будет мутно. я конечно могу тут зафигачить реализацию такого вот класса (точнее, системы классов), но боюсь, понятнее от этого не станет :)
52 Salimbek
 
01.10.12
22:01
(36) Это когда все операции с выбранной таблицей, например с регистром, идут через этот класс. Поэтому он и в курсе, есть что-то измененное или нет.
53 Прохожий
 
01.10.12
22:04
Если SQL, то надо триггеры писать..
54 SWD
 
01.10.12
22:08
(53) Надо, а потом кто нить загрузку-выгрузку средствами 1С сделает - и сново писать. Как мина перед увольнение - триггеры вешь отличная
55 Злопчинский
 
01.10.12
22:10
(51) потому что не жмет, поэтому и не юзается/не изучается... а если есть что-то рабочее - то его и юзаем. у меян вообще по-моему в работе всего два класса.. один из них РедакторТЗ для прямого ввода значений.. и все...
56 Прохожий
 
01.10.12
22:12
(54) Надо ПриНачалеРаботыСистемы патч в гл. модуле лелать...
57 Прохожий
 
01.10.12
22:13
В гибких блокировках так сделано...
58 SWD
 
01.10.12
22:14
(56) И в чем тогда будет от моего варианта отличатся, со штатными механизмами и глобальной процедурой?
59 Прохожий
 
01.10.12
22:14
Там ведь не сильно много таблиц и триггеров к ним надо и оне примитивные...
60 Прохожий
 
01.10.12
22:15
(58) ms sql - гарантия качества и престиж. Ноль потом в реэюме сможет писать "хорошо умею sql..."
61 SWD
 
01.10.12
22:16
Там ему вообще надо "Службу сообщений". На работе мд-шник лежит, там вообще - объединряешь с любой штатной - и готовая подсистема, в терминах восьмерки
62 SWD
 
01.10.12
22:17
кто то сделал давно, скачал, подпилил - пользуюсь - горя не знаю
63 SWD
 
01.10.12
22:18
только формекс просит, любой, а он у меня и так штатно стоит с младых лет
64 Злопчинский
 
02.10.12
01:00
(62) если невжабу, прошу замылить на [email protected]
спсб
65 Fiasko
 
08.10.12
12:45
(63) а я могу попасть под раздачу ? [email protected] :)
66 Злопчинский
 
08.10.12
20:43
.. молчит Вселенная... да и где это видано, чтобы ихтиологи с рыбами разговариали?
AdBlock убивает бесплатный контент. 1Сергей