Изменение реквизита в закрытом периоде

1. wau8824ru 23 15.01.16 00:12 Сейчас в теме
УТ 10.3
Нашел способ в ОбщиеМодуль.НастройкаПравДоступа.ПередЗаписьюДокументаПроверкаДоступностиПериода()
// Проверка возможности записи данных документа с учетом даты запрета изменения данных (даты запрета редактирования)
//
Процедура ПередЗаписьюДокументаПроверкаДоступностиПериода(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
	
	//88(
	Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПокупателя") Тогда
		Отказ = Ложь;
	КонецЕсли;//)88
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	ПроверкаПериодаДокумента(Источник, Отказ, РежимЗаписи);
	#Если Клиент Тогда
		//88(
		Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПокупателя") Тогда
		Отказ = Ложь;
		КонецЕсли;//)88
		Если Отказ Тогда
			Сообщить("Редактирование данных этого периода запрещено. Изменения не могут быть записаны...", СтатусСообщения.Важное);
		КонецЕсли;
	#КонецЕсли
	
КонецПроцедуры // ПередЗаписьюДокументаПроверкаДоступностиПериода()
Показать

Есть ли способ без изменения стандартных процедур?
По теме из базы знаний
Найденные решения
22. wau8824ru 23 31.07.19 08:15 Сейчас в теме
(1)
Редактирование документа в закрытом периоде

в ОбщиеМодуль.НастройкаПравДоступа

Процедура ПередЗаписьюДокументаПроверкаДоступностиПериода(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
	
	//88(
	Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПокупателя")
		И Источник.Дата > НачалоДня(ДобавитьМесяц(ТекущаяДата(), -12))-1
		Тогда
        Возврат;
	КонецЕсли;
	//88)
Показать

Процедура ПередЗаписьюРегистраДатаЗапретаРедактированияПередЗаписью(Источник, Отказ, Замещение) Экспорт
	
	//88(
	Если ТипЗнч(Источник.Отбор.Регистратор.Значение) = Тип("ДокументСсылка.ЗаказПокупателя")
		И Источник.Отбор.Регистратор.Значение.Дата > НачалоДня(ДобавитьМесяц(ТекущаяДата(), -12))-1
		Тогда
        Возврат;
	КонецЕсли;
	//88)
Показать

В этом примере в ут10.3 документ "Заказ покупателя" доступен для редактирования в течении одного года с ТекущаяДата()
Процедура  ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапрета(ДокументОбъект, ФормаДокумента) Экспорт
	
	//88(
	Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ЗаказПокупателя")
		И ДокументОбъект.Дата > НачалоДня(ДобавитьМесяц(ТекущаяДата(), -12))-1
		Тогда
		Возврат;
	КонецЕсли;
	//88)
Показать

Эта процедура отвечает за возможность редактирование в форме.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. ZergKRSK 130 07.11.16 05:11 Сейчас в теме
(1)
Есть ли способ без изменения стандартных процедур?

Можно удалить данный документ из подписки на событие, а также регистры (как минимум накопления).
8. Mirared 07.11.16 15:38 Сейчас в теме
(7) а можно подробнее об этом? заранее благодарна
9. ZergKRSK 130 08.11.16 04:19 Сейчас в теме
(8) ут 10 под рукой нет, есть упп. Думаю в ут аналогично реализовано.
Есть подписки на события ПередЗаписьюДокументаДатаЗапретаРедактирования и ПередЗаписьюРегистраНакопленияДатаЗапретаРедактирования.
Там в источниках ищем, в первой свой документ. А во второй рег накопл. к-рый двигает этот документ.
10. Mirared 08.11.16 08:38 Сейчас в теме
(9) у меня КА 1.1. Вот пока не сообразила, по какому пути идти будет наиболее правильно. Мне нужно сделать доступным для редактирования реквизит документа реализации в закрытом периоде. Этот реквизит не влияет на движения документа.
11. tiger12 1 08.11.16 08:48 Сейчас в теме
(10) Ирина, ну с этим легче. Это через свойства/категории документа можно.
12. Mirared 08.11.16 08:53 Сейчас в теме
(11) этот реквизит уже добавлен, и с ним давно работают. Или я не совсем правильно Вас понимаю? То есть этот реквизит должен быть свойством / категорией?
13. ZergKRSK 130 08.11.16 09:24 Сейчас в теме
(12) какую смысловую нагрузку несет ваш реквизит? Если не влияет на проведение, то можно было реализовать через регистр сведений или, как предложили выше, через категории/свойства.
14. Mirared 08.11.16 10:07 Сейчас в теме
(13) это было сделано задолго до меня. Смысл - это флаг возвращенных документов - оригиналов.
15. ZergKRSK 130 08.11.16 10:20 Сейчас в теме
(14) значит тип Булево. Идеально подошел бы регистр сведений, удобнее отчет собирать.
16. Mirared 08.11.16 13:36 Сейчас в теме
(15) Вы предлагаете этот реквизит убрать, а использовать регистр?
17. ZergKRSK 130 08.11.16 15:06 Сейчас в теме
(16) я рассуждаю. Вы делайте как считаете нужным.
18. Mirared 08.11.16 16:10 Сейчас в теме
21. alen-s 16.08.18 14:59 Сейчас в теме
(18)Подскажите, как справились с такой задачей? У нас аналогичная ситуация...
22. wau8824ru 23 31.07.19 08:15 Сейчас в теме
(1)
Редактирование документа в закрытом периоде

в ОбщиеМодуль.НастройкаПравДоступа

Процедура ПередЗаписьюДокументаПроверкаДоступностиПериода(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
	
	//88(
	Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПокупателя")
		И Источник.Дата > НачалоДня(ДобавитьМесяц(ТекущаяДата(), -12))-1
		Тогда
        Возврат;
	КонецЕсли;
	//88)
Показать

Процедура ПередЗаписьюРегистраДатаЗапретаРедактированияПередЗаписью(Источник, Отказ, Замещение) Экспорт
	
	//88(
	Если ТипЗнч(Источник.Отбор.Регистратор.Значение) = Тип("ДокументСсылка.ЗаказПокупателя")
		И Источник.Отбор.Регистратор.Значение.Дата > НачалоДня(ДобавитьМесяц(ТекущаяДата(), -12))-1
		Тогда
        Возврат;
	КонецЕсли;
	//88)
Показать

В этом примере в ут10.3 документ "Заказ покупателя" доступен для редактирования в течении одного года с ТекущаяДата()
Процедура  ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапрета(ДокументОбъект, ФормаДокумента) Экспорт
	
	//88(
	Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ЗаказПокупателя")
		И ДокументОбъект.Дата > НачалоДня(ДобавитьМесяц(ТекущаяДата(), -12))-1
		Тогда
		Возврат;
	КонецЕсли;
	//88)
Показать

Эта процедура отвечает за возможность редактирование в форме.
2. adva 45 15.01.16 07:52 Сейчас в теме
Если из обработки, то ДокОбъект.ОбменДанными.Загрузка = Истина, должно помочь.
rmarkovych; AnryMc; +2 Ответить
3. wau8824ru 23 15.01.16 20:11 Сейчас в теме
(2) adva, Из формы документа через ЭтотОбъект.Сделка РеализацияТоваровУслуг
4. Tom1 6 06.11.16 11:07 Сейчас в теме
Что касаемо "Если из обработки, то ДокОбъект.ОбменДанными.Загрузка = Истина, должно помочь" - поможет, но только в том случае, если документ не надо проводить, а достаточно просто записать, но поскольку изменение реквизита документа частенько предполагает изменение движений, т.е. необходимость проведения, то здесь несколько сложнее. Проверка периода доступности (в УПП) берет дату для сравнения из параметров сеанса, которые заполняются из регистра сведений "Границы запрета изменения данных". Если в обработке, которая проводит документ, перед проведением изменить параметр сеанса "Границы запрета изменения данных", присвоив ему значение даты менее даты документа, то все должно получиться. Вот только старую дату надо запомнить и после проведения вернуть. Пример:

    ЗаказОбъект = СсылкаНаЗаказПокупателя.ПолучитьОбъект();		
    Соответствие = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить();
	ОбщаяДатаЗапрета = Соответствие["ОбщаяДатаЗапретаРедактирования"];
	ДатаЗаказа = ЗаказОбъект.Дата;
	Если ОбщаяДатаЗапрета >= ДатаЗаказа Тогда
		ОбщаяДатаЗапретаВрем = ДатаЗаказа - 60*60*24;
		Соответствие["ОбщаяДатаЗапретаРедактирования"] = ОбщаяДатаЗапретаВрем;
		ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(Соответствие);
	КонецЕсли;	
	Попытка
		ЗаказОбъект.Записать(РежимЗаписиДокумента.Проведение);
	Исключение
			Сообщить("Не удалось записать документ " + ОписаниеОшибки());
	КонецПопытки;	
	Если ОбщаяДатаЗапрета >= ДатаЗаказа Тогда
		Соответствие["ОбщаяДатаЗапретаРедактирования"] = ОбщаяДатаЗапрета;
		ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(Соответствие);
	КонецЕсли;	
Показать
5. alxarz 31 06.11.16 22:57 Сейчас в теме
(4) а просто дату запрета передвинуть чем сложнее?
20. wau8824ru 23 09.11.16 11:27 Сейчас в теме
(5) изменение даты запрета вступает после пере входа
6. kot30688 3 07.11.16 01:49 Сейчас в теме
А не кажется, что период не просто так закрыт? Лучше всего, на мой взгляд, все изменения согласовывать с бухгалтерией, открывать период и править что нужно. Ну, это прописная истина. А вообще, есть инструменты разработчика, тут где-то на инфостарте они есть, вот они позволяют изменить и реквизит и движения без открытия периода.
ipoloskov; +1 Ответить
19. wau8824ru 23 09.11.16 11:26 Сейчас в теме
(6) В моей ситуации - есть доступный период для менеджеров = 1мес, дело в том что заказы делаются на упр организацию, а закрывает это всё реализация сделанная на финансовую организацию, которая может быть и через 3мес, и чтобы это всё было в одной сделке, у ЗаказПокупателя есть реквизит куда и добавляется данная РТУ
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот