|   |   | 
| 
 | Программирование логики работы формы | ☑ | ||
|---|---|---|---|---|
| 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) В хорошей софтине, для работы пользователей с произвольными запросами обычно добавляется ограничение на количество записей, на время выполнения и на используемую память.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |