Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Добавил пару методов в FormEx - 2

v7: Добавил пару методов в FormEx - 2
Я
   Злопчинский
 
07.04.21 - 15:36
ветка-1 Добавил пару методов в FormEx
здесь продолжаем содержательно про формекс (и, по теме ветки)
   Злопчинский
 
1 - 07.04.21 - 16:07
Продолжение про запретить максимизацию формы

//

Процедура ПриИзмененииРазмераОкна(ТипСобытия)
    
    //Если ТипСобытия = 2

    //Тогда // максимизирована

    //    РФорма = СоздатьОбъект("РасширениеФормы");

    //    АтрибутФормы = РФорма.ПолучитьАтрибут("Максимизирована"); 

    //    АтрибутФормы.Максимизирована = 0; 

    //КонецЕсли;    

        
        РФорма = СоздатьОбъект("РасширениеФормы");
        РФорма.УстановитьФорму(Форма);
        РФорма.Максимизирована = 0;
    
КонецПроцедуры    // ПриИзмененииРазмераОкна()


Вот такой код создает интересный эффект - форма максимизируется (при нажатии юзером на максимизацию, но при этом кнопки управления дочерним окном - отсутствуют как класс). Запрета максимизации не проходит ибо видимо процедура - стопудово - отрабатывает ДО изменения размеров окна
   Злопчинский
 
2 - 07.04.21 - 16:07
Вывернулся так
.
//************************************************************************************************************

//
Процедура ЗапретитьМаксимизацию()
    РФорма.Максимизирована = 0;
    РФорма = "";
КонецПроцедуры    // ЗапретитьМаксимизацию()


//************************************************************************************************************

//
Процедура ПриИзмененииРазмераОкна(ТипСобытия)
    
    Если ТипСобытия = 2
    Тогда// максимизирована

        РФорма = СоздатьОбъект("РасширениеФормы");
        Рформа.ОбработкаОжидания("ЗапретитьМаксимизацию",5);
        Возврат;
    КонецЕсли;    
    
КонецПроцедуры    // ПриИзмененииРазмераОкна()
   Злопчинский
 
3 - 07.04.21 - 16:08
.. при бОльшем таймауте видно промаргивание формы
   Злопчинский
 
4 - 07.04.21 - 16:08
но тут ВОПРОС: а не херню ли я сделал.
можно как-то проще?
   Salimbek
 
5 - 07.04.21 - 16:40
(4) Ну... для начала - ты запускаешь обработку ожидания, но не останавливаешь ее. А смысл? Может проще так:

//************************************************************************************************************
//

Процедура ЗапретитьМаксимизацию()
    РФорма.Максимизирована = 0;
    Рформа.ОбработкаОжидания("ЗапретитьМаксимизацию",0);// Отключаем

    РФорма = "";
КонецПроцедуры    // ЗапретитьМаксимизацию()



//************************************************************************************************************


//

Процедура ПриИзмененииРазмераОкна(ТипСобытия)
    
    Если ТипСобытия = 2
    Тогд// максимизирована


        РФорма = СоздатьОбъект("РасширениеФормы");
        Рформа.ОбработкаОжидания("ЗапретитьМаксимизацию",1);//Включаем как можно быстрее

        Возврат;
    КонецЕсли;    
    
КонецПроцедуры    // ПриИзмененииРазмераОкна()
   Volodja
 
6 - 07.04.21 - 16:45
Можно ли программно задать тип диаграммы.
В конфигураторе в таблице можно выбрать тип диаграммы: График,Круговая и т.д.
Но методов для программных изменений типа нет, можно ли достучаться до объекта?
   trdm
 
7 - 07.04.21 - 17:16
(0) Здорова.
Не нашел решения впроса относительно отмены вопроса на индексацию?
Что-бы индекация без вопроса запускалась...
   Злопчинский
 
8 - 07.04.21 - 18:27
(5) ну, извините, облажался..
не в продакшене чай
   Злопчинский
 
9 - 07.04.21 - 18:28
(7) нет. даже не искал. занят
   Cthulhu
 
10 - 07.04.21 - 18:33
(7): индексацию без вопросов можно запускать стандартно - используя пакетный режим запуска 1с.
echo ------- Создание временного файла настройки пакетного режима (только индексация) ...
echo [General] > _ReIndex.prm
echo Output=_ReIndexxx.mlg >> _ReIndex.prm
echo Quit=1 >> _ReIndex.prm
echo CheckAndRepair=1 >> _ReIndex.prm
echo UnloadData=0 >> _ReIndex.prm
echo SaveData=0 >> _ReIndex.prm
echo AutoExchange=0 >> _ReIndex.prm
echo [CheckAndRepair] >> _ReIndex.prm
echo Repair=0 >> _ReIndex.prm
echo PhysicalIntegrity=0 >> _ReIndex.prm
echo Reindex=1 >> _ReIndex.prm
echo LogicalIntegrity=0 >> _ReIndex.prm
echo RecalcSecondaries=0 >> _ReIndex.prm
echo RecalcTotals=0 >> _ReIndex.prm
echo Pack=0 >> _ReIndex.prm
echo SkipUnresolved=1 >> _ReIndex.prm
echo CreateForUnresolved=0 >> _ReIndex.prm
echo Reconstruct=1 >> _ReIndex.prm
echo [UnloadData] >> _ReIndex.prm
echo ; UnloadToFile=#ED-UpLoadOnReindex >> _ReIndex.prm

echo ; IncludeUserDef=1 >> _ReIndex.prm
echo ; Password=ytlkzdct[ >> _ReIndex.prm
echo [SaveData] >> _ReIndex.prm
echo ; SaveToFile=#ED-SaveOnReindex >> _ReIndex.prm

echo ; FileList= >> _ReIndex.prm
1cv7.exe CONFIG /D<База> /N<Юзер> /P<пароль> /@_ReIndex.prm
   Злопчинский
 
11 - 07.04.21 - 18:44
(5) тьфу! что ты меня путаешь?!
ОО аннигилируется вместе с аннигиляцией РФорма!
Рформа = "";
   Злопчинский
 
12 - 07.04.21 - 18:53
(10) ни, так не прокатит. это хорошо для регламента ночью например (у меня так и делается, только сначала киляются все процессы 1С)
   Злопчинский
 
13 - 07.04.21 - 18:56
(10) вот например получилось что в течении дня - все вышли из базы, кто первый входит - получает "делать индексацию"..?
что за индексация? куда кому пенсии зарплаты? хз. и жмет отмена..
.
клюшки же писали когда за компами сидеи квалифицированные люди.
а сейчас данное сообщение д.б. примерно так:

"Обнаружено, что заавершение работы 1С выполнено неправильно. Данные в базе могут быть кривыми. Вы берете на себя ответственность отвечать за милионные убытки фирмы и пересдачу всей отчетности из-за некорректного завершения работы 1С..?" Отвечает - ДА - индексация не делается....
   Злопчинский
 
14 - 07.04.21 - 18:58
Можно ли манипулировать размерами формы окна просмотра текста, который
Т.Показать()
?
в перечне форм вормексом эта форма словится (надо проверить)? - форма то словится скорее всего, далее к ней сделать расширение формы - и манипулировать размероами?
   Cthulhu
 
15 - 07.04.21 - 19:18
(12): покатит.
1) первый приходит - запускается начиная с этого - индексирует - входит, поехал..
2) все следующие - запускаются начиная с этого - НЕ индексирует (есть юзеры) - блымает невнятная ошибка - экран очищается - входит, поехал..
   Cthulhu
 
16 - 07.04.21 - 19:19
(13): где ты там вопрос увидел???
   Cthulhu
 
17 - 07.04.21 - 19:22
(12),(13): по слогам. cmd-шный код в (10) запускает 1с в пакетном режиме для индексации базы без всяких вопросов. если это возможн. если же в базе уже кто-то есть - тупо блымает ошибкой и ничего не делает. сразу после него вставить программу запуска 1цв7.ехе с параметрами, перетянутыми из параметров замуска цид-шника - и можно спокойно стартовать все 1с-ки этим цмд-шником. ну кроме пофигуратора программерского...
   trdm
 
18 - 07.04.21 - 20:11
(10) Вопрос ни о том был, а о том, как залочить вопрос, выбрав безусловное "Да".
   Cthulhu
 
19 - 07.04.21 - 20:15
(18): а в (10) и есть оно - принудительное "Да". с первым входящим.
   trdm
 
20 - 07.04.21 - 20:24
(19) не а, не запоминает..
https://prnt.sc/116ni0g
   Cthulhu
 
21 - 07.04.21 - 20:30
(20): а повнимательнее? CONFIG есть в строке запуска?
   trdm
 
22 - 07.04.21 - 20:31
(21) а нафига конфиг, если лочить надо при энтерпрайзном старте?
   Cthulhu
 
23 - 07.04.21 - 20:36
(22):
при пакетном режиме ... в строке запуска должны быть указаны все необходимые параметры:
· параметр CONFIG;
· каталог информационной базы (параметр /D);
· имя пользователя, если для данной информационной базы ведется
список пользователей (параметр /N);
· пароль пользователя, если для пользователя задан пароль (параметр
/Р).
Файл пакетного режима имеет по умолчанию расширение .prm, если используется
другое расширение, то оно должно явно указываться в имени файла.
(с)
---
ты бы попробовал чистый эсперимент прежде чем критиковать. вариант (10) - это кусок моего стопудово рабочего смд-шника из продакшена.
   Cthulhu
 
24 - 07.04.21 - 20:37
(22): после кода (0) опущена строка второго запуска 1св7.ехе в интерпрайсе. думал это и так понятно.
   Cthulhu
 
25 - 07.04.21 - 20:38
(24): *** "после кода (10)"
   trdm
 
26 - 07.04.21 - 20:47
(24) это чехарда с пасвордами начнется и прочее.
т.е. запускается в режиме конфиг, но если реиндексации не надо, то конфиг закрывается и дальше идет запуск интерпрайза и поехали. Так?
   Злопчинский
 
27 - 07.04.21 - 21:07
(17) вот блин зашибсь советов айтишниковских. и так понятно.
а надо решение которое работает тупо и без внешних оберток.
хотя одна хрень и так и так.
   Cthulhu
 
28 - 07.04.21 - 22:02
(26): никакой чехарды.
я запускаю индексацию под юзером БЕЗ пароля - а в приначалеработы для этого (и только этого) юзера сразу тупо статусвозврата(0).
т.е. да, индексация - и след.строкой зпуск 1с с перетаскиванием в строку %1 %2 ... %7 (люблю эту цифру). никакой чехарды с пассвордами.
(27): тупо и есть - штатно и без внешних оберток всяких.
   Arbuz
 
29 - 08.04.21 - 17:03
(28) и родной лаунчер запоминает имя этого безпарольного-самовозвратного и юзвери должны ещё и имя своё не забыть выбрать, так?
   Cthulhu
 
30 - 08.04.21 - 23:49
(29): а внимательнее?.. родной лаунчер запоминает имя пользователя из второго ентерпрайз-запуска - т.е. того самого который собственно "работать пришел", а не того. с которым перед ним индексация выполнялась.
 
 
   АЛьФ
 
31 - 09.04.21 - 08:56
2(1) Попробуй в ПриИзмененииРазмераОкна() поставить СтатусВозврата(0).
   Злопчинский
 
32 - 09.04.21 - 09:30
(31) Логично
   Злопчинский
 
33 - 09.04.21 - 09:33
..но не работает
   Duke1C
 
34 - 09.04.21 - 16:12
Альф, можно я тоже вставлю свои "5 копеек"...
Сдаётся мне, уже были подобные вопросы, но раз пошла такая пьянка(зачеркнуто) тема с продолжением, то
Можно ли как-то перехватить системные окна для ввода Числа,Строки,Даты и вместо них запустить свою обработку?
   Вафель
 
35 - 09.04.21 - 16:13
(34) может проще код переписать?
   Mikeware
 
36 - 09.04.21 - 16:15
(34) ТКВ!
   Duke1C
 
37 - 09.04.21 - 16:16
(35) Да было б в одном-двух местах переписать...
Это для тач-скрина надобно, собственно)
   Вафель
 
38 - 09.04.21 - 16:18
Напиши свою функцию а потом сделай найтиизаменить
   Mikeware
 
39 - 09.04.21 - 16:18
(37) найти "ввестиЧисло" и ВвестиСтроку сложно?
   Duke1C
 
40 - 09.04.21 - 16:21
(36) см. (37)
Т.е. в любой конфе куча таких мест, и вот чтобы не (35), 
в ​какой-нибудь предопределённо-глобальной процедуре это дело перехватывалось и подменялось
(38), (39) я в курсе, но если этот гемор можно красиво обойти, то почему бы и нет?
   Duke1C
 
41 - 09.04.21 - 16:23
(38) Тем более, при обновлении конфы, всё это дело придётся "повторять"
   Duke1C
 
42 - 09.04.21 - 16:27
+41 Я в этом плане, как Серёга Злопчинский - девелопер)
   Mikeware
 
43 - 09.04.21 - 16:46
(42) "деловыпер"?
   Mikeware
 
44 - 09.04.21 - 16:49
(40) Хы. а прикольно. Если АЛьФ это сделае - получается такой "механизм расширений". Правится только "пара строк" в глобальнике, остальное перекрывает...
   Duke1C
 
45 - 09.04.21 - 17:33
(44) Ну почему бы и нет?
(43) "Сарказм здесь не уместен" (с)
   Mikeware
 
46 - 09.04.21 - 17:37
(45) лет 15 назад это было бы очень популярно. Но БоГ мог бы и покарать - за препятствия в продвижении снеговика...
   Злопчинский
 
47 - 09.04.21 - 18:35
(42) О, нас уже - двое!!!
   Злопчинский
 
48 - 16.04.21 - 11:14
Я вот тут напоролся что ПослеОткрытия не отрабатываерт.
порыл-порыл, вроде все норм, но в определенных случаях не срабатывает...
   MWWRuza
 
49 - 16.04.21 - 11:17
(48) Открываешь не модально?
   Mikeware
 
50 - 16.04.21 - 11:30
(48) а ПослеСозданияФормы ?
   Злопчинский
 
51 - 16.04.21 - 11:41
(50) аналогично
   Злопчинский
 
52 - 16.04.21 - 11:41
(49) не..
   Mikeware
 
53 - 16.04.21 - 11:42
(51) и в каких случаях?
   Злопчинский
 
54 - 16.04.21 - 11:46
(53) в конкретных.
.
или где-то что-то туплю...
но пока не нашел...
.
будет интерес посмотреть - стукайся в скайп Zlopun
   Бертыш
 
55 - 16.04.21 - 13:29
Стесняюсь спросить... А где у нас сейчас обитается господин Орефков с его опен конфигом?
   Mikeware
 
56 - 16.04.21 - 13:30
(55) снегопата ваяет. вроде он даже заработал - но, к сожалению, поздно
   Вафель
 
57 - 16.04.21 - 13:30
Так вроде его ИС нанял таки писать опенконф.
Но что-то результата особо не видно
   Mikeware
 
58 - 16.04.21 - 13:32
(54) да особого интереса нет - свалил я с клюшек. Если только тебе помочь понадобится...
   Бертыш
 
59 - 17.04.21 - 00:42
(56) Я бы у него по возможности бы его опенконфиг подхватил бы и поразвивал бы. Если он конечно поделиться своим достижением развитя прокси библиотеки. У меня вот ещё много хороших идей
   Злопчинский
 
60 - 17.04.21 - 02:32
(58) космополит безродный ;-)
 
 
   Злопчинский
 
61 - 17.04.21 - 02:35
(59) в телеге канал/группа, да и напрямую стукнутьяя можно, и на ИС ветка снегопата у него вроде
https://t.me/snegopat_chat
https://infostart.ru/1c/articles/1286412/
https://github.com/infostart-hub/snegopat
   Злопчинский
 
62 - 17.04.21 - 02:36
(58) ну, я стукнусь, если что...
   Duke1C
 
63 - 26.04.21 - 16:16
Альф, приди.
   Cthulhu
 
64 - 26.04.21 - 16:53
(63): стол накрыт? в фужеры налито?
   Duke1C
 
65 - 26.04.21 - 16:59
(64) Да не вопрос, ради такого человека)
Только, боюсь, в наши "ипеня" он не поедет)
   АЛьФ
 
66 - 27.04.21 - 11:18
2(65) Главное - правильно пентаграмму нарисовать.
   Иван Петров
 
67 - 28.06.21 - 13:20
АЛьФ, по поводу возможности пометки в Дерево+Таблица.
Два момента.
1. Можно ли сделать в самой компоненте опцию, чтобы при пометке группы помечались все элементы, входящие в эту группу?
2. Может что делаю не так, но если реализовывать п.1. со стороны ПриПометкеУзла() для прорисовки пометок в подчинённых элементах приходится вызывать ОбновитьДерево(), что схлопывает узлы, которые только что были развёрнуты. В общем, на ровном месте нужно понаписать немного кода, что для "копирования" из отчёта в отчёт такого контрола получается громоздко.

Потенциально Дерево+Таблица с пометками — крутой контрол для реализации "динамического структурного фильтра".
Например. Магазин может характеризоваться: регионом, городом, руководителем.
На форму цепляем Дерево+Таблица, в котором по настроению пользователя структура может выстраиваться парами: регион - его магазины, город - его магазины, руководитель — его магазины. Помечая группу (регион, город, руководитель — кто как смотрит на выборку) получаем список магазинов для фильтра выборки.
   Djelf
 
68 - 28.06.21 - 14:47
(67) Если подключен FormEx, то вероятно подключен и 1с++, а если подключен 1с++ то "для "копирования" из отчёта в отчёт такого контрола получается громоздко.!" можно засунуть в класс 1с++ и будет не громоздко.
И если подключен 1с++, то возможно использовать деревья на ТабличномПоле: https://clck.ru/VmJ8u
В FormEx слишком простое дерево. Его не имеет смысла сейчас развивать.
Можно, конечно, но Пентаграмму в (66) придется не только нарисовать, но и подпитать ;)
   Злопчинский
 
69 - 01.09.21 - 04:42
@АльФ,
крэш системы, так по идее быть не должно (видимо унутре непонятно какое окно прятатать)
.
Вариант1 (падает)
ОкноСлСообщ = СоздатьОбъект("ОкноСообщений");
ОкноСлСообщ.Видимость(0);
.
Вариант2 (нормально)
ОкноСлСообщ = СоздатьОбъект("ОкноСообщений");
ОкноСлСообщ.ПодключитьСистемноеОкноСообщений();
ОкноСлСообщ.Видимость(0);
.
в Вариант1 возиожно надо сделать, что если окно сообщений "не идентифицировано", то тупо ничего не делать (или отрабатывать как в Вариант2, но это не сильно нравится мне)
   uno-group
 
70 - 01.09.21 - 09:59
(13) Там где миллионные убытки обычно люди посреди дня не выходят из 1с. Не юзают ДБФ. И давайте уж до конца рассмотрим этот вариант. Маша в 9-30 утра аварийно вывалилась из 1с. Индексы побились люди до 13-00 работают на побитой базе сдают отчеты с миллионными убытками. Вернувшись после обеда в 14-00 получив такое уведомление честно все индексируют, а убытки уже есть и вроде никто не виноват. Значит надо не окно сообщения отлавливать и изменять. А админ в 9-31 должен был зафиксировать аварийное завершение 1с выгнать всех из нее и переиндексировать базу. А там где люди сутками из базы не выходят народ может на битой базе вообще нацать дней работать. И что-то нет массовых жалоб вызванных этой проблемой.
   Mikeware
 
71 - 01.09.21 - 10:24
(70) нафига это админу? там, где у админа время реакции на инцидент - минута, а убытки за пол-дня - даже в пределе сотни тысяч - там стоит SQL, и проблемы переиндексации просто нет.
   Злопчинский
 
72 - 01.09.21 - 12:05
(70) ты, блин, умный!
   Харлампий Дымба
 
73 - 01.09.21 - 12:50
(72) Принудительную индексацию в DBF в частности прекрасно включает соароновский сервис-пак.
   tgu82
 
74 - 01.09.21 - 13:03
(73) usp24 который?
   Mikeware
 
75 - 01.09.21 - 13:11
(74) который sauron.
Только проблема с индексами-то остается
   tgu82
 
76 - 01.09.21 - 13:31
(75) ну он же называтеся на соарон а усп_24 или я ошибаюсь?
   Злопчинский
 
77 - 01.09.21 - 14:16
(73) это где при монопольном запуске никаких вопросв, а принудительно переиндексация, если что не так - оно?
   Aswed
 
78 - 01.09.21 - 15:17
Офигеть! Кто то ещё пользуется им!!!!
Удивлён просто пипец!
   Mikeware
 
79 - 01.09.21 - 15:26
(78) инструмент как инструмент. Без бантиков, свистоперделок и котиков... "неэстэтично - зато дешево, надежно и практично"©
   Mikeware
 
80 - 01.09.21 - 15:28
(78) забавляет порой другое - находятся дятлы, которые за 10 лет даже это не освоили...
   Злопчинский
 
81 - 01.09.21 - 16:46
(78) есть еще народ и на торговле и на бухиях 77 сидит.
вот вчерась ваял для бухии по заказу аналог тисовской "ведомость по остаткам ТМЦ" (по 41.1), хотя наверное м.было карточкой счет по Н02.02 клиенту самому вытащить нужные данные...
   IgorA100
 
82 - 01.09.21 - 16:51
Решил не плодить темы и написать тут.

Имеем: тзДокументы и тпДокументы
формируем тзДокументы, далее тпДокументы.ОбновитьСтроки();
Далее 
        Если тзДокументы.КоличествоСтрок() > 6 Тогда
            тпДокументы.ВертСкроллер=1;
        Иначе
            тпДокументы.ВертСкроллер=0;
        КонецЕсли;
Если в ТЗ есть хоть одна строка - проблем нет, все работает корректно, но если имеем:
ТЗ пустая - скрола нет, логично.
Кликаем по другому объекту, где ТЗ больше 6 строк - скрола нет!!!
Кликаем по третьему объекту, где ТЗ 3 строки - скрола нет, логично.
Кликаем по объекту где где ТЗ больше 6 строк - скрол появился!!!
ОбновитьСтроки(), ПерерисоватьСтроки() для ТП, а так-же ОтключитьОбновлениеПриРаскраске(0,1) не помогает.

Никто не сталкивался с подобным?
   IgorA100
 
83 - 01.09.21 - 18:01
(82) Перепробывал все что на ум проходило - глючит.
Причем если после изменения ТЗ не сделать ОбновитьСтроки(), а сразу задать ВертСкроллер и только потом обновить строки, то глючит сильнее, точнее скрул вообще не появляется.
И ВертСкроллер=2 тоже никак не спасает от глюков.
Да, при изменении размеров окна - скруллер появляется.
Придется скруллер всегда отрисовывать тпДокументы.ВертСкроллер=1
Некузяво, но работает...
   IgorA100
 
84 - 01.09.21 - 18:13
(81) А смысл перехода на снеговика? Если бы 7ка продавалась и все бухгалтерское там было актуальное - я думаю половина пользователей и "не дергалась бы"
   Харлампий Дымба
 
85 - 01.09.21 - 18:16
(77) Да
   Salimbek
 
86 - 02.09.21 - 11:13
(83) А вот это: "Если тзДокументы.КоличествоСтрок() > 6 Тогда" и прочее - в какой процедуре/событии отлавливается. Точнее - что является Инициатором запуска данного кода?
   IgorA100
 
87 - 02.09.21 - 14:02
(86) По сути из ф-ции "ПриОбновленииФормы()"
Попробовал привязаться к "ПослеОбновленияФормы()", стало получше, правильно срабатывает в 90% :) Но появились какие-то другие глюки, пока не могу однозначно их идентифицировать.
Сейчас почитал, повспоминал, вроде как из FormEx "ПриОбновленииФормы()" вроде вообще вырезано, во всяком случае в мануалах такого уже нет :).  Как интересно у меня это работает :)
   IgorA100
 
88 - 02.09.21 - 15:04
Странно, ПослеОбновленияФормы() срабатывает аж СЕМЬ раз. а "ПриОбновленииФормы()" срабатывает один раз, так-же срабатывает один раз любая функция повешенная на форму.
   IgorA100
 
89 - 02.09.21 - 15:08
(88) "ПослеОбновленияФормы()" срабатывает походу после обновления каждого элемента формы... Ранее просто особо не использовал это событие и не задумывался над этим...


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.