Программное изменение управляемых форм

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

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

#программирование1С #1C

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

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

Согласитесь, обновить доработанную таким образом форму значительно проще, чем вручную сравнивать и вносить все изменения формы при каждом обновлении. Конечно при сильном изменении типовой формы, могут потребоваться правки в процедуре программного дополнения формы, но такие случаи довольно редкие. Если в ходе разработки изменилась типовая структура объекта, то добавлять новые реквизиты на форму нет необходимости. Эти реквизиты будут доступны по пути «Объект.НовыйРеквизит».

Но иногда нужно добавить реквизит формы. Например, «Статус документа», который будет заполняться из специального регистра при открытии формы. Добавить новые реквизиты можно, открыв в 1С табличный документ, управляемая форма изменяется через команду ИзменитьРеквизиты(«ДобавляемыеРеквизиты», «УдаляемыеРеквизиты»).

«ДобавляемыеРеквизиты» и «УдаляемыеРеквизиты» – это массивы с элементами типа «РеквизитФормы». Тут все просто – «Добавляемые» добавляются, «Удаляемые» – удаляются.

Функция РеквизитФормы («ИмяРеквизита», «ТипРеквизита», «Путь», «Заголовок») создает объект типа «РеквизитФормы».

Тут важно понимать, что «ИмяРеквизита» содержит имя без точек. То есть имя без пути реквизита. Если нужно добавить реквизит, например, табличной части объекта, то уже в реквизите «Путь» указать путь к ТЧ реквизита – «Объект.Товары». «ТипРеквизита» задается через объект «ОписаниеТипов». После программного добавления реквизитов на форму нужно добавить элементы на форму или изменить свойства текущих. Для добавления новых элементов на форму есть два метода:

-Элементы.Добавить(«ИмяЭлемента», «ТипЭлемента», «Родитель»).

-Элементы.Вставить(«ИмяЭлемента», «ТипЭлемента», «Родитель», «Элемент»).

«ИмяЭлемента» должно быть уникальным в рамках элементов формы. Лучше добавить какой-то префикс, чтобы не возникло пересечений с типовыми элементами формы.

«ТипЭлемента» имеет не так уж много вариантов. Это «ПолеФормы», «ГруппаФормы», «ДекорацияФормы», «КнопкаФормы» и «ТаблицаФормы». Все остальные свойства назначаются через «Вид» создаваемого элемента. Например, поле с типом булево лучше сделать «флажком», установив вид элементу «ВидПоляФормы.ПолеФлажка».

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

Для установки событий элементам нужно использовать процедуру УстановитьДействие («ИмяСобытия», «Действие»).

«ИмяСобытия» - имя события, которое нужно отработать. Например, «ПриИзменении», «Очистка», «ОбработкаВыбора» и т.п.

«Действие» - процедура отработки события. Самое главное процедура должна содержать параметры необходимые для выполняемого события. Например, процедура «ПриИзменении» должна иметь параметр «Элемент». Также программно можно задавать прочие доступные свойства новых элементов формы. Например, установить видимость кнопки очистки:

НовыйЭлемент.КнопкаОчистки = Истина;

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

 

Код для копирования:

&НаСервере

Процедура КЛ_ДополнитьФормуПрограммно()

МассивРеквизитовФормы = Новый Массив;

//Новый реквизит Товары.КЛ_ЭтоСборка

НовыйРеквизитФормы = Новый РеквизитФормы("КЛ_ЭтоСборка",

           Новый ОписаниеТипов("Булево")

           ,"Объект.Товары"

           ,"Это сборка");

МассивРеквизитовФормы.Добавить(НовыйРеквизитФормы);

//Новый реквизит КЛ_СтатусОбработки

НовыйРеквизитФормы = Новый РеквизитФормы("КЛ_СтатусОбработки",

           Новый ОписаниеТипов("ПеречислениеСсылка.СтатусыДокументовРеализации")

           ,

           ,"Статус обработки");

МассивРеквизитовФормы.Добавить(НовыйРеквизитФормы);

ИзменитьРеквизиты(МассивРеквизитовФормы);

НовыйЭлемент = Элементы.Добавить("КЛ_СтатусОбработки", Тип("ПолеФормы"), Элементы.ГруппаШапкаЛевая);

НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;

НовыйЭлемент.КнопкаОчистки = Истина;

НовыйЭлемент.УстановитьДействие("ПриИзменении","КЛ_ПриИзмененииСтатусаОбработки");

НовыйЭлемент = Элементы.Вставить("КЛ_ЭтоСборка", Тип("ПолеФормы"),Элементы.Товары,Элементы.ТоварыКоличество);

НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;

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

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. androgin 05.03.19 20:18 Сейчас в теме
1) в типовых конфигурациях у объектов (не у всех, но добавить можно!) есть тч ДополнительныеРеквизиты, и форма сама все размещает типовым механизмом.
2) Расширения позволяют создавать свою форму и обновлять ее при изменении основной конфигурации.
Ваш код придется переписывать основательно для некоторого количество реквизитов, которые могут располагаться в разных местах формы, и эти места будут зависеть от типовой формы
2. dandykry 6 06.03.19 07:17 Сейчас в теме
Имеется отдельная библиотека (набор общих модулей), которая имеет программный интерфейс по изменению существующих элементов, их событий, а так же их перемещению, и добавлению реквизитов, команд и элементов. Все это хозяйство еще умеет себя контролировать после обновления.
Скажу, что это не отнимает много процессорного времени и упрощает жизнь)
Есть минусы - разрабатывать и поддерживать труднее, и не все изменения можно сделать программно. Иногда приходится все же править форму в конфигураторе(иногда это даже разумно) или идти через Владивосток.
Все никак руки не дойдут сделать редактор формы в предприятии.
4. Olenevod 26 10.03.19 11:11 Сейчас в теме
(2) А не подскажете, что это за библиотека, где ее взять?
5. dandykry 6 11.03.19 07:18 Сейчас в теме
(4) Самописная. Ее писать не долго, а вот с отладкой придется попотеть. Все однотипно создается. Только типы элементов меняются и их виды.
На инфостарт как -то думал выложить, но передумал. Обрету обязанность сопровождения, а выхлопа скорее всего получу мало. Это не распространено. Чаще людям проще сделать расширение. Оно хотя бы в человеческом виде, хоть и приходится каждый раз его воспроизводить заново при изменении формы. Сравнением/объединением не показывает созданные кодом элементы и реквизиты, поэтому приходится извращаться и проверять кодом что изменилось из критичного.
6. Olenevod 26 11.03.19 21:37 Сейчас в теме
(5)
Сравнением/объединением не показывает созданные кодом элементы и реквизиты

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

И с другой стороны, как уже было подмечено, программные изменения влияют на кэширование форм. Приходится искать баланс)
7. dandykry 6 12.03.19 07:49 Сейчас в теме
(6)
значительно сложнее проанализировать все изменения

Только из-за того, что расширение нельзя сравнивать с конфигурацией, у нас программное изменение формы.

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


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

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


Я об этом читал, но когда сравнивал работу "до" и "после", разница была в 0.3 сек на самой дикоизмененной форме. (остальные с трудом набирают 0.01) Счел затраты оправданными. (Это форма сделки, она итак долго открывается, потому что при открытии проверяет бизнес-процесс на основании себя)

Когда все это хозяйство задумывал, хотел обработку, которая могла бы Сравнить типовую конфигурацию и основную. Планировалось выводить на форму дерево объектов формы (элементы, реквизиты и команды). В этом дереве подсвечивать добавленные объекты на форму в конфигураторе. Добавить команды, которые генерировали бы программный код создания этих изменений. Плюсом нужен был механизм сохранения настроек формы. Я выбрал xml. По плану в "ПриСозданииНаСервере" во временное хранилище помещается таблица со всем нужным, и дальше размещается на форме в виде дерева. А после генерации, настройки сохранялись бы в xml. (как оказалось, можно и без xml обойтись)
Собственно реализация оказалась дико сложной. Не все свойства элементов серилизуются, не все значения существуют на клиенте. иногда платформа без видимых причин просто падает в дамп (предполагаю, что остается связь значений свойств формы в этой ТЗ с формой которая после ПриСозданииНаСервере закрывается)
Поэтому я решил парсить выгрузку формы в файлы (вроде сразу xml и чего париться то, собирать что-то). Естественно это еще затратнее, а поддерживать еще затратнее).

Сейчас это просто 2 общих модуля, которые вызываются из СобытияФорм и СобытияФормКлиент.
Как настанет свободный промежуток, хочу сделать справочник, в котором будут храниться изменения форм (так же с отображением дерева объектов формы, но без сравнений с типовой). Общиймодуль с кэшированием, чтобы вся информация каждый раз не собиралась (Сначала собирается массив всего что нужно сделать с формой, а потом разом все это меняется). Это даст возможность из предприятия добавлять/изменять формы без нужды выгнать всех пользователей (Возможность применить изменения только по субботам 1 час, динамическое обновление не используем потому-что ужасы творит иногда)
И в планах сделать аналог патча. Добавить код, чтобы можно было вызывать определенные процедуры из внешней обработки, в случае косяка в процедуре команды или где-то еще.
Olenevod; +1 Ответить
8. Olenevod 26 12.03.19 09:53 Сейчас в теме
(7) Это была бы просто наипречудеснейшая доработка. В целом если к ней бы еще добавить генератор кода изменения формы (например как здесь https://infostart.ru/public/304736/), то, наверное, можно было бы даже "патчить" в режиме предприятия после обновления на более детальном уровне, я имею ввиду через "Выполнить()".

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

Плюсом условным оформлением подкрашиваются созданные поля

Из своего опыта: при использовании программных изменений в форме в совокупности с условным оформлением может давать различные и неприятные глюки поведения элементов форм (наблюдалось с табличными частями на платформе 8.3.10.2299 разъезжались как бог на душу положит)
9. dandykry 6 12.03.19 10:31 Сейчас в теме
(8)
генератор кода изменения формы
- как то я это пропустил когда искал нечто похожее. Вообще да, об этой генерации кода я и говорил, и почти такое же дерево получилось,
http://prntscr.com/mwo4y7
тоже самое, только у меня вызов процедур моего общего модуля. Вижу по описанию, что по тем же граблям ходил разработчик (или я по его).

Только в моем случае мне нельзя просто менять свойство, потому что потом я не найду концов и замучаюсь отлаживать.
Для существующих вместо такого:

ЭтаФорма.Элементы.Огранизация.Видимость = Ложь;


У меня

ДействияСЭлементом = Новый Структура("Видимость", Ложь);  // структура с ключами, где ключ это имя изменяемого свойства, значение - новое значение
ИзменитьЭлементФормы(ЭтаФорма, "Огранизация", ДействияСЭлементом); //здесь все проверится и при успехе изменится, при неудаче по-разному, в зависсимости от параметорв формы. Если у формы есть в параметрах особый, то будет ругаться, выделять цветом.



Про кэш форм знал тоже мало, т.е .как там в кишках платформы все это работает было совершенно непонятно


Я не настаиваю на полном изменении формы программно. Только мелочи и средней сложности. Пока что проблем с кэшем формы не встречал.

Из своего опыта: при использовании программных изменений в форме в совокупности с условным оформлением может давать различные и неприятные глюки поведения элементов форм


это только если есть параметр формы, который значит, что это отладочный пуск. В боевой работе это УО не воспроизводится.

наверное, можно было бы даже "патчить" в режиме предприятия


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

P.S
Как раз в планах все эти изменения засунуть в справочник, чтобы не было портянки кода. Так по-проще будет всем я думаю.

ну и если делать коммерческий проект из этого, то я его не потяну. По крайней мере не сейчас. В идеале дождаться, когда в расширении можно будет создавать свои собственные справочники и при этом не нужно будет менять режим совместимости у типовой....и свободное время. Тогда еще можно что-то думать.
3. palsergeich 09.03.19 12:24 Сейчас в теме
Нужно помнить, что чрезмерное увлечение данным механизмом ломает кеш.
Olenevod; +1 Ответить
10. MorningStalker 19.03.19 09:35 Сейчас в теме
Сам давно использую программное изменение форм типовых конфигураций.

Добавлю свои 5 копеек:
если я правильно понял, то вы все равно снимаете форму с поддержки и вносите изменения в процедуру "ПриСозданииНаСервере".

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

ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);

Поэтому при доработке я не трогаю сами формы, а просто добавил в конце процедуры "ПриСозданииНаСервере" общего модуля "ПодключаемыеКоманды" вызов своей процедуры:

// + НТ 14.11.2018. Перехватываем событие формы ПриСозданииНаСервере для программного создания элементов формы
НТ_Вспомогательный_Сервер.СоздатьЭлементПрограммно(Форма);

Ну и дальше уже анализируем, что за форма нам попадала и вносим изменения если они нужны.

Таким образом, если не нужно добавлять обработчики событий для добавляемых программно элементов, то саму форму можно вовсе не трогать.
Andry.Boris; Nowa; +2 Ответить
Оставьте свое сообщение

См. также

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

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

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

28.12.2020    4328    comol    22    

Расширенный автоподбор при вводе по строке в поле ввода в управляемых формах

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

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

21.01.2021    1358    herfis    7    

Программное копирование узла/строки дерева значений на управляемой форме (УФ, ДанныеФормыДерево, ДанныеФормыЭлементДерева) в вариантах на клиенте и на сервере

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

1С при интерактивном копировании строки дерева значений в управляемой форме копирует только саму строку, без его всех вложенных узлов/строк, жаль - решим! А также найдем способ передачи ДанныеФормыЭлементДерева с клиента на сервер при вставке дерева из другого элемента справочника.

11.01.2021    596    SizovE    0    

HTML редактор/editor (Wysiwyg) для WebKit 1С (CMS, B2B), альтернатива TinyMCE и стандартному ФорматированныйДокумент

WEB Интеграция v8 v8::УФ 1cv8.cf Бесплатно (free)

Suneditor - отличная замена HTML редактору TinyMCE (бесплатному), в публикации с открытым кодом подключим его в 1С с WebKit, скачать HTMLeditor обработку можно бесплатно.

28.12.2020    1735    SizovE    19    

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    63640    user700211_a.straltsou    29    

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

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

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

14.12.2020    6953    SizovE    2    

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

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

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

30.11.2020    2659    SizovE    3    

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

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

Редактор HTML платформы 1С простой и очень удобный для небольших задач, однако ПолучитьHTML возвращает отдельно картинки и отдельно целиком HTML страницу со ссылкой на имена этих картинок, что неудобно для отправки в базу данных сайта/интернет-магазина/веб-приложения/B2B. Разберем на открытом коде, как решить эту проблему, напишем универсальную функцию получения значения любого тега HTML на регулярных выражениях. Бонусом - возможность редактировать теги HTML в текстовом режиме.

24.11.2020    681    SizovE    2    

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

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

15.01.2019    28599    itriot11    27    

Установка отбора для поля ввода управляемой формы через ПараметрыВыбора (без переопределения событий "НачалоВыбора", "Автоподбор")

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

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

15.11.2020    3579    Eugen-S    9    

Установка нескольких фильтров/отбора СКД в табличной форме, хранение в табличной части для отправки push/email уведомлений (ОтборКомпоновкиДанных, КомпоновщикНастроек, ДинамическийСписок)

Работа с интерфейсом Практика программирования v8 v8::УФ v8::СКД Бесплатно (free)

Рассмотрим, как организовать установку фильтров/отбора СКД (динамического списка) на push/email уведомления в подсистеме EDIbot (WebApp) для 1С в табличной части "События уведомлений".

02.11.2020    968    SizovE    0    

Отпускной период (период основного отпуска) - как его узнать

Зарплата Универсальные функции v8 v8::СПР v8::УФ ЗУП3.x Россия БУ Бесплатно (free)

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

26.10.2020    527    Danila7Zz    2    

Обмен данными. Консистентность vs Многопоточность Промо

Интеграция v8 1cv8.cf Бесплатно (free)

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    13496    m-rv    1    

Процедура генерации отдельных элементов формы для даты и времени

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

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

03.10.2020    682    drmaxart    0    

Рендеринг элементов управляемого интерфейса

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

Реализация отображения всего состояния формы проще, чем работа по изменениям. Однако использование идеи разделения алгоритмов на программные слои MVC и построения реактивных систем позволяет получить не только простые и масштабируемые решения, но и производительные интерфейсы. Рассмотрим примеры таких реализаций на основе использования фреймворка «Управление состоянием»: Информационная надпись, Заголовок формы, Свертываемая группа, Отключаемые панели.

22.09.2020    3237    kalyaka    5    

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

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

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

14.08.2020    3310    DrZombi    14    

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

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

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

10.12.2016    38439    unichkin    74    

Использование флажков в динамических списках

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

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

04.08.2020    5439    nekit_rdx    25    

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

Инструментарий разработчика v8 v8::УФ 1cv8.cf Бесплатно (free)

Подсистема "Инструменты разработчика". Глобальное контекстное меню разработчика для управляемых форм в толстом клиенте.

03.08.2020    4194    tormozit    25    

Использование ПоказатьВопрос() в событии НачалоВыбора()

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

На ИТС описано, как избегать использования модальности в событиях ПередЗаписью() и ПередЗакрытием() (можно ознакомиться по ссылке http://its.1c.ru/docs/v8nonmodal/). А что делать, если нужно задать вопрос пользователю в событии НачалоВыбора(). В данной статье приведу пример реализации с использованием асинхронного вызова ПоказатьВопрос(). Статья предназначена в основном для начинающих программистов, недавно столкнувшихся с управляемыми формами.

20.07.2020    1670    biimmap    2    

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

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

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

15.10.2018    32039    tormozit    104    

Открытие управляемой формы 1С 8.3 с измененным несохраненным объектом

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

Как загрузить в управляемую форму программно изменённый несохранённый документ (или элемент справочника).

13.07.2020    3351    plainer    11    

Команда "Вывести список" для динамического списка. Программное выполнение (вариант)

Универсальные функции v8::УФ 1cv8.cf Бесплатно (free)

Делаем свою кнопку вместо "Вывести список" из пункта "ещё" динамического списка.

11.06.2020    3509    DanDy    61    

Обработка нажатия клавиши

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

Один из способов обработки события нажатия клавиши.

10.06.2020    3589    RotaninV    7    

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

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

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

20.09.2012    79282    tormozit    131    

Серверные вызовы, которые нельзя вызывать

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

Не баян, а классика. Рассмотрим особенность платформы настолько же древнюю, как сами УФ.

12.05.2020    7596    SeiOkami    34    

Форма выбора (подбор) в управляемых формах

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

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    35375    user5300    16    

Как ограничить поля отбора в динамическом списке и ничего не сломать

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

С чем разработчик может столкнуться при попытке установки ограничений в динамическом списке.

06.05.2020    6164    SeiOkami    3    

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

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

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

11.07.2007    50046    tormozit    48    

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

Прочие инструменты разработчика Консоль запросов v8::УФ v8::Запросы v8::СКД Бесплатно (free)

Консоль запросов и СКД – один из наиболее часто используемых программистом инструментов. Как с его помощью можно упростить разработку, в своем докладе на конференции Infostart Event 2019 Inception рассказал Евгений Люлюк, ведущий программист компании GLT.

06.04.2020    8729    Evg-Lylyk    0    

5 шагов по изменению резервирования товаров в УТ 11.4

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

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

19.03.2020    5004    Igorro82IT    16    

Об обновлениях

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

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

12.02.2020    2704    ipoloskov    27    

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

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

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

10.09.2017    46707    tormozit    74    

Детектор завершения согласования для 1С: Документооборот КОРП

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

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

04.02.2020    3316    shiaju    3    

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

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

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

27.01.2020    38984    ids79    26    

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

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

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

25.04.2019    16415    m-rv    2    

Как вывести итоговый вес и объем на форму документа Заказ клиента. УТ 11.4

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

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

16.01.2020    5169    VID1234    6    

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

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

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

15.01.2020    30456    John_d    22    

Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"

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

Переход на управляемые формы перевернул процесс разработки на 1С, заставив программистов менять привычные подходы к описанию логики работы интерфейса. Руководитель компании «Цифровой Кот» Юрий Лазаренко в своем докладе на конференции Infostart Event 2019 Inception рассказал о том, как устроены управляемые формы и как правильно работать с тонким клиентом платформы 1С:Предприятие.

23.12.2019    14515    TitanLuchs    23    

Как настроить правильную техподдержку (helpdesk, service desk на коленке) Промо

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени v8 УУ Бесплатно (free)

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

24.04.2019    22663    siddy    0    

Обработка расширением на клиенте

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

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

31.10.2019    7444    EvgenURNN    10    

Изменение макета в карточке номенклатуры(УТ 11, КА 2)

Практика программирования Работа с интерфейсом v8::УФ ERP2 УТ11 КА2 Бесплатно (free)

Краткая памятка по выведению добавленного реквизита в справочнике Номенклатура в стандартную карточку номенклатуры в УТ 11, КА 2, ERP 2.

24.10.2019    4835    darkultro37    4    

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

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

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

07.10.2019    33133    HostHost    41    

Excel vs 1С: битва с неожиданным исходом Промо

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    38224    bolefirenko    120    

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

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

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

06.10.2019    12328    YPermitin    31    

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

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

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

01.10.2019    40081    Yashazz    50    

СКД. Отчеты с картинками

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

Решение популярных кейсов с картинками в отчетах на СКД.

25.09.2019    24892    YPermitin    40    

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

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

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

16.04.2019    20950    m-rv    17    

Передача данных с сервера на клиент через WebSocket NativeAPI и Centrifugo

Интеграция v8::УФ 1cv8.cf Россия Бесплатно (free)

В статье описываю реализацию обмена для замены передачи сообщений через 1С Сервер взаимодействия.

23.09.2019    8285    malikov_pro    11    

"Вы всё сломали!". Разбираемся, кто прав, кто виноват

Практика программирования v8::УФ ИТ-компания Россия Бесплатно (free)

О том, как "всё испортил" программист, а на самом деле виноват заказчик.

20.09.2019    6137    RomanCrow13    27    

Оповещения боту из 1С за 31 минуту

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

Поделюсь опытом, как быстро сделать бота с оповещениями в Телеграмм из 1С без лишних затрат.

18.09.2019    18205    feva    42