Типовой механизм упрощенного изменения конфигурации в ERP 2.0 и УТ 11

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

Разработка - Инструментарий разработчика

ERP 2.0 УТ 11 минимальное изменение конфигурации модификация конфигурации

В ERP 2.0 (и соответственно в УТ 11) появился функционал для упрощенной возможности модификации конфигурации разработчиками. Он касается в частности изменения форм объектов и размещения подписок на элементы, теперь задача изменения конфигурации на поддержке упростилась. Также появились дополнительные возможности в новой версии платформы 8.3.5, которые также упростят задчу.

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

1)      События форм. Этот блок представлен двумя общими модулями -  «События Форм» и «События Форм Клиент».

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

 

Если Форма.Имя= «Доумент.РеализацияТоваровУслуг.ФормаДокумента» Тогда
ИначеЕсли ….
КонецЕсли;

 

Однако разработчики предложили перенести этот код в общий модуль «МодификацияКонфигурацииПереопределяемый». И из процедуры идет еще один вызов:

МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка);

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

 

2)      Модификация конфигурации. Этот блок представлен следующими общими модулями:

«Модификация Конфигурации Вызов Сервера Переопределяемый», «Модификация Конфигурации Клиент Переопределяемый», «Модификация Конфигурации Клиент Сервер Переопределяемый», «Модификация Конфигурации Переопределяемый».

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

- В процедуре «ПриСозданииНаСервере» вызывается «СобытияФорм.ПриСозданииНаСервере»;

- В процедуре «ПриЧтенииНаСервере» вызывается «МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере»;

- В процедуре «ПослеЗаписиНаСервере» вызывается «МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере»;

- В процедуре «ПередЗаписьюНаСервере» вызывается «МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере»;

На клиентской части:

- В процедуре «ПослеЗаписи» вызывается функция «МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи»;

- И универсальная процедура для обработки событий для всех элементов формы на клиенте «Подключаемый_ВыполнитьПереопределяемуюКоманду».

 

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

Если Форма.Имя= «Доумент.РеализацияТоваровУслуг.ФормаДокумента» Тогда
ИначеЕсли ….
КонецЕсли;

И для обработки команд дополнительное условие:

Если Команда.Имя= «Команда_Х» Тогда
ИначеЕсли ….
КонецЕсли;

 

3)      Особенности. К особенностям можно отнести некоторые специфические моменты.

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

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

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

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

ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);

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

4)      Бонус. Правила которые мы используем при доработках типовых конфигураций.

 

a)      Добавление своих объектов метаданных с префиксом. Мы добавляем префикс в таком формате «DI_»+наименование объекта. Иногда используется вариант добавления префикса поле наименования: наименование объект+ «DI»; но этот вариант менее нагляден. Для дополнительной фильтрации новых объектов создается своя подсистема, в которую включаются все новые объекты.

b)      Добавление своих реквизитов к существующим объектам метаданных. Мы используем добавление реквизитов по аналогии с добавлением своих объектов: «DI_»+наименование реквизита.

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

d)      Использование модификаций запросов. В связи с нововведениями в версии платформы 8.3.5, а именно: конструктор запросов в управляемом приложении и объектная модель схемы запроса - появилась возможность более удобно вносить модификации в запросы. Если ранее пользователь создавал рваный запрос или использовал функцию СтрЗаменить, то теперь достаточно использовать объектную модель. К примеру, добавить в исходный запрос новое поле в выбранных полях:

СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
//при создании схема содержит один пакет и один оператор в пакете.
Пакет = СхемаЗапроса.ПакетЗапросов[0];
Оператор = Пакет.Операторы[0];
Оператор.ВыбираемыеПоля.Добавить(«РеализацияТоваровУслуг.Ссылка»);
Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();


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

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

f)       Использование дополнительных команд. Для увеличения удобства интерактивной работы с нашими доработками довольно часто используем данный механизм.

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

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

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

j)        Использование средств командной разработки. Мы используем механизм хранилище конфигурации, систему баг-трекинга, трёхуровневое тестирование – внутренне тестирование разработчиком, тестирование таксировщиком самостоятельно и по кейсам и внешнее тестирование представителем от заказчика.

k)      Техническое задание. Хорошей практикой является формализация требований к доработкам. Они могут

l)        Другие правила.

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. newgluk 85 23.09.14 07:18 Сейчас в теме
Какой баг-трекинг используете?
2. medm 23.09.14 10:34 Сейчас в теме
(1) newgluk, глупо сознаваться, но после всей статьи у меня возник тот же вопрос )))
4. ivanov660 2462 23.09.14 12:40 Сейчас в теме
3. BabySG 23.09.14 10:50 Сейчас в теме
(0)
И мы выражаем глубокий респект разработчикам конфигурации ERP 2.0 за такую возможность.

К сожалению, это оказалось тестовой версией, в прочие конфигурации такое отказываются включать :(

Мы добавляем префикс в таком формате «DI_»+наименование объекта

Это моветон. Использовать смешанные наименования без необходимости - крайне плохо. Исключения допускаются вида WebЦвета, например, но никак не для префиксов объектов. Набор таких объектов, запросов - и Вас припомнят не раз.
Hans; Lo1jke; charushkin; Восьмой; h00k; Dragonim; +6 Ответить
5. ivanov660 2462 23.09.14 12:55 Сейчас в теме
(3) BabySG, согласен удобнее использовать второй вариант: наименование+"DI". По факту каждое такое решение при принятии согласуется с заказчиком. Но мы настаиваем на добавлении префикса в большинстве случаев.
Надеемся что подобный механизм все таки включат в БСП. Пока такое удобство можно использовать в ERP 2.0 и УТ 11.
8. Dragonim 128 23.09.14 13:26 Сейчас в теме
(5) Моветон не в том что вы делайте префикс, а в том что используйте латиницу.
rabota.v8.1c; Boyborodin; Irwin; smartem; charushkin; Ovrfox; NoRazum; Зеленоград; Taktic; CratosX; ojiojiowka; philya; ZLENKO; sivalor; ktb; Brawler; Yimaida; +17 Ответить
6. h00k 44 23.09.14 13:16 Сейчас в теме
(0)ivanov660

c) ... В случае, когда требуется кардинальное изменение формы объектов, то мы создаем свою форму и назначаем ее основной.

Зачем?! Правильней переопределить открываемую форму подпиской на ОбработкаПолученияФормы.
user668788_glebshagin; Spacer; +2 Ответить
7. ivanov660 2462 23.09.14 13:22 Сейчас в теме
(6) h00k,
В некоторых случаях удобнее использовать отдельную форму без использования каких -либо обработчиков.
А замечание дельное надо добавить в текст статьи.
9. h00k 44 23.09.14 13:51 Сейчас в теме
(7) ivanov660
В некоторых случаях удобнее использовать отдельную форму без использования каких -либо обработчиков

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

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

Использование латиницы: При работе со встроенными объектами, наименования которых начинаются с символов латинского алфавита, использовать присвоение этого объекта переменной написанной на кириллице.
Пример:
лВебЦвета = WebЦвета;
лВебЦвета.Бирюзовый;


Про префиксы переменных, "венгерскую" нотацию так же можно упомянуть.
user883610; Восьмой; mythos; МимохожийОднако; +4 Ответить
10. wolfsoft 2422 24.09.14 10:40 Сейчас в теме
в бедующих релизах

Это вот, хоть и оговорка, но точно сказано.
pvlunegov; mythos; CratosX; +3 Ответить
11. monkbest 111 26.09.14 12:00 Сейчас в теме
c) Изменение форм объектов. Изменение форм объектов и подписок на элементы осуществляем динамически. Также уже используем технологию, о которой говорится выше. В случае, когда требуется кардинальное изменение формы объектов, то мы создаем свою форму и назначаем ее основной.


Мой опыт обновления измененных конфигураций говорит:
изменяй существующую форму, не надо создавать свою и переопределять её ЛЮБЫМ способом.

Объясню почему, если кто не знает:
Ваша форма при обновлении не будет мешать, сравнение её просто не заметит. Типовая обновиться и останется типовой, а Ваша не затронется и новый функционал не затрется. На первый взгляд все довольны. Проблемы начинаются тогда, когда вы в первый раз запускаете в обновленной конфигурации Вашу форму и она падает с ошибкой. Причина в том, что мало какая форма живет сама по себе. Она вызывает общие процедуры, обращается к другим данным, да и к своим данным обращаются. И все это может измениться, сколько раз 1С переименовывало реквизиты, процедуры переезжали в другие модули. Данные кочевали между регистравми сведений и табличными частями.

Если изменения делать в исходной форме, то при сравнении вы увидите, что в типовой что-то изменилось, а у вас как раз там доработка. А если делать свою форму, то вы это узнаете на этапе тестирования или эксплуатации.
zqzq; collider; rabota.v8.1c; Hans; koltunov.sp; Denic_01; user811769; Andrekaa; Inziya; profisasha; SirYozha; Irwin; AlexW; AfroditaS; Pipapalamm; nayd; AShley; alest; Ovrfox; Федосеев; Восьмой; nbeliaev; mythos; Bazil; CratosX; MRAK; Рамзес; ojiojiowka; philya; ZLENKO; sivalor; KapasMordorov; ВРедная; vasiliy_b; ktb; Brawler; swimdog; pumbaE; +38 3 Ответить
12. alyaev.a.v 26.09.14 15:42 Сейчас в теме
(11) monkbest, По-моему это ответ не программиста, а бухгалтера.Если правильно обновлять, еще раз подчеркиваю, правильно обновлять, с подготовкой цф файла, а не просто накатить новый релиз, то новая форма никак не нарвется на описываемые Вами грабли.
13. h00k 44 26.09.14 17:52 Сейчас в теме
(12) alyaev.a.v я думаю что комментарий (11) monkbest имеет право на жизнь.
Если он, комментарий, появился, да его еще и плюсуют, то это говорит о том, что у некоторых разработчиков отсутствует этап документирования и контроля версий собственных доработок. А следовательно изменение типовой формы - единственный способ "вспомнить" где и что было изменено.
Возможно позднее они дорастут и до полностью программной модификации типовой формы через подписки, и до более сложных схем управления процессом разработки.
igee12; CratosX; Redokov; Serikpai; +4 Ответить
15. Brawler 480 29.09.14 10:17 Сейчас в теме
(13) h00k, очень сложных и запутанных схем, потом увольнения программистов, набор новых, сакральные знания не всегда передаются корректно и как итог группа программистов заводит проект в глубокую ... ну ее вы знаете. И тут сложность схем играет первостепенное значение и не в лучшую сторону.
Восьмой; +1 Ответить
16. h00k 44 29.09.14 12:31 Сейчас в теме
(15) Brawler, Под более сложными схемами управления разработкой подразумевается ведение разработки в соответствии с внутренними регламентами, полноценное ведение контроля версий и документирование.

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

А вот если уходит программист, который только при сравнении/объединении вспоминает что и для чего было изменено, то тут как раз и происходит описываемый вами случай. Единственный владеющий "сакральными знаниями" ушел, его приемнику нужно время, много времени, чтобы понять что его предшественник "наваял", а главное зачем...

П.С.: Кстати, одна из причин, почему подобный подход отвергается некоторыми разработчиками - они осознают, что потеряют свою "исключительность" и незаменимость на проекте. А всевозможные рассуждения про нехватку времени или избыточность документирования - всего лишь отговорки.
igee12; nayd; 1cWin; +3 Ответить
17. ivanov660 2462 29.09.14 16:43 Сейчас в теме
(15) Brawler, у нас в конторе принято (наверное как и в другой) вести документацию по изменениям в проекте, поэтому если программист будет уходить, то по данной документации относительно легко включится в работу.
Со своей стороны я прикладываю усилия, чтобы в разумных рамках велась документация :-)
20. monkbest 111 01.10.14 19:08 Сейчас в теме
(13) h00k, у разработчиков есть все этапы, за которые им платят :) Если заказчик готов платить за макулатуру - будет макулатура. (в случае штатного 1Сника под заказчиком понимаем его начальника).
Второе - чужая макулатура - это реально макулатура, которой только новичков пугать. Вот свои бумажки - это дело, хорошо выручает. Мы применяем не бумажки а базу написали на 1С для отслеживания измененных объектов. Но опять-таки, пользуем её, когда на это есть оплаченное время.
Третье, даже при наличии макулатуры - не исключает возможности продолбать изменение. Все мы люди и все ошибаемся.
zqzq; user774630; profisasha; +3 Ответить
18. pumbaE 643 30.09.14 15:40 Сейчас в теме
(12) чем подготовка cf файла поможет по сравнению с 3х сторонним сравнением?

(13) хотел бы я посмотреть на ваше документирование и версионирование. А то все думаю как же мне задокументировать изменения форм, что-бы потом легко и просто накатывать типовые конфигурации и не потерять ничего.
eeeio; Irwin; charushkin; Urupa; monkbest; +5 Ответить
19. monkbest 111 01.10.14 18:59 Сейчас в теме
(12) alyaev.a.v, я программист. Причем настоящий, у меня высшее образование IT, а не пару курсов по 1С.
Расскажите, как Вы подготавливаете cf, что эта подготовка позволяет избежать описанных мною ошибок? Если под подготовкой cf вы подразумеваете предварительное тестирование, то да, но я об этом писал
вы это узнаете на этапе тестирования или эксплуатации


В общем с Вас методика подготовки файла cf :)
29. NittenRenegade 90 10.11.15 10:18 Сейчас в теме
(11) monkbest, если форма является основной формой: списка, объекта, выбора , как её изменение останется незамеченным? При сравнении-объединении сразу видно что основная форма с предыдущего релиза изменилась. Затираем основную форму формой поставщика. Поскольку мы находили точку минимального изменения, повторно внести свои изменения не составляет _никакого_ труда. Свои дополнения ты знаешь точно и не надо разбираться в тонкостях изменений, внесённых поставщиком. Про остальные формы спорить не буду, надобности не возникало.
30. monkbest 111 10.11.15 16:56 Сейчас в теме
(29) NittenRenegade, простой пример, запускаем обновление и смотрим в тройное сравнение:
1. между старым типовым релизом и старым доработанным (Вашим): в свойстве объекта "Основная форма списка" будет стоять другая форма.
2. между старым типовым и новым типовым: в форме списка добавили код, убрали пару элементов формы и изменили код вызова процедур из общего модуля, т.к. там другие параметры теперь.

1 - изменение свойств объекта
2 - изменение свойств формы
это изменения разных сущностей
1ю сущность изменяли только мы
2ю сущность изменяли только они
выставляем фильтр "показать только дважды измененные объекты" и бабац, все спряталось. Мы ведь не меняли форму, которую изменили они, они ведь не меняли объект, св-ва которого изменили мы.
Мы жмем "ОК" и продалбываем изменение.

Но потом на этапе тестирования мы видим косяк и понимаем, что надо бы дообновить. Запускаем сравнение объединение типовой старой и типовой новой, открываем нашу форму и пытаемся туда вкрячить новшества. Но "бабац" и не получается, т.к. уже 5 обновлений подряд все "прокатывало" гладко и наша форма не эквивалентна старой типовой, она эквивалентна еще более старой на 5 релизов назад форме.
collider; igee12; profisasha; AfroditaS; nayd; alest; +6 Ответить
31. NittenRenegade 90 16.11.15 13:31 Сейчас в теме
(30) monkbest, по поводу:
2. между старым типовым и новым типовым: в форме списка добавили код, убрали пару элементов формы и изменили код вызова процедур из общего модуля, т.к. там другие параметры теперь.


Я так понимаю, изменения на форме стали известны из отчета о сравнении? Хочешь сказать что им удобно пользоваться? На мой взгляд там туча мелких правок, за которыми совершенно не видно общей картины. Да и деталей тоже.
При таком подходе, я уверен, что-то обязательно будет упущено. И эта погрешность будет расти с каждым изменением формы. А искать её будет сложнее, ибо разбираться придётся в чужом коде.

Второй аспект касается сравнения с использованием фильтра по дважды изменённым объектам. Это зло, с которым нужно бороться. Именно по той причине, которую ты (можно на ты?) так подробно описал.

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

Если же баз не много, ты знаешь их доработки наизусть и пропустить их никак не сможешь. Проще и быстрее повторить свои изменения в форме, чем разбираться что там было добавлено, удалено, исправлено, передвинуто. А ведь есть ещё свойства, которые в отчете о сравнении просто не отображаются.
14. BabySG 29.09.14 10:14 Сейчас в теме
(0) Показали на семинаре механизм, который планируется реализовать в платформе. Он перекрывает полностью текущие реализации в УТ/УП. Но, конечно, (13) можно будет выкинуть на помойку, ибо это почти (11) :)
Вообще другая концепция, мозги будет сносить у многих :)
ildarovich; +1 1 Ответить
21. ivanov660 2462 01.10.14 19:32 Сейчас в теме
(14) BabySG, на сколько я понимаю речь идет про "заметки из зазеркалья" изменения в технологии сравнения и объединения, которое планируется реализовать в версии 8.3.6. Поддержка трехстороннего объединения с использованием внешних компонент. Я думаю, что ничего существенного эта технология фактически не меняет, если конечно не появится внешний модуль типа AI+ :-)
23. pumbaE 643 02.10.14 08:41 Сейчас в теме
(21) так что-ли? Но это ведь никакая не революция, UI элементы форм, так не по объединяешь.
22. ildarovich 7263 01.10.14 20:08 Сейчас в теме
(14) BabySG, там вроде еще была просьба особенно не распространяться пока? - А так, конечно, круто и подождать теперь всего чуть-чуть.
50. pvlunegov 169 28.02.20 13:16 Сейчас в теме
(14)
Но, конечно, (13) можно будет выкинуть на помойку, ибо это почти (11)

Вы меня рассмешили этой фразой. Это все равно что сказать: Лада 2105 это почти Лада калина, один фиг Лада.
Лада то она Лада, но детали, движок, подвеска ВСЕ ДРУГОЕ.
УТ 10.3 и УТ 11 принципиально разные по множеству параметров.
Разница здесь все равно что сравнить велосипед и мотоцикл с коляской.
24. kauksi 211 03.10.14 14:26 Сейчас в теме
никто не в курсе когда этот механизм в БП3 и ЗУП3 добавят?
25. ivanov660 2462 02.12.14 15:00 Сейчас в теме
Ну, наконец то 1с-ники написали информацию по давно ожидаемой фитче из зазеркалья: Расширения. Вопросы:
Когда это будет доступно пощупать (понятно что с релизом 8.3.6)?
Когда появится стабильный релиз, чтобы это можно было использовать на практике, а пока живем так как есть :-)
26. 1c.pro.fun 154 31.07.15 00:52 Сейчас в теме
(25) есть вопрос по поводу применимости данного метода к одной конкретной задаче (с УТ 11 работаю совсем недавно - не обессудьте). Стоит задача в форме документа "Заказ клиента" вывести информацию о текущем долге на момент времени документа. Естественно хочется все сделать без модифицирования формы документа. Вписал вот такой код в модуле "МодификацияКонфигурацииПереопределяемый":

Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
	
	Если Форма.ИмяФормы = "Документ.ЗаказКлиента.Форма.ФормаДокумента" Тогда
	
		// Вывод на форму текущего долга клиента на дату заказа
		ДобавляемыеРеквизиты = Новый Массив;
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ТекущийДолг", Новый ОписаниеТипов("Строка")));
		Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
		
		Если ЗначениеЗаполнено(Форма.Объект.Партнер) Тогда
		
			Запрос = Новый Запрос;
			Запрос.Текст = "ВЫБРАТЬ
			|	РасчетыСКлиентамиОстатки.СуммаОстаток КАК Долг
			|ИЗ
			|	РегистрНакопления.РасчетыСКлиентами.Остатки(
			|			&Период,
			|			АналитикаУчетаПоПартнерам В
			|				(ВЫБРАТЬ
			|					КлючиАналитикиУчетаПоПартнерам.Ссылка
			|				ИЗ
			|					Справочник.КлючиАналитикиУчетаПоПартнерам КАК КлючиАналитикиУчетаПоПартнерам
			|				ГДЕ
			|					КлючиАналитикиУчетаПоПартнерам.Партнер = &Партнер)) КАК РасчетыСКлиентамиОстатки";
			
			Запрос.УстановитьПараметр("Партнер",	Форма.Объект.Партнер);
			Запрос.УстановитьПараметр("Период",		Новый МоментВремени(Форма.Объект.Дата, Форма.Объект.Ссылка));
			
			Результат = Запрос.Выполнить();
			Выборка = Результат.Выбрать();
			
			Если Выборка.Следующий() Тогда
				Форма.ТекущийДолг	= Выборка.Долг;
			Иначе
			    Форма.ТекущийДолг	= "Отсутствует";
			КонецЕсли;
		
		Иначе
			Форма.ТекущийДолг	= "Не рассчитан";
		КонецЕсли;
				
		ПолеТекущийДолг = Форма.Элементы.Добавить("НадписьТекущийДолг", Тип("ПолеФормы"), Форма.Элементы.ГруппаСтатусПриоритет);
		ПолеТекущийДолг.Вид			= ВидПоляФормы.ПолеНадписи;
		ПолеТекущийДолг.ПутьКДанным	= "ТекущийДолг";
		ПолеТекущийДолг.Заголовок	= "Текущий долг";
		
		Форма.Элементы.Партнер.УстановитьДействие("ПриИзменении", "Подключаемый_ВыполнитьПереопределяемуюКоманду");
	
	КонецЕсли;
	
КонецПроцедуры
Показать


Если лень читать код полностью, то я:
1. создаю реквизит управляемой формы
2. вычисляю долг
3. присваиваю реквизиту значение долга
4. создаю элемент управления, связанный с реквизитом для вывода на форму.

Все это замечательно работает при открытии имеющихся в базе документов (или создании новых если создаются из списка с отбором по партнеру). Но как только речь заходит о создании нового документа и обработке события "ПриИзменении" элемента формы "Партнер". Вот тут совершенно непонятно что же должно быть написано в процедуре "ВыполнитьПереопределяемуюКоманду" модуля "МодификацияКонфигурацииКлиентПереопределяемый". Дело в том что наше действие полностью заменяет типовое. Вызвать типовой обработчик, не являющийся экспортным, из переопределяемого не представляется возможным.
Я правильно понимаю что единственным вариантом является копирование кода типового обработчика с внесением необходимых дополнений. Это приведет к необходимости ручной актуализации данного кода при обновлении типовой. Но других вариантов сделать это без правки формы просто не существует? Как бы Вы поступили в данной ситуации.
Размер вносимых изменений в форму казалось бы плевый - всего-то один элемент управления. Я что-то упустил? Глаз замылился?
27. ivanov660 2462 31.07.15 15:19 Сейчас в теме
Могу предложить несколько вариантов:
1. Если используете версию 8.3.6 попробовать механизм расширений, но пока он сыроват.
2. Если ваш функционал выполняется после основного кода или до основного кода, тогда можно получить код функции типового обработчика, сохранить его и вызвать в нужном месте и выполнить свой код. Пример как это делать можно посмотреть тут: Переопределение и вызов обработчиков событий для УФ 1С
3. Внести изменения в конфигурацию в соответствии с правилами хорошего тона
4. Сделать копию формы и вызывать ее вместо основной.

user811769; 1c.pro.fun; +2 Ответить
28. 2tvad 66 24.09.15 11:26 Сейчас в теме
Если Форма.Имя


Если Форма.ИмяФормы
romankoav; +1 Ответить
32. pyrkin_vanya 431 28.05.18 15:01 Сейчас в теме
Пытаюсь по этой технологии создать кнопку на форме. Но не могу привязать к ней переопределяемую команду "Подключаемый_ВыполнитьПереопределяемуюКоманду". Как это сделать?
33. TODD22 18 28.05.18 15:02 Сейчас в теме
(32)
Как это сделать?

Может через метод "УстановитьДействие" ?
34. pyrkin_vanya 431 28.05.18 15:06 Сейчас в теме
(33)
Может через метод "УстановитьДействие" ?
Это для элемента управления. В команде просто указывается ИмяКоманды = "МояКоманда";
Потом в модуле формы пишешь
&НаКлиенте
Процедура МояКоманда(Каманда)
КонецПроцедуры;

И все работает. Но тут хрень какая-то.
35. user633533_encantado 10 28.05.18 15:13 Сейчас в теме
(32) А команду вы программно создали ?
36. pyrkin_vanya 431 28.05.18 15:16 Сейчас в теме
Короче разобрался. Вот код:
Общий модуль МодификацияКонфигурацииПереопределяемый
// Переопределяемая процедура, вызываемая из одноименного обработчика события формы.
//
// Параметры:
// 	Форма - форма, из обработчика события которой происходит вызов процедуры.
//	см. справочную информацию по событиям управляемой формы.
//
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
	
	// {1c-aspect; rybakov@1c-aspect.ru; Начало 28.05.2018}
	Если Форма.ИмяФормы = "Документ.ЧекККМ.Форма.ФормаДокументаРМК" Тогда
		НоваяКоманда                 = Форма.Команды.Добавить("aspect_TradeIn");
		НоваяКоманда.Действие        = "Подключаемый_ВыполнитьПереопределяемуюКоманду";
		НоваяКоманда.Заголовок       = "Trade-in";
		НоваяКоманда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.L, Ложь, Истина, Истина);
		НоваяКнопка                  = Форма.Элементы.Добавить("aspect_TradeIn", Тип("КнопкаФормы"), Форма.Элементы.ГруппаВерхняяКоманднаяПанель);
		НоваяКнопка.Вид              = ВидКнопкиФормы.ОбычнаяКнопка;
		НоваяКнопка.Заголовок        = НоваяКоманда.Заголовок + Символы.ПС + "(Ctrl+Shift+L)";
		НоваяКнопка.Ширина           = 12;
		НоваяКнопка.Высота           = 2;
		НоваяКнопка.ИмяКоманды       = "aspect_TradeIn";
		Форма.Элементы.Переместить(НоваяКнопка, Форма.Элементы.ГруппаВерхняяКоманднаяПанель, Форма.Элементы.Еще);
	КонецЕсли;
	// {1c-aspect; rybakov@1c-aspect.ru; Конец 28.05.2018}
	
КонецПроцедуры
Показать


Общий модуль МодификацияКонфигурацииКлиентПереопределяемый
// Вызывается в формах при выборе команды, которая добавлена программно
//
// Параметры:
//  Форма					 - УправляемаяФорма - форма в которой расположена команда
//  Команда					 - КомандаФормы - выбранная команда
//  ДополнительныеПараметры	 - Структура - дополнительные параметры
//
Процедура ВыполнитьПереопределяемуюКоманду(Форма, Команда, ДополнительныеПараметры) Экспорт
	
	// {1c-aspect; rybakov@1c-aspect.ru; Начало 28.05.2018}
	Если Форма.ИмяФормы = "Документ.ЧекККМ.Форма.ФормаДокументаРМК" И Команда.Имя = "aspect_TradeIn" Тогда
		// делаем что-то
		
		
	КонецЕсли;
	// {1c-aspect; rybakov@1c-aspect.ru; Конец 28.05.2018}
	
КонецПроцедуры
Показать
51. pvlunegov 169 28.02.20 13:21 Сейчас в теме
(36) Попробовал ваш способ на конфигурации ERP 2.4.8.82
не работает. В общем модуле МодификацияКонфигурацииКлиентПереопределяемый пробовал разные варианты процедур с разными названиями. Привязывал в модуле МодификацияКонфигурацииПереопределяемый в процедуре ПриСозданииНаСервере обработчик к полю формы.
Отладка не показывает переход выполнения на привязанный обработчик.
Что-то не так нужно делать, либо поменялось в новых релизах ERP
37. pyrkin_vanya 431 28.05.18 15:17 Сейчас в теме
(35)Да, конечно. Разобрался. Не то действие привязывал на команду. Затупил. Ниже как должно все быть.
38. ivanov660 2462 28.05.18 16:02 Сейчас в теме
(37) Сейчас, к стати, в новых версиях платформы 8.3.10 или 8.3.11 можно удобно воспользоваться механизмом расширений.
39. user633533_encantado 10 28.05.18 16:08 Сейчас в теме
(38) Поясните чем это удобнее чем добавлять элементы формы программно ?
41. ivanov660 2462 28.05.18 16:39 Сейчас в теме
(39) Во-первых, это еще один вариант изменений.
Далее, не требует снятия с поддержки,
В некоторых случаях может не требовать кодинга,
Быстрее и проще накатить изменения, а также откатить )
44. user633533_encantado 10 28.05.18 17:11 Сейчас в теме
(41)
Далее, не требует снятия с поддержки,


Единственный плюс.
В остальном гемора больше.
40. pyrkin_vanya 431 28.05.18 16:12 Сейчас в теме
(38)Я работаю "по старинке" :). Механизм расширений ограничен все равно. Переделывать по 5 раз не мой вариант.
42. ivanov660 2462 28.05.18 16:43 Сейчас в теме
(40) Соглашусь, что пока еще расширения не заменяют полноценного кодинга. Но мы в некоторых решениях уже перешли на расширения и используем их постоянно (когда не много изменений и они не касаются изменений метаданных), к примеру, бухгалтерия и казначейство.
Для ERP пока используем программное изменение конфигураций уже почти 4 года.
43. pyrkin_vanya 431 28.05.18 16:46 Сейчас в теме
(42)Ага. НУ у меня ситуация немного другая. Я подрядчик. Сейчас клиент хочет вот такие изменения. А через месяц может прийти задача на что-нибудь другое. И плодить изменения, сами понимаете. Одно тут, второе тут. Но хочется максимально упростить процесс изменений и обновлений. Может Вы в своей статье добавите пример моего кода?
45. ivanov660 2462 28.05.18 17:28 Сейчас в теме
(43)мы код чуть более оптимизированный используем: добавление программно элемента у нас вынесена в отдельную функцию, чтобы не писать каждый раз, а данные передаются параметрами в структуре. А в остальном похоже.
46. pyrkin_vanya 431 28.05.18 17:31 Сейчас в теме
(45)Может дадите свой пример? Будет полезно мне)
47. ivanov660 2462 30.05.18 14:53 Сейчас в теме
(46) Вот пример:

Функция вставки элемента программно:
Функция ВставитьЭлемент(Форма, Имя, Тип, СтруктураЭлемента) Экспорт
	
	Родитель=Форма;
	ИмяРодителя="";
	Если СтруктураЭлемента.Свойство("ИмяРодителя", ИмяРодителя)	И ЗначениеЗаполнено(ИмяРодителя) Тогда 
		Родитель = Форма.Элементы[ИмяРодителя];
	КонецЕсли;
	
	СледующийЭлемент=Неопределено;
	ИмяСледующегоЭлемента="";
	Если СтруктураЭлемента.Свойство("ИмяСледующегоЭлемента", ИмяСледующегоЭлемента)
		И ЗначениеЗаполнено(ИмяСледующегоЭлемента) Тогда 
		СледующийЭлемент=Форма.Элементы[ИмяСледующегоЭлемента];
	КонецЕсли;
	
	Элемент=Форма.Элементы.Вставить(Имя, Тип, Родитель, СледующийЭлемент);
	
	ЗаполнитьЗначенияСвойств(Элемент,СтруктураЭлемента);
	
	Возврат Элемент;
	
КонецФункции
Показать


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


Остальной функционал в подобном ключе.
user811769; Kaval88; pyrkin_vanya; +3 Ответить
48. Denic_01 30 06.08.19 12:57 Сейчас в теме
Пытаюсь по этой технологии использовать Подключаемый_ВыполнитьПереопределяемуюКоманду

чет не пойму
имеем в итоге процедуру
ВыполнитьПереопределяемуюКоманду(Форма, Команда, ДополнительныеПараметры)

Т.е. из данных у нас только Форма, ДополнительныеПараметры - всегда неопределено
обычно, нам надо произвести некие действия с Объектом и, как правило, все делается на сервере
получить мы его можем только так: Форма.Объект
так вот - как передать на сервер и получить обратно этот Объект

Как решить такую задачу ?
49. Denic_01 30 06.08.19 15:43 Сейчас в теме
(48)
Вообщем, сам извернулся, передавая, ДанныеФормыКоллекция как элемент структуры
52. pvlunegov 169 28.02.20 13:26 Сейчас в теме
Конфигурация 1с ERP 2.4.8 Общие модули которые упоминались в статье, есть.
Процедуры Подключаемый_ВыполнитьПереопределяемуюКоманду не нашел.

Нашел эту процедуру в модулях форм конкретных объектов (формы документов, формы справочников).
В этих формах есть:
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

В модуле СобытияФормКлиент процедура ВыполнитьПереопределяемуюКоманду
// Выполняет переопределяемую команду
//
// Параметры:
//  Форма	- УправляемаяФорма - форма, в которой расположена команда
//  Команда	- КомандаФормы - команда формы
//  ДополнительныеПараметры	- Структура - дополнительные параметры.
//
Процедура ВыполнитьПереопределяемуюКоманду(Форма, Команда, ДополнительныеПараметры = Неопределено) Экспорт
	
	//++ НЕ УТ
	ИнтеграцияССППРКлиент.ВыполнитьКомандуИнтеграцииССППР(Форма, Команда, ДополнительныеПараметры);
	
	ПроверкаДокументовКлиент.ВыполнитьКомандуИзмененияСтатусаПроверкиДокумента(Форма, Команда);
	//-- НЕ УТ
	
	МодификацияКонфигурацииКлиентПереопределяемый.ВыполнитьПереопределяемуюКоманду(Форма, Команда, ДополнительныеПараметры);
	
КонецПроцедуры
Показать


Обратите внимание на последнюю строку кода в процедуре выше. Именно она передает управление из строки в модуле формы конкретного объекта в процедуру общего модуля МодификацияКонфигурацииКлиентПереопределяемый !!!
53. pvlunegov 169 28.02.20 14:12 Сейчас в теме
У меня получилось применить описанный в статье метод для своей задачи.
Задача была следующая: В форме Заказа Клиента, в поле формы "Соглашение" привязать новую процедуру, которая описана в общем модуле Расширения конфигурации. Причем, расширять форму Заказа Клиента нельзя (из соображений легких обновлений конфигурации в будущем).
Решение:
1. В расширении расширяем общие модули МодификацияКонфигурацииПереопределяемый и МодификацияКонфигурацииКлиентПереопределяемый
2. В общем модуле МодификацияКонфигурацииПереопределяемый пишем код:

&После("ПриСозданииНаСервере")
Процедура Рив_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
	Если Форма.ИмяФормы = "Документ.ЗаказКлиента.Форма.ФормаДокумента" Тогда
		Форма.Элементы.Соглашение.УстановитьДействие("ПриИзменении", "Подключаемый_ВыполнитьПереопределяемуюКоманду");
	КонецЕсли;
КонецПроцедуры

3. В общем модуле МодификацияКонфигурацииКлиентПереопределяемый пишем код:
&Вместо("ВыполнитьПереопределяемуюКоманду")
Процедура ПриИзмененииСоглашения(Форма, Команда, ДополнительныеПараметры) Экспорт
	Если Форма.ИмяФормы = "Документ.ЗаказКлиента.Форма.ФормаДокумента" Тогда
		СообщениеПользователя = новый СообщениеПользователю;
		СообщениеПользователя.Текст = "ТЕСТ !!!";
		СообщениеПользователя.Сообщить();
	КонецЕсли;
КонецПроцедуры
Показать


Способ описанный выше реально работает. Любые способы решения которые предлагались в статье а также в комментариях - перепробовал. Не работало.

Объясняю по шагам, почему мой подход работает.

В шаге 2 к элементу Соглашение (поле формы) привязывается обработчик Подключаемый_ВыполнитьПереопределяемуюКоманду
В ТИПОВОЙ форме любого документа и справочника есть процедура с данными именем ("Подключаемый_ВыполнитьПереопределяемуюКоманду").
Код процедуры:

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры

Код из модуля СобытияФормКлиент:
&НаКлиенте
Процедура ВыполнитьПереопределяемуюКоманду(Форма, Команда, ДополнительныеПараметры = Неопределено) Экспорт
	
	//++ НЕ УТ
	ИнтеграцияССППРКлиент.ВыполнитьКомандуИнтеграцииССППР(Форма, Команда, ДополнительныеПараметры);
	
	ПроверкаДокументовКлиент.ВыполнитьКомандуИзмененияСтатусаПроверкиДокумента(Форма, Команда);
	//-- НЕ УТ
	
	МодификацияКонфигурацииКлиентПереопределяемый.ВыполнитьПереопределяемуюКоманду(Форма, Команда, ДополнительныеПараметры);
КонецПроцедуры
Показать

Из кода выше следует, что обработчик Подключаемый_ВыполнитьПереопределяемуюКоманду на форме документа передает управление в типовой общий модуль МодификацияКонфигурацииКлиентПереопределяемый
Этот модуль Расширен в расширении. В РАсширенном общем модуле мы прописываем:

&Вместо("ВыполнитьПереопределяемуюКоманду")
Процедура ПриИзмененииСоглашения(Форма, Команда, ДополнительныеПараметры) Экспорт
	Если Форма.ИмяФормы = "Документ.ЗаказКлиента.Форма.ФормаДокумента" Тогда
		СообщениеПользователя = новый СообщениеПользователю;
		СообщениеПользователя.Текст = "ТЕСТ !!!";
		СообщениеПользователя.Сообщить();
	КонецЕсли;
КонецПроцедуры
Показать


Именно таким образом передается управление в нашу написанную процедуру.
Здесь важен 1 строка кода в коде выше (процедуры препроцессора).
В 1 строке кода важно наименование процедуры которая переопределяется в модуле. Важно понимать, какую именно процедур переопределять.
Чтобы понять это, мне понадобилось 2 часа вдумчивого анализа и точек останова.

Добра вам и четкого кода!
Michale; user591389_aska_rabota; +2 Ответить
54. user591389_aska_rabota 24.07.20 20:26 Сейчас в теме
pvlunegov СПАСИБО!!!
Получилось сделать наконец то )
Оставьте свое сообщение

См. также

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

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

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

27.01.2016    80503    Serginio    113    

Полезные примеры СКД, ч.2

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

Еще несколько примеров решения задач в СКД.

06.04.2021    5433    Neti    7    

Обзор полезных методов БСП 3.1.4

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

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

25.03.2021    21337    rayastar    49    

Звуковое управление в 1С 8.3

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    3881    velemir    31    

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

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

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

10.12.2016    39241    unichkin    74    

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

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

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

28.12.2020    5795    comol    31    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    14712    quazare    34    

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

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

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

08.05.2020    50640    user5300    17    

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

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

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

15.10.2018    33396    tormozit    105    

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

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

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

27.01.2020    49190    ids79    26    

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

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

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

15.01.2020    35300    John_d    22    

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

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

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

30.12.2019    27871    kuzyara    38    

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

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

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

20.09.2012    80432    tormozit    131    

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

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

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

07.10.2019    35428    HostHost    41    

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

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

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

01.10.2019    45355    Yashazz    50    

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

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

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

06.09.2019    79816    rpgshnik    70    

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

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

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

11.07.2007    51441    tormozit    51    

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

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

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

05.09.2019    65419    ids79    55    

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

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

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

05.09.2019    37864    YPermitin    25    

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

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

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

03.09.2019    28077    YPermitin    81    

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

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

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

10.09.2017    48219    tormozit    74    

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

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

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

17.08.2019    39765    ids79    19    

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

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

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

08.08.2019    124220    ids79    72    

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

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

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

02.08.2019    50535    avalakh    26    

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

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

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

25.04.2019    16834    m-rv    3    

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

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

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

26.07.2019    88064    ids79    14    

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

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

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

17.07.2019    43053    ids79    27    

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

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

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

09.07.2019    30554    YPermitin    14    

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

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

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

16.04.2019    21528    m-rv    17    

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

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

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

04.07.2019    20884    SeiOkami    52    

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

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

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

25.06.2019    66517    ids79    26    

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

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

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

11.06.2019    28314    dmurk    148    

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

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

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

01.06.2018    33812    m-rv    22    

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

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

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

04.06.2019    50684    YPermitin    55    

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

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

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

16.05.2019    55079    YPermitin    30    

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

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

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

07.04.2019    39877    ellavs    130    

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

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

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

05.12.2017    29288    itriot11    34    

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

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

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

28.03.2019    29763    ellavs    90    

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

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

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

14.03.2019    37100    YPermitin    53    

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

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

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

26.02.2019    25827    Vladimir Litvinenko    28    

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

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

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

10.11.2018    40255    ids79    44    

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

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

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

03.02.2019    54233    ids79    11    

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

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

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

14.12.2018    48683    ids79    81    

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

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

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

16.11.2018    41838    ids79    49    

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

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

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

13.11.2018    62963    Unk92    26    

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

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

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    84649    stas_ganiev    83