|
Программирование логики работы формы | ☑ | ||
---|---|---|---|---|
0
ksupalo
04.03.15
✎
11:49
|
Приветствую!
Внедряя ERP вовсю пользуемся дополнительными реквизитами - настраиваем Виды номенклатуры, настраиваем аналитики для Партнеров как покупателей, поставщиков и пр. Пользователей расстраивало, что допреквизиты всегда располагаются на одной вкладке и их никак не перебросить на другие (всегда в группе "Дополнительные реквизиты"), но это победили, доработали наборы данных и немного форму - пользователь сам настраивает, на какой вкладке (из списка предопределенных) будет располагаться общий реквизит. Сейчас возник вопрос - как можно прикрутить к форме обработчик, который будет менять видимость и значения допреквизитов, при интерактивном заполнении значений? Например, если Клиент, то нас площадь склада не интересует, если розничная точка, то интересует. И аналогично с заполнением данных. Видится, что это будет некоторый справочник правил, в которых будет записано что делать, если какое-то значение из перечня определенных (в наборах свойств) изменено. Можно сделать справочник, регистр сведений и пр., вопрос в том, как перехватывать события формы - в идеале все события, которые там происходят и анализировать, есть ли в справочнике правил правило, по которому скрываем/показываем реквизиты или заполняем их. Очень хочется не менять формы документов и справочников (до сих пор писали именно в модуле формы) - решение хочется гибкое. Кто знает, предложите вариант перехвата событий формы. Спасибо. P.S. Извините, что много букв. Возник |
|||
1
kosts
04.03.15
✎
12:03
|
(0) > Можно сделать справочник, регистр сведений и пр., вопрос в том, как перехватывать события формы - в идеале все события, которые там происходят и анализировать, есть ли в справочнике правил правило, по которому скрываем/показываем реквизиты или заполняем их.
Нет смысла справочники городить. Прописывайте программно. Есть события При открытии, При изменении, Начало выбора и др. Навешивайте их программно и соответственно задавайте логику, включить/выключить и пр. |
|||
2
DrZombi
гуру
04.03.15
✎
12:06
|
(0) А у вас какой ЕРП?
https://ru.wikipedia.org/wiki/ERP А для чего сей громоздкий монстр, чем дешевле 1С? http://www.erp-online.ru/erp/ |
|||
3
kosts
04.03.15
✎
12:15
|
Обычные формы
|
|||
4
ksupalo
04.03.15
✎
13:50
|
Коллеги! Спасибо за ответы!
Вопрос (1) в том, что не хочется создавать свои формы. Это необходимо несколько форм, на номенклатуру, Партнеров, контрагентов, договоры и пр., т.е. всегда делать новую форму и там прописывать логику. Делаем новый допреквизит - снова меняем форму. Так конечно идти можно, но это не гибкий подход. Гибкий - это когда пользователь сам создает допреквизиты, строит по ним логику заполнения, проверку правильности заполнения и работает. Завтра изменились его требования - он не бежит в IT отдел, а самостоятельно(!) перенастраивает количество и типы реквизитов и логику/проверку их заполнения. (2) У нас ERP от 1С. Оно же УП 2.0. |
|||
5
fisher
04.03.15
✎
13:56
|
(0) Увы. Нормальных способов перехвата событий формы нет. Это давно всех расстраивает.
|
|||
6
kosts
04.03.15
✎
14:25
|
(4) > самостоятельно(!)
Язык SQL да и 1С, как бы разрабатывались для обычных людей. Однако программируют по прежнему в большинстве своем профессиональные программисты. |
|||
7
ksupalo
04.03.15
✎
16:11
|
(6) не понял о чем, к сожалению
(5) странно, что нет до сих пор. Наверное стоит написать разработчикам платформы, адреса были где-то. Всем рано или поздно хочется настраиваемую систему, чтобы можно было настроить все вплоть до состава реквизитов, их размещения на форме и настройки(не программирования) логики их работы. ERP сделала шаг вперед в этом направлении... Надеюсь не последний... |
|||
8
kosts
04.03.15
✎
16:17
|
>не понял о чем, к сожалению
Не дело это пользователям заниматься структурой и логикой. Можно больше проблем огрести, чем пользы. Пусть в отчетах срезы/разрезы настраивают. |
|||
9
Torquader
04.03.15
✎
16:34
|
То, что вы хотите - называется программирование.
Конечно, можно написать на 1С движок, который позволит программировать формы внутри самого движка, но в случае 1С это не есть правильный путь. Логику работы программы пользователи могут написать на бумаге, а реализовывать уже должны программисты. К сожалению, 1С не даёт возможности менять код программы во время её исполнения - поэтому ничего серьёзного с помощью неё не реализовать. |
|||
10
тарам пам пам
04.03.15
✎
16:44
|
(9) Как это не даёт? "Выполнить" же есть, и его достаточно для реализации "внешней" (не зашитой изначально в конфигураторе) логики.
|
|||
11
ksupalo
04.03.15
✎
16:45
|
(9) Спасибо за ответы! Пишите, если будут мысли. Что-то мне подсказывает, что это делать можно.
(10) Мы тоже думали - прописывать кодом в справочниках и выполнять его. Хорошая мысль! |
|||
12
fisher
04.03.15
✎
16:47
|
(10) Более того. Даже на 7.7 это можно было делать и существовали конфигурации, которые использовали это для расширенной пользовательской кастомизации.
|
|||
13
тарам пам пам
04.03.15
✎
16:50
|
(11) Только надо очень аккуратно это делать - по сути, вы будете давать пользователю выполнить произвольный код => при неаккуратном использовании можно запороть базу.
|
|||
14
Garikk
04.03.15
✎
17:43
|
(13) +1
У нас тут в одной такой "суперкрутой" софтине (не на платформе 1С), есть возможность конечным юзерам собственные запросы к базе рисовать через мастер... а у нас там человек 200 юзеров сидят... Вендор два месяца с выпучеными глазами баг ловил когда нагрузка на 12 ядерном серваке 100% от их сервиса... выяснилось что человек 20 себе запросы понаписали типа select * from ... |
|||
15
Garikk
04.03.15
✎
17:43
|
(14) без ограничений запросы...
а база там гигабайт 40 |
|||
16
Torquader
04.03.15
✎
19:42
|
(10) Например, в VbScript или JavaScript Eval позволяет определить функцию, а GetRef - получить адрес функции и присвоить обработчику.
В 1С, выполнить - позволяет только выполнить определённый набор операторов - то есть для реализации произвольного расчёта - вполне достаточно, а до произвольной логики - немного не дотягивает. Конечно, можно создать таблицу или структуру, где будет указано соответствие идентификатора элемента управления и выполняемого кода, который выполнять при помощи команды "Выполнить", даже можно создать вызов "Функции" или "Процедуры", когда из этой же таблицы "Вызывать" другой кусок кода по имени, но вот - скорость выполнения этого "чуда" будет немного страдать. |
|||
17
Torquader
04.03.15
✎
19:45
|
(14),(15) В хорошей софтине, для работы пользователей с произвольными запросами обычно добавляется ограничение на количество записей, на время выполнения и на используемую память.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |