Решение проблемы автоматического утверждения расчета кадровиком документов. Разграничение прав кадровиков и расчетчиков. ЗУП 3.1

Администрирование - Защита, права, пароли

ЗУП 3.1. Автоматическая установка (Убрать) "Расчет утвердил". ЧтениеДанныхДляНачисленияЗарплатыРасширенная и ДобавлениеИзменениеДанныхДляНачисленияЗарплатыРасширенная

19
Статья посвящена тем, кто столкнулся с проблемой автоматической установки "Расчет утвердил". Также рассматривается решение проблемы с отображением ФОТ и оклада у кадровика. Добавление роли ЧтениеДанныхДляНачисленияЗарплатыРасширенная кадровику без последствий для расчетчика.

Вечная проблема – выяснение, кто прав, между кадровиками и бухгалтерией. Наверняка  есть организации, где этой проблемы не существует, но я еще такой компании не встречал. Проблемы обостряются после перехода с ЗУП 2.5 на ЗУП 3.1.

Дело в том, что разработчик конфигурации убрал разделение между документами кадровыми и документами начисления. Грубо говоря – в ЗУП 3.1 кадровый документ это документ и для расчетчика. То есть и расчетчики, и кадровики пользуются одними и теми же документами. Кадровик видит свою часть, которая необходима ему для работы, а расчетчик видит свою часть. Разработчик поделил функциональность и дал возможность регулировать ее в «Профиле групп доступа»(Ролями). Все бы ничего, но есть небольшие проблемы:

  1. Кадровикам нужен доступ к печати «Справки расчета».
  2. Кадровикам нужна возможность изменять начисления в кадровых переводах.
  3. Кадровикам нужна возможность посмотреть начисляемый ФОТ и размер аванса.

Все эти возможности у кадровиков есть, но только при включенных ролях «ЧтениеДанныхДляНачисленияЗарплатыРасширенная» или «ДобавлениеИзменениеДанныхДляНачисленияЗарплатыРасширенная».  Вроде бы добавь в «Профиль групп доступа» кадровику эти роли и все будет работать, а нет!  

При включении любой из этих ролей в набор прав «Кадровика» появляется одна особенность – в некоторых документах автоматически рассчитывается средний заработок и устанавливается галочка «Расчет утвердил». То есть при включенных ролях кадровик,  формируя отпуск сотруднику, при создании самого документа автоматом устанавливается галочка «Расчет утвердил», а так же рассчитывается средний заработок, плюс открывается вкладка «Начислено (подробно)».  Далее расчетчик в своем списке документов уже видит, что документ рассчитан (документ не выделен жирным цветом) и не обрабатывает его. Так же бывает так, что расчетчик, рассчитав зарплату за месяц (Бывает хуже, если уже выплатили зарплату),  обнаруживает, перерасчет некоторых сотрудников (Оказывается, что кадровики задним числом провели отпуск или командировку или же оклад поменяли кому либо). Расчетчик в недоумении откуда разность в начислении и выплате щелкает по всем отчетам и ищет источник возникшей проблемы, тратя на это кучу времени и сил в дальнейших выяснениях отношений с кадрами. На мой взгляд - это не совсем правильно.

При выключенных ролях «ЧтениеДанныхДляНачисленияЗарплатыРасширенная» или «ДобавлениеИзменениеДанныхДляНачисленияЗарплатыРасширенная». Ситуация в ЗУП 3.1 такова: кадровик создает приказ о переводе сотрудника на другую должность. Так же кадровику требуется увеличить оклад, но кадровик не видит вкладку «Оплата труда». В данной ситуации изменить оклад может только расчетчик, потому что у него вышеперечисленные роли как раз включены в «Профиль групп доступа». Я согласен с тем, что нужно подстраиваться под программу и изменять сам процесс работы кадровиков и расчетчиков, но по разным причинам не всегда это удается.

Такая же ситуация и с другими документами.

Решение:

  1. Включить кадровикам роль  «ЧтениеДанныхДляНачисленияЗарплатыРасширенная» и обязательно отключить роль «ДобавлениеИзменениеДанныхДляНачисленияЗарплатыРасширенная» .
  2. Если конфигурация на поддержке, то снять ее с поддержки. Снять с поддержки рекомендую только один общий модуль, дабы обновлять было в дальнейшем легче. С поддержки снимаем общий модуль «ЗарплатаКадрыРасширенный».
  3. Далее открываем общий модуль «ЗарплатаКадрыРасширенный», ищем в нем функцию «ПраваНаМногофункциональныйДокумент», в конце функции, перед строкой «Возврат ПраваНаДокумент;» добавляем строки:
	//alex.swon.2+
	Если Пользователи.РолиДоступны("ЧтениеНачисленнойЗарплатыРасширенная", , Ложь) И НЕ Пользователи.РолиДоступны("ДобавлениеИзменениеНачисленнойЗарплатыРасширенная", , Ложь) тогда
		Если ТипЗнч(Объект.Ссылка) = Тип("ДокументСсылка.ПриемНаРаботу") ИЛИ ТипЗнч(Объект.Ссылка) = Тип("ДокументСсылка.ПриемНаРаботуСписком")
			ИЛИ ТипЗнч(Объект.Ссылка) = Тип("ДокументСсылка.КадровыйПеревод") ИЛИ ТипЗнч(Объект.Ссылка) = Тип("ДокументСсылка.КадровыйПереводСписком") тогда
			ПраваНаДокумент.ПолныеПраваПоРолям = Истина;
			ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений = Истина;
			ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений = Истина;
			ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеКадровыхДанных = Истина;
		Иначе
			ПраваНаДокумент.ПолныеПраваПоРолям = Ложь;
			ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений = Ложь;
			ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений = Ложь;
			ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеКадровыхДанных = Истина;
		КонецЕсли;
	КонецЕсли;
	//alex.swon.2-

Итоговый код функции:

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

4. Далее в этом же модуле ищем процедуру «УстановитьВторогоОтветственногоВМногофункциональныхДокументах». В конце процедуры перед строкой «УстановитьПредупреждающуюНадписьВМногофункциональныхДокументах(Форма, ОписаниеДокумента.РеквизитСостояние);» добавляем строки:

//alex.swon.2+
	//Включим РОЛЬ ЧтениеНачисленнойЗарплатыРасширенная и уберем возможность установки "Рассчитал" в кадровых документов
	Если ПолныеПраваНаДокумент И Пользователи.РолиДоступны("ДобавлениеИзменениеНачисленнойЗарплатыРасширенная", , Ложь) Тогда
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.РеквизитСостояние, "Доступность", Истина);
		Если Форма.Объект[ОписаниеДокумента.РеквизитСостояние] Тогда 
			ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.ВторойОтветственный, "Доступность", Истина);
			Если Не ЗначениеЗаполнено(Форма.Объект[ОписаниеДокумента.ВторойОтветственный]) Тогда 
				Форма.Объект[ОписаниеДокумента.ВторойОтветственный] = ПользователиКлиентСервер.ТекущийПользователь();
			КонецЕсли;	
		Иначе 
			ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.ВторойОтветственный, "Доступность", Ложь);
			Если ЗначениеЗаполнено(Форма.Объект[ОписаниеДокумента.ВторойОтветственный]) Тогда 
				Форма.Объект[ОписаниеДокумента.ВторойОтветственный] = Неопределено;
			КонецЕсли;	
		КонецЕсли;
	Иначе 
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.РеквизитСостояние, "Доступность", Ложь);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.ВторойОтветственный, "Доступность", Ложь);
		Форма.Объект[ОписаниеДокумента.РеквизитСостояние] = Ложь;
	КонецЕсли;
	//alex.swon.2-

Итоговый код всей процедуры

Процедура УстановитьВторогоОтветственногоВМногофункциональныхДокументах(Форма, ПолныеПраваНаДокумент) Экспорт 
	
	Если Не Форма.ПолучитьФункциональнуюОпциюФормы("ИспользоватьРасчетЗарплатыРасширенная") Тогда
		Возврат;
	КонецЕсли;
	
	МногофункциональныеДокументы = ЗарплатаКадрыРасширенныйКлиентСервер.ТипыМногофункциональныхДокументов();
	ОписаниеДокумента = МногофункциональныеДокументы.Получить(ТипЗнч(Форма.Объект.Ссылка));
	
	//alex.swon.2+
	//Включим РОЛЬ ЧтениеНачисленнойЗарплатыРасширенная и уберем возможность установки "Рассчитал" в кадровых документов
	Если ПолныеПраваНаДокумент И Пользователи.РолиДоступны("ДобавлениеИзменениеНачисленнойЗарплатыРасширенная", , Ложь) Тогда
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.РеквизитСостояние, "Доступность", Истина);
		Если Форма.Объект[ОписаниеДокумента.РеквизитСостояние] Тогда 
			ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.ВторойОтветственный, "Доступность", Истина);
			Если Не ЗначениеЗаполнено(Форма.Объект[ОписаниеДокумента.ВторойОтветственный]) Тогда 
				Форма.Объект[ОписаниеДокумента.ВторойОтветственный] = ПользователиКлиентСервер.ТекущийПользователь();
			КонецЕсли;	
		Иначе 
			ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.ВторойОтветственный, "Доступность", Ложь);
			Если ЗначениеЗаполнено(Форма.Объект[ОписаниеДокумента.ВторойОтветственный]) Тогда 
				Форма.Объект[ОписаниеДокумента.ВторойОтветственный] = Неопределено;
			КонецЕсли;	
		КонецЕсли;
	Иначе 
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.РеквизитСостояние, "Доступность", Ложь);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.ВторойОтветственный, "Доступность", Ложь);
		Форма.Объект[ОписаниеДокумента.РеквизитСостояние] = Ложь;
	КонецЕсли;
	//alex.swon.2-
	
	УстановитьПредупреждающуюНадписьВМногофункциональныхДокументах(Форма, ОписаниеДокумента.РеквизитСостояние);
	
КонецПроцедуры	

Готово.

Теперь у кадровиков есть возможность :

  1. Создавать Кадровые перемещения с возможностью указания начислений.
  2. Печатать справку расчет при увольнении сотрудника.
  3. Видеть ФОТ, оклад и размер аванса сотрудника.
  4. Создавать командировки и отпуска без изначально установленной галочки «Расчет утвердил» и без автоматического расчета среднего заработка.
  5. Доступ к отчетам по начислению заработной платы.

Проверено на платформе                               8.3.11.3034

Версия конфигурации ЗУП                               3.1.5.129

19

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. rinatru 11.04.18 08:56 Сейчас в теме
Ничего не понимаю зачем весь этот огород. Дело в том, что в типовом ЗУПе 3 есть разделение. Кадровики и расчетчики прекрасно сосуществуют рядом, не мешая друг другу. При расчете документа расчетчиками кадровики уже ничего не могут поменять в документе.
Включите функцию "Использовать многофункциональность документов".
Мне кажется, что вы вашей статьей собьете с толку новичков, которые ищут информацию по данной теме.
5. leaderonex 19 11.04.18 16:44 Сейчас в теме
В идеальной организации взаимодествие между кадровиками и расчетчиками происходит именно так, как вы описали. Но позвольте уточнить такой момент: - Как кадровику, не включая роли ЧтениеДанныхДляНачисленияЗарплатыРасширенная, можно распечатать "Справку расчет" или изменить начисление в документе "Кадровый перевод сотрудника"?
А если вы все же включили роль, то как боретесь с моментом, когда после проведения кадровиком документа "Больничный лист", автоматически происходит расчет и в документе устанавливается галочка "Расчет утвердил"?
2. leaderonex 19 11.04.18 12:19 Сейчас в теме
В идеальной организации взаимодествие между кадровиками и расчетчиками происходит именно так, как вы описали. Но позвольте уточнить такой момент: - Как кадровику, не включая роли ЧтениеДанныхДляНачисленияЗарплатыРасширенная, можно распечатать "Справку расчет" или изменить начисление в документе "Кадровый перевод сотрудника"?
А если вы все же включили роль, то как боретесь с моментом, когда после проведения кадровиком документа "Больничный лист", автоматически происходит расчет и в документе устанавливается галочка "Расчет утвердил"?
3. Mx00 157 11.04.18 13:33 Сейчас в теме
Константин, с интересом прочитал статью, мне скоро тоже придется решать эту задачу, но снимать с поддержки базу очень не хочется... я обычно пытаюсь решить такие задачи с помощью расширений, не рассматривали ли вы такой подход?
например включить роль ЧтениеДанныхДляНачисленияЗарплатыРасширенная и снимать признак "Расчет утвердил" при закрытии документа?
вопрос рассматривали ли вы такой подход к решению проблемы?
4. leaderonex 19 11.04.18 16:39 Сейчас в теме
Если снять признак с включенной ролью ЧтениеДанныхДляНачисленияЗарплатыРасширенная, то документ не проводится, ругается на то, что расчет не утвержден.
7. leaderonex 19 12.04.18 09:09 Сейчас в теме
(3)Через расширения не пытался... Сейчас прорабатываю этот вариант.
6. MuxaH 12.04.18 04:36 Сейчас в теме
Мы тоже через расширение эту проблему разрулили - зачем с поддержки снимать...
8. leaderonex 19 12.04.18 11:10 Сейчас в теме
(6) Можете описать Ваш вариант решения? Я думаю, что многим будет полезно и интересно
9. Mx00 157 12.04.18 12:58 Сейчас в теме
(6) да-да, все замерли в надежде :-)
Михаил, поделитесь расширением!
10. MuxaH 13.04.18 06:44 Сейчас в теме
Да пожалуйста, описываю.
1. Включаем Многофункциональность документов (Константы -> Использовать многофункциональность документов)
2. У кадровиков вообще убираем роль ДобавлениеИзменениеНачисленнойЗарплатыРасширенная. Я им оставил профиль Старший кадровик - в кадровых перемещениях начисления добавлять могут. И Табельщик - чтобы табели проводить могли.
3. Создаем свой профиль для кадровика, обзываем по желанию. Там даем ему роли: Чтение выплаченной зарплаты, Чтение начисленной зарплаты. Это надо, чтоб они могли печатать справку-расчет.
4. Создаем расширение, Добавляем в него документ Увольнение, Увольнение списком. У расширения сразу отключаем Безопасный режим, чтоб можно было менять модуль менеджера. Собственно в расширении в Модуле менеджера для обоих документов добавляем процедуру
&После("ДобавитьКомандыПечати")
Процедура НашеРасш_ДобавитьКомандыПечати(КомандыПечати) Экспорт
	Если КомандыПечати.Найти("ПФ_MXL_Т61") = Неопределено Тогда
		// Записка-расчет при увольнении.
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.Обработчик = "ЗарплатаКадрыКлиент.ВыполнитьКомандуПечати";
		КомандаПечати.МенеджерПечати = "Обработка.ПечатьКадровыхПриказовРасширенная";
		КомандаПечати.Идентификатор = "ПФ_MXL_Т61";
		КомандаПечати.Представление = НСтр("ru = 'Записка-расчет при увольнении (Т-61)'");
		КомандаПечати.Порядок = 20;
		КомандаПечати.ФункциональныеОпции = "РаботаВХозрасчетнойОрганизации";
		КомандаПечати.ДополнительныеПараметры.Вставить("ТребуетсяЧтениеБезОграничений", Истина);
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	КонецЕсли;	
КонецПроцедуры
Показать


Оно добавляет команду печати записки-расчета вне зависимости от наличия роли ДобавлениеИзменениеНачисленнойЗарплатыРасширенная.

5. Потом я ещё расширял модуль менеджера документа Командировка:
&Вместо("ПолныеПраваНаДокумент")
Функция НашеРасш_ПолныеПраваНаДокумент() Экспорт 
	
        //Возврат Пользователи.РолиДоступны("ДобавлениеИзменениеНачисленнойЗарплатыРасширенная, ЧтениеНачисленнойЗарплатыРасширенная", , Ложь);
	Возврат Пользователи.РолиДоступны("ДобавлениеИзменениеНачисленнойЗарплатыРасширенная", , Ложь);
	
КонецФункции
Показать


Т.к. разделение функций на тот документ почему-то не действовала для профиля Аудитор - вроде как он должен только читать документы, а при наличии роли ЧтениеНачисленнойЗарплатыРасширенная он тоже вовсю мог их утверждать. Но может в последних релизах это уже и поправили.

6. Собственно всё. Кадровики видят свои данные, расчетные данные не видят. Документы (под кадровиком) проводятся только по кадровым регистрам, а расчетчики уже утверждают расчет, при необходимости.
11. leaderonex 19 13.04.18 10:24 Сейчас в теме
Спасибо большое Михаил Кравченко (MuxaH) за то, что поделился своим вариантом.
Не мог бы ты описать, как ты решил остальные моменты, на которые влияют включенные роли "ЧтениеДанныхДляНачисленияЗарплатыРасширенная" ИЛИ "ДобавлениеИзменениеНачисленнойЗарплатыРасширенная" :
1. Отражение Оклада, ФОТ и Аванса в карточке сотрудника. Ведь без включенной одной из этих ролей данные не доступны кадровику.
2. При создании документа "Кадровое перемещение", нет возможности установить новые начисления или же изменить старые.
3. Командировку поправил, а как дело обстоит с отпусками? с больничными?.
4. Иногда кадровику требуется смотреть расчетные листы. Но при выключенных ролях это не возможно. Как этот момент решил?
13. Mx00 157 13.04.18 17:00 Сейчас в теме
12. MuxaH 13.04.18 13:10 Сейчас в теме
1.- 2. Да так же, формы в расширениях можно курочить как твоей душе угодно. Сначала ищешь типовой код, который скрывает от кадровика нужные данные. Создаешь корректировки в расширении. Даже описанный тобой в статье подход (исправление общих модулей) можно расширением без снятия с поддержки разрулить. А с начислениями кадровики настроили штатное расписание, при выборе позиции все начисления сразу встают в ТЧ, они её не смотрят даже. Да и профилю Старший кадровик доступно изменение начислений.
3. Отпуска, больничные нормально разграничивались, с командировками почему-то такая проблема всплыла.
4. На расчетки давал роль Аудитор. Как раз для пользователей с такой ролью и всплыла проблема, что они утверждать могли Командировки.
14. leaderonex 19 13.04.18 17:01 Сейчас в теме
Согласен, что можно расширениями все сделать. Но...
В моем решении нужно только снять с поддержки 1 модуль и добавить десятка два строк кода, а ты предлагаешь изменить кучу форм документов, справочников и отчетов в расширениях.
Согласен, что можно сделать и по моему сценарию и без снятия с поддержки, с помощью расширения. Но только в платформе 8.3.11 расширения еще не поддерживают общие модули. Можно обойти этот момент, создав обработку в расширении. Использовать модуль менеджера обработки, как общий модуль. Но все равно придется создавать расширения форм и припиливать к ним обработчики из модуля обработки.
1. Вариант с расширениями - очень затратный по времени. Этот вариант не подойдет тем, кому нужно сделать "Сейчас"...
2. В случае, если разработчик изменит какую либо из форм, то придется допиливать расширения каждый раз. Ты скажешь, - "Ну и общий модуль разработчик может изменить". Конечно, может, но вероятность изменения куда меньше, нежели вероятность изменения одной из множества форм: справочника, документа или отчета. В случае же изменения одного модуля, его легко при обновлении можно поправить, так как там исправлений в коде не много.
3. В твоем варианте решения, ты предлагаешь кадровикам все изменения начислений использовать из штатного расписания. Такой вариант не каждому кадровику понравится. Может быть ты умеешь лучше убеждать людей, которые работают в программе, что твои варианты правильнее, но у меня такого дара к сожалению нет. И убедить кадровиков делать иначе, нежели они привыкли как в ЗУП 2.5 у меня не получалось.
Согласен, что оба варианта решения этих проблем имеют шанс на существование. Какой вариант выбрать решать Вам форумчане.
Я лишь описал как я решил эти проблемы.
15. MuxaH 16.04.18 05:14 Сейчас в теме
(14) Я не предлагаю менять кучу форм, я предлагаю те же 2 десятка строк кода подписать в расширении. А 8.3.11 уже вовсю изменение модулей в расширении поддерживает. У меня ещё 8.3.10 стоит.
1. По временным затратам - не соглашусь. Неудобство только в сравнении при обновлении измененного и типового модуля.
2. Соглашусь, но я и не настаиваю на изменении форм.
3. Это не вариант решения, это так кадровики упростили себе работу. Пока штатку настраивали - так же в перемещениях назначали/убирали начисления, просто я не понимаю зачем им роль ДобавлениеИзменениеНачисленнойЗарплатыРасширенная, и без неё всё прекрасно редактируется.

Но дело хозяйское. Сейчас в 8.3.12 уже можно в расширениях и свои объекты добавлять, и движения по типовым регистрам делать, но лично мне страшно - как оно себя поведёт при отключении расширения. Но тем не менее, за расширениями будущее, как говорят на :)
16. leaderonex 19 16.04.18 08:43 Сейчас в теме
3. У кадровиков убираем роль "ДобавлениеИзменениеНачисленнойЗарплатыРасширенная" и оставляем только "ЧтениеДанныхДляНачисленияЗарплатыРасширенная"
17. almas 194 22.05.18 16:57 Сейчас в теме
проверьте публикацию.
мне кажется у вас пункт 2 и 4 одинаковый листинг в обоих процедурах в публикации.
18. leaderonex 19 20.07.18 10:26 Сейчас в теме
(17)Исправил. Извиняюсь, за этот момент.
19. ivan65 04.09.18 14:03 Сейчас в теме
где правда говорим
Включить кадровикам роль «ЧтениеДанныхДляНачисленияЗарплатыРасширенная» и обязательно отключить роль «ДобавлениеИзменениеДанныхДляНачисленияЗарплатыРасширенная» .

а пишем
//Включим РОЛЬ ЧтениеНачисленнойЗарплатыРасширенная и уберем возможность установки "Рассчитал" в кадровых документов
Если ПолныеПраваНаДокумент И Пользователи.РолиДоступны("ДобавлениеИзменениеНачисленнойЗарплатыРасширенная", , Ложь) Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, ОписаниеДокумента.РеквизитСостояние, "Доступность", Истина);
20. leaderonex 19 04.09.18 17:14 Сейчас в теме
(19)Именно так и делаем, как написано в моей публикации. Отключаем роль "ДобавлениеИзменениеДанныхДляНачисленияЗарплатыРасширенная" кадровику и включаем только "ЧтениеДанныхДляНачисленияЗарплатыРасширенная"
Оставьте свое сообщение