Блокировка/Разблокировка формы документа Отражение зарплаты в финансовом учете с использованием механизма "Блокировки изменения объектов"

28.05.25

Разработка - Механизмы типовых конфигураций

Пример подключения функционала модуля БлокировкаИзмененияОбъектов в расширении для документа Отражение зарплаты в финансовом учете конфигурации Комплексная автоматизация 2.5. Пример программного создания дополнительных команд и одноименных кнопок для них. В том числе, команды "Заблокировать форму", которая не предусмотрена в типовом функционале. Предполагается возможность указать отображение добавляемых кнопок как в Командной панели, так и в меню "Еще".

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Блокировать / Разблокировать форму документа Отражение зарплаты в финансовом учете с использованием механизма "Блокировки изменения объектов" (Расширение КА)
.cfe 40,86Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

По техзаданию клиента кнопки Блокировка/Разблокировка должны располагаться в Дополнительном меню ("Ещё").

Пример перемещения кнопки Разблокировать форму из Дополнительного меню в Командную панель подробно рассмотрен в статье //infostart.ru/1c/tools/1864324/

1. Новый реквизит и меню документа ОтражениеЗарплатыВФинансовомУчете

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

Он изменяется обработчиками нажатия кнопок Заблокировать форму и Разблокировать форму.

 

 

Если ЗаблокированОтИзменений = Ложь, кнопка Заблокировать форму активна.

 

 

Если ЗаблокированОтИзменений = Истина, появляется кнопка Разблокировать форму и стандартная надпись о причинах блокировки. Кнопка «Заблокировать» не активна.

При анализе причины блокировки проверяется значение реквизита ЗаблокированОтИзменений.

 

 

2. ОбработчикиСобытийФормы документа ОтражениеЗарплатыВФинансовомУчете

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

Подключение функционала типового модуля БлокировкаИзмененияОбъектов выполнено на основании статьи //infostart.ru/1c/tools/1864324/

#Область ОбработчикиСобытийФормы 

&НаСервере
&После("ПриСозданииНаСервере")
Процедура Metronom_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	СписокДобавленныхКоманд = Metronom_ДобавитьКомандыДляКнопокФормы();
	
	Для Каждого ДобавленнаяКоманда Из СписокДобавленныхКоманд Цикл
	    Metronom_ДобавитьКнопкуНаФорму(ДобавленнаяКоманда.Значение, ДобавленнаяКоманда.Представление);
	КонецЦикла;    
				
	// В форме нового документа выводит группу с информацией о причинах блокировки
	БлокировкаИзмененияОбъектов.ПриСозданииНаСервереФормыОбъекта(ЭтотОбъект, Отказ, СтандартнаяОбработка);

КонецПроцедуры
	
&НаСервере
&После("ПриЧтенииНаСервере")
Процедура Metronom_ПриЧтенииНаСервере(ТекущийОбъект) 
	
	//В форме существующего документа выводит группу с информацией о причинах блокировки
	БлокировкаИзмененияОбъектов.ПриЧтенииНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект); 
	
КонецПроцедуры

&НаСервере
&После("ПослеЗаписиНаСервере")
Процедура Metronom_ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)  
	
	// В форме документа обновляет сведения о блокировках
	БлокировкаИзмененияОбъектов.ПослеЗаписиНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);

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

#КонецОбласти

 

3. ОбработчикиКомандФормы документа ОтражениеЗарплатыВФинансовомУчете

Metronom_ЗаблокироватьФормуОбъекта — обработчик команды, добавленной программно.

Подключаемый_РазблокироватьФормуОбъекта — обработчик команды из функционала типового модуля БлокировкаИзмененияОбъектов.

В обработчика команд кнопок Заблокировать/Разблокировать добавлен вызов процедуры Metronom_УстановитьСвойствоЗаблокирован(Истина/Ложь). 

Изменяет реквизит объекта ЗаблокированОтИзменений для дальнейшего использования в общем модуле при анализе причин блокировки. См. описание кода общих модулей в статье //infostart.ru/1c/tools/1864324/

#Область ОбработчикиКомандФормы 

&НаКлиенте
Процедура Подключаемый_РазблокироватьФормуОбъекта(Команда)
	
	//В этом примере с добавлением кнопки ЗаблокироватьФорму вызов данной процедуры не нужен
	//так как в УстановитьДоступностьПоБлокировке вызывается БлокировкаИзмененияОбъектов.ПослеЗаписиНаСервереФормыОбъекта 
	//с аналогичным действием проверки причин блокировки
	
	//БлокировкаИзмененияОбъектовКлиент.РазблокироватьФормуОбъекта(ЭтотОбъект, Объект.Ссылка);
	
	Metronom_УстановитьСвойствоЗаблокирован(Ложь);
	
	Metronom_УстановитьДоступностьПоБлокировке();
	
	ЭтаФорма.Прочитать();
	
КонецПроцедуры

&НаКлиенте
Процедура Metronom_ЗаблокироватьФормуОбъекта(Команда)
	
	Metronom_УстановитьСвойствоЗаблокирован(Истина); 
	
	Metronom_УстановитьДоступностьПоБлокировке();
	
	ЭтаФорма.Прочитать();
		
КонецПроцедуры  

#КонецОбласти

 

4. СлужебныеПроцедурыИФункции модуля формы документа ОтражениеЗарплатыВФинансовомУчете

Пример программного добавления команды ЗаблокироватьФормуОбъекта, добавление кнопок по списку имен команд.

#Область СлужебныеПроцедурыИФункции

&НаСервере
Функция Metronom_ДобавитьКомандыДляКнопокФормы() 

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

	Возврат СписокКоманд;
   
КонецФункции  

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

&НаСервере
Процедура Metronom_УстановитьСвойствоЗаблокирован(ЗначениеЗаблокирован)
	
	обДок = Объект.Ссылка.ПолучитьОбъект();
	обДок.Metronom_ЗаблокированОтИзменений = ЗначениеЗаблокирован;   
	обДок.Записать(РежимЗаписиДокумента.Запись);
				
КонецПроцедуры

&НаСервере
Процедура Metronom_УстановитьДоступностьПоБлокировке() 
			
   	// В форме документа обновляем доступность и сведения о блокировках
	//Для типовых кнопок, и для добавленных в СписокКоманд  
	БлокировкаИзмененияОбъектов.ПослеЗаписиНаСервереФормыОбъекта(ЭтотОбъект, Объект, Новый Структура);

	Для Каждого Элемент из Элементы Цикл 
		Если ТипЗнч(Элемент) = Тип("КнопкаФормы") тогда 
			Если СтрНайти(Элемент.ИмяКоманды, "Metronom_") тогда
				Элемент.Доступность = Объект.Metronom_ЗаблокированОтИзменений;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;	
	
	//Рабочий вариант без цикла по перебору Элементов представлен ниже, 
	//однако нужно указывать поименно добавленные дополнительно кнопки 
	//а не один раз указать ИмяКоманды(кнопки) в процедуре добавления новых команд
	
	//ДобавленнаяКнопка = Элементы.Найти("Metronom_ЗаблокироватьФормуОбъекта"); 
	//ДобавленнаяКнопка.Доступность = Объект.Metronom_ЗаблокированОтИзменений;   

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

 #КонецОбласти

 

Проверено на следующих конфигурациях и релизах:

  • 1С:Комплексная автоматизация 2, релизы 2.5.21.128

расширение блокировать разблокировать БлокировкаИзмененияОбъектов Отражение зарплаты в финансовом учете

См. также

Работа с интерфейсом БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Платформа 1С v8.3 1C:ERP Бесплатно (free)

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

12.05.2025    1750    PROSTO-1C    1    

13

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

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

27.02.2025    809    PROSTO-1C    1    

6

Механизмы типовых конфигураций HighLoad оптимизация Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Бесплатно (free)

Пример популярной пользовательской настройки плана счетов. К чему это может привести, почему «всё тормозит» и как это поправить.

18.02.2025    3446    pbelousov    10    

6

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    15082    Begemoth80    32    

88
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Viktor_Ermakov 376 29.05.25 08:14 Сейчас в теме
Можете описать пользовательский сценарий, когда человеку нужно заблокировать форму?
В БСП есть механизм запрета редактирования, чем он не устроил?
Спасибо!
annak2980; +1 Ответить
2. annak2980 1 29.05.25 11:52 Сейчас в теме
(1) Добрый день, спасибо за интерес к обработке и вопрос
При использовании КА пользователи часто вносят правки именно в Отражение зарплаты в финансовом учете в части Способа отражения зарплаты. Главбухи имеют склонность его менять в момент отражения.
Например, в данный месяц нужно отразить часть суммы начислений многомесячного договора ГПХ на другой объект. Переделывать первичные документы учета зарплаты по разным причинам не хотят.
Главбух хочет быстро переразнести сумму начисления на другой счет/направление деятельности/подразделение только в данном месяце без переделки кадровых документов. Вносит изменения в Отражение зарплаты в бухучете в части Способа отражения начислений. Затем блокирует документ от случайного перезаполнения. Нет необходимости дергать кадровика или расчетчика, если в текущий момент нужно другое распределение сумм по направлениям деятельности.
Если в процессе формирования Декларации о прибыли нужен другой результат по затратам, то разблокирует документ, вносит изменения в части отражения, блокирует заново.
Кроме того, данная обработка сделана для клиентов, у которых в Отражении зарплаты после стандартного заполнения документа по нажатию кнопок происходит перераспределение сумм производственных затрат на счете 20 на другие способы отражения по их собственному алгоритму. Так же специфически разносится отражение в учете договоров ГПХ Из-за большого количества госконтрактов это кропотливая работа с документом Отражение ЗП в учете. Результаты которой должны быть заблокированы от случайных изменений впоследствии.
3. Viktor_Ermakov 376 30.05.25 11:09 Сейчас в теме
(2) Спасибо за развернутый ответ, кейс понятен.
Но Вы не ответили на второй вопрос, почему тоже самое было не сделать на механизме БСП запрет редактирования?
4. annak2980 1 30.05.25 15:19 Сейчас в теме
(3) Да, Вы правы, этот вариант рассматривался как возможный путь реализации задания клиента.
Например, как описано в статье БСП: инструкция подключения объектов к подсистеме запрета редактирования реквизитов.
Поименное перечисление для добавления в массив в функции ПолучитьБлокируемыеРеквизитыОбъекта, как предлагается в статье, можно было бы заменить с целью заблокировать все элементы формы:
Функция ПолучитьБлокируемыеРеквизитыОбъекта()
Результат = Новый Массив;
Для Каждого Элемент из Элементы цикл
Результат.Добавить(Элемент.Имя);
Возврат Результат;
КонецФункции
Такой ход нужен, так как состав элементов блокируемой формы может меняться при обновлениях. Это вызовет повторное обращение клиента вернуть работоспособность уже купленной обработки.

В обоих равноценных по реализации вариантах ("Разблокировать форму" или "Разрешить редактирование реквизитов") речь так или иначе идет о разблокировке элементов формы. То есть условно это вторая часть процесса. Я представила протестированное решение для КА по добавлению кнопки Заблокировать к другим возможным кнопкам, добавляемым программно на форму документа.
Логически, это продолжение статьи Пример использование механизма Блокировки изменения объектов для (БП, ЗУП...
Оставьте свое сообщение