Имя: Пароль:
1C
1С v8
Программирование логики работы формы
,
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
Обычные формы


Процедура Подключаемая_ПриОткрытии()
    
    ПриОткрытии(); //Вызов типовой
    
    ДобавлениеЭлементов();
    
КонецПроцедуры

УстановитьДействие("ПриОткрытии", новый Действие("Подключаемая_ПриОткрытии")); // Перехват

ТабличноеПоле.УстановитьДействие("ПриПолученииДанных", Новый Действие("Подключаемая_ПриПолученииДанных_Приказ"));

ТабличноеПоле1.УстановитьДействие("ПередНачаломДобавления", Новый Действие("УдостоверениеПередНачаломДобавления"));


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) В хорошей софтине, для работы пользователей с произвольными запросами обычно добавляется ограничение на количество записей, на время выполнения и на используемую память.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn