[Общий модуль] Динамическое формирование интерфейса

Публикация № 1284403

Разработка - Практика программирования

UI UX Интерфейс Динамически Программное создание

Версия 2.0.0.1 + добавил GitHub

Добрый день, Коллеги!

Вы, наверное, знакомы с моей публикацией-шпаргалкой «Программное создание элементов формы». В конце той статьи имеется первая попытка создания общего модуля для облегчения разработки динамического интерфейса. Так же у меня на Инфостарт представлена функция по созданию динамического списка. Новая публикация содержит только общий модуль "Динамического формирование интерфейса" (ДФИ), собравший в себе всё лучшее из практики и прошлых статей, а так же новые функции.

 

Особенности модуля «Динамическое формирование интерфейса»

 Наименование функций совпадает с наименованием меню интерактивного создания элементов на форме.

 

 Описание функций

 

 Подготовлены структуры свойств

При создании структуры имеется так же хорошее описание, включая тип значения, который следует передать.

 

 Наличие специфических элементов

Пополняю модуль специфическими элементами, например такими, как выпадающий список, созданный на основании строкового реквизита.

 

Общий модуль "Динамическое формирование интерфейса"

 
 Программный код для общего модуля "Динамическое формирование интерфейса"

Ссылка на GITHUB https://github.com/KotovDima1C/DFI.git

Демонстрация работы

 
 Код для демонстрации работы модуля во внешней обработке (тестировал 1С:ERP 2.4.11.088)

Достаточно создать новую обработку и добавить код в модуль формы. Установить форме метод "ПриСозданиеНаСервере". Так же стоит понимать, что общий модуль называется "ДФИ". Ниже демонстрация работы, все элементы созданы программно с помощью модуля "Динамического формирования интерфейса".

 

История версий

2.0.0.1 – первая версия модуля.

 

Резюме

Применение

  1. Доработка типового функционала. Программное создание элементов в последствии упрощает установку типовых обновлений. Но есть один нюанс, о нём ниже.
  2. Когда без программного создания не обойтись, заранее не известно сколько нужно реквизитов и элементов на форме. Например: документ корректировки регистров, система тестирования или какие-то другие специфические решения:

Нюанс программного создания элементов

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

 

Всем удачного кодинга!

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Synoecium 711 28.08.20 09:59 Сейчас в теме
Отличная новость. Пользовался вашими предыдущими наработками по динамическому созданию элементов форм, некоторые моменты дорабатывал под свои нужды. Посмотрю, что появилось в этой версии.
На мой взгляд в современной доработке типовых без такого механизма делать нечего, первым делом добавляю эти модули в конфигурацию/расширение.
Evg-Lylyk; rpgshnik; +2 Ответить
2. rpgshnik 2457 28.08.20 10:02 Сейчас в теме
(1) спасибо, согласен с вами
3. Yashazz 3617 28.08.20 10:06 Сейчас в теме
Считаю эти экзерсисы малонужными. По месту проще сделать, не тягая весь модуль, а в большинстве случаев теперь можно применять расширение и делать элементы формы в конфигураторе - быстрее, проще, прозрачнее, управляемее.

Я подобный модуль написал ещё в 2014 году, но не вижу смысла выкладывать - такие наработки есть наверняка у каждого. Это ж тупейшая элементарщина.
tsmult; lukyan; Ish_2; Nikiforov_001; sapervodichka; +5 9 Ответить
10. RocKeR_13 872 28.08.20 11:31 Сейчас в теме
(3)
а в большинстве случаев теперь можно применять расширение и делать элементы формы в конфигураторе

А потом при обновлении платформы слетают, например, типы основных реквизитов у форм объектов и кнопка для обновления формы в расширении не помогает, что приводит к необходимости, по сути, ручного восстановления формы. Уже наступал на эти грабли, теперь в расширения тоже добавляю общий модуль для программного добавления своих элементов/реквизитов/команд форм. Да, если добавлено одно поле на одну форму, то может и нет смысла программно добавлять: если что, восстановить его нет проблем. Но если в расширении изменено форм десять и на них добавлено множество своих реквизитов/элементов/команд, то для их ручного восстановления может понадобиться больше времени, чем на написание программного добавления.
JohnyDeath; rpgshnik; +2 Ответить
14. rpgshnik 2457 28.08.20 11:42 Сейчас в теме
(10) на днях делал обработку по групповому формированию документов. Программист до меня сделал процедуру, которая генерировала программно множество реквизитов, там реально десятки, таблицы, кнопки и т.п... Как я был счастлив скопировать её просто в обработку и после все элементы создались можно сказать сами, я только два реквизита свои добавил на форму интерактивно :)) а по новой всё настраивать я бы застрелился, ну точно не пара секунд. По этому да, в таких случаях тоже очень помогает.
16. Yashazz 3617 28.08.20 11:53 Сейчас в теме
(14) Так это вы просто сгребли проблему из одного места в другое. Я считаю сам подход динамического рисования формы порочным.
17. Yashazz 3617 28.08.20 11:58 Сейчас в теме
(10) А программно будто сильно помогает))) Если типы "уехали", тут уж полюбому ревизовать код и декларации.
А вот как вы будете искать всё, подлежащее ревизии, если оно программно, я слабо понимаю - то ли дело поиск по элементам форм, да инструменты сравнения формы до и после, появившиеся в новых релизах. Если изменились, например, типовые группы элементов, так код просто лажать начнёт, и давай заново; а визуально быстрее и проще, и надёжнее.
Во множестве случаев незачем изменять форму, разумнее свою делать. И даже если изменено много, так это хоть сразу видно, удобно и быстро, а не лазить по модулям, где там чего добавляется, в каких случаях, да когда откуда вызывается.
21. SeiOkami 1805 28.08.20 18:28 Сейчас в теме
(3) то есть, это настолько ненужная и "порочная" (как вы пишите ниже) практика, что "наработки есть наверняка у каждого"?

Никогда не понимал людей, которые ругают публикацию, при этом хвастаясь, что "та я ещё N лет назад это делал, да ещё и в сто раз круче, но выкладывать не буду - лучше это обосру". 😒
boggonzikov; fvr2000; getnight; kMidas; JohnyDeath; tps_01; +6 Ответить
22. Yashazz 3617 28.08.20 19:35 Сейчас в теме
(21) А вы не передёргивайте, товарисч. Я ничего не обсирал ни единым словом. Я высказался о подходе (что порочен имхо) и о уровне сложности задачи (тупейшая элементарщина). О публикации ничего не было. Далее, я не хвастался, а высказался. Я ничего не говорил о "крутейшем" своём модуле - исключительно, что делал похожее и давно.

Никогда не понимал людей, которые читают не что написано, а что хотят увидеть, и на пустом месте пытаются спровоцировать конфликт. Как вот означенный (возможно, тролль) SeiOkami попытался. Учитесь слышать окружающих, товарисч, и не судите по себе)
tsmult; FiftyStars; +2 Ответить
23. SeiOkami 1805 28.08.20 19:39 Сейчас в теме
(22)

Я подобный модуль написал ещё в 2014 году, но не вижу смысла выкладывать - такие наработки есть наверняка у каждого. Это ж тупейшая элементарщина.


Я считаю сам подход динамического рисования формы порочным.


Вместо тысячи слов.
lukyan; rpgshnik; Evg-Lylyk; the1; +4 Ответить
25. Yashazz 3617 28.08.20 19:43 Сейчас в теме
(23) Да. Потому что за эти 6 лет малость поплясал на этих граблях и сделал выводы. Учусь, тксзть, на своём опыте) И потому, что 6 лет назад расширения и платформа не могли того, что могут теперь.

А главное - потому, что вдосталь налюбовался, какую лютую хрень в коде пишут фанаты программного изменения форм, и как трудно за ними потом всё развивать или просто поддерживать.

Уймись, тролль, ты предсказуем.
tsmult; lukyan; +2 Ответить
53. Aletar 04.09.20 06:22 Сейчас в теме
(3) Мне кажется Вы слишком поспешны в суждениях. Что делать в ситуацих, когда до открытия формы ты не знаешь об его элементах. Как пример, БСП-ная подсистема Анкетирование. Там без подобной библиотеки не обойтись, чтобы построить форму для опроса. Расширения или хранения чего-то в макете в этом случае не сильно поможет.
57. Yashazz 3617 04.09.20 13:05 Сейчас в теме
(53) Спокойно можно поработать с формой и без открытия. Расширение же применяется в момент компиляции формы на сервере, а не в момент открытия. И объявления переменных, и внепроцедурный общий серверный код, и событие ПриСозданииНаСервере - всё это преспокойно отрабатывает применительно к расширению и для ПолучитьФорму. Расширение уже активно прицеплено и всё ловится.

Другое дело, если типовые программные доработки формы засунуты куда-то в ПриОткрытии или вызовах после открытия... Но за такое надо бить по рукам, ващета.
58. Aletar 04.09.20 13:28 Сейчас в теме
(57) Если честно, не совсем понял. Событие ПриСозданииНаСервере в расширении отрабатывает - это понятно, но если нужно построить интерфейс формы в зависимости от данных справочника, все равно же нужно программно выводить элементы. Т.е. хоть и в расширении, но все равно при помощи подобной библиотеки.
59. Yashazz 3617 04.09.20 14:15 Сейчас в теме
(58) Если интерфейс формы существенным образом зависит от каких-либо данных, нужно делать свои специализированные формы, вызываемые из основной либо вместо основной. Статично делать, в конфигураторе, для расширения. И не лениться заимствовать нужную событийную логику. А если таких случаев получается зоопарк, значит, надо продумывать бизнес-процесс и методологию работы, а не кидаться программно клепать поля.
60. Yashazz 3617 04.09.20 15:16 Сейчас в теме
(58) Или можно сделать свою либо расширенную форму, где на разных страницах предусмотреть варианты полей и внешнего вида в зависимости от данных. И ими рулить.
4. Yashazz 3617 28.08.20 10:08 Сейчас в теме
Другое дело, если б кто-то довёл до ума настоящее создание элементов формы - как это делает сама платформа - средствами СКД, условного оформления итд. На внутреннем процессоре. Я нечто подобное начал было, да руки не доходят.
Ещё можно поиграть с табличным документом - отрисовать на нём "копию" формы. Чисто средствами СКД. Это, имхо, интереснее, чем в сотый раз публиковать, как на форме поле или кнопочку делать...
tsmult; lukyan; Ish_2; +3 2 Ответить
9. leosoft 149 28.08.20 10:20 Сейчас в теме
(4)
На внутреннем процессоре


А можно поподробнее - о каком процессоре идет речь и как его пощупать?
15. Yashazz 3617 28.08.20 11:52 Сейчас в теме
(9) А о процессоре СКД и макете компоновки. Дело в том, что 95% решений на СКД работают со схемой и настройками ДО того, как скомпоновать макет, т.е. скармливают ему, а дальше по накатанной. Тогда как избирательное изменение уже готового макета не менее интересно, и позволяет фактически отрисовать форму (как, собственно, это и делает движок 1С) со всеми её элементами без особенного напряга. Там появляется ряд возможностей, которых у настройки "до того" просто нет.
29. Ish_2 1057 31.08.20 03:14 Сейчас в теме
(4)
Ещё можно поиграть с табличным документом - отрисовать на нём "копию" формы. Чисто средствами СКД. Это, имхо, интереснее, чем в сотый раз публиковать, как на форме поле или кнопочку делать...

Какая задача при этом решается ?
Допустим, задали какие-то настройки СКД вывели результат в Табличное поле формы какого-то документа, разрешили для редактирования определенные ячейки. При проведении документа
для каждой разрешенной для редактирования ячейки по ЭлементуРасшифровки определяем набор аналитик и записываем полученные данные в какой-то регистр.
Угадал ?
56. Yashazz 3617 04.09.20 12:18 Сейчас в теме
(29) Ага, в точку! Именно так.
35. bmk74 169 31.08.20 13:49 Сейчас в теме
(4)
Другое дело, если б кто-то довёл до ума настоящее создание элементов формы

Ну а как вам такое Создание элементов и поиском найти можно и ничего программировать не нужно
37. Yashazz 3617 31.08.20 23:28 Сейчас в теме
(35) А я примерно так свою механику и делал. Иначе сдохнуть можно, даже просто поддерживать всё это хозяйство, не говоря уж о развитии.
5. infosoft-v 500 28.08.20 10:15 Сейчас в теме
Дмитрий, спасибо за удобную библиотеку.
Не могли бы вы указать адрес репозитория GitHub с этой библиотекой?
rpgshnik; +1 Ответить
7. rpgshnik 2457 28.08.20 10:18 Сейчас в теме
(5) планирую, укажу в будущем, пока нету :(
54. rpgshnik 2457 04.09.20 09:07 Сейчас в теме
6. leosoft 149 28.08.20 10:17 Сейчас в теме
Я правильно понимаю, что можно этот общий модуль в расширение закинуть и использовать во внешних обработках и расширениях?
8. rpgshnik 2457 28.08.20 10:19 Сейчас в теме
(6) в пределах того расширения, да. Если в конфигурации в целом, то в саму конфигурацию.
11. RocKeR_13 872 28.08.20 11:37 Сейчас в теме
(8) Если расширение активно, то из внешних обработок можно обращаться к объектам этого расширения, в т.ч. и к общим модулям
rpgshnik; +1 Ответить
12. rpgshnik 2457 28.08.20 11:39 Сейчас в теме
(11) хм, настолько с расширениями не работал. Спасибо, попробую.
13. RocKeR_13 872 28.08.20 11:41 Сейчас в теме
(12) у меня просто в одной публикации есть решение в виде расширения и внешней обработки; так вот по началу переносил когда изменения из расширения в обработку и не везде заменял вызовы общих модулей расширения, то возникал конфуз: у меня все работало (расширение-то активно), а у пользователей - нет))
rpgshnik; +1 Ответить
18. Yashazz 3617 28.08.20 12:00 Сейчас в теме
(11) Внешние обработки на этапе разработки в конфигураторе НЕ видят никаких расширений. Поэтому писать код будете вслепую.
19. krollzlat 28.08.20 12:09 Сейчас в теме
Нечто подобное используем у себя в конфигурации. Для тех кому нравится эта идея, но не хочется вскрывать большинство форм, советую обратить внимание на процедуру МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка);
okulus; rpgshnik; +2 Ответить
20. rpgshnik 2457 28.08.20 15:35 Сейчас в теме
(19) да всё верно, именно там так же использую модуль в этой переопределеяемой процедуре
24. Yashazz 3617 28.08.20 19:42 Сейчас в теме
А так по самой публикации - ну, есть, есть что покритиковать. Навскидку: во-первых, мне не кажется правильным подход множества аргументов в функциях. Потому что потом менять трудно при доработках. Разумнее передавать структуру параметров, тем более что у некоторых действий их штук 8-10 запросто может быть. Во-вторых, мне не нравится числовая нотация служебных полей (то же выравнивание) - почему бы не передавать сразу системные перечисления?
Если вдумаюсь - могу ещё накидать.
okulus; rpgshnik; +2 Ответить
30. rpgshnik 2457 31.08.20 03:55 Сейчас в теме
(24) ну вот хорошая критика, спасибо.
26. dhurricane 28.08.20 20:45 Сейчас в теме
Спасибо большое за то, что поделились.

Хотелось бы сделать небольшое замечание. Очень неудобно читать код, где используются "магические" числа в качестве аргументов. Подозреваю, Вы их использовали вместо системных перечислений, преследуя цель более компактного кода. Мне кажется, компромиссом бы здесь было использование строк вместо чисел: "Авто", "Лево", "Право" и т.д.

И маленькое предложение. При создании новых элементов, не связанных с реквизитами, т.к. параметр "Заголовок" необязательный, когда он не указан, будет использовано имя создаваемого элемента. Было бы удобнее, если заголовок генерировался из имени, расщепляя его на слова, как это происходит при интерактивном добавлении элементов на форму.
JohnyDeath; Yashazz; rpgshnik; +3 Ответить
38. rpgshnik 2457 01.09.20 09:33 Сейчас в теме
(26) спасибо за замечания, попробую учесть
27. malikov_pro 630 29.08.20 08:07 Сейчас в теме
1. Ожидать ли на GitHub?
2. Как связать программно добавленный реквизит формы с реквизитом объекта? Проблема: в расширении при добавлении реквизита и импорте формы в нее добавленный реквизит не добавить. Либо делать отдельный реквизит и программно читать, писать, либо импортировать объект формы что влечет за собой импорт всех используемых объектов. (в примере не нашел, возможно не внимательно код смотрел).
33. rpgshnik 2457 31.08.20 04:00 Сейчас в теме
(27) 1 - планируется.
2 - про объект будет доработка.
55. rpgshnik 2457 04.09.20 09:07 Сейчас в теме
28. user649290_jenia1592 29.08.20 15:45 Сейчас в теме
Спасибо за публикацию! Отличный модуль! Только вот создание таблиц на форме из данных объекта не работало, у вас там не предусмотрено это. Немного дописал и все получилось. Скрин доработки во вложении)
Прикрепленные файлы:
Terve!R; rpgshnik; sapervodichka; +3 Ответить
31. rpgshnik 2457 31.08.20 03:57 Сейчас в теме
(28) хороший вариант с объектом, спасибо
32. slawa 26 31.08.20 04:00 Сейчас в теме
Для какой конфигурации сделана тестовая обработка?
34. rpgshnik 2457 31.08.20 04:42 Сейчас в теме
(32) исправил теперь подходит для 1С:ERP 2.4.11.088, тестировал для публикации на голой конфиге с наброском метаданных схожих с ЕРП по памяти :)
36. bmk74 169 31.08.20 13:53 Сейчас в теме
Не сочтите за рекламу..но все таки мой способ полегче будет
Создание элементов
Элементы и реквизиты всегда можно найти в макете, т.е поиском можно пройтись..
И ни строчки кода писать не нужно, если не нужны обработчики
42. kirillkr 28 02.09.20 10:21 Сейчас в теме
(36) плюс программной генерации элементов - при выгрузке конфигурации в Git нагляднее виден код что поменялось, чем XML файл с данными табличного документа.
43. bmk74 169 02.09.20 11:31 Сейчас в теме
(42)А какой в этом скрытый смысл ?, Выгружать конфу в git, Не я понимаю если сотня разработчиков пишет один код и есть супервайзер который потом или принимает request или отклоняет...но это редкость...
44. kirillkr 28 02.09.20 12:03 Сейчас в теме
(43)
тут вопрос философский. Например у нас в компании руководители, от слова "совсем" не знают (не программируют) 1С. Поэтому по совсем разным проектам и направлениям они кидают разным сотрудникам не вдаваясь в подробности, кто в какой области специалист. Иногда задачи прилетают людям, которые упорно не могут научиться программировать в типовых конфигурациях на УФ, и весь код пишут по старинке как на 8.0-8.2. После работы таких людей я как раз и анализирую какие изменения были сделаны и сам вношу корректировки, потому что обучить невозможно, а заменить смысла нет, т.к. это не его специализация - он в другом силен.
39. SizovE 144 02.09.20 08:32 Сейчас в теме
Форму то создать можно, а вот процедуры по элементам управления (ПриАктивизации, ПриИзменении) в общий модуль не вытащить, все равно руками на форму добавлять. Вот хорошо бы 1С это сделала
Yashazz; rpgshnik; +2 Ответить
40. rpgshnik 2457 02.09.20 08:40 Сейчас в теме
(39) это катастрофически не хватает, согласен.
45. Cyberhawk 124 03.09.20 11:18 Сейчас в теме
(39) На форму обычно достаточно добавить только пару универсальных точек входа (на клиенте и на сервере контекстно), причем в довольно многих типовых формах такие точки уже есть - это обработчики команд с "Подключаемый_" в начале имени.
46. SizovE 144 03.09.20 15:34 Сейчас в теме
(45) Ну как же, пару ) у Вас событий у элемента обычно ПриАктивизацииСтроки, ПриИзменении, НачалоВыбора, ...там их намного больше чем пару
47. Cyberhawk 124 03.09.20 17:42 Сейчас в теме
(46) По количеству параметров довольно много событий, у которых он (параметр) только один - это "Элемент".
Соответственно, и обработчик (точка входа в модуле формы) может быть у разных событий один и тот же.
48. SizovE 144 03.09.20 19:02 Сейчас в теме
(47) А как при этом тогда определить, что за событие? И те, которые я назвал как минимум имеют разное количество параметров.
А ведь есть еще и ПриНачалеРедактирования, и т.д.

Если мы решаем частную задачу, то да, это решение, ОДНАКО, зачем для частной задачи динамическая форма.
А если универсальную, то не хватает возможностей.

Так что 1С немного недоработала, абсолютно непонятно почему нельзя писать ОбщийМодульКлиент.ПриНачалеРедактирования, вроде не сложно им такое было сделать, но не стали.
49. Cyberhawk 124 03.09.20 20:06 Сейчас в теме
(48)
как при этом тогда определить, что за событие?
По значению первого параметра, где будет "сидеть" элемент формы.
С остальным не спорю - платформе есть куда стремиться.
Мой посыл был скорее в том, что если нужно извернуться, то в современных типовых это худо-бедно (иногда) можно сделать уже и без добавления в модуль формы точек входа.
50. SizovE 144 03.09.20 21:09 Сейчас в теме
(49)Главное непонятно почему они это не сделали. Это было бы удобно не только для этого, так можно было бы и формы создавать быстрее. Ну да ладно )
41. kirillkr 28 02.09.20 10:18 Сейчас в теме
(0).
Большая просьба
1. В шапка указать лицензию опубликованного модуля. Для возможности или невозможности встраивать в свою конфигурацию.
2. По возможности код выложить в Git, например в gist.github.com (тут даже не нужен установленный git), чтобы визуально видеть изменения в новых версиях модуля.
Спасибо.
rpgshnik; +1 Ответить
51. rpgshnik 2457 04.09.20 04:09 Сейчас в теме
(41) разместил в Git https://github.com/KotovDima1C/Infostart/blob/master/DFI
лицензию чуть позже сделаю
kirillkr; +1 Ответить
52. rpgshnik 2457 04.09.20 05:50 Сейчас в теме
61. Andry.Boris 58 10.09.20 01:07 Сейчас в теме
День добрый!
Как создать поле, со списком выбора значений, привязанным к реквизиту объекта?
Конструкция ДФИ.СздВыпадающийСписок - в данном случае не подходит, так как нет привязки к реквизиту объекта.
Использовал конструкцию ДФИ.СздПоле с передачей СтруктураСвойств - выдает ошибку.

Код
62. rpgshnik 2457 10.09.20 04:16 Сейчас в теме
(61)
ТекстЗаголовка = "В приказе печатать как:";
СтруктураСвойств = Новый Структура;
СтруктураСвойств.Вставить("КнопкаВыпадающегоСписка",Истина);
СтруктураСвойств.Вставить("РедактированиеТекста",Ложь);
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить("как специалиста","как специалиста");
СписокВыбора.Добавить("по должности сотрудника","по должности сотрудника");
СтруктураСвойств.Вставить("СписокВыбора",СписокВыбора);
ДФИ.СздПоле(ЭтаФорма,"МетодОбозначенияДолжности",Элементы.ГруппаСтраницаДополнительнаяПравая,ТекстЗаголовка,1,"Объект.МетодОбозначенияДолжности",СтруктураСвойств);

ОбщийМодуль.ДФИ.Модуль(285)}: Поле объекта недоступно для записи (СписокВыбора)


Стоить заметить, что все методы по созданию элементов являются - функциями и возвращают элементы.
По этому рекомендую решение следующее (замечу, что и кода стало меньше):

	ТекстЗаголовка = "В приказе печатать как:";
	СтруктураСвойств = Новый Структура;
	СтруктураСвойств.Вставить("КнопкаВыпадающегоСписка",Истина);
	СтруктураСвойств.Вставить("РедактированиеТекста",Ложь);
	нЭлемент = ДФИ.СздПоле(ЭтотОбъект,"МетодОбозначенияДолжности",Элементы.ГруппаСтраницаДополнительнаяПравая,ТекстЗаголовка,1,"Объект.МетодОбозначенияДолжности",СтруктураСвойств);
	нЭлемент.СписокВыбора.Добавить("как специалиста","как специалиста");
	нЭлемент.СписокВыбора.Добавить("по должности сотрудника","по должности сотрудника");
Показать


Свойства защищенные от записи не обрабатываются в модуле.
63. InJey 15.09.20 10:02 Сейчас в теме
Хочу сказать автору большое спасибо за труд! Для себя приобрел много полезного!
boggonzikov; rpgshnik; +2 Ответить
64. PanKir 70 13.10.20 09:49 Сейчас в теме
(0) у Вас опечатка в 77 строке...
функция ОписаниеТипаДокумент, а в подсказке написано Справочник
rpgshnik; +1 Ответить
65. PanKir 70 13.10.20 10:23 Сейчас в теме
(0)
ещё заметил как и в конце статьи «Шпаргалка» (https://infostart.ru/1c/articles/1118319/), так и тут - не очень логично использовать цифровые параметры для булевых свойств:
процедура «ПолучитьСостояниеРастягиванияЭлементаПоВертикали» и ей подобные использует параметр «Состояние», которое по умолчанию равно 0, а что делать в таком случае - ничего не сказано.
Тут вполне логичнее сразу использовать Булево в качестве параметра, значение по умолчанию которого устанавливается аналогично как и при стандартном создании элемента вручную, в конфигураторе...
66. rpgshnik 2457 14.10.20 07:37 Сейчас в теме
67. genayo 30.10.20 14:26 Сейчас в теме
Начал на практике использовать библиотеку, нахожу ошибки. Как сообщать об ошибках?
68. rpgshnik 2457 02.11.20 07:13 Сейчас в теме
(67) можете сообщать в данную публикацию или в личку, как удобнее
Оставьте свое сообщение

См. также

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    3724    comol    21    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    35434    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    29079    John_d    22    

СКД. Шаг 3. Используем макеты для оформления отчета

Работа с интерфейсом v8 v8::СКД 1cv8.cf Бесплатно (free)

В данной публикации рассмотрим базовый подход к использованию собственных макетов в СКД на примере формирования небольшого отчета.

13.01.2020    19207    aximo    14    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    38232    unichkin    74    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    21975    kuzyara    38    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    18445    YPermitin    58    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    9375    Sibars    19    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    31700    tormozit    104    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

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

07.10.2019    32443    HostHost    40    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    38482    Yashazz    50    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    62583    rpgshnik    68    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    79007    tormozit    131    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    56108    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    31881    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    26817    YPermitin    80    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    49700    tormozit    48    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    34288    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    101152    ids79    56    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    42134    avalakh    26    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    46321    tormozit    74    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    27685    json    15    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    71883    ids79    12    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    38970    ids79    27    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16347    m-rv    2    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    27800    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    20232    SeiOkami    50    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    55999    ids79    17    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    20855    m-rv    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    58411    ids79    26    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    26721    dmurk    146    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    45527    YPermitin    52    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    31900    m-rv    21    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    47860    YPermitin    30    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    37337    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    28340    ellavs    90    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

05.12.2017    28755    itriot11    34    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    33749    YPermitin    53    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    23714    Vladimir Litvinenko    28    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    44631    ids79    11    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    77999    Serginio    110    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    28621    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    44567    ids79    72    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    36831    ids79    40    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    39363    ids79    49    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Публикация представляет из себя краткие примеры того, как можно заполнять параметры СКД программно так, чтобы все параметры и отборы были доступны в быстрых настройках и в обычных (типовых) настройках параметров и отборов СКД.

13.11.2018    54469    Unk92    25    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    29948    grumagargler    28