Имя: Пароль:
1C
1C 7.7
v7: Как определить на каком слое находится элемент.
0 protsenkodv
 
24.08.13
16:28
На форме несколько слоев. На разных слоях разные кнопки.
При переключении слоя нужно определить какие кнопки находятся на текущем слое. Подскажите, пожалуйста, как программно определить какие кнопки находятся на текущем слое.
1 Злопчинский
 
24.08.13
16:39
а накуа?
2 protsenkodv
 
24.08.13
16:54
Кнфа по автоматизации бара.
На форме столы. Стол - Кнопка, вернее две кнопки наложенные друг на друга. Черная кнопка - свободный, красная - занятый.
Столы располагаются на разных слоях (не помещаются на экран. есть кнопка переключения столов). При переключении слоя нужно определить какие столы находятся на текущей форме, и показать в соответствующих цветах.
3 Rie
 
24.08.13
17:27
(2) Ну кнопки же по слоям - не просто так разбросаны. Наверняка известно, что на первом слое - кнопки с 1 по 10, на втором - с 11 по 20.
ПриВыбореЗакладки - даст номер слоя - можно вычислить кнопки.
А ещё проще - если слоями не пользоваться, а регулировать через Видимость. И использовать Форма.ПолучитьАтрибут().
4 Злопчинский
 
24.08.13
17:28
стол - фиксировнного размера. на слое "то есть на форме" - фиксированное количество столов. переход на другой слой - в слое столы начинаются с последний стол на предыдущем слое+1
5 Злопчинский
 
24.08.13
17:28
и вооще - нахрена фиксировано на слоях делать? увеличиться количество слоев - надо лезть в пофигуратор и перерисовывать.
6 Rie
 
24.08.13
17:30
(2) Ну а если очень хочется возиться со слоями - то используй FormEx. Там есть у объекта АтрибутФормы свойство Слой.
7 Злопчинский
 
24.08.13
17:30
сделай единственный слой, на нем "кнопки-столы" - по кнопе "следующий-предыдущий" - формексом назначай на кнопку нужную строку-формулу (если надо что-то делать со столом при тычке на него) и формексом же переназначай названия кнопок.
8 Злопчинский
 
24.08.13
17:31
и столы-кнопки в виде кнопок - некрасиво выглядит. сделай столы в виде табличного документа йокселя или обычной печформормой, будет красивше
9 Rie
 
24.08.13
17:31
(7) И вообще - зачем форма? Таблица. На ней нарисованы столы. И - ОбработкаЯчейкиТаблицы.
10 ЧеловекДуши
 
24.08.13
20:06
(5) Наверное он просто еще не ловил пошаговую отрисовку формы диалога :)
11 Torquader
 
24.08.13
22:02
1C идёт в топку вместе с кнопками и т.п.
Как я делал формы с галочками и списками выбора:
1) Берём Internet Explorer, который мы открываем по OLE (CreateObject) и показываем на весь экран (также можно отключить адресную строку и прочие "грабли").
2) Рисуем форму html и сценарий управления формой на VbScript (можно JavaScript, но VbScript отрабатывает быстрее).
3) Создаём переменные, в которые 1С "заглядывает" за событием, произошедшим на экране.
4) В Internet Explorer используем массив событий, в который пишем действия.
5) Пользователь на экране может видеть таблицы, кнопки, анимацию и множество других ActiveX элементов управления, размеры которых можно задавать через стили.
6) Пользователи, привычные ко всяким вконтактам, одноглазникам и прочему прекрасно работают в "осле", и не знают про то, что они что-то вводят в 1С.

Удачи.
12 Злопчинский
 
24.08.13
23:17
(11) куртуазный извращенец
13 Torquader
 
24.08.13
23:20
(12) Зато оно работает без проблем - и форму можно поменять, не запуская конфигуратор. Отработка скролинга - выпадающие списки, динамические картинки - в 1С с этим не очень хорошо.
14 Злопчинский
 
24.08.13
23:21
913) главное чтобы 404 не случилось.. ;-0
15 Torquader
 
24.08.13
23:32
(14) Ну и как оно случиться ?
Если прослойку через Windows Script Component сделать, то можно и событие перехода на страницу отловить и сказать, что переходить не надо.
А если ещё и Apache прикрутить, то получится Web-сайт с формой, которая взаимодействует с 1С.

P.S. а зал в нормальной программе пользователи сами рисуют и расставляют не только столы и стулья, но и всякую другую "мебель", чтобы даже "баран" понял, что и где в зале находится.
16 Злопчинский
 
24.08.13
23:42
(15) это все поянтно.. но у меня все больше ощущение, что мы работаем в каком-то приюте призрения и вытираем сопли дебилоидам...
17 Torquader
 
25.08.13
20:27
(16) А как ты хотел - ты программист - пишешь программы для пользователей. А пользователи - они разные бывают.
Очень сложно написать для людей что-то стоящее, так как очень долго пытаешься понять, как думают пользователи, и только после неуспешной реализации понимаешь, что пользователи просто вообще не способны думать при работе.
18 Злопчинский
 
25.08.13
20:59
917) ну так меня и плющит сейчас оттого, что большую часть времени занимает не собственно само программирование, а создание такой "инфраструктуры" (например, как частный случай запуск обработки) - чтобы обрубить максимально бОльшее количество путей к косякам. По сути все сводится к ликвидации альтернатив. но этосразу снижает гибкость исполнения неформализованных БП. Даешь альтернативы - косячат. исправление косяков - внятного персонала на это дело сажать неоткуда. самому сопли вытирать за каждым ужо надоело...
19 Cthulhu
 
25.08.13
21:05
Не надо тебе определять что на каком слое.
Переключение видимости слоев - это по сути лишь способ группового изменения видимости реквизитов формы.
Чтобы определить - что там у тебя на форме в результате изменения видимости слоев - достаточно определить видимость реквизитов, расположенных на слоях - с какого слоя реквизит видимый - тот слой целиком и видимый, и тогда иди по реквизитам этого слоя и раскрашивай.
20 Cthulhu
 
25.08.13
21:12
(18): а мне норм. ))
не расстраивайся. со временем вырабатываются типовые способы решения таких задач - в виде стандартного перечня переменных модуля, стандартных процедур управления диалогом и стандартного регламентирования доступов.
у меня так в конфигурации давно уже прижились два справочника-костыля "видыдопуска" и "допдопускпользователей" (с кодом пользователя, видом и уровнем допуска, и датами начала-конца допуска и уровня), а в глобалинике процедура глуровеньдопдопуска(ВидДопуска,тПользователь="",тДата="").
и теперь у меня даже в справочниках юзверя ходят с регламентацией допусков на уровне групп и элементов, и закладки даже в той же форме тмц видят по допускам, да и отчеты могут формировать с контролем отборов и фильтров по нему, да всё практически. и допуски меняются при надобе "на лету", без перезапуска. )))
21 Злопчинский
 
25.08.13
21:14
920) да и уменя что-то подобное по допускам было.. но это же, блин, какая-то профессиональная стагнация...
22 Cthulhu
 
25.08.13
21:18
(21): профессиональная стагнация - это исправление шрифтиков в отчете по приказу директора. и вообще. ты забыл?.. мы - дворники! и смотрим свысока на вот этот весь сброд! )))
23 Cthulhu
 
25.08.13
21:21
(21): и схреновли ты "стагнацией" называешь решение, которое позволяет решать "рутинные" задачи (регламентирование допусков "на лету", например) не "длинным нудным кодингом", а в тройку строк????
24 Злопчинский
 
25.08.13
22:13
(23) а кинь пару скриншотов на [email protected] показывающие как у тебя хранятся в справочниках упомянтутые ВидДопуска (что это такое) и допдопускпользователей...
.
это у тебя сделано подпиской на событие "приОткрытии" форм документов/справочников?
25 Cthulhu
 
26.08.13
02:17
(24): да любая форма списка. реквизиты - в (20).
вид допуска - строка шаблона построения конкретного допуска. простейший с макроименами кода (для справочников с уникальными кодами) или наименования или (для сложных случаев) ид-а. остальное - программно в нужных местах. и в приоткрытии, и в приначалевыборазначения, и в обработкавыборазначения, и в обработкаподбора, и при установке видимости/доступности реквизитов, и в основной выполняемой процедуре (пере-проверка допусков по фильтрам) отчетов и обработок. благо запихнуть - пара-тройка строк. и в проверку допусков по авторству (временное замещение), и на использование обработок. въелось и легло основательно, но раз засунул - и забыл, только в инструкцию не забыть добавить. )))
26 skunk
 
26.08.13
06:58
27 Бертыш
 
26.08.13
08:14
(26) Регистрации просят. Нафиг
28 Ёпрст
 
26.08.13
08:18
(0)
Слой
Layer
Синтаксис:
Слой
Назначение:
Доступ к значению принадлежности к слою атрибута формы. Атрибут для чтения/записи.
ПРИМЕР:
ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.УстановитьФорму(Форма);
Для Х = 0 По ФормаРасш.КоличествоАтрибутов() - 1 Цикл
    Если ФормаРасш.ПолучитьАтрибут(Х).Слой = "Слой1" Тогда
        ФормаРасш.ПолучитьАтрибут(Х).Видимость = 0;
    КонецЕсли;
КонецЦикла;
29 protsenkodv
 
27.08.13
22:02
Реализовал через FormEx. Всем спасибо.