1с добавить кнопку в отчет
Исходная задача: показать диаграмму, используя в качестве данных свою ТЗ. Почему так и нельзя ли сделать по-человечески пока трогать не будем, просто есть ТЗ. Как это сделать? Берём СКД, подсовываем ей в качестве объекта нашу ТЗ - опля, готово.
Это была преамбула, амбула такова. "Подсовывание" и все последующие действия делаются программно. Соответственно, нужна своя кнопка. Плюс свойство у формы Автоотображение состояния. Коллега утверждает, что такие вот вещи - это "костыль", ибо мы не победили отчёт, а убрали/подменили лишнее своим.
Теперь вопрос: своя кнопка Сформировать и запрет отображения состояние - это костыль или использование штатных механизмов СКД?
Своя кнопка "Сформировать" - это не костыль. Самолеты летают на автопилоте, но можно ведь и вручную управлять - это тоже костыли?)
(6) Меня закидывайте, я оппонент.
К сожалению, решить проблему я не смогла, пришлось изворачиваться.
Нифига это не штатно - прятать стандартные кнопки и вместо них свои рисовать.
(3) Ты не то сравниваешь. Представь, что тебе надо перепрограммировать автопилот. Но ты не смог этого сделать, поэтому прикрутил свой, а кнопку для включения дефолтного закрасил в цвет панели, чтобы летчик не увидел. Считаешь это нормальным решением?
(9) Хорошо, погнали в эту тему.
Ты не доконца рассказала историю. Ведь автопилот не получилось запрограммировать не потому, что умений не хватило, а потому, что это самолет для авиашоу в честь ВВС - нужно всякие бочки вертеть, мертвые петли и т.п. Автопилот не справится, нужно ручное управление. Это не костыли.
(12) конструкторы автопилота не могут в принципе предусмотреть всяческие бочки, мёртвые петли и т.п. поэтому умелый пилот берёт напильник, допиливает автопилот на земле под себя и спокойно взлетает
(12) Ну, возможно, твоё кунг-фу ещё не достаточно сильное, чтобы убивать противника с одного удара и приходится бить два раза, но это всё равно кунг-фу. Ты же не бьешь противника костылем. :)
(12) не совсем правильный подход. Заполнение скд из таблицы значений рисуется программно, в чем костыль? было бы у скд реквизит - брать данные из этой таблицы, было бы другое дело.
(15) А ручное управление самолетом - это не штатная функция управления самолетом что-ли?)) Я же свои тросики для управления закрылками не протягиваю. Все рычаги и кнопки с завода изготовителя. Всё штатно.
(19) Этот метод отрабатывает при нажатии стандартной кнопки Сформировать. Почему оттуда у меня отчет не формируется? Код проходит без ошибок, но отчет не формируется
Для удобства пользователей в программах 1С доступно изменение рабочей панели инструментов по своему усмотрению: убрать лишнее, добавление кнопок и прочее.
Данный лайфхак поможет быстро настроить 1С для вашего удобства.
Добавление кнопки в журнал документов на вкладке «Счета покупателям»
Шаг 1. Открываем журнал документов «Счета покупателям».
Рабочая панель в данном случае имеет ряд кнопок-команд - «Копировать», «Создать»и т.д. Некоторые кнопки представлены в виде пиктограмм-картинок, а остальные написаны текстом.
Нажимаем для настройки кнопку «Еще».
Добавляем на панель кнопки «Провести», «Пометить на удаление/Снять пометку на удаление» и «Отменить проведение».
Шаг 2. Выбираем команду – «Изменить форму».
Шаг 3. Открываем раздел «Командная панель» и активируем группу «Кнопки командной панели».
Шаг 4. Выделяем кнопку, необходимую для расположения на рабочей панели.
В зависимости от выбранной команды может незначительно поменяться настройка, но это не принципиально.
Настройка «Отображение» имеет следующие варианты:
- текст;
- картинка;
- авто;
- текст и картинка.
К примеру выбираем тип «Картинка», он более компактный.
Шаг 5. Выбираем вариант настройки «Положение кнопки в командной панели» из имеющихся вариантов:
- в командной строке;
- в дополнительном подменю;
- авто;
- в командной панели и дополнительном подменю.
К примеру выбираем - «В командной панели», после чего нажимаем «Ок».
Если окно настройки не отображает кнопку, то необходимо растянуть его вниз, так как она может быть не видна. Без нажатия на «Ок» результат не сохранится.
Кнопка «Пометить текущий элемент на удаление / Снять пометку» размещена на панели.
Аналогичные действия выполняем с другими кнопками.
Шаг 6. Нажимаем кнопку «Еще», выбирая команду «Изменение формы». После этого разворачиваем группу «Проведение». Для команд «Отменить проведение» и «Провести» выполните одинаковую настройку: «Отображение – «Текст».
Для «Положение кнопки в командной панели» выбираем вариант «В командной панели и дополнительном подменю». Дополнительное подменю открывается кнопкой «Еще».
Шаг 7. Нажмите «Ок».
Текстовые кнопки «Отменить проведение» и «Провести» будут отображаться на рабочей панели журнала «Счета покупателям», сохранившись в кнопке «Еще».
Для комфортной работы настраивайте рабочую панель 1С под себя.
Сервисы, помогающие в работе бухгалтера, вы можете приобрести здесь.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Добавление кнопки на управляемую форму
Изменение форм объектов конфигурации является очень распостраненной задачей при доработке типовый конфигураций, создании отчетов и обработок и т.д. Да в абсолютном большинстве случаев разработчику приходится иметь дело с формами.
Сегодня в статье рассмтрим сквозной пример добавления на управляемую форму кнопки.
Конструктор
Самый простой способ - это конечно же воспользоваться конструктором форм в конфигураторе. Тогда не нужно будет писать ни одной строчки кода. Все что нужно - это пара кликов:
И кнопка уже добавлена!
Но не всегда такой вариант приемлем. Для некоторых задач нужно изменять форму программным образом, например, для формирования кнопок команд печати документов, где для каждой печатной формы создается собственная кнопка. Заранее знать состав всех печатных форм (включая внешние) мы не можем, поэтому добавление кнопок выполняется автоматичкески.
Программное добавление
И так, то что мы сделали в 2 клика сделаем с помощью нескольких строк кода. Перед тем как добавлять команду формы, нам нужно определить процедуру-обработчик этой команды. Добавим в модуль формы следующую процедуру:
Теперь нам нужно добавить команду формы и присвоить в качестве обработчика процедуру выше. Добавлять команду нужно на стороне сервера, поэтому используем событие формы "ПриСозданиинаСервере":
Отлично, осталось добавить элемент формы типа "Кнопка формы" для команды формы "Предупредить". Дополним обработчик события "ПриСозданииНаСервере":
На этом все. Если мы откроем эту форму в режиме 1С:Предприятия, то увидим следующее:
Пример небольшой и врятли даст ответы нв все вопросы по программной модификации форм. Он лишь может подсказать общий принцип.
Когда количество изменений на предприятии превышает критический уровень в сторону необновляемых конфигураций - 1С предлагает создание управляемого приложения
Как свернуть все активные окна
Табло для управляемого приложения, тонкий клиент
"Аудиторский след" (история изменений) документов и справочников для любой конфигурации обычного приложения 8.x
Поговорим об особенностях формирования внешних отчетов в программе 1С Бухгалтерия 8 без применения схемы компоновки информации. За исходную информацию примем необходимость: «Составить отчет по сч. 62 бухучета , в котором в разрезе Контрагентов и их Договоров станут отражаться обороты за определенный период».
Создание внешнего отчета
Прежде всего, перейдем в режим Конфигуратора , выберем подраздел Файл, после кликнем на значок Новый документ или слово Новый, и создадим файл внешнего отчета.
Выберем строку Внешний отчет в перечне. После формирования файлы, укажем его Наименование (допустим, ПростейшийОтвет ) и выполним сохранение на диск. Кроме того, внесем несколько реквизитов вида Дата – КонецПериода и НачалоПериода . Они потребуются для выставления временных рамок при выборке информации в процессе создания отчета.
Создание макета внешнего отчета
Для создания отчета в 1С Бухгалтерия 2.0 понадобится шаблон для вывода информации, или, другими словами, макет, в котором будут составляться таблицы, задаваться необходимые параметры и т.д. Для добавки шаблона кликаем на раздел Макеты, находящийся в дереве мета-данных отчета, после – на Добавить. При формировании макета определяем вид Табличный документ.
В шаблоне – четыре основных части:
- Шапка – в которой станет располагаться название отчета, временной отрезок, за который он создан, шапка таблицы.
- ДанныеКонтрагент – здесь будет находиться информация по контрагентам в таблице.
- ДанныеДоговорКонтрагента – тут мы станем указывать информацию по соглашению с контрагентом, также в таблице.
- Подвал – часть предназначается для указания итоговых параметров по всему отчету для Расхода и Прихода.
Начнем формировать части шаблона. Для этого выделяем необходимое число строк, после чего:
- Нажимаем одновременно сочетание клавиш «N + Shift + Ctrl»;
- Или кликаем на Назначить имя, расположенное в меню Имена в разделе Меню Таблица.
В Шапке прописываем название документа: Обороты сч. 62. Используя инструмент Границы, рисуем шапку отчета, после – задаем параметры. Последние позволяют указывать в отчете необходимые сведения. Но об этом мы поговорим позднее.
Параметр в шаблоне создается путем выбора необходимой ячейки и указания в ней (без пробелов) названия параметра. После нужно будет нажать на ячейку, используя правую кнопку мышки, и в выпавшем списке кликнуть на строчку Свойства. Выберите заполнение Параметр в закладке Макета в свойствах ячейки.
В результате название параметра в ячейке окажется окруженным скобками (<>). Вид получившейся Шапки должен быть таким:
В части ДанныеКонтрагент задаем параметры для указания названия контрагента, и для Расхода и Прихода по сч. 62. С этой целью используем инструмент Границы, оформляя часть как строку таблицы.
В части ДанныеДоговорКонтагент определяем парамаметры для указания названия соглашения, Расхода и Прихода по сч. 62. С этой целью используем инструмент Границы, оформляя часть как строку таблицы. Выполняем незначительный отступ перед параметром ДоговорКонтрагент (разбейте и соедините ячейки, работая с правой кпонкой мышки). Отступ потребуется для того, чтобы в документе было заметно, что строчка по соглашению располагается ниже по иерархии, в сравнении со строчкой по контагенту .
В части Подвал указываем параметры для результатов Расхода и Прихода.
В результате должен появиться шаблон следующего вида:
Создание формы отчета
Форма необходима для появления кнопки Формировать, указания срока формирования и внесения информации. Получить ее можно, перейдя к дереву с мета-данными и выбрав в нем раздел Форма. Кликайте на Добавить. На 1-ой странице конструктора для создания форм никакие корректировки не нужны. Кликайте сразу на Далее.
На новой странице указывайте для размещения на форме два реквизита – КонецПериода и НачалоПериода .
В результате будет показана форма следующего вида:
Этот вид формы нам не подходит, изменим его:
- Перенесем в верхнюю часть панели кнопку Сформировать, пока что расположенную внизу;
- Вытянем форму горизонтально и вертикально;
- Разместим по горизонтили КонецПериода и НачалоПериода ;
- Добавим Поле табличного документа (элемент управления) в форму. Поле потребуется нам для вывода отчета. Укажем его название – ТабДок ;
- Создадим кнопку для определения периода (при клике на нее станет показываться окно выбора необходимого периода). Заниматься написанием программного кода для этой кнопки мы сейчас не станем. Размещаем ее около полей периода.
В результате указанных действий форма выглядит так:
Программирование
Переходить к программированию можно после формирования формы. Выводим окно выбора периода. Нажимаем на кнопку правой кнопкой мышки, переходим в раздел Свойства – здесь выбираем События (в этом меню, используя символ лупы, в модуле формы мы создадим процедуру Кнопка-1Нажатие).
Для переключения между модулем и самой формой можно использовать расположенные в нижней части закладки.
Вызвать окно выбора периода можно, используя стандартный модуль ОбработчикНастройкаПериодаНажатие , расположенный в меню РаботаСДиалогами . Здесь в качестве параметров необходимо передать отчетные реквизиты КонецПериода и НачалоПериода .
Приступаем к программированию – нам нужен код для формирования и вывода отчета. Используем уже имеющуюся процедуру КнопкаСформироватьНажатие . Она станет осуществляться при клике на Сформировать.
Прежде всего, нам нужна переменная для поля таблицы-документа, в котором будут указываться данные.
ТабДок = ЭлементыФормы . ТабДок
Создался шаблон. Используя ПолучитьМакет (< ИмяМакета >), в параметр ему присвоим имя шаблона. При существовании такого шаблона, система отыщет его.
Макет = ПолучитьМакет («Макет»)
Оформляем переменные для всех областей шаблона. Используем макет ПолучитьОбласть (< ИмяОбласти >).
ОбластьШапка = Макет. ПолучитьОбласть («Шапка»)
ОбластьПодвал = Макет. ПолучитьОбласть («Подвал»);
ОбластьДанныеДоговор =Макет. ПолучитьОбласть (« ДанныеДоговор »)
ОбластьДанныеКонтрагент = Макет. ПолучитьОбласть (« ДанныеКонтрагент »).
Проводим очистку поля таблицы-документа. После этого каждый новый сформированный отчет станет удалять прежнюю информацию.
По завершению инициализации переменных, начинаем по очереди заполнять и выводить части шаблона – с Шапки. У Шапки есть КонецПериода и НачалоПериода – зададим тут показатели периода формирования документа. С этой целью используем Параметры области макета.
КонецПериода = ОбластьШапка .Параметры. КонецПериода
НачалоПериода = ОбластьШапка .Параметры. НачалоПериода
Другие действия с частью не нужны: убираем Шапку в поле таблицы-документа.
ТабДок .Вывести( ОбластьШапка )
Пишем запрос для базы данных, который позволит получать обороты по сч. 62 из бух . регистра Хозрасчетный. Указываем переменную для расположения запроса.
Запрос = новый Запрос.
Перенесем необходимые параметры в запрос перед написанием текста. Мы создаем запрос по сч. 62 бухучета , значит, прежде всего, нам нужен параметр для него.
Запрос. УстановитьПараметр («Счет62», ПланыСчетов .Хозрасчетный. НайтиПоКоду («62»)).
Теперь в запрос нужно перенести период создания отчета. Помните, что для периода формирования существуют соответствующие реквизиты. Перенесем их как параметры.
Запрос. УстановитьПараметр (« КонецПериода », КонецПериода )
Запрос. УстановитьПараметр (« НачалоПериода », НачалоПериода )
Используя конструктор запросов, создаем текст запроса. Рекомендуем отказаться от попытки написания запросов вручную, и всегда использовать конструктор, который не может допустить ошибку и опечатку. Вы сэкономите силы и время даже при создании наиболее сложных запросов. В коде указываем:
Далее наводим курсор мышки между кавычками, кликаем правой клавишей мышки и определяем строку Конструктор запроса. Откроется нужное нам окошко.
Сейчас нужно указать необходимую таблицу базы данных утилиты. Наша таблица должна быть виртуальной - Обороты регистра бухгалтерии Хозрасчетный. В окошке конструктора она располагается слева.
Переносим таблицу в часть Таблица и приступим к вводу параметров. Для любой виртуальной таблицы запроса имеется особый комплект параметров, воспользовавшись которыми, можно находить необходимые сведения в главной таблице. В нашем примере главной таблицей будет Регистр бухгалтерии Хозрасчетный. Открываем окошко параметров виртуальной таблицы.
Указываем параметры и периоды , которые ранее переносились в запрос. Для того, чтобы в тексте запроса можно было применить параметр, необходимо перед его названием указывать & (знак амперсанда ).
Теперь нужно оформить условие по сч. 62 бухгалтерского учета. С этой целью ищем УсловиеСчета в параметрах виртуальной таблицы, и пишем условие в нем.
Счет В ИЕРАРХИИ (&Счет62)
Кроме того, можно использовать Конструктор для формирования условий. Кликните на кнопку с 3 точками.
После этого на виртуальную таблицу больше не нужно будет накладывать никаких условий. Дальше кликаем на кнопку ОК, расположенную в окошке с параметрами виртуальной таблицы. После – определяем необходимые нам поля из таблички Хозрасчетной.Обороты. в частности требуются Расход и Приход, Договор контрагента и Контрагент. Просмотреть перечень полей, возможных в выбранной сейчас таблице, можно, кликнув на значок «+» (он располагается около наименования таблицы). Переносим необходимые поля в правую часть конструктора запросов (название части аналогичное – ПОЛЯ). Если вы перейдете в план счетов бухучета , то обнаружите, что для сч. 62 аналитика по ДоговоруКонтрагента — Субконто2, а по Контрагенту — это Субконто1.
Соответственно, из полей виртуальной таблички нам нужны Субконто2 и Субконто1. В связи с необходимостью Расхода и Прихода по сумме, дополнительно треуются поля СуммаОборотКт и СуммаОборотДт .
Оформив наименования определенных сейчас полей. С этой целью необходимо открыть меню Объединения/Псевдонимы, и указать необходимые названия полей.
В связи с тем, что в формируемом нами отчете информация станет указываться в соответствии с иерархией (соглашения с контрагентами будут выходить на уровне, перед которым будет располагаться уровень самих контрагентов), нужно настроить демонстрацию информации в иерархии, используя Итоги. Открываем подраздел Итоги в конструкторе. Переносим в поля группировок один за другим Контрагент и ДоговорКонтрагента , далее - итоговые Приход и Расход.
Все необходимые процедуры в редакторе выполнены. Остается кликнуть на кнопку ОК и убедиться в том, что в программном коде отражается текст только что сформированного запроса. Вид текста должен быть следующим:
| ХозрасчетныйОбороты .Субконто1 КАК Контрагент,
| ХозрасчетныйОбороты .Субконто2 КАК ДоговорКонтрагента ,
| ХозрасчетныйОбороты . СуммаОборотДт КАК Приход,
| ХозрасчетныйОбороты . СуммаОборотКт КАК Расход
| РегистрБухгалтерии .Хозрасчетный.Обороты(& НачалоПериода , & КонецПериода , , Счет В ИЕРАРХИИ (&Счет62), , , , ) КАК ХозрасчетныйОбороты
По окончанию формирования запроса, необходимо оформить части Подвал, ДанныеДоговорКонтрагент и ДанныеКонтрагент . Все указанные части нужно оформлять, указывая информацию, полученную при проведении запроса. В связи с тем, что в запросе есть группирование (в частности, ДоговорКонтрагента и Контрагент), указываем для него информацию таким путем:
ВыборкаКонтрагент = Запрос.Выполнить().Выбрать( ОбходРезультатаЗапроса . ПоГруппировкам );
В результате у нас будут записи с результатом по каждому контрагенту.
Прежде, чем обходить информацию выборки, используя цикл, инициализируем переменные, которые предназначаются для расчета всех результатов отчета:
Для корректного вывода данных с учетом иерархии и разворотами по знаку «+», указываем начало автоматической группировки строчек документа-таблицы:
Все предварительные работы завершены. Следует начать обходить итоги запроса. Для обхода потребуется использовать цикл Пока:
Пока ВыборкаКонтрагент .Следующий() Цикл
Аннулируем параметры Расход и Приход области ДанныеКонтрагент в самом начале цикла. Что это нам даст? Предположим, что по поставщику, назовем его Х, расход составляет 10, а приход 20. У следующего за ним поставщика, назовем его Н, расход и приход отсутствуют полностью. При аннулировании параметров Расхода и Прихода в такой ситуации в строке по поставщику Н окажутся данные поставщика Х – расход 10 и приход 20.
ОбластьДанныеКонтрагент .Параметры.Приход = 0;
ОбластьДанныеКонтрагент .Параметры.Расход = 0;
Теперь оформляем данными элемента выборки часть ДанныеКонтрагент
ЗаполнитьЗначенияСвойств ( ОбластьДанныеКонтрагент .Параметры, ВыборкаКонтрагент );
Оформив данные, можно выводить часть в Табличный документ. Т.к. мы работаем с автоматическим группированием строчек, необходимо определить степень строки в группировке (в нашем случае у отчета окажется 2 степени, для договоров контрагентов – второго уровня, для самих контрагентов – первого уровня).
ТабДок .Вывести( ОбластьДанныеКонтрагент ,1);
После для указанного контрагента нужно выполнить выборку по его соглашениям:
ВыборкаДоговорКонтрагента = ВыборкаКонтрагент .Выбрать( ОбходРезультатаЗапроса . ПоГруппировкам );
Используем цикл Пока для выполнения обхода:
Пока ВыборкаДоговорКонтрагента .Следующий() Цикл
Обнуляем параметры Расход и Приход в цикле по соглашениям контрагентов. Оформляем часть ДанныеДоговора из выборки и выносим эту часть на 2-ой уровень записей в таблицу-документ:
ОбластьДанныеДоговор .Параметры.Приход = 0;
ОбластьДанныеДоговор .Параметры.Расход = 0;
ЗаполнитьЗначенияСвойств ( ОбластьДанныеДоговор .Параметры, ВыборкаДоговорКонтрагента );
ТабДок .Вывести( ОбластьДанныеДоговор ,2);
Кроме того, к переменным расчета итоговых показателей по Расходу и Приходу в данном цикле присоединим нынешние показатели.
ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента .Приход;
ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента .Расход;
После этого вынос данных в части ДанныеДоговорКонтрагент и ДанныеКонтрагент будет закончен. Потребуется только окончить автоматическую группировку строчек таблицы-документа:
Циклы, ответственные за демонстрацию информации в частях документа ДанныеДоговорКонтрагент и ДанныеКонтрагент , целиком станут иметь следующий вид:
Пока ВыборкаКонтрагент .Следующий() Цикл
ОбластьДанныеКонтрагент .Параметры.Приход = 0;
ОбластьДанныеКонтрагент .Параметры.Расход = 0;
ЗаполнитьЗначенияСвойств ( ОбластьДанныеКонтрагент .Параметры, ВыборкаКонтрагент );
ТабДок .Вывести( ОбластьДанныеКонтрагент ,1);
ВыборкаДоговорКонтрагента = ВыборкаКонтрагент .Выбрать( ОбходРезультатаЗапроса . ПоГруппировкам );
Пока ВыборкаДоговорКонтрагента .Следующий() Цикл
ОбластьДанныеДоговор .Параметры.Приход = 0;
ОбластьДанныеДоговор .Параметры.Расход = 0;
ЗаполнитьЗначенияСвойств ( ОбластьДанныеДоговор .Параметры, ВыборкаДоговорКонтрагента );
ТабДок .Вывести( ОбластьДанныеДоговор ,2);
ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента .Приход;
ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента .Расход;
На завершающем этапе необходимо перенести итоговые сведения в часть Подвал и перевести сам Подвал в таблицу-документ:
ОбластьПодвал .Параметры. ИтогоПриход = ИтогоПриход ;
ОбластьПодвал .Параметры. ИтогоРасход = ИтогоРасход ;
ТабДок .Вывести( ОбластьПодвал );
После этого процедура формирования внешнего отчета в программе 1С Бухгалтерия 2.0 версия 8 без применения схемы компоновки данных будет полностью окончена. С этой минуты отчет можно будет создавать, используя рабочий режим утилиты 1С версия 8, и добавлять в справочник ВнешниеОбработки .
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Программно добавить на командную панель кнопку с выполнением произвольного кода по ее нажатию.
Реализация
Для наглядности создадим новую обработку с «Пустой» формой. Её внешний вид будет следующим
В обработчике события формы ПриСозданииНаСервере() добавим код генерации команды и кнопки
И создадим обработчик нашей команды
В итоге на форме появится кнопка выполняющая наш обработчик. Выглядеть все это будет как добавленная кнопка в конфигураторе
Так же кнопки формы имеют свойство КнопкаПоУмолчанию, если присвоить значение Истина
тогда кнопка будет выделена цветом и шрифтом
а как код то добавить чтобы выполнялся?
или код нужно заранее на форму поместить, тогда нет смысла добавлять программно команду, если код всеравно нужно помещать заранее на конкретную форму.
Алексей, доброго времени суток! Хороший вопрос!
Все верно, код обработчика придется добавить в модуль формы.
А теперь давайте посмотрим не только на разработку, но и на сопровождение и дальнейшее обновление доработанной конфигурации.
Если добавить команду «руками», то при обновлении дважды измененной формы команда будет потеряна. Ведь, модули формы мы можем сравнить, а формы нет.
Если команду добавить программно в модуле формы или соответствующем модуле БСП, а обработчик в модуле формы. При этом выделив все свои процедуры префиксом и поместив их в отдельную область, то мы получим ситуацию, когда все наши изменения можно легко увидеть в сравнении модулей. Не придется держать чек-лист со списком команд/реквизитов/элементов для ручного добавления и перепроверки после обновления.
И тут мы приходим к правилу — формы «руками» не правятся вообще. Все «ручные» изменения выявляются на этапе ревью, вносивший такие изменения бурно порицается.
Обдумав данный механизм, просится к добавлению:
1. Автотест с открытием форм и исполнением программного изменения;
2. Корректная обработка ситуаций, когда программное изменение не получилось. С соответствующим выводом на этапе тестирования.
Читайте также: