Имя: Пароль:
1C
1C 7.7
v7: 1С-7.7. Создать специальное окошко (всегда наверху)
0 zelenyj_ogurec
 
03.06.22
17:40
Здравствуйте!

Можно ли в старушке 1С 7.7 сделать небольшое "специальное" окошко типа стандартного калькулятора?
То есть, чтобы это окно всегда было сверху других окон и не разворачивалось при максимизации других окон.
В него нужно вывести дополнительную информацию о текущей позиции номенклатуры из других стандартных форм (например: из формы списка номенклатуры, из табличной части документа).

Я когда-то работал с 1С++ и FormEx. Сейчас посмотрел - ничего там похожего не нашел.
Может быть еще есть какие-то компоненты? Или какие-то другие способы?
1 Ёпрст
 
03.06.22
17:59
(0) плавающая форма разве что
2 Ёпрст
 
03.06.22
18:03
Ну или в эту сторону поглядеть, там есть рабочие примеры.
Как сделать "независимое окошко" в котором код выполняется в фоне

https://www.1cpp.ru/forum/YaBB.pl?num=1316457428
3 Ёпрст
 
03.06.22
18:08
Ну или в сторону miracle поглядеть, не помню уже, чего там Аркадий наворотил, в своё время, но прозрачность, точно была, например.
https://infostart.ru/public/18629/
https://infostart.ru/public/14618/
4 Злопчинский
 
03.06.22
18:13
(0) нахрена?
такое окошко нужно не всегда в течении дня.
из нужной формы всегда можно открыть дочернее окно инфа в котором будет обновляться при сдвижку курсора по списку в родительском окне 9см. Обработку типа "просмотр отстатков ТМЦ" в типовой ТИС.
насчет неизменяемости размеров - можно запретить максимизацию окна, но это будет на все окна внутри 1С.
можно посмотреть в сторону формекса на создание дополнительного окна сообщений и в него выводить все что надо прямо из формы нужных
5 Злопчинский
 
03.06.22
18:16
Формекс объект "ОкноСообщений"
6 zelenyj_ogurec
 
03.06.22
18:17
(1) >> плавающая форма разве что
Почитал про плавающую форму...
Пишут, что в ней есть косяки с выпадающими списками, которые похоже так и не исправлены.
7 zelenyj_ogurec
 
03.06.22
18:20
(5) >> Формекс объект "ОкноСообщений"

Нужно не просто текст выводить. Нужно вывести таблицу с остатками.
8 Злопчинский
 
03.06.22
18:25
(7) см. просмотр "Остатки ТМЦ в типовой ТИС -этого имхо будет вполне достаочтончо. эта обработка как раз и показывает на дочерней форме остстки для текущего объекта родительской формы
9 Злопчинский
 
03.06.22
18:27
я у себя дорабатывал для своих обработок/документов эта дочерняя форма показывала текущие остатки хоть для родителского списк аноменклатуры, хоть для формы документа, хоть для обработки на которой список номенклатуры.
10 zelenyj_ogurec
 
03.06.22
18:42
>> Обработку типа "просмотр отстатков ТМЦ" в типовой ТИС.

Да, по содержанию это подходит. Но когда разворачивается какая-то форма, то все портится.
Вот если бы сделать это окно остатков не-максимизируемым при максимизации других форм, и сделать это окно всегда сверху - то в принципе это устроит.
Пользователи привыкли все окна разворачивать.

Поэтому я и начал тему с того, что спросил как сделать окно не-максимизируемым и отображаемым поверх других окон.
11 zelenyj_ogurec
 
03.06.22
19:41
>> Ну или в сторону miracle поглядеть, не помню уже, чего там Аркадий наворотил, в своё время, но прозрачность, точно была, например.

Посмотрел. Вроде ничего там нету подходящего :(
12 ДедМорроз
 
03.06.22
20:28
Внешняя компонента может создавать окно на экране,оно будет немодальное,но можно ли его заставить висеть поверх других - это вопрос.
Отдельное приложение,конечно,может делать висячие окна,причем,если очень постараться,то оно даже мешать вводу не будет.
13 Злопчинский
 
03.06.22
21:07
(10) " не-максимизируемым при максимизации других форм, " - так не получится.
просто будет что если фокус перейдет на эту "форма остатков" - то все окна сработают в немаксимизированное состояние (или как только ты откроешь форму остатков - фокус на нее и тоже сработает). если же фокус уберут с формы остатокв и какую-то форму развернут на весь экран - ну развернется какое-то окно на весь экран, форма остатков будет на заднм плане (не видно) - значит пользователю она не нужна. если станет нужна - он перейдет в это окно - см.выше - при получении фокуса все немакимизируетсмя..
.

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

//********************************************************************************************
//
Процедура ПриИзмененииРазмераОкна(ТипСобытия)
    
    Если ТипСобытия = 2 Тогда // максимизирована
        РФорма = СоздатьОбъект("РасширениеФормы");
        Рформа.ОбработкаОжидания("ЗапретитьМаксимизацию",1);
        Возврат;
    КонецЕсли;    
    
КонецПроцедуры  // ПриИзмененииРазмераОкна()
14 zelenyj_ogurec
 
04.06.22
21:43
Но ведь есть же стандартный калькулятор.
Он работает как надо: он не меняет своего разамера независимо от максимизации других форм, он всегда сверху других окон.
Почему же другие формы нельзя сделать по такому же принципу?
15 zelenyj_ogurec
 
04.06.22
21:44
(12) Это про какую внешнюю компоненту ты говоришь?
16 ДедМорроз
 
04.06.22
22:48
(15) Я про программу,которую зовут mshta она может окна любого размера и поверх всех окон.
А сожержимое показывать из текстового файла - со стороны 1с останется просто ее запустить и периодически обновлять файл с данными.
17 zelenyj_ogurec
 
06.06.22
18:12
(16)  А что это за программа? Где ее искать?
18 Злопчинский
 
06.06.22
19:24
19 zelenyj_ogurec
 
11.06.22
09:50
>> Ну или в сторону miracle поглядеть

А где найти последние версии MiracleV8?
На Инфостарте последняя - 1.9.6.4.
А в комментариях упоминаются и более новые версии например 2.1.3.13. Только ссылки ведут в никуда - на какой-то сайт http://dev.1tsm.ru/, который не открывается.
Где еще можно поискать более новые версии?
20 DCKiller
 
11.06.22
19:24
У FormEx есть возможность задавать размер и положение дочернего окна.
А чтоб оно всегда было там, где тебе надо - пропиши в форме обработку ожидания с интервалом 1 сек., чтобы в ее процедуре расположение и размеры окна каждый раз восстанавливались.
21 Злопчинский
 
11.06.22
22:42
(20) обработка ожидания будет отрабатывать даже если фокус не на форме?
22 DCKiller
 
12.06.22
01:11
(21) В том смысле, что форма неактивна? Да.
23 zelenyj_ogurec
 
12.06.22
07:42
(20),(22)
А что произойдет с этим окном при максимизации других форм?
Оно же ведь тоже максимизируется?
24 zelenyj_ogurec
 
12.06.22
07:59
Попробовал "ОткрытьПлавающуюФорму" - это то что нужно!
Но выпадающие списки значений (рядом с кнопками) после это не работают :(
И в целом получается не рабочее решение :(
Очень жаль.
25 Злопчинский
 
12.06.22
09:34
(24) ну повесь обычную кнопку и поней открывай форму списка значений в виде меню прикрепленного к этой кнопке
26 zelenyj_ogurec
 
12.06.22
09:46
(25) Не понял куда повесить?

Там проблема в том, что все стандартные списки значений (например около кнопки "Операция" в документе "Заявка") начинают скакать.
Они открываются не в том месте, где должны открываться - не около кнопки "Операция".
Они начинают открываться в "плавающем окне".
И чтобы это исправить, как я понял, надо весь код открытия списков переписать. А это очень много, так как конфигурация типовая.
За переписывание стандартных списков даже браться не хочется.
27 Злопчинский
 
12.06.22
09:48
(26) "ни открываются не в том месте, где должны открываться - не около кнопки "Операция"."
да и пофиг. открывай для выбора СЗ в виде отдельного окошка СЗ со списком знаячений.
28 Злопчинский
 
12.06.22
09:49
(26) кнолпка. обычнаы. при жмаке по ней СЗ.ВыбратьЗнаячение(..) с параметром "в виде меню, подстраивающегося под кнопку". но оно тоже м.б. будет скакать. Попробуй стандартный выбор СЗ и выбор СЗ через формекс
29 Злопчинский
 
12.06.22
09:50
(26) а у тяебя на плавающей форме, что - стопицот разных дургих форм открывается? у тебя с концепцией явно что-то не то...
30 Злопчинский
 
12.06.22
09:53
все равно твоим этим "плавающим" окошком никто нахер пользоватьяс не будет. держать ВСЕ ВРЕМЯ окно поверх остальных - это только если в это окошко вывести сообщение "заработан за день - охулиард руб". а ты в это окошко еще туеву хучу херни всякой напихать хочешь
31 zelenyj_ogurec
 
12.06.22
10:00
Мы не понимаем друг друга.

Представь - открыта плавающая форма, одна. Плавающая форма отображает остатки текущей позиции в активном документе.
Если активного документа нету - значит и остатков никаких не отображается.

Затем открываем документ "Заявка-1", форма документа активизировалась. Плавающая форма отображает остатки текущей позиции в документе "Заявка-1".
Затем открываем документ "Заявка-2", плавающая форма отображает остатки текущей позиции в активном документе документе "Заявка-1".
Переключились снова на документ "Заявка-1", плавающая форма отображает остатки текущей позиции в документе "Заявка-1".
Все это работает.

Однако, как только нажимаешь на кнопку "Операция" в любом из открытых документов, то выпадающий список значений открывается не рядом с этой кнопкой, а в плавающей форме!
Для исправления надо переписывать код в "Заявке".
И не только в заявке, а во всех других документах. Так как плавающая форма портит выпадающие списки везде.

Плавающим окошком пользоваться будут.
Пользователи сейчас пользуются постоянно стандартным окном "Остатки ТМЦ", про которое ты писал.
Но оно неудобно тем, что при разворачивании (максимизации) документа оно становится бесполезным. А пользователи работают в основном в максимизированном режиме.
Поэтому и возникла такая задача - сделать окно "Остатки ТМЦ" не-максимизируемым и всегда сверху других форм.
32 zelenyj_ogurec
 
12.06.22
10:02
Исправление.
Вместо:
>> Затем открываем документ "Заявка-2", плавающая форма отображает остатки текущей позиции в активном документе документе "Заявка-1".
Правильно:
>> Затем открываем документ "Заявка-2", плавающая форма отображает остатки текущей позиции в активном документе документе "Заявка-2".
33 Злопчинский
 
12.06.22
10:05
(31) "Плавающая форма отображает остатки текущей позиции в активном документе."
- хервоо представляю.
когда вижу текущую инфу в текущей строке "списка" - нормально представляю, а еложить туда-с.да взглядом - так себе идея для постоянной оператвиной работы.
34 zelenyj_ogurec
 
12.06.22
10:19
(33) А чего тут представлять?
Открой стандартное окно "Остатки ТМЦ", перетащи в нужное место - все очень удобно, наглядно.
35 Злопчинский
 
12.06.22
10:24
(34) спасибо, я знаю.
надобности у меня в этом нет. девки пользуются изредка, спавочно, но не более... ибо не нужно (у меня)
36 DCKiller
 
12.06.22
18:04
(23) Вроде бы запретить максимизацию отдельно взятому дочернему окну с помощью FormEx тоже можно
CPP или FormEx как запретить разворачивать окно документа?
37 Злопчинский
 
12.06.22
18:13
(36) но если переключится в максимальный режим в каком-нить другом окне - то оно макимизируеьтся и закроет
38 zelenyj_ogurec
 
14.06.22
17:45
(11) >> Но я подозреваю что тебе подойдет вот это: https://www.1cpp.ru/forum/YaBB.pl?num=1193602020

Это динамические подсказки. Скорее всего они не подойдут.
Нужно чтобы "специальное" окошко содержало обычные 1С-овские реквизиты, типа реквизита или таблицы значений.
39 Злопчинский
 
14.06.22
22:49
(38) ты явно куда-то не туда.
пытаешься сварганить некое подобие АРМа где нужная инфорпмация для текущего процесса собрана "в одном месте".
ну так и сделай АРМ, а не навешивай фигню всякую на простые списки, основное назначение которых - навигация по объектам. Ненавижу когда из форм справочников или документов пытаются делать универсальные/представляющие кучу инфы "рабочие места менеджеров". если таковое нужно - тогда и нужно делать АРМ/рабочее место, а не навешивать на типовые формы всякого. а тут еще и с такой извращенной фичей
40 Злопчинский
 
14.06.22
22:50
в УНФ обкуренные разрабы из заявки покупателя попытались сделать такой АРМ - имхо такая хрень получилась шо ппц...
41 Ёпрст
 
15.06.22
09:30
(38) ну и ? Там в тултипе в этом(который можнотнеипрятать) отображается html страничка по сути. Рисуй там любые реквизиты и гриды.
42 zelenyj_ogurec
 
15.06.22
11:51
(41) >> Рисуй там любые реквизиты и гриды.

Что значит "рисуй"? Предполагаю, что 1С-овские контролы на эту html-страничку нельзя вывести.
А какие-то другие контролы, которые можно было бы вывести на эту страничку и заполнять их данными из ТаблицыЗначений - я не знаю как делать.
Я html не знаю.
43 zelenyj_ogurec
 
15.06.22
11:53
(39) Не нужен там никакой АРМ. Просто нужно видеть остатки.
Во многих программах так сделано - рядом с основным рабочим окном висит панелька со свойствами (часто эта панелька прилепляется к краю главного окна).
Вот и нужно что-то типа такой панельки.
44 DCKiller
 
15.06.22
12:47
(43) Может, тебе тогда проще сделать, чтобы с формой элемента справочника/Документа одновременно открывалось такое специальное окошко? А когда форма закрывается, чтобы оно также автоматически закрывалось, и всё?
45 uno-group
 
15.06.22
13:43
А точно нужно какие то дополнительные окна городить. Чем не подходит например Состояние() и обновляй его по мере надобности. Можно заголовок окон или программы менять выводя в него текущий остаток. Хотя если для того чтобы это работало все равно в кучу форм нежно лесть и править не проще уже сразу в них подобавлять колонку остатков в удобное для этой формы место.
46 uno-group
 
15.06.22
13:45
опять же сообщить можно прелипить куда угодно
47 uno-group
 
15.06.22
13:47
Цветовая дифференциация наше все можно поле с товаром в нужный цвет раскрашивать.
48 Ёпрст
 
15.06.22
15:43
(42) в прямом смысле, рисуй. Вставляй грид, заполнчй его элементами..будет тебе форма с табличкой показа останков.
И да, html это просто, сымотри учебник какой, тип того
https://html5book.ru/html-html5/
49 zelenyj_ogurec
 
15.06.22
17:01
(44) Специальное окошко можно открывать сразу, а можно и по запросу пользователя (например по нажатию накакую-либо кнопку). Это уже детали.
Главное, чтобы это окошко висело в нужном месте всегда поверх развернутой максимизированной формы документа. И содержало таблицу значений с остатками текущегог товара на складах.
50 zelenyj_ogurec
 
15.06.22
17:05
(45)-(47) В строку состояния невозможно будет вывести всю информацию, которую нужно.
Нужно вывести таблицу значений с остатками на складах. Складов может быть произвольное количество.
Допустим, у первого товара есть остатки на 3-х складах, а у второго товара есть остатки на 7-и складах.
Соответственно, при позиционировании в документе на первый товар, в специальном окошке дожна появиться ТЗ с тремя строками.
А при позиционировании в документе на второй товар, в специальном окошке дожна появиться ТЗ с семью строками.
51 zelenyj_ogurec
 
15.06.22
17:09
(48) Почитал немного.
Получается, для вывода ТЗ нужно будет программно из 1С формировать код типа:
---
<tr>
   <td>1.</td>
   <td>Томаты свежие</td><td>кг</td><td>15,20</td><td>69,00</td><td>1048,80</td>
</tr>
---

По сравнению с выводом ТЗ на форме 1С, мне кажется писать такой код - это слишком трудоемко.
Кроме того, чисто внешне смотрится это очень убого по сравнению с 1С.
А также не ясно как там дело с прокруткой? Если вдруг эта нарисованная ТЗ не вмещается по ширине и высоте?
52 Djelf
 
15.06.22
17:09
(50) Сделай! Никто же не мешает...
53 Ёпрст
 
15.06.22
17:20
(51) ну да, делов то, оберни в свой класс.. будет просто вызов тех же методов, что и для ТЗ обычной.
54 Ёпрст
 
15.06.22
17:24
+ посмотри готовые примеры с WebБраузер..выше ссылки кидал, там есть отображение грида..вполне норм выглядит
55 Ёпрст
 
15.06.22
17:27
Ааа..вижу ты и там понаспрашивал..ну и отвечу -нет, нельзя. Там просто активикс повешанный на обычный контрол. Просто события активикса можно в фоне делать
56 Ёпрст
 
15.06.22
17:42
Хотя..я не особо понимаю твою задачу. Проще, написать класс на основе перехватчика, который бы в любой форме, при нажатии комбинации кнопок, добавлял бы сплиттер, скажем, вертикальный, и твои добавленные контролы через добавить атрибут прямо в эту форму. И всё.При нажатии еще раз, скрывал бы.

Пример подобного класса, можешь глянуть на нимфостарте в моих поделках, например, редактор формы или в реализации Ctrl+Z для всех атрибутов формы.

И окошко отдельного не надо, достаточно сплиттером поиграться.
57 Ёпрст
 
15.06.22
17:42
Единственное, придётся с привязками формы поиграться
58 zelenyj_ogurec
 
17.06.22
08:45
(52) >> Сделай! Никто же не мешает...

Мешают ограничения 1С.
1С не позволяет сделать форму не-максимизированным при максимизации других форм.
59 zelenyj_ogurec
 
17.06.22
08:47
(56),(57)
Ну то есть ты предлагаешь с помощью сплиттера выводить ТЗ с остатками на складах прямо в форму документа?
60 Ёпрст
 
17.06.22
09:39
(58) никак не сделаешь в 1с-овских формах, только "стороннее" окошко, например, через ВК как  в выше упомянутом ToolTip

(59) да.
61 Ёпрст
 
17.06.22
09:40
выводить просто через свой подключаемый класс по горячей клавише, используя перехватчик, чтоб не прописывать это во всех формах, где оно надо
62 zelenyj_ogurec
 
17.06.22
09:59
(60) Можно ли сделать какое-то стороннее окошко, чтобы на ней отображалось что-то типа ТаблицыЗначений?
То есть чтобы были строки и колонки с прокруткой по вертикали и горизонтали.
А также желательно, чтобы события мышки при щелчке на такой "ТЗ" передавались в 1С.
63 zelenyj_ogurec
 
17.06.22
10:01
(61) То есть в типовых формах (документов\справочникков) вообще менять ничего не надо??
Если так - то это интересный вариант.
64 Ёпрст
 
17.06.22
10:06
(62) стороннее окошко - ну, ты же его получил ужо в тултипе, рисуй свой грид через html, и там даже события можно ловить через onClick по идее, смотреть надо, в поделке WebБраузер есть примеры

на счет класса, вот те примеры
https://infostart.ru/public/20038/
https://infostart.ru/public/20885/

допишешь туды сплиттер и свои контролы и всё.
65 uno-group
 
17.06.22
11:24
тз в 7 строк уже куча экрана занимает и когда то будет мешать точно.
10        20        30,5      0           0           50    бананы. чел будет визуально запоминать в каком месте его склад и тут же находить.
Помницы была Скребка, волшебник и т.п. фигня из офиса которую к 1с прикручивали. давненько это было поищи по форуму помошник МС офиса. там им было куча вариантов управления
66 Ёпрст
 
17.06.22
11:25
(65) о да, на сайте Рупора MS Agent ..
67 Ёпрст
 
17.06.22
11:26
68 Ёпрст
 
17.06.22
11:26
Пример обработки событий MS Agent. yflj csvjnhtnm nfv/
69 Ёпрст
 
17.06.22
11:26
надо сымотреть там
70 Ёпрст
 
17.06.22
11:29
И да..можно еще попробывать поиграться фрэймом от Ужаста от йокселя
71 Ёпрст
 
17.06.22
11:29
не помню, можно ли там рулить не закрытием этого окошка, по идее, это сторонний контрол, не 1с-ый
72 zelenyj_ogurec
 
17.06.22
11:31
(70) >> "фрэйм от Ужаста от йокселя"

Я словей таких не знаю. Что это такое?
Где искать? Где посмотреть?
73 uno-group
 
17.06.22
11:34
(66) точно. вот вроде он же https://infostart.ru/public/15023/.
74 АгентБезопасной Нацио
 
17.06.22
11:39
(66) вещь замечательная, но у меня она перестала работать после очередного обновления винды.
75 uno-group
 
17.06.22
11:41
76 АгентБезопасной Нацио
 
17.06.22
11:46
(75) да я уже несколько лет, как слез с клюшек.
77 Ёпрст
 
17.06.22
11:52
(72) проект йокслель
http://yoksel.net.ru/HomePage
2 + 2 = 3.9999999999999999999999999999999...