Как запретить изменять документы после 8 часов с момента их создания Обратился ко мне клиент с задачей: Нужно запретить изменение всех видов платежных документов (ПП, РКО, ПКО) спустя 8 часов с момента проведения соответствующего документа
Для реализации этого я использовал Подписку на событие: ПередЗаписьюДокументаДатаЗапретаРедактирования
В конце процедуры обработчика добавил вызов своей процедуры
Вот ее код:
Код 1C v 8.3 Процедура ПроверкаВремениСозданияИИзмененияДокумента(Источник, Отказ)
Если РольДоступна( "ПолныеПрава" ) Тогда
ИначеЕсли Источник. Проведен Тогда
ТекДата= ТекущаяДата( ) ; ЧасовРазрешено= 24 ;
Если ТипЗнч( Источник) = Тип( "ДокументОбъект.РасходныйКассовыйОрдер" ) Тогда
ЧасовРазрешено= 8 ;
Если НЕ ( ТекДата- Источник. Дата) / 60 < ЧасовРазрешено* 60 Тогда Отказ= Истина ; Конецесли ;
ИначеЕсли ТипЗнч( Источник) = Тип( "ДокументОбъект.ПриходныйКассовыйОрдер" ) Тогда
ЧасовРазрешено= 8 ;
Если НЕ ( ТекДата- Источник. Дата) / 60 < ЧасовРазрешено* 60 Тогда Отказ= Истина ; Конецесли ;
ИначеЕсли ТипЗнч( Источник) = Тип( "ДокументОбъект.ПлатежноеПоручениеВходящее" ) Тогда
ЧасовРазрешено= 8 ;
Если НЕ ( ТекДата- Источник. Дата) / 60 < ЧасовРазрешено* 60 Тогда Отказ= Истина ; Конецесли ;
ИначеЕсли ТипЗнч( Источник) = Тип( "ДокументОбъект.ПлатежноеПоручениеИсходящее" ) Тогда
ЧасовРазрешено= 8 ;
Если НЕ ( ТекДата- Источник. Дата) / 60 < ЧасовРазрешено* 60 Тогда Отказ= Истина ; Конецесли ;
КонецЕсли ;
КонецЕсли ;
#Если Клиент Тогда
Если Отказ Тогда
Сообщить( "Прошло более " + Строка( ЧасовРазрешено) + " часов с момента создания документа! Изменение запрещено и документ не может быть записан..." , СтатусСообщения. Важное) ;
КонецЕсли ;
#КонецЕсли
КонецПроцедуры
Пока документ не проведен, его можно менять сколько угодно, но после первого проведения и истечения указанного количества часов, документ заблокируется, и при проведении будет выведено сообщение:
Категория:
Документы Как сбросить счётчик нумерации документов или справочников Используйте:
Глобальный контекст:
ОбновитьНумерациюОбъектов (RefreshObjectsNumbering)
Синтаксис:
Код 1C v 8.х ОбновитьНумерациюОбъектов( < Метаданные> )
Параметры:
<Метаданные> (необязательный, НО Если значение параметра не указано, то обновление будет выполнено для всех типов объектов)
Тип:
Массив; Объекты метаданных. Объект метаданного или массив объектов метаданных, для объектов которого будет выполнено обновление. Если значение параметра не указано, то обновление будет выполнено для всех типов объектов.
Описание:
Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но не записанные номера, становятся невалидными, т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы.
Доступность:
Сервер, толстый клиент, внешнее соединение
Пример:
Код 1C v 8.х
ОбновитьНумерациюОбъектов( Метаданные. Документы. РеализацияТоваровУслуг)
ОбновитьНумерациюОбъектов( Метаданные. Документы. ОтчетПроизводстваЗаСмену) ;
ОбновитьНумерациюОбъектов( Метаданные. Документы. ТребованиеНакладная) ;
ОбновитьНумерациюОбъектов( Метаданные. Документы. ПриходныйКассовыйОрдер) ;
ОбновитьНумерациюОбъектов( Метаданные. Документы. РасходныйКассовыйОрдер) ;
ОбновитьНумерациюОбъектов( Метаданные. Справочники. Номенклатура) ;
ОбновитьНумерациюОбъектов( Метаданные. Справочники. Абонементы) ;
По этой теме:
Сбилась автонумерация у документа или справочника с текстовым кодом, что делать? Категория:
1С Общие вопросы - Обычные формы Как в запросе получить Вид (тип) Документа? Столкнулся с задачей, нужно было выбрать все документы по выплате и сгруппировать их по типу документа!
Перелистав все ЖКК и интернет, понял что простого способа получить Вид документа в запросе нет
Пришлось сделать так:
Код 1C v 8.х
Запрос = Новый Запрос;
Запрос. Текст = "
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ВзаиморасчетыСРаботникамиОрганизаций.Регистратор ССЫЛКА Документ.РасходныйКассовыйОрдер
| ТОГДА "" Расходный кассовый ордер""
| ИНАЧЕ ВЫБОР
| КОГДА ВзаиморасчетыСРаботникамиОрганизаций.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеИсходящее
| ТОГДА "" Платежное поручение исходящее""
| ИНАЧЕ ВЫБОР
| КОГДА ВзаиморасчетыСРаботникамиОрганизаций.Регистратор ССЫЛКА Документ.ДепонированиеОрганизаций
| ТОГДА "" Депонирование""
| ИНАЧЕ ВЫБОР
| КОГДА ВзаиморасчетыСРаботникамиОрганизаций.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
| ТОГДА "" Приходный кассовый ордер""
| ИНАЧЕ "" ""
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ КАК ВидДокумента,
| ВзаиморасчетыСРаботникамиОрганизаций.Регистратор КАК Регистратор,
| ВзаиморасчетыСРаботникамиОрганизаций.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов
|ИЗ
| РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций КАК ВзаиморасчетыСРаботникамиОрганизаций
|ГДЕ
| ВзаиморасчетыСРаботникамиОрганизаций.Регистратор.Дата МЕЖДУ &ДатаН И &ДатаК
| И ВзаиморасчетыСРаботникамиОрганизаций.ВидДвижения = &ВидДвижения
|ИТОГИ
| СУММА(СуммаВзаиморасчетов)
|ПО
| ВидДокумента
|" ;
Запрос. УстановитьПараметр( "ВидДвижения" , ВидДвиженияНакопления. Расход) ;
Запрос. УстановитьПараметр( "ДатаК" , Дата( "28.02.2010 23:59:59" ) ) ;
Запрос. УстановитьПараметр( "ДатаН" , Дата( "01.02.2010 0:00:00" ) ) ;
Результат = Запрос. Выполнить( ) ;
Результат = Результат. Выбрать( ) ;
Пока Результат. Следующий( ) Цикл
КонецЦикла ;
В 8.2.какой-то версии добавили определение ТИПА
Код 1C v 8.х ГДЕ ТИПЗНАЧЕНИЯ( Регистратор) = ТИП( Документ. ВидДокумента)
Категория:
Запросы Выбрать документы за период, установить значение в реквизит табличной части и провести документ Код 1C v 8.х
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| РасходныйКассовыйОрдер.Ссылка
|ИЗ
| Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
|ГДЕ
| РасходныйКассовыйОрдер.Дата МЕЖДУ &ДатаН И &ДатаК
| И РасходныйКассовыйОрдер.Ответственный = &Ответственный" ;
Запрос. УстановитьПараметр( "ДатаН" , ЭлементыФормы. НачПериода. Значение) ;
Запрос. УстановитьПараметр( "ДатаК" , ЭлементыФормы. КонПериода. Значение) ;
Запрос. УстановитьПараметр( "Ответственный" , Ответственный) ;
Результат = Запрос. Выполнить( ) ;
Выборка = Результат. Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
Док = Выборка. Ссылка. ПолучитьОбъект( ) ;
Если ПустаяСтрока( Док. РасшифровкаПлатежа[0 ]. СтатьяДвиженияДенежныхСредств) тогда
Док. РасшифровкаПлатежа[0 ]. СтатьяДвиженияДенежныхСредств= СтатьяЗатрат;
Док. Записать( РежимЗаписиДокумента. Проведение) ;
Сообщить( Док) ;
КонецЕсли ;
КонецЦикла ;
Категория:
Документы Открыть форму документа Код 1C v 8.х
Форма = Документы. РасходныйКассовыйОрдер. ПолучитьФорму( ) ;
Форма. Открыть( ) ;
ФормаСписка. ОткрытьМодально( ) ;
Категория:
Документы