Декомпиляция элементов формы для 8.2 для обычных форм (не управляемых).

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

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

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

Обработка предназначена для динамического формирования реквизитов при следующем алгоритме:

  1. Сначала выполняются работа по техническому заданию, реквизиты добавляются на форму.
  2. После принятия работ, с помощью данной обработки в режиме предприятия считывается код добавленных реквизитов, он добавляется в общий модуль или модуль формы.
  3. Добавленные реквизиты удаляются с формы, теперь они формируются из кода.

Обработка сделана на основе данной: //infostart.ru/public/22147/, но имеет следующие отличия:

  1. Та обработка универсальна, данная же направлена на реализацию четко одной задачи, то есть подогнана по нее.
  2. Моя разработка работает гораздо быстрее.
  3. Декомпиляция производится только нужных элементов, а не всех, и потому не нужно выискивать нужные в итогом текстовом файле.
  4. Моя разработка выполнена на 8.2, предыдущая же на 8.1, что сейчас приводит к немного неверному формированию ее. Например в коде реализовано отсекание вывода свойств реквизитов, значение которых идентично стандартному. То есть у поля ввода есть свойство "АвтоКонтекстноеМеню", значение по умолчанию которого равно Истина, и если оно так и осталось равно Истина, то выводить его смысла нет. Но в 8.1 при проверке булевского реквизита возращалось строка "Истина", в 8.2 же возвращается "Да",поэтому в той обработке выводятся абсолютно все реквизиты.
  5. Перестроена логика, улучшена юзабилити.

Описание разработки: В левом дерево у метаданного выбирается нужная для декомпиляции форма, при этом в правом дереве формируется дерево элементов формы. При нажатии на галочки в правом дереве в табличном форме формируется код для для вывода элемента программно. Если нужно декомпилировать все элементы, то нажимается кнопка в нижней панели "Декомпилировать всю форму". Левое и правое дерево можно сдвигать, чтобы пространство для кода увеличивалось.

Вместо кода с присвоением длины, ширины, лево, вверх, выводится процедура " УстановитьПоложениеЭлемента(Надпись,25,19,322,103);", ее необходимо вставить в модуль с кодом вывода элементов формы, ну или поместить в общий модуль.


Процедура УстановитьПоложениеЭлемента(Элемент,Верх,Высота,Лево,Ширина)

   
Элемент.Верх = Верх;

   
Элемент.Высота = Высота;

   
Элемент.Лево = Лево;

   
Элемент.Ширина = Ширина;

КонецПроцедуры

Сделано, чтобы выводить меньшее количесто строк.

 

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

Наименование Файл Версия Размер
ДекомпиляцияЭлементовФормы.epf

.epf 28,16Kb
437
.epf 28,16Kb 437 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
0. Istur 1444 28.11.11 10:18 Сейчас в теме
Декомпиляция отдельных элементов формы и самой формы в общем, для формирования кода для динамического вывода реквизитов.

Перейти к публикации

1. German 874 28.11.11 10:18 Сейчас в теме
Что с определением цветов и шрифтов из стиля? :)
Знаю только одну обработку в которой это реализовано.
2. Istur 1444 28.11.11 10:44 Сейчас в теме
(1) Нет, не реализовано. Мне пока это не нужно.
3. Поручик 4471 28.11.11 11:00 Сейчас в теме
(2) Добавь в описание, только для обычных форм.
4. Istur 1444 28.11.11 11:04 Сейчас в теме
5. ValeriTim 20 28.11.11 11:24 Сейчас в теме
(1) какая обработка это делает ?
6. German 874 28.11.11 11:33 Сейчас в теме
(5) Ei полное (ВЫПОЛНЯЕМОЕ) перобразование, позволяющее скопировать форму
7. vasiliy_b 281 29.11.11 09:51 Сейчас в теме
Да, такую бы обработку для управляемых форм!
44. Sverkalov 127 28.12.11 22:09 Сейчас в теме
45. AlexO 130 24.01.12 02:23 Сейчас в теме
(44) что-то сомнительно... в тонком же это невозможно в принципе - так откуда "для управляемых форм"??
46. vasiliy_b 281 24.01.12 09:04 Сейчас в теме
(45) Почему же невозможно? Программно добавлять элементы на форму можно?! Обходить все элементы формы можно?! так почему же это нереально?
47. AlexO 130 25.01.12 01:32 Сейчас в теме
(46) в УП нельзя. УФ формируются динамически, поэтому программно ничего добавить нельзя.
Только если в режиме толстого клиента.
48. vasiliy_b 281 25.01.12 09:10 Сейчас в теме
(47) AlexO, А как же тогда реализован вывод реквизитов свойств объектов на формы? В типовых конфигурациях в управляемых формах? Прежде чем говорить посмотрите сначала УТ 11 например, в справочник номенклатур добавьте пару свойств.... и о чудо дядьки из 1с прибегут и добавят вам эти реквизиты к объекту, чтоб они динамически сформировались.... а потом еще будут прибегать когда вы будете обновления накатывать.
51. AlexO 130 29.01.12 15:17 Сейчас в теме
(48) да, ошибся, извините.
Думал, только невизуальные реквизиты можно.
Посмотрел, добавлять можно, но что-то все через ж.. происходит с результатом..
60. AlexO 130 31.03.12 14:59 Сейчас в теме
(48) vasiliy_b,
в справочник номенклатур добавьте пару свойств.... и о чудо дядьки из 1с прибегут и добавят вам эти реквизиты к объекту, чтоб они динамически сформировались....

ну и где же динамически добавленные "реквизиты"? уж не хранятся ли они в строго ограниченных регистрах свойств объектов?
вы или ваши дядьки из 1с сделате так, чтобы "программно созданный" реквизит хранил данные, а не просто использовался для подстановки предопределенных значений??
49. Yasen 490 25.01.12 12:48 Сейчас в теме
(47) AlexO,
программно ничего добавить нельзя

Откуда такие сведения если не секрет? Религия не позволяет или Нуралиев запретил?
8. alekseineputin 29.11.11 09:59 Сейчас в теме
Всё здорово, помогает экономить время на динамическом добавлении элементов в форму.
Плюс однозначно ;)
9. Поручик 4471 29.11.11 10:09 Сейчас в теме
(8) Нет, всё это знать не обязательно. Для этих целей есть СП, мануалы, шаблоны кода. Главное знать что искать и как искать.
AlexO; Andry.Boris; +2 Ответить
10. alekseineputin 29.11.11 10:39 Сейчас в теме
(9) Ладно, не нападай :) От шаблонов кода очень часто остаются куски причудливой формы :D Или я после НЕ тех программистов работал ;)
58. AlexO 130 30.03.12 18:11 Сейчас в теме
(8) mamanelli,
ведь нормальный кодер должен знать это "на кончиках пальцев"

ждем статью, где все, что надо будет знать программисту "на кончиках пальцев", будет описано и выложено в коде, набранном именно таким же методом - без справки по памяти ))
115. tchvlad 27.08.12 15:37 Сейчас в теме
(8) mamanelli,

Уважаемый не полно оценил :)

Какие еще кончики пальцев? Тупо кодить массу текста, когда можно автоматизировать?
Я использую аналоги этой разработки - мои кончики пальцев и так не знают отдыха, многое умеют, а потому жирный плюс.
11. woozee 48 29.11.11 11:52 Сейчас в теме
Понять не могу для чего она =) И чем полезна она будет))
12. Istur 1444 29.11.11 12:09 Сейчас в теме
(11)Мне кажется в описании все написано. Ну а если другими словами, то обработка, чтобы добавленные программистом реквизиты, колонки, кнопки в типовых конфигурациях выводить программно, дабы при обновлении все это не затерлось, да и просто чтобы процесс обновления был быстрее и менее сложен.
13. woozee 48 29.11.11 14:43 Сейчас в теме
Да? Есть одна формочка стандартная суперпеределанная.... Надо проверить... Но суть не в этом) Идея (в моем случае) понравилась.
А привязки по форме в обычной форме тоже программно описывает?:)
14. Istur 1444 29.11.11 14:44 Сейчас в теме
(13) Да, привязки описывает. Это одно из самых важных, как же без них)
15. Yasen 490 29.11.11 15:12 Сейчас в теме
Спасибо, плюс.
Ждем когда управляемые формы достигнут подобного уровня программизма )
16. woozee 48 29.11.11 16:11 Сейчас в теме
Не работает) Минус) В единственной сложной форме и то не пригодился))
1Ска виснет, нагрузка на комп возрастает до максимума, через продолжительное время вылетает.
Проблема в 573 строчке (Цикл) - то есть "зацикливание".

Ждем фикс) Или уже не ждем))
17. Istur 1444 29.11.11 16:15 Сейчас в теме
(16) У меня не возникало подобное.. А какие значения в "СтрИсточник" в зацикливаемой строке? И что за форма?
18. woozee 48 29.11.11 16:46 Сейчас в теме
Бухгалтерия 2.0.29 СписниеСРасчетногоСчета.ФормаДокумента В СтрИсточник строка дерева =) Они там меняются эти деревья) Значения вроде адекватные, а что так долго - я не знаю. но в замере производительности оно зацикливается.
Форма Переделана в плане того что добавлена панелька с добавочной страницей, на эту панельку перенесена основная панелька, та самая с кучей страниц. Ну и пара полей добавлено )) Ну как то так)))
37. AlexO 130 06.12.11 22:14 Сейчас в теме
слушай, Истур, а это ведь ты натолкнул меня на мысль со своей идеей дискретно декомпилировать.. хотя и так вроде было на поверхности, а вот поди ж ты... ))
надоть тебе плюсик за это поставить...
Так проблема из (18) поправлена?
если можно, пришли исправленный вариант по личке... а то тут с этими ограничениями замучаешься качать...
39. woozee 48 07.12.11 09:06 Сейчас в теме
(37) AlexO, странно, муза под конец рабочего дня приходит =)
19. AlexO 130 30.11.11 01:34 Сейчас в теме
все делается намного проще.
копируется форма и меняется все что нужно, подключается паровозом к оснвоной.
а программно создавать - в любом случае никакие обработки не помогут.
Вообще, создание программно чего-либо и 1с - вещи несовместимые и чреваты ошибками и лажей.
Ну не предполагало 1с так делать, не предполагало....
Craig; 1cbit_tomsk; Redhatych; +3 1 Ответить
21. woozee 48 30.11.11 09:19 Сейчас в теме
(19) AlexO,
Идея программно добавлять нестандартные элементы намного проще чем постоянно отслеживать изменения в элементах формы. Что я и взял на вооружение. Правда перерисовывать то что у нас с этой формой - не представляю даже себе КАК))) Вернее... лениво даже представлять)
На счет паровозом к основной - Если документ не ахти какой, очень редко обновляется - то да, в какой то степени возможно. Дело в том что в этом случае сложно отслеживать изменения и гораздо чаще будут вылетать ошибки после обновления.
Самым правильным будет просто переносить свои кнопочки, поля и т.д. Ну и что, что это может занять продолжительное время - зато практически не возникают ошибок)
suggestive; CratosX; Istur; +3 Ответить
22. Istur 1444 30.11.11 12:41 Сейчас в теме
(21) +1

(20)
Вообще, создание программно чего-либо и 1с - вещи несовместимые и чреваты ошибками и лажей.
Ну не предполагало 1с так делать, не предполагало....


Да ты что) А у меня проект, где все добавленные реквизиты выводятся программно, благополучно уже сдан и работает.

а программно создавать - в любом случае никакие обработки не помогут.

Ну во-первых цель обработки не сделать вместо программиста, а облегчить, точнее ускорить добавление. Нужно понимание как программно выводить, тогда поможет.

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


Проще? Неожиданно) Это по сути значит, что форма будет отключена от обновлений, то есть само действие не имеет никакого смысла. Это тоже самое, что при обновлении у формы снимать флажок обновления. И рано или поздно возникнут проблемы, потому что что-либо добавлять нужно обычно в часто используемых объектах метаданных, обновления для которых приходят если не каждый релиз, то через релиз.
23. woozee 48 30.11.11 14:49 Сейчас в теме
(22) Мне можно надеятся на испралвение ошибки "зацикливания", или забить?:)
24. Istur 1444 30.11.11 14:59 Сейчас в теме
(23) Да, исправлю. Единственное сейчас запар некоторый на работе, но до конца недели точно время найду.
26. AlexO 130 30.11.11 23:43 Сейчас в теме
(22) собственно, в (25) вам ответили. Там как один из вариантов подключения допформы.
Основная форма остается для обновлений, где-то (можно перед открытием основной формы - при обновлении обновлять спокойно с закрытыми глазами, только потом вставить строчку обратно переключения-ответвления на допформу) вставляется переключатель, допформа один-в-один с основной+изменения, какие надо было внести.
Пользователь открывает как обычно, получает "родную" по внешнему виду форму с доработкой, старая остается нетронутой и лежит, ждет последующих обновлений.
Допформу, кстати, не обязательно пихать в документ, а оставить отдельной обработкой в конфе (и затираться она не будет), а подключать её именно как форму, с сохранением всех остальных событий и процедур родного документа.
(25) такое может потребоваться как раз там, где нужно и обновления ставить "неглядя", и все-таки внести изменения в "типовую" форму. Т.е. совместить несовместимое.
Что и удается.
(22) а все программно выводимые реквизиты... механизм отслеживания изменений - отсутствует (кроме визуального восприятия), механизм проверки и контроля создаваемых программно элементов - отсутствует, набор инструментов для создания таких якобы "программных" элементов (на самом деле - это создание куцых "вроде поля"-элементов, как и все полууправляемые или совсем неуправляемые ЭУ в 1С) - отсутствует.
В конце концов, будет куча кода, который рухнет под собственной тяжестью.
"сдал проект".. Сдать - полдела, еще и сопровождать это надо. А от этого, я так понимаю, вы самоустранились.
Прекрасно понимая, что снова разгребать кучу кода от "программно создаваемых элементов" - занятие не для слабонервных.
27. o.nikolaev 01.12.11 07:14 Сейчас в теме
(26)
Ну видимо как-то так, да - "совместить несовместимое". И склоняюсь к тому что эту стратегию можно рекомендовать для применения как раз в таком случае - "впихнуть невпихуемое", а в случае когда есть возможность создать доп. формы (обработки с дин. списками и etc.) все же следует создавать объекты, используя префиксы, общие модули и т.п.
---
Мнение мое и не обязательно правильное.
30. i132 115 01.12.11 17:05 Сейчас в теме
(26) Идея: для обновлений оставить Основную форму (без визуальных изменений) а добавленные реквизиты хранить на форме _дополнительные - и добавлять при открытии обходом всех элементов этой формы.
:удобно тем что видно на глаз новые реквизиты и легко изменить их положение.
36. AlexO 130 06.12.11 22:09 Сейчас в теме
хотя у меня есть идея, где все это "программное" чудо пригодится... как раз для "чистого" творчества нужно...
только боюсь, даже в условиях ограниченных требованиях, которые я предъявлю, программное формирование элементов от 1С не выйдет из своих жестких рамок..
А декомпилировать всю форму со всеми элементами из=за обновлений, чтобы добавить один-два новых элементов на форму..
А почему никто не попробовал сделать как предложено в (30) - добавлять только нужные, и привязками/размещением играть?
хотя сами элементы могут сместится на новой форме.... а это уже никак не отследишь программно - или писать целый механизм сравнений и корректировок..
короче, я вам способ подсказал, но можете все делать программно ))
а я попробую в том механизме, где это действительно нужно и очень важно...
57. AlexO 130 30.03.12 18:08 Сейчас в теме
(22)
Да ты что) А у меня проект, где все добавленные реквизиты выводятся программно, благополучно уже сдан и работает.

ну, и как обновляете модуль формы со всеми процедурами обработки таким образом созданных элементов?
25. o.nikolaev 30.11.11 22:03 Сейчас в теме
Вот все-таки, для чего это может пригодиться? Неужели нельзя обойтись без генерации кучи кода? Что касается форм объектов - ну это понятно - создаются создаются доп. формы журналов (списков) в них отлавливается "ПриВыборе" и открывается "своя" форма объекта. Какая ситуация может потребовать использования такого подхода при доработке типовой конфигурации с возможностью сохранения обновлений?
28. vkr 101 01.12.11 07:39 Сейчас в теме
По-моему, предложенный автором метод - прекрасный вариант компромисса для вечно загруженного 1С-программера ! :)
Лично я обязательно начну постепенно использовать - задолбало каждый раз свои "кнопки" перегонять в новый билд...
31. AlexO 130 01.12.11 22:48 Сейчас в теме
(28) vkr,
как раз нисколько не прекрсаный, вам предложен более простой и надежный, а главное - сопровождаемый метод.
Не понимаете - так и скажите.
(29) woozee,
>> Чем хороша данная обработка - посидел, потыкал кнопки, скопировал код, описал красиво комментариями и забыл до УФ))
С сопровождением кода проблем не будет никаких. Проблемы возникают только у тех фирм которые сопровождаются у фирм-франчайзи которые имеют штат неопытных сотрудников, либо фирм которые наняли "сопроводителя" "подешевле".
- ну что ж, остается вам пожелать получить срочное задание по доработке/исправлению вот после такого же программиста "а че тут непонятно, если не можешь разобрать программно <мной> созданные формы - ты дурак".
А 1С специально сделана, чтобы путать всех и вся. И не надейтесь, что вас кто-то пожалеет и будет писать "как вам удобно/известно". 1с-ники - в большинстве народ малограмотный.
32. woozee 48 02.12.11 09:23 Сейчас в теме
(31) AlexO,
>> "а че тут непонятно, если не можешь разобрать программно <мной> созданные формы - ты дурак"

Самое интересное что есть доля правды))) Дело в том что есть некий стандарт разработки, предложения от 1С. Все эти материалы находятся на диске ИТС. Если хотя бы о них догадываться и если еще немного и почитывать, то разбираться в стандартных конфигурациях, и в коде тех программистов которые хотя бы примерно им придерживаются - проблем особых не возникает))

......
//Программист =========
  ДобавитьПрограммноЭлементыФормы();
//Программист =========
......

//Программист =========
Процедура ДобавитьПрограммноЭлементыФормы()

  //Поле ввода и Надпись ФизЛица
  ......

  //Поле ввода и Надпись Договора
  ......

КонецПроцедуры
//Программист =========
Показать


Чего сложного?:)

(30) Дело в том что бывает добавлена страница в панельке без отображения заголовков этих страниц. Либо забываешь привязать процедурку к стандартному реквизиту, например, ПриИзменении... ПриВыборе
CratosX; vkr; +2 Ответить
33. AlexO 130 02.12.11 22:27 Сейчас в теме
(32) woozee,
1с сама же и нарушает везде и свюду свои "правила".
потому у 1с главное правило - никаких правил...
34. vkr 101 05.12.11 08:21 Сейчас в теме
(31),(33) Вот уж никогда не придерживался "стандартов разработки" от 1С...
Могу посоветовать Вам прочесть прекрасную книгу :
Мифический человеко-месяц или Как создаются программные системы
(The mythical Man-Month: Essays on Software Engineering)
Автор: Фредерик П. Брукс
Издание 1975 или 2010 г.
Надеюсь, она Вам будет полезна...
35. AlexO 130 06.12.11 21:51 Сейчас в теме
(28) vkr,
а и не перегоняйте, сделайте, как я советую в (26) ))
и просто, и обновлять больше не надо.. разве что изменится сама "родная" форма-родитель, и вам захочется сделать "потомка" снова на неё похожим..
(30) i132,
что за форма "Дополнительные"? предлагаете создать новую форму, хранить на ней некие новые реквизиты, потом программно считывать их оттуда и вставлять программно же на старую форму?
а зачем вся эта длиннющая цепочка? а если "порвется" где-нить - как отследите, что перестало работать?
(34) vkr,
теория программирования, теории обработки БД, хранения данных, и 1с - несовместимы ))
это уже известно давно с выходом снежка...
(0) рано или поздно возникнут проблемы как в (18), т.к всегда "остаются куски причудливой формы", все эти программные изыски неуниверсальны в силу уже указанной причины - ребята, это не Си, а 1С, которая плевать хотела на все правила, стандарты и развитие программирования, а с выходом 8.2 - и вообще плевать на программиста..
38. vkr 101 07.12.11 08:39 Сейчас в теме
(35) Да, я с Вами согласен по поводу идеологической несовместимости 1С с нормальными принципами...
Хотя, по мере возможности, борюсь у себя с этой проблемой (пусть даже за счет некоторых потерь сил и нервов).
Спасибо за диалог! :)
40. AlexO 130 07.12.11 22:48 Сейчас в теме
(38) vkr,
с 1с бороться бесоплезно ))
примените стиль айкидо - уйти с линии удара и пусть валится...а как упадет - можно диктовать свои условия.. ))
(39) woozee,
что-то путное на 1с можно изобрести только абстрагировавшись от 1с ))
43. vkr 101 12.12.11 08:21 Сейчас в теме
(40) Спасибо, Вы очень точно сформулировали методику взаимоотношений с 1С... :)
Буду теперь знать, как это называется...
Только на диктовку им условий мне начхать - я работаю по-своему, клиенты довольны - это главное...
82. AlexO 130 27.04.12 02:19 Сейчас в теме
(28) vkr, (29) woozee,
вот и прошел мой пример испытание временем ))
Попробуйте программно создать вкладку, ТП на ней, компанель к ней.... на последнем пункте все и рушится.
Нельзя создать такую панель.
А работает единственный мой способ с подменой формы.
Так что программное создание элементов, мягко говоря, оченьо узкое и специализированное занятие.
(22)
Да ты что) А у меня проект, где все добавленные реквизиты выводятся программно, благополучно уже сдан и работает.

значит, ничего серьезного не делали программно ))
Вот даже элементарную стандартную панель нельзя сделать ))

Upd:
Ниже разобрались, что можно сделать создание КП через общий модуль (но не глобальный), заработало автозаполнение (почему не работало - причина осталась неясна), и без хранения исходной КП с кнопками на родительской форме.
83. bambr1975 844 27.04.12 10:00 Сейчас в теме
(82) AlexO, честно говоря, Вы производите впечатление человека неглупого, но какого-то ни во что не верящего и ужасно невнимательного.
Специально для Вас смоделирована ситуация с программным добавлением табличного поля и автозаполнением связанной с ним командной панели.
P.S. Ограничения в программном добавлении элементов на форму безусловно есть - но и ручную обработку поступающей информации тоже никто не отменял - просто можно же себе жизнь упростить...
Прикрепленные файлы:
ВнешняяОбработка1.epf
84. AlexO 130 27.04.12 17:42 Сейчас в теме
(83) именно это и пробовал - и в модуле формы, и в общем модуле:
     КоманднаяПанель = ЭлементыФормы.КоманднаяПанель2;
     КоманднаяПанель.ИсточникДействий = ЭлементыФормы.ТабличноеПоле1;
	 КоманднаяПанель.Автозаполнение=Истина;

- не работает...
Сейчас вообще ругается - "Перменная не определена: ГраницаЭлементаУправления".
В общем, веселая у меня база...
85. bambr1975 844 27.04.12 17:50 Сейчас в теме
(84) AlexO, источник действий - существующий реквизит формы (он у Вас существует? Проверьте!)
ГраницаЭлементаУправления - системное перечисление. Доступно в толстом клиенте. Вы в толстом клиенте работаете?
Короче - разобраться можно... Если понимать, зачем Вам это...
86. AlexO 130 27.04.12 17:59 Сейчас в теме
(85) bambr1975,
источник действий - существующий реквизит формы

мы же его (ТабличноеПоле) полностью программно создаем? или все-таки должно быть уже в реквизитах формы - реквизит табличное поле?
. Доступно в толстом клиенте

я знаю, что это системное перечисление. Как и "ТипКнопкиКоманднойПанели".
Все работало, а потом - раз, и "не видит" перечислений...
Работаю конечно в толстом. Все уже проверил (сама думал - вдруг слетело).
87. AlexO 130 27.04.12 18:04 Сейчас в теме
(83) bambr1975,
вот, кстати, мой идентичный неработающий код:
	КоманднаяПанель = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"),"кпПроект",Истина,ЭлементыФормы.Панель1);
	УстановитьПоложениеЭлемента(КоманднаяПанель,10,25,6,380);
	КоманднаяПанель.ИсточникДействий = ЭлементыФормы.тпМенеджеры;
	КоманднаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ,КоманднаяПанель,ГраницаЭлементаУправления.Верх);
	КоманднаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.Панель,ГраницаЭлементаУправления.Право);
	КоманднаяПанель.АвтоЗаполнение = Истина;

тпМенеджеры - до этого программно созданное ТП.
29. woozee 48 01.12.11 09:45 Сейчас в теме
Спорить можно бесконечно))
Всем известно что для решения задачи присутствует разновсяческое множество вариантов. От кривых до идеально правильных, оптимизированных и прям супер-пупер...
Для проектирования своего нововведения или "хотелок" пользователей нужно учитывать не только легкость обновлений, быстродействие, но и самым важным будет удобство пользователей в работе с энтим инструментом)) При этом учитывать эргономичность формы, и не потерять производительность работы.
Чем хороша данная обработка - посидел, потыкал кнопки, скопировал код, описал красиво комментариями и забыл до УФ))
С сопровождением кода проблем не будет никаких. Проблемы возникают только у тех фирм которые сопровождаются у фирм-франчайзи которые имеют штат неопытных сотрудников, либо фирм которые наняли "сопроводителя" "подешевле". Но это другая история))
42. echo77 1183 10.12.11 13:45 Сейчас в теме
При добавлении колонки в ТабличноеПоле метод УстановитьДействие не прокатывает :-/

Было бы неплохо накидать справку в обработке, подобную той что вы здесь привели
50. vasiliy_b 281 27.01.12 10:51 Сейчас в теме
Ошибка: Берем ТЧ документа, добавляем новый реквизит(я добавлял типа число (15,3)) далее выводим эту колонку на форму привязываем событие "ПриИзменении", и добавляем изменение цвета при выводе строки.
Декомпилируем эту колонку и получаем следующие ошибки:
Было:
Колонка.УстановитьДействие("ПриИзменении",Новый Действие("Товары_БруттоПриИзменении"));

Надо
Колонка.ЭлементУправления.УстановитьДействие("ПриИзменении",Новый Действие("Товары_БруттоПриИзменении"));

...

Было
Колонка.ЭлементУправления.ТипЗначения = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,3));
Это не нужно, ругается т.к. тип уже назначен. И еще нужно добавить:
Колонка.Имя = "_Брутто"
Иначе имя колонки добавляет "Колонка1"
52. amiralnar 8 02.02.12 16:31 Сейчас в теме
Отличная обработка, спасибо! Пол года о ней мечтал. Ну теперь - держись, УПП =)
53. amiralnar 8 08.02.12 17:02 Сейчас в теме
Есть проблема:

Для декомпиляции выбираю форму реализации товаров и услуг.
При работе через терминал (возможно это важно) подвисает на процедуре ДеревоЭлементовФормыПриПолученииДанных(Элемент, ОформленияСтрок)
За 5 секунд успевает выполнить эту процедуру 85 000 раз.

Пока отключаю процедуру и ориентируюсь по пустым строкам.

Можно ли при построении дерева сразу указать представление ячеек?
54. bambr1975 844 08.02.12 21:26 Сейчас в теме
(0),(53) - алгоритм этой обработки очень пригодился в написании главного алгоритма публикации http://infostart.ru/public/106310/
поэтому, рискну здесь привести свои корректировки процедуры модуля обработки СформироватьДеревоСЭлементамиФормы :

Для каждого СтрДерева Из МассивСтрок Цикл
Панель = СтрДерева.Элемент;
ИмяПанели = Панель.Имя;
Для каждого СтраницаПанели Из Панель.Страницы Цикл
пФормаКопия.ЭлементыФормы[ИмяПанели].УстановитьДействие("ПриСменеСтраницы", Неопределено);
пФормаКопия.ЭлементыФормы[ИмяПанели].Страницы.Удалить(0);
Для каждого Стр1Уровня Из ДеревоЭлементовФормы.Строки Цикл
Если пФормаКопия.ЭлементыФормы.Найти(Стр1Уровня.Элемент.Имя)=Неопределено Тогда
Если Стр1Уровня.ПарситьСтраницы<>ложь тогда
//в процедуре "ПередОткрытием" модуля формы обработки добавил колонку в дерево элементов формы
//КолонкиДерева.Добавить("ПарситьСтраницы",Новый ОписаниеТипов("Булево"));
//Еще - в самом начале процедуры СформироватьДеревоСЭлементамиФормы в начало цикла добавил
//Стр1Уровня.ПарситьСтраницы=истина;

Если Стр1Уровня.Страница = Неопределено Тогда
Стр1Уровня.Страница = СтраницаПанели.Имя;
Стр1Уровня.Панель=ИмяПанели;
Стр1Уровня.ПарситьСтраницы=ложь;

КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;

//пФормаКопия.ЭлементыФормы.Удалить(Панель);
//Для каждого Стр1Уровня Из ДеревоЭлементовФормы.Строки Цикл
// Если пФормаКопия.ЭлементыФормы.Найти(Стр1Уровня.Элемент.Имя)=Неопределено Тогда
// Если Не ЗначениеЗаполнено(Стр1Уровня.Панель) или Стр1Уровня.ТипЭлемента = "Панель" Тогда
// Стр1Уровня.Панель = ИмяПанели;
// КонецЕсли;
// КонецЕсли;
//КонецЦикла;

КонецЦикла;

Строки1Уровня = ДеревоЭлементовФормы.Строки;
ПослСтрока = Строки1Уровня.Количество()-1;
Для Сч = 0 По ПослСтрока Цикл
ТекСч = ПослСтрока-Сч;
ТекСтрока = Строки1Уровня[ТекСч];
Если ЗначениеЗаполнено(ТекСтрока.Страница) Тогда
СтрРодитель = Строки1Уровня.Найти(ТекСтрока.Панель+"_"+ТекСтрока.Страница,"ПолноеИмя",истина);
//было СтрРодитель = Строки1Уровня.Найти(ТекСтрока.Страница,"ИмяЭлемента",Истина);
НовСтр = СтрРодитель.Строки.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр,ТекСтрока);
ПеренестиПодчиненныеСтроки(НовСтр,ТекСтрока);
Строки1Уровня.Удалить(ТекСч);
КонецЕсли;
КонецЦикла;

В случае этих корректировок зависания (по крайней мере, у меня) не происходит. Структура дерева элементов формы тоже, по-моему, не страдает.
Somebody1; HolodZar; zqzq; wing; Cerberdm; Vida; amiralnar; +7 Ответить
112. Feelthis 36 28.06.12 15:23 Сейчас в теме
Если сделать как написано в комментарии:(54) то все прекрасно работает, а так при анализе документа "Начисление по больничному листу" зацикливался в процедуре "ПеренестиПодчиненныеСтроки" модуля объекта и 1С в дамп вываливалась
120. Cerberdm 40 30.06.13 11:38 Сейчас в теме
(54) bambr1975, Спасибо, помогло.
121. Cerberdm 40 30.06.13 11:42 Сейчас в теме
Автору огромная благодарность ) начал уже создавать свою обработку для этих же целей, хорошо вовремя на ссылку наткнулся, не так много времени убил. Плюсую без вопросов! Отличная работа) - особенно с учетом (54)
127. wing 21 22.04.15 10:18 Сейчас в теме
Обработка не добавляет страницы на панели... а в остальном очень удобна с правками (54)
55. kiruha 386 15.03.12 05:00 Сейчас в теме
Возможно ли от программно созданной формы перейти к непрограммно ?
Шаг обратный декомпиляции, чтобы клиенту высылать стандартную, нединамическую ?
56. AlexO 130 30.03.12 17:38 Сейчас в теме
(55) kiruha,
нет, невозможно - механизма превращения кода 1с в "физический" объект с записью в конфигурацию (на диск) не существует.
Впрочем, в 1с8 в принципе нет выгрузки объектов интерфейса отдельно.
Даже просто создания махонького реквизита для хранения данных у объекта.
Это привет вам от Великого Отсутствия ООП в 1с ))
Если же вы про превращение УФ в обычную форму - тоже невозможно автоматически.
59. rasswet 82 31.03.12 10:03 Сейчас в теме
при попытке разобрать форму (устанавливаем курсор на форму элемента в дереве слева) в ЗУП релиз 47 (командировки организаций) падает сеанс 1С:Предприятие 8.2 (8.2.15.301)
61. AlexO 130 31.03.12 15:00 Сейчас в теме
63. rasswet 82 31.03.12 20:22 Сейчас в теме
(61) ну..не совсем..другой парсер с этого сайта парсит без ошибки.
но мне нравится работать с тем, который тут. а он валится.
64. bambr1975 844 31.03.12 20:59 Сейчас в теме
(63) rasswet, попробуйте слегка поправить код (как описано в (54)) - может, поможет ;)
62. AlexO 130 31.03.12 17:46 Сейчас в теме
В УПП в справочнике Проекты при выборе ФормыЭлемента - вылет.
65. AlexO 130 01.04.12 01:11 Сейчас в теме
(62) нашел проблему (вариант решения в части определения родителя в (54)):
модуль объекта, в процедуре СформироватьДеревоСЭлементамиФормы:
строку
СтрРодитель = Строки1Уровня.Найти(ТекСтрока.Страница,"ИмяЭлемента",Истина);	//поиск по уникальным значениям

заменить на:
			//если элементы имеют одинаковое название - то сам элемент может стать своим "родителем",
			//и тогда далее в рекурсивной процедуре "ПеренестиПодчиненныеСтроки" произойдет зацикливание.
			//Поэтому необходимо применить поиск по неуникальным значениям в коллекции дерева.
			ПараметрыОтбораРодителей = Новый Структура ("ИмяЭлемента", ТекСтрока.Страница);
			НайденныеРодители = Строки1Уровня.НайтиСтроки(ПараметрыОтбораРодителей, Истина);	//массив найденных родителей с одинаковыми именами
			Если НайденныеРодители.Количество() > 1 Тогда
				//если среди найденых "родителей" кроме самого родителя и элемента будут еще "родители" (элементы с тем же именем),
				//то делаем родителем первого найденного:
				Для Каждого СтрокаРодитель Из НайденныеРодители Цикл
					Если НЕ СтрокаРодитель = ТекСтрока Тогда
						//нашли ссылку на родителя:
						СтрРодитель = СтрокаРодитель;
						Прервать;
					КонецЕсли;
				КонецЦикла;
			Иначе
				СтрРодитель = Строки1Уровня.Найти(ТекСтрока.Страница,"ИмяЭлемента",Истина);	//поиск по уникальным значениям
			КонецЕсли;
Показать


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

Остался непонятным еще вопрос. Зачем в цикле
	Для каждого СтрДерева Из МассивСтрок Цикл
		Панель = СтрДерева.Элемент;
		ИмяПанели = Панель.Имя;
                .....
	КонецЦикла; 

заполняется "Стр1Уровня", когда в конце все равно переменная перезаполняется данными дерева:
Строки1Уровня = ДеревоЭлементовФормы.Строки;


Но еще постоянно ошибка в попытке (не знаю, критично или нет для результата?):
Процедура "ДобавитьДействие"
Ошибка времени выполнения, стр 140
Ошибка при вызове метода контекста "ПолучитьДействие".

Исправленный файл обработки с изменениями из (54):
Прикрепленные файлы:
ДекомпиляцияЭлементовФормы(испр).epf
66. rasswet 82 03.04.12 20:20 Сейчас в теме
(65) спасибо, завтра протестирую на той же форме.
67. rasswet 82 04.04.12 16:05 Сейчас в теме
(65) протестировал ваш файл.
теперь не виснет. но есть Ошибка
{ВнешняяОбработка.ДекомпиляцияИАнализФорм.МодульОбъекта(165)}: Поле объекта не обнаружено (Верх)
мТекст.ДобавитьСтроку(Таб + СтрокаПробелов + "УстановитьПоложениеЭлемента(" + ТекстЭлементДляРазмеров + "," +
69. AlexO 130 06.04.12 12:11 Сейчас в теме
(67) rasswet,
я не знаю, что у вас за конфигурация, и что за объект "Работники организаций", в котором есть некое ТабличноеПоле.
Поэтому здесь не помогу ничем.
По поводу
Поле объекта не обнаружено (Верх)

- у распарсиваемого объекта нет свойства "Вверх", которое ищет обработка и пытается изменить.
70. rasswet 82 06.04.12 14:06 Сейчас в теме
(69) зуп конфигурация. немного измененная..
68. rasswet 82 04.04.12 16:09 Сейчас в теме
(65) уточню. ошибку выводит когда ставлю Флаг напротив "работники организации" табличное поле. и при полном анализе формы. на других элементах ошибку не выдает.
71. AlexO 130 10.04.12 15:10 Сейчас в теме
(68) rasswet,
когда ставлю Флаг напротив "работники организации" табличное поле. и при полном анализе формы

если эти "Работники организаций" - это регистр сведений, то в типовой ЗУП ошибок нет.
73. rasswet 82 10.04.12 15:42 Сейчас в теме
(71)это документ "командировки организаций", табличная часть его называется "работники организации"
75. AlexO 130 10.04.12 17:48 Сейчас в теме
(73) rasswet,
ругается на поля ТП.
Поля "ОсвобождатьСтавку" и "НапомнитьПоЗавершении" - имеют тип булево (флажки), и, видимо, с этим и связано "непонимание" обработки. Остальные поля с дургими типами - отрабатывают.
72. dandrontiy 10.04.12 15:22 Сейчас в теме
Идея интересная. А вот бы обработку, которая из <неуправляемой> формы создавала <управляемую>
74. AlexO 130 10.04.12 17:41 Сейчас в теме
(72) dandrontiy,
1c в принципе "не предусмотрела" таких конвертаций и механизмов для этого не вводила в платформу.
76. dandrontiy 11.04.12 11:25 Сейчас в теме
(74) AlexO, Так я про это и говорю.
НО наверно можно собрав информацию о всех элементах формы попытаться создать кучу областей на управляемой форме, куда накидать такие же элементы. просто количество вложенных областей получится очень большим, и вручную такую работу проделать просто нереально.
77. AlexO 130 12.04.12 18:11 Сейчас в теме
(76) dandrontiy,
это вы про чисто механическую обработку визуальных элементов, которые и в 8.1, и в 8.2 - основаны у 1с на одних и тех же сишных бибилиотеках.
А с кодом-то что будете делать? или у вас форма будет работать и функционировать без кода формы? :)
78. mtv:) 1014 23.04.12 08:57 Сейчас в теме
(0) Наткнулся на ограничения программной генерации элементов формы:

1. В ФормеДокумента у ПоляВвода невозможно программно задать "Связь по владельцу".
2. В ФормеСписка при программной вставке Колонки в ТабличноеПоле, в диалоге "Отбор и сортировка" отсутствует втавленная Колонка.

Пока только это, возможно есть и другие ограничения.
111. bambr1975 844 06.05.12 13:30 Сейчас в теме
(78) mtv:),
1. В ФормеДокумента у ПоляВвода невозможно программно задать "Связь по владельцу".
2. В ФормеСписка при программной вставке Колонки в ТабличноеПоле, в диалоге "Отбор и сортировка" отсутствует втавленная Колонка.


Первая проблема вроде действительно не рещается.
Вторая - решается простым добавлением в код программного добавления строк:
ЭлементыФормы.ТабличноеПоле.НастройкаОтбора.РеквизитДобавленнойКолонки.Доступность=истина
114. frc 12.07.12 16:54 Сейчас в теме
(78) mtv:),
В ФормеДокумента у ПоляВвода невозможно программно задать "Связь по владельцу".

это ограничение еще с 8.0 - запрещено программно устанавливать СвязьПоВладельцу.
2. В ФормеСписка при программной вставке Колонки в ТабличноеПоле, в диалоге "Отбор и сортировка" отсутствует втавленная Колонка.

По Сортировке нужно отдельно прописать установку флага
ЭлементыФормы.ДокументСписок.НастройкаПорядка["ИмяКолонкиТП"].Доступность = Истина;

(111) bambr1975,
ЭлементыФормы.ТабличноеПоле.НастройкаОтбора.РеквизитДобавленнойКолонки.Доступность=истина

в Отбор вроде как попадает без этой строки сразу при создании.
79. sorb 25.04.12 08:40 Сейчас в теме
Отличная обработка, нередко ей пользуюсь.

На днях столкнулся с такой проблемой: при попытке анализа формы обработки "ПанельФункций" из БП 2.0 словил ошибку:
{ВнешняяОбработка.ДекомпиляцияИАнализФорм.МодульОбъекта(490)}: Поле объекта не обнаружено (Имя)
				Если пФормаКопия.ЭлементыФормы.Найти(Стр1Уровня.Элемент.Имя)=Неопределено Тогда
В отладчике видно следующее:
Стр1Уровня.Элемент = Панель (Тип Панель)
Стр1Уровня.Элемент.Имя = "Поле объекта не обнаружено (Имя)"
Стр1Уровня.ИмяЭлемента = "ПанельПериод"

Теперь вопросы :) :
1. Кто-нибудь пробовал анализировать данную конкретную форму? Если да, то возникала ли такая ошибка?
2. Из кода видно, что вложенность панелей не учитывается. Правильно ли я понимаю, что это и послужило причиной ошибки?

P.S. Шибко ковыряться сейчас нет времени, поэтому буду благодарен за любую помощь.
80. AlexO 130 26.04.12 23:54 Сейчас в теме
Вот и пришло время начать говорить о том, что НЕЛЬЗЯ сделать программно.
Нельзя создавать стандартные кнопки - Добавить, Переместить, Сортировать и т.д.
Потому как нужно задавать действие, а его как такового не существует - пока не создана панель с кнопками. Т.е. в платформу не вшиты события стандартных кнопок, на которые можно было бы сослаться - они генерируются при создании элемента. Создаешь панель - создаются кнопки и события. Либо можно сослаться на уже созданные кнопки, но только если они есть. АвтоЗаполнение компанели, кстати, тоже не работает при программном создании.
Это ответ 1с - ООПу и наследованию классов.
И даже программное создание своих кнопок - требует, чтобы события обработки действий находились в модуле формы, иное не работает ни при каких обстоятельствах (ссылки на форму/другие формы - бесполезны).
В 8.2 на УФ данную проблему можно обойти (создавать стандартные кнопки в своих панелях), но там свои проблемы - с размещением кнопок и далеко не в каждой пользовательской панели их можно разместить.
81. AlexO 130 27.04.12 01:45 Сейчас в теме
Далее. Нельзя программно переместить элемент с одной вкладки на другую.
Все интереснее и чудесатее..
88. bambr1975 844 27.04.12 18:05 Сейчас в теме
Реквизиты формы должны находиться на закладке "Реквизиты" у формы. Их программно создавать у нас не получится (в этом и есть ограничение. А вот ЭЛЕМЕНТЫ ФОРМЫ, связать с реквизитами и назначить им свойства - пожалуйста.
89. AlexO 130 27.04.12 18:09 Сейчас в теме
Ненадежно оно как-то все. Автозаполнение сразу не заработало, перечисления - перестал видеть немного погодя.
Системные кнопки тоже не видит. Вернее, их действия.
90. bambr1975 844 27.04.12 18:14 Сейчас в теме
В Вашем неработающем коде, скорее всего для тпМенеджеры не установлено
ЭлементыФормы.тпМенеджеры.Данные="<строка реквизита формы, значение которого у вас должно выводиться в это тп>;
Этот реквизит должен быть или табличной частью объекта, форму которого Вы разрабатываете или этот реквизит должен быть описан на закладке "Реквизиты" самой формы.
92. AlexO 130 27.04.12 18:16 Сейчас в теме
(90) bambr1975,
да ну как не установлено - установлено конечно же :)
ТабличноеПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"тпМенеджеры",Истина,ЭлементыФормы.Панель1);
	УстановитьПоложениеЭлемента(ТабличноеПоле,40,173,6,380);
	ТабличноеПоле.Данные = "МенеджерыПроектов";

где МенеджерыПроектов - ТЧ объекта
91. bambr1975 844 27.04.12 18:15 Сейчас в теме
Системные кнопки тоже не видит. Вернее, их действия

Ну... это смотря как эти действия задавать. У меня видит.
94. AlexO 130 27.04.12 18:19 Сейчас в теме
(91) bambr1975,
ну например, вот так:
кпПроектКнопки.Вставить(1,"Скопировать",ТипКнопкиКоманднойПанели.Действие,"&Скопировать",Новый Действие("Скопировать"));

хотел системную кнопку "Скопировать" заарканить.
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    2911    14    huxuxuya    11    

Формы. Трудности программной работы

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

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

06.10.2019    12331    YPermitin    31    

Альтернативный способ добавления элементов и реквизитов на формы

Работа с интерфейсом v8 ERP2 УТ11 Россия Абонемент ($m)

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

1 стартмани

09.09.2019    13106    23    bmk74    6    

Вам нравятся запросы в 1С?

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    22781    6    m-rv    88    

Расширенная настройка динамического списка УФ Промо

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

31.05.2017    34512    154    tormozit    25    

Открывашка ячеек таблиц

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм

1 стартмани

27.10.2018    18580    12    tormozit    31    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    23490    13    RocKeR_13    16    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    30307    26    informa1555    26    

Лучший подарок для бухгалтера - счёты 8.2 (со звуком) Промо

Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

(Толстый клиент) Подарите бухгалтеру счеты, и он(а) Вас никогда не забудет.

1 стартмани

13.05.2011    41711    922    Tatitutu    45    

Визуализация событий на временной шкале средствами "Поле HTML документа"

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469

1 стартмани

31.07.2018    25319    140    Plotks2017    27    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    54282    20    kalyaka    16    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар")

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    32067    88    m-rv    57    

Нечеткий поиск одним запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.12.2015    29626    71    vasvl123    9    

Заполняем по шаблону (по умолчанию)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    30081    20    mvxyz    17    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    28545    54    kwazi    6    

Программное формирование форматированной строки в стиле html+inline CSS

Работа с интерфейсом Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.

1 стартмани

18.11.2017    35302    39    bonv    11    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

30.05.2017    143051    13    signum2009    48    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    50037    36    Demanoidos    60    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    60595    11    wowik    32    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    64642    19    arakelyan    20    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    85793    163    igo1    54    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

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

1 стартмани

03.03.2016    19575    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

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

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

1 стартмани

17.02.2016    52803    54    yuraos    18    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    59479    195    balanton    23    

Яндекс.Деньги "Благотворительность"

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Яндекс.Деньги теперь в 1С. Форма для приема благотворительных взносов. Форму легко сделать и вставить на любую страницу сайта или блога. Платежи будут приходить на ваш кошелек. На форме есть три способа платежа: из кошелька, с банковской карты, с баланса мобильного.

1 стартмани

16.02.2016    24691    8    Tatitutu    5    

Мастер рассылки e-mail 2.2 для управляемых форм

Практика программирования Email v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m)

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    40965    20    milkers    4    

Передача больших пакетов через веб-сервисы

Практика программирования Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

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

1 стартмани

06.12.2015    59637    49    YPermitin    19    

Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram

Практика программирования Внешние источники данных v8 1cv8.cf Абонемент ($m)

В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram. В данной статье рассмотрим следующее: Использование HTTPСоединение; Чтение JSON для версии 1С 8.3.6 и выше, а также аналог JSON для версии 1С ниже 8.3.6; Подключение обработчика ожидания; Некоторые основные возможности API Telegram; Как создать бота для Telegram; Программное создание колонок дерева на управляемой форме;

1 стартмани

19.11.2015    100290    476    Luchik    209    

Быстрое определение интервалов в запросе

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    54486    35    ildarovich    41    

Полезные приемы при работе с Excel из 1С (Версия 3.1)

Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    216838    472    Zerocl    75    

Javascript и 1С. Кросс-платформенное взаимодействие

Практика программирования v8 1cv8.cf Абонемент ($m)

Что делать, если необходим богатый интерфейс, а управляемые формы нам его не могут обеспечить? Использовать HTML и JavaScript. В статье рассмотрено взаимодействие кода 1С и JavaScript, работающее на любой платформе: толстый, тонкий и веб-клиент, под Windows и Linux.

1 стартмани

14.09.2015    72303    209    VitaliyCeban    59    

Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I

Практика программирования v8 Абонемент ($m)

Данный проект является чисто исследовательским примером использования Code First и Linq to EF на примере 1С версии 7.7. Так как сам я программист 1С, то мне всегда было интересно, как можно перенести модель объектов 1С на компилируемые языки, и использовать мощь Linq to EF. С появлением Code First давно хотел прикрутить, но все как-то руки не доходили, и вот, наконец ..

1 стартмани

28.08.2015    23786    3    Serginio    2    

Универсальная учетная система с конструктором документов и справочников в режиме 1С: Предприятие

Инструментарий разработчика Практика программирования v8 1cv8.cf УУ Абонемент ($m)

Заголовок статьи звучит фантастично, но это не шутка. Занимаясь внедрениями, я часто сталкивался с ситуацией, когда надо было к типовой конфе приделать простенький модуль учета чего-нибудь, не специфичного для самой конфы. Например в УТ учет материалов в эксплуатации. Модуль обычно состоял из пары справочников (2-3), 3-х документов и регистра или пары регистров. Однажды подобные пристройки понадобились одновременно на 3 проектах. Скучно делать одинаковую работу, и я подумал, а что, если сделать универсальный инструмент, в котором пользователь сам сможет нарисовать себе справочники, реквизиты к ним, документы и движения. Т.е. конструктор полноценных документов в пользовательском режиме. Это оказалось не так сложно - все дело в подходящей архитектуре данных.

1 стартмани

29.07.2015    32824    142    informa1555    41    

NativeDraw: Компонента рисования для 1С [V2.6.2]

Разработка внешних компонент Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Рисуйте в формах 1С, также предлагается небольшое количество нерисовальных функций

1 стартмани

13.07.2015    49010    466    ПерваяСистема    147    

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7

Универсальные функции Практика программирования v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    29305    4    Serginio    1    

И снова "Как сжать картинки для экспорта в EXCEL?" или Умная картинка 8.2

Практика программирования Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

Прошла уже эпоха , когда экономили на трафике интернета. Но все же...повторюсь. Я предлагаю совершенно новый способ сжатия картинки - эффект в 20 раз !!!

1 стартмани

17.06.2015    31766    53    Tatitutu    10    

Кнопки управления группировками табличного документа для управляемых форм

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Универсальный механизм управления группировками табличного документа из управляемой формы

1 стартмани

02.06.2015    27476    29    unichkin    9    

Альтернативная визуализация данных для 1С 8.3.6

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Нужен приятный Bi Dashboard? Или просто красивый график/диаграмма для сайта? Тогда эта разработка для Вас!

1 стартмани

29.05.2015    32295    80    vano-ekt    3    

Регулярные выражения без COM объектов и внешних компонент

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

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

1 стартмани

09.02.2015    25829    19    boogie    38    

Асинхронные вызовы

Практика программирования v8 1cv8.cf Абонемент ($m)

В этой статье я покажу свою реализацию асинхронных вызовов серверных функций и процедур

1 стартмани

02.02.2015    44947    160    rtnm    25    

Разбор XML документа - почти все возможные способы

Обмен через XML Практика программирования v8 1cv8.cf Абонемент ($m)

К вам пришел XML документ, как получить из него данные для обработки в 1С. ЧтениеXML, ДокументDOM, XPath, ФабрикаXDTO, ПакетыXDTO в сравнении.

1 стартмани

05.11.2014    248232    734    svenderevsky    99