Правка изменений ДатыПлатежа в док.АктВыполненыхРабот и запрет редактирование ДатыПлатежа
Пишу статью как дневник, будут какие то дополнения прошу конструктивно высказывать и дополнять)
Занимаюсь 4 месяца программированием так что не судите строго)
Вообщем, задача: в документе АктВыполненыхРабот нужно что бы при проведении документа, в графе ДатаОплаты менялась согласно соглашению с контрагентом. И поставить запрет на редактирование руками даты платежа для всех, кроме тех, у кого есть полные права. конфигурация ЕРП 8,3
Мое решение:
1. В процедуре "ПредЗаписью" добавить процедуру (только не в конце всех процедур) которая изменяет ДатаПлатежа, и после меняем элемент формы надпись "НадписьЭтапыОплаты ":
2. В ОбщейФорме.ЭтапыОплатыКлиентом в процедуре "ПриСозданииНаСервере" добавил функцию, которая проверяет Роли и возвращает Истину или Ложь, и активирует процедуру "ТолькоПросмотр" или не активирует:
ЗЫ: Тут подумал и понял что в 1 решении не нужен поиск перечислений, в любом случаи пересчитывается дата. Нужно просто изменить ДатуПлатежа на Дату документа и после уже применять типовую функцию по вычислению даты согласно Соглашению.
Занимаюсь 4 месяца программированием так что не судите строго)
Вообщем, задача: в документе АктВыполненыхРабот нужно что бы при проведении документа, в графе ДатаОплаты менялась согласно соглашению с контрагентом. И поставить запрет на редактирование руками даты платежа для всех, кроме тех, у кого есть полные права. конфигурация ЕРП 8,3
Мое решение:
1. В процедуре "ПредЗаписью" добавить процедуру (только не в конце всех процедур) которая изменяет ДатаПлатежа, и после меняем элемент формы надпись "НадписьЭтапыОплаты ":
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
...
ИзменитьДатуПлатежаСогласноСоглашению(ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаСервере
Процедура ИзменитьДатуПлатежаСогласноСоглашению(ПараметрыЗаписи)
ТЧ = Объект.Соглашение.ЭтапыГрафикаОплаты;
Если ТЧ.Количество()>0 Тогда
Если ТЧ.Найти(Перечисления.ВариантыОплатыКлиентом.АвансДоОбеспечения) <> Неопределено Тогда
Объект.ДатаПлатежа = Объект.Дата;
КонецЕсли;
Если ТЧ.Найти(Перечисления.ВариантыОплатыКлиентом.ПредоплатаДоОтгрузки) <> Неопределено Тогда
Объект.ДатаПлатежа = Объект.Дата;
КонецЕсли;
ЭтапыОплатыСервер.ЗаполнитьДатуПлатежаПоУмолчанию(Объект, ,Истина);
НадписьЭтапыОплаты = ЭтапыОплатыКлиентСервер.НадписьЭтапыОплаты(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
Показать2. В ОбщейФорме.ЭтапыОплатыКлиентом в процедуре "ПриСозданииНаСервере" добавил функцию, которая проверяет Роли и возвращает Истину или Ложь, и активирует процедуру "ТолькоПросмотр" или не активирует:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
...
Элементы.ДатаПредоплата.ТолькоПросмотр = ДатаПредоплатаПриИзмененииНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДатаПредоплатаПриИзмененииНаСервере()
Роль = Ложь;
Если РольДоступна("Администрирование") или РольДоступна("ПолныеПрава") Тогда
Роль = Ложь;
Иначе
Роль = Истина;
КонецЕсли;
Возврат Роль;
КонецФункции
ПоказатьЗЫ: Тут подумал и понял что в 1 решении не нужен поиск перечислений, в любом случаи пересчитывается дата. Нужно просто изменить ДатуПлатежа на Дату документа и после уже применять типовую функцию по вычислению даты согласно Соглашению.
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)