дата запрета по Документам или по Пользователям

1. zaur_djumaev 16.10.20 15:04 Сейчас в теме
Привет добрые форумчане !!. С вашей помощью многому научился и принимаю в практике, за это вам очень благодарен !!.

У меня вопрос такой, как реализовать дату запрета по определенным документам и по пользователям, чтоб этот запрет можно было использовать при закрытии месяца (Обработка Закрытия месяца) или установив запрет для определенных пользователей ?

Помогите пожалуйста советами или какими нибудь наводками
Найденные решения
16. user5300 543 16.10.20 16:32 Сейчас в теме
(13)
Если хочешь установить одну общую дату запрета, то создай константу

Если Для каждого пользователя\фирмы\вид документа то Регистр или лучше справочник. Добавь реквизиты пользователя\фирмы\вид документа и дату запрета


Создай один общий модуль для проверки :
///Это на сервере, если что )
Функция ВключенаДатаЗапретаЭкспорт(Ссылка) экспорт

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Запрет.Ссылка КАК Ссылка,
		|	Запрет.Пользователь КАК Пользователь,
		|	Запрет.ДатыЗапрета КАК ДатаЗапрета
		|ИЗ
		|	Справочник.Запрет КАК Запрет
		|ГДЕ
		|	Запрет.Пользователь = &Пользователь   ///Тут может быть определенный документ ил организация, по своему настраивай
		|	И Запрет.ДатаЗапрета =< &ТекущаяДата";
	
	Запрос.УстановитьПараметр("Пользователь", Ссылка);
	Запрос.УстановитьПараметр("ТекущаяДата", Конецдня(ТекущаяДата()));
	
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	
	Если РезультатЗапроса.Следующий() Тогда
		Возврат Истина;
	Иначе
		возврат Ложь;
	КонецЕсли;
	
КонецФункции

Показать


И в форме документа(Документов где хочешь установить дату) прописать приСоздании:

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

Показать
20. zaur_djumaev 16.10.20 19:06 Сейчас в теме
(16) Получилось спасибо огромное !

Создал Справочник: "Даты запрета", в нем реквизит: "Дата запрета".

в общем модуле:

Функция ВключенаДатаЗапретаЭкспорт(ДатаДокумента) экспорт

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДатыЗапрета.Ссылка КАК Ссылка,
		|	ДатыЗапрета.ДатаЗапрета КАК ДатаЗапрета
		|ИЗ
		|	Справочник.ДатыЗапрета КАК ДатыЗапрета
		|ГДЕ
		|	ДатыЗапрета.ДатаЗапрета >= НАЧАЛОПЕРИОДА(&ДатаЗапрета, ДЕНЬ)";
	
	Запрос.УстановитьПараметр("ДатаЗапрета", ДатаДокумента);
	
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	
	Если РезультатЗапроса.Следующий() Тогда
		Возврат Истина;
	Иначе
		возврат Ложь;
	КонецЕсли;
	
КонецФункции
Показать


и в форме документов которых нужно запрещать редактирование:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	
	Если НЕ Объект.ссылка.Пустая() Тогда ///Проверяем не новый ли документ
	 	ЭтаФорма.ТолькоПросмотр = ОбщийМодульДатыЗапрета.ВключенаДатаЗапретаЭкспорт(Объект.Дата);
		//ЭтаФорма.Доступность = ОбщийМодульСервер.ВключенаДатаЗапретаЭкспорт(Организация такая то);
	КонецЕсли;
	
КонецПроцедуры
Показать
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Torin 264 16.10.20 15:34 Сейчас в теме
(1) в 1С:Платежные документы 8 - это не возможно!
3. user705522_constantin_h 28 16.10.20 15:41 Сейчас в теме
(1)Во-первых, неизвестно, какая у вас конфигурация. Предположим БП 3.0. Администрирование->Сервис->Дата запрета изменения данных. Можно для каждого сотрудника выбрать конкретную дату. Дата может быть общая или по разделам. Дата действует на изменение данных. На обработку Закрытие месяца она не действует, но изменения, которые производятся этой обработкой будут выполнены только, если они не запрещены датой запрета редактирования.
4. FatPanzer 7 16.10.20 15:43 Сейчас в теме
Давайте все вместе посоветуем коллеге - не стоит начинать изучение 1С с написания собственной конфигурации с нуля под собственное предприятие...
user1464234; WellJustYouWait; zaur_djumaev; Torin; +4 Ответить
5. Torin 264 16.10.20 15:46 Сейчас в теме
(4) Я бы посоветовал относиться к коллегам не как к телепатам и гадалкам
7. zaur_djumaev 16.10.20 15:59 Сейчас в теме
9. zaur_djumaev 16.10.20 16:03 Сейчас в теме
(4)Да я тоже посоветую, дело нелегкое )
12. Vitaly1C8 16.10.20 16:12 Сейчас в теме
(1) Создай свой РегистрСведений с необходимой информацией по Запретам.
В Форме каждого документа ПриОткрытии() вставь код
Если ЕстьМойЗапрет(Объект) Тогда
  Отказ = Истина;
  Сообщить("Запрет");
  Возврат;
КонецЕсли;
6. zaur_djumaev 16.10.20 15:59 Сейчас в теме
Забыл написать извиняюсь, у меня Не типовая конфигурация
8. zaur_djumaev 16.10.20 16:00 Сейчас в теме
Будьте добры пожалуйста очень хочу реализовать это ))
progr-2008; +1 Ответить
10. progr-2008 118 16.10.20 16:08 Сейчас в теме
(8)Нетиповая на управляемых формах или обычных?
11. zaur_djumaev 16.10.20 16:09 Сейчас в теме
13. zaur_djumaev 16.10.20 16:16 Сейчас в теме
в Типовой Конфигурации УНФ 1.6 расмотривал коды, В обработке Закрытие месяца получается параметры сеанса, свойства разделов и установленные даты запретов, исходя чего выполняются дальнейшие действия Либо перенести дату запрета либо установить. Хотел бы узнать основы как организовать это все, какие можете дать советы
14. progr-2008 118 16.10.20 16:22 Сейчас в теме
(13)Проще в БП3.0 посмотреть модули установки даты запрета изменения данных.
УНФ - своя специфика.
15. zaur_djumaev 16.10.20 16:25 Сейчас в теме
(14) аха ясно, стоит посмотреть тогда
16. user5300 543 16.10.20 16:32 Сейчас в теме
(13)
Если хочешь установить одну общую дату запрета, то создай константу

Если Для каждого пользователя\фирмы\вид документа то Регистр или лучше справочник. Добавь реквизиты пользователя\фирмы\вид документа и дату запрета


Создай один общий модуль для проверки :
///Это на сервере, если что )
Функция ВключенаДатаЗапретаЭкспорт(Ссылка) экспорт

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Запрет.Ссылка КАК Ссылка,
		|	Запрет.Пользователь КАК Пользователь,
		|	Запрет.ДатыЗапрета КАК ДатаЗапрета
		|ИЗ
		|	Справочник.Запрет КАК Запрет
		|ГДЕ
		|	Запрет.Пользователь = &Пользователь   ///Тут может быть определенный документ ил организация, по своему настраивай
		|	И Запрет.ДатаЗапрета =< &ТекущаяДата";
	
	Запрос.УстановитьПараметр("Пользователь", Ссылка);
	Запрос.УстановитьПараметр("ТекущаяДата", Конецдня(ТекущаяДата()));
	
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	
	Если РезультатЗапроса.Следующий() Тогда
		Возврат Истина;
	Иначе
		возврат Ложь;
	КонецЕсли;
	
КонецФункции

Показать


И в форме документа(Документов где хочешь установить дату) прописать приСоздании:

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

Показать
17. zaur_djumaev 16.10.20 16:44 Сейчас в теме
(16)спасибо за подробный совет, попробую делать так
20. zaur_djumaev 16.10.20 19:06 Сейчас в теме
(16) Получилось спасибо огромное !

Создал Справочник: "Даты запрета", в нем реквизит: "Дата запрета".

в общем модуле:

Функция ВключенаДатаЗапретаЭкспорт(ДатаДокумента) экспорт

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДатыЗапрета.Ссылка КАК Ссылка,
		|	ДатыЗапрета.ДатаЗапрета КАК ДатаЗапрета
		|ИЗ
		|	Справочник.ДатыЗапрета КАК ДатыЗапрета
		|ГДЕ
		|	ДатыЗапрета.ДатаЗапрета >= НАЧАЛОПЕРИОДА(&ДатаЗапрета, ДЕНЬ)";
	
	Запрос.УстановитьПараметр("ДатаЗапрета", ДатаДокумента);
	
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	
	Если РезультатЗапроса.Следующий() Тогда
		Возврат Истина;
	Иначе
		возврат Ложь;
	КонецЕсли;
	
КонецФункции
Показать


и в форме документов которых нужно запрещать редактирование:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	
	Если НЕ Объект.ссылка.Пустая() Тогда ///Проверяем не новый ли документ
	 	ЭтаФорма.ТолькоПросмотр = ОбщийМодульДатыЗапрета.ВключенаДатаЗапретаЭкспорт(Объект.Дата);
		//ЭтаФорма.Доступность = ОбщийМодульСервер.ВключенаДатаЗапретаЭкспорт(Организация такая то);
	КонецЕсли;
	
КонецПроцедуры
Показать
18. zaur_djumaev 16.10.20 17:23 Сейчас в теме
(16)работает . Но, в общем модуле дает ошибку если сравнить дату запрета с текущей :

Функция ВключенаДатаЗапретаЭкспорт(Ссылка) экспорт

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДатыЗапрета.Ссылка КАК Ссылка,
		|	ДатыЗапрета.ОбъектБлокировки КАК ОбъектБлокировки,
		|	ДатыЗапрета.ДатаЗапрета КАК ДатаЗапрета
		|ИЗ
		|	Справочник.ДатыЗапрета КАК ДатыЗапрета
		|ГДЕ
		|	ДатыЗапрета.ОбъектБлокировки = &ОбъектБлокировки   
		|	И ДатыЗапрета.ДатаЗапрета = < &ТекущаяДата";
	
	Запрос.УстановитьПараметр("ОбъектБлокировки", Ссылка);
	Запрос.УстановитьПараметр("ТекущаяДата", Конецдня(ТекущаяДата()));
	
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	
	Если РезультатЗапроса.Следующий() Тогда
		Возврат Истина;
	Иначе
		возврат Ложь;
	КонецЕсли;
	
КонецФункции
Показать
Прикрепленные файлы:
21. user5300 543 19.10.20 07:59 Сейчас в теме
(18)
= <
Это что за сравнение ?)

>= либо <=
23. zaur_djumaev 19.10.20 23:47 Сейчас в теме
(21) я раньше с этим не сталкивался, вот и практиковал )) спасибо вам за помощь !
19. zaur_djumaev 16.10.20 17:24 Сейчас в теме
и еще Цикл поменял на Тогда, правильно ли я сделал ? потому что Цикл давал ошибку
22. user5300 543 19.10.20 07:59 Сейчас в теме
(19) да, я исправил же сразу
Оставьте свое сообщение
Вопросы с вознаграждением