gifts2017

СделайСАМ: лжеОбъектное расширение конфигурации

Опубликовал Владимир Самойлов (samamoiloff) в раздел Программирование - Практика программирования

Конфигурация на поддержке без возможности внесения изменений или в модели сервиса, базовая. Как быть, если нужно дать пользователю вводить и хранить большое количество разнородной дополнительной информации, которую желательно хранить в самой информационной базе и доступ к  ней иметь через приближенный к стандартному интерфейс?
Представляем вам возможности использования ХранилищаНастроек. Начиная от создания дополнительного "справочника" с претензией на создание собственной разработки с массой дополнительных "объектов" в виде внешней обработки (для управляемого приложения, т.к. залезать тонким клиентом теперь можно в большинство решений)

Здравствуйте. Нам всегда в жизни не нравятся какие-либо ограничения.  Они бывают как полезные для нас же самих, так и не очень, а так же нейтральные, вроде есть... ну и есть. Некоторые с этими ограничениями борятся, некоторые живут, есть те, кто как-то их старается обойти. Здесь сложно судить, правильно это или нет, давать оценки лицензионному соглашению с 1С не будем, т.к. это данность, которую принимать или нет - решать каждому, лично. Но мы принимаем, а значит стараемся решить некоторые ограничения от 1С приемлимым в рамках лицензионного соглашения средством. Оно не решит всех проблем, но можно подумать и над развитием...

1. В нашей практике внедрения 1С и создания прикладных решений часто требуется вносить изменения в типовые конфигурации. Но делать это приходится путем снятия ее с полной поддержки, тем самым "подсаживая" клиента на постоянные потребности в неавтоматическом обновлении. Есть базвые конфигурации, изменение которых не возможно.

2. Сейчас , видимо, будет распространяться вариант работы в модели сервиса и свои разработки желательно переносить во внешние обработки. (есть, кстати, интересный вариант также у моего земляка, Рустема - http://infostart.ru/public/120169/  )

3. В принципе данная идея так же может сочетаться со способностью в дальнейшем "подключать/переопределять" стандартные методы уже существующих объектов конфигурации без ее изменения. На конфигурацию навешивается этакая "внешобработ-морда", через которую производятся необходимые действия. Сложно сказать, насколько это необходимо, конечно...

Данная модель уже используется в  нескольких проектах, в частности для расширения задач пользователей в УПП, для управления веб-сервисом при связи информационных баз 1С с нашим приложением под Андроид (http://infostart.ru/public/154074/).

Итак.

Вашему вниманию представляется обработка управления ХранилищемНастроек конфигурации для создания и ведения дополнительных "объектов" прикладного решения. Назовем их "лжеОбъекты". Скачайте версию, где реализован пример создания лжеСправочника (Код, Наименование, РеквизитБулево, РеквизитСтруктура), к которому создается форма списка для ввода в него данных, есть обработчики событий ПриИзменении к каждому полю реквизита, есть вызов дополнительной внешней обаботки из события этой формы списка лжеСправочника - пример методов лжеСправочника. Ну и пример двух методов "менеджера" лжеСправочника - "СохранитьТаблицу"и "КакойтоМетод".

Подробнее:

   Обработка (Стартовый помошник), которую вы скачаете, содержит макет с универсальной обработкой работы с лжеОбъектами. Сама обработка "Работа с лжеОбъектами" не зависит от  самих данных, их значений. Она лишь принимает на входе структуру объектов, описанную в стартовой обработке и рисует для этой структуры форму, наполняя обработчиками, кнопками и данными.

07.png

   Способ создания своей структуры лжеОбъектов может быть вами понят из контекста процедуры СозданиеПервичныхСтруктур() стартового помошника. Но в дальнейшем, когда будет разработана документация и оптимизированы все составляющие, разрабатывать свои объекты можно будет и  более комфортным способом (что это будет, визуальный ли редактор или нечто другое, пока сказать затрудняюсь).

 

Далее идет описание версии.

Версия 1.0.1
Это обработка "Стартовый помошник"
При первом запуске вам было предложено первоначальное добавление в  лжеСправочник предопределеннного элемента в вашей информационной базе.

01

Если вы отказались, то можете сделать это потом, нажав на кнопку "Заполнить объекты"
лжеОбъектами в данном контексте называются вспомогательные таблицы, хранящие данные разного рода. Таблицы сохраняются между сеансами в ХранилищеНастроек конфигурации.

02.png

Нажмите кнопку "Реструктуризация объектов" после скачивания последней версии "Стартового помошника", при этом существующие в вашем ХранилищеНастроек таблицы будут дополнены новыми возможностями, информация в них сохранится (если вы не переопределяли сами структуру таблиц.

03.png

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

04.png


Ну и наконец, все эти таблицы лжеОбъектов можно посмотреть и отредактировать в специальной форме. Нажмите кнопу "Открыть объекты".

05.png

Если вы видите маленькую форму без таблиц, они не созданы в вашей информационной базе.

06.png

Нажмите кнопку "Реструктуризация объектов" для создания пустой таблицы лжеСправочника или кнопку "Заполнить объекты" для создания таблицы лжеСправочника с предопределенным элементом.

При работе с лжеОбъектами.


Для элементов формы (полей ввода таблицы) добавляются обработчики события "При изменении", а для самой таблицы формы для примера обработчик события "ПриНачалеРедактирования", в котором вызывается  какая-нибудь внешняя обработка для создания опредеелнного выбора значения или еще чего-нибудь...

08.png

И две кнопки - команды по аналогии с методами менеджера лжеОбъекта, в примере "записать таблицу" или что-то  выполнить.

09.png

 

 

 

Удачных вам внедрений!

 

Благодарность Андрею Данилюку (http://danila.org.ua). При разработке использовалась практическая методика получения картинок из текста HTML (переработана) и получение структуры из адреса сайта (оригинал). В коде модуля так же есть ссылка.

Скачать файлы

Наименование Файл Версия Размер
ПримерСтартовойОбработкиЛжеОбъектнойМодели_1_0_0.epf 33
.epf 246,73Kb
17.11.12
33
.epf 246,73Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Ловыгин Антон (wunderland) 20.11.12 14:57
Как идея (и реализация) - интересно.
Но, как я понимаю, обратиться к этим данным, например, из консоли отчетов - нельзя?
2. Владимир Самойлов (samamoiloff) 20.11.12 16:36
(1) wunderland,
ну, в принципе, это костыль, да...
3. Яков Коган (Yashazz) 20.11.12 16:39
Ну-у-у, если уж извращаться, так иначе - делаете свою, отдельную, заточенно-универсальную конфу как скелет, запихиваете в двоичные данные макета, раскрываете при первичном запуске обработки, а затем обращаетесь через com-соединение. Так можно сэмулировать больше, а сил на изобретение псевдо-объектов потратить меньше. Ну и, если толково припахать внешние источники данных, даже СКД, о которой (1) спросил, подтянет нужное.
адуырщдв; +1 Ответить 1
4. Владимир Самойлов (samamoiloff) 20.11.12 21:48
(3) Yashazz, благодарю,
да вот, с базовыми такие фокусы не проходят. Интересно, в модели сервиса есть возможность запустить свою конфу? Наверное, нет...
5. Александр Зубцов (iov) 20.11.12 22:45
6. Александр Зубцов (iov) 20.11.12 22:46
(0) Красненькие синенькие строки а потом так правильно и строго....
7. nelse (nelse) 21.11.12 04:45
подписался. посмотрю. идея хорошая.
Сам в этом направлении когда-то что-то делал Интересно.
8. Владимир Самойлов (samamoiloff) 21.11.12 09:29
(7) nelse,
наша жизнь стремится(?) быть интересной, хотя вроде все нормуль, сиди на солныщке, грейся..., че-то все придумываем... Так?
9. Владимир Самойлов (samamoiloff) 21.11.12 09:31
(6) iov,
а один товарищ написал, что это как... не буду писать как, но не понравилось ему.
10. Алекс Ю (AlexO) 21.11.12 09:46
описанную в стартовой обработке и рисует для этой структуры форму, наполняя обработчиками, кнопками и данными.

И кто решает, чем и как наполнять форму?
11. Гость 21.11.12 10:15
Недостатки:
нельзя использовать СКД.
а при этом смысл создания пустышек не вижу.
в место отчетов писать обработки тоже не столь интересно.
тут даже отдельная конфа с данными не поможет.
единственный вариант это создание в базе дополнительный таблиц (СПРАВОЧНИКИ РЕГИСТРЫ ДОКУМЕНТЫ), обращение и настройка их с помощью этой волшебной обработки + написание на СКД прямых запросов к этим таблицам. НО это все сомнительно.(+ написать расширение для платформы которое будет адекватно воспринимать обращение к таблицам не относящихся конфигурации)

Итог: Работы много в этом направлении. В том числе сами 1с-цы!!! должны принимать в этом участие.
smaximaa; Stety; +2 Ответить 1
12. Владимир Самойлов (samamoiloff) 21.11.12 10:21
(10) AlexO,
тот, кто в коде стартовой обработки создаст структуру, элементами которой будут:
объекты - тоже структура ,элементами которой будут реквизиты, события, методы.
Надо было, конечно скрин кода привести, извиняюсь. Вот кусок:
13. Владимир Самойлов (samamoiloff) 21.11.12 10:26
(11) Werios,
что Вы имеете в виду под "единственный вариант это создание в базе дополнительный таблиц" - обычных объектов? Конфигурацию редактировать нельзя, не совсем понял.
14. Александр Зубцов (iov) 21.11.12 10:41
(9) в письме наверно написал? Какой нехороший товарисчь...
Сарказм , Шелдон.
15. Гость 21.11.12 11:46
(13)
Смысл в чем? Не Влиять на стандартную конфу?
Тогда Так:
1. Обработка Которая Создает Таблице В ИБ (к примеру рассматриваем Скуль), в которой есть настройки всех дополнительных лже объектов базы + таблицы самих лже объектов + таблицы данных объектов.
2. Есть некая ДЛЛ в платформе которая добавляет возможность использования в стандартных СКД и еще где нить доработки по обращению к этим таблица и вытаскивания данных из них.

Вот это и будет Полноценная доработка по ведению своей конфигурации по верх стандартной, не портя конфу.
16. Владимир Самойлов (samamoiloff) 21.11.12 18:52
А кто-ть в модели сервиса пробовал с ДЛЛ работать, у меня такого опыта нету. Ни модели, ни сервиса... :)
Может полноценный костыль и не нужен?
17. Татьяна Шавлак (Stety) 22.11.12 01:29
Базовые конфы покупают, как правило, в видах жесткой экономии. Раз так, хороших денег за "навесные" доработки такие заказчики платить как правило тоже не могут. Выходит, что такого рода расширение имеет смысл, если оно как бы тиражное. То есть, если это какие-то лжеСправочники, нужные многим клиентам.
В общем, штука технологически интересная по-своему, хотя и ограниченная. Но вряд ли для нее широкая область применения найдется.
18. Ксюша (Ksu) 22.11.12 12:11
Идея интересная! С большим интересом буду наблюдать за развитием данного проекта.
19. Владимир Самойлов (samamoiloff) 22.11.12 20:24
(17) Stety, да тиражность подойдет...
как вариант ограничения - создание своей разработки и продажа "1С в подарок", т.к. стоимость базовой для дилера примерно в 2 раза меньше продажной, появляется вариант:
1. Стать дилером 1С
2. Повысить заинтересованность покупки той же базовой именно у вас
2,5. Продолжить сотрудничество с этим клиентом.
3. Объявить о себе на рынке

P.S. Не специально, это не реклама, так получилось... :)
20. PlatonovStepan (Jogeedae) 23.11.12 05:02
По-моему в такие лжеОбъекты только лжеДанные и можно помещать :)
1) Боюсь огрести проблем по производительности и обработке больших объёмов.
Понятно, что BLOBструктуры в sql хранятся независимо, но в действительности никаких гарантий ж.
К тому же всё это будет очень зависеть от оперативной памяти и ресурсов сервера, ведь эти структуры он не будет порционно выдавать.
Разве что продумать эти порции и хранить их в различных настройках хранилища.

2) Согласитесь, что эти хранилища создавались не для получения/обновления их при каждом клике пользователя.
3) Механизм блокировок?
4) Обмен данными?

Ах да, может не нужно приставку "лже" использовать? Отторжение вызывает :)
Варианты : псевдо, квази
21. Владимир Самойлов (samamoiloff) 05.01.13 12:21
(20) Все правильно пишете. Поэтому и приставка такая: "лже". Чтобы осознавать, что это всего лишь костыль. А костыль - он и в Африке костыль, как его с ногой не сравнивай. Но иногда костыли приходится использовать. Я предлагаю такой вот, дубовый... :)
22. Владимир Самойлов (samamoiloff) 05.01.13 12:32
P.S. Я никого ведь не заставляю и ни к чему не обязываю. В процессе работы нет иногда другого варианта, как элемент выбора я его привожу здесь. Любой в праве выбрать или предложить свой.
Утверждать, что костыль - это деревянное приспособление, помогающее ходить при повреждениях ног, а потом оспаривать это утверждение, что бывают и железные костыли, доказывать, что без костылей тоже можно передвигаться... Зачем это? Это и так понятно. Нет?
Возможно текст публикации к этому подталкивает... как бы реклама, вызывает протест... надо будет пересмотреть.