Имя: Пароль:
1C
1С v8
Дата запрета редактирования в УТ11
,
0 Чел
 
30.03.12
13:18
в УТ 11.0.7.21 нашел подписку на событие ПроверитьДатуЗапретаПередЗаписьюДокумента, которая вызывает проверку на дату запрета редактирования. Но в эту подписку включены только кассовые и банковские документы. А как с остальными документами? В одном общем модуле есть процедура:

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

Из комментария предполагается, что должна быть подписка на событие при записи практически всех объектов системы, в которой бы вызывалась эта процедура...
Я что-то не понимаю?
1 Maxus43
 
30.03.12
13:24
в доках пишут, ПриОткрытии

   Если НЕ ЭтоНовый() Тогда
       НастройкаПравДоступа.ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапрета(ДокументОбъект, ЭтаФорма);
   КонецЕсли;
2 Чел
 
30.03.12
13:30
(1) Речь идет о типовой УТ 11.0.7.21.
Там даже общего модуля НастройкаПравДоступа нет.
3 Maxus43
 
30.03.12
13:31
(2) это я для примера где может быть проверка ещё, посмотри в ПриОткрытии
4 Чел
 
30.03.12
13:34
(3) облазил все формы. Искал по всей конфигурации вызов процедур ПроверитьДатуЗапретаИзмененияПередЗаписью(Источник, Отказ) Экспорт
ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
и т.п. - ничего нет.
А самое хреновое, что реально дата запрета установлена, но любой менеджер открывает любой документ акт или заказ и спокойно меняет.
Очередная недоработка конфигурации?
5 Maxus43
 
30.03.12
13:35
а проведённые тоже меняются?
6 Maxus43
 
30.03.12
13:36
дата запрета и на регистры смотрит
7 Чел
 
30.03.12
13:39
(5), (6) проведенные тоже меняются. В модулях набора записей регистров выборочно смотрел. Ничего нет. Да и глупо это, имея объект ПодпискаНаСобытие вставлять проверки в самих объектах...
Короче, походу, самому допиливать >=(
8 Maxus43
 
30.03.12
13:40
(7) в УПП подписки на запись регистров идут, не только на доки. я думал может в УТ тоже)
9 sanja26
 
30.03.12
13:44
// Выполняет проверку механизма дат запрета изменения для объекта.
// Процедура используется для проверки объекта без открытия транзакции записи.
//
// Параметры:
//  Источник – объект, для которого необходимо выполнить проверку. Может быть следующих типов:
//  СправочникОбъект
//  ПланВидовХарактеристикОбъект
//  ПланСчетовОбъект
//  ПланВидовРасчетаОбъект
//  БизнесПроцессОбъект
//  ЗадачаОбъект
//  ПланОбменаОбъект
//  ДокументОбъект
//  РегистрСведенийНаборЗаписей
//  РегистрНакопленияНаборЗаписей
//  РегистрБухгалтерииНаборЗаписей
//  РегистрРасчетаНаборЗаписей
//
//  Отказ – Булево – флаг отказа; Истина – объект не проходит проверки дат запрета изменения; Ложь – проходит.
//
Процедура ВыполнитьПроверкуДатыЗапретаИзменения(Источник, Отказ) Экспорт
   
   ОбъектМетаданных = Источник.Метаданные();
   
   ИсточникиДанных = ДатыЗапретаИзмененияПовтИсп.ИсточникиДанныхДляПроверкиЗапретаИзменения().НайтиСтроки(Новый Структура("Таблица", ОбъектМетаданных.ПолноеИмя()));
   
   Если ИсточникиДанных.Количество() = 0 Тогда
       Возврат; // для текущего типа объекта не определены запреты по датам
   КонецЕсли;
   
   ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(ОбъектМетаданных);
   
   Если    ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаСправочники()
       ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаПланыВидовХарактеристик()
       ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаПланыСчетов()
       ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаПланыВидовРасчета()
       ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаБизнесПроцессы()
       ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаЗадачи()
       ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаПланыОбмена() Тогда
       
       ПроверитьДатуЗапретаИзмененияПередЗаписью(Источник, Отказ);
       
   ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаДокументы() Тогда
       
       ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента(Источник, Отказ, Неопределено, Неопределено);
       
   ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыСведений()
         ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыНакопления() Тогда
       
       ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписей(Источник, Отказ, Истина);
       
   ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыБухгалтерии() Тогда
       
       ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписейРегистраБухгалтерии(Источник, Отказ, Неопределено);
       
   ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыРасчета() Тогда
       
       ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписейРегистраРасчета(Источник, Отказ, Истина, Неопределено, Неопределено, Неопределено);
       
   КонецЕсли;
   
КонецПроцедуры
10 sanja26
 
30.03.12
13:46
Хотя конечно рядом ))))

// Вызывается из переопределяемого модуля
Процедура ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения(Знач ИсточникиДанных) Экспорт
   
   // Данные(Таблица, ПолеДаты, Раздел, ПолеОбъекта)
   
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВыпискаПоРасчетномуСчету",              "Дата", "Банк", "БанковскийСчет");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ПоступлениеБезналичныхДенежныхСредств", "Дата", "Банк", "БанковскийСчет");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.СписаниеБезналичныхДенежныхСредств",    "Дата", "Банк", "БанковскийСчет");
   
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ОперацияПоПлатежнойКарте",        "Дата", "Касса", "Касса");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ОтчетБанкаПоОперациямЭквайринга", "Дата", "Банк", "ДоговорЭквайринга.БанковскийСчет");
   
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.КассоваяКнига",          "Дата", "Касса", "Документы.Документ.Касса");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ПриходныйКассовыйОрдер", "Дата", "Касса", "Касса");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.РасходныйКассовыйОрдер", "Дата", "Касса", "Касса");
   
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ОтчетОРозничныхПродажах",          "Дата", "РозничныеПродажи", "КассаККМ");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВнесениеДенежныхСредствВКассуККМ", "Дата", "РозничныеПродажи", "КассаККМ");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВыемкаДенежныхСредствИзКассыККМ",  "Дата", "РозничныеПродажи", "КассаККМ");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.КассоваяСмена",                    "Дата", "РозничныеПродажи", "КассаККМ");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ЧекККМВозврат",                    "Дата", "РозничныеПродажи", "КассаККМ");
   ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ЧекККМ",                           "Дата", "РозничныеПродажи", "КассаККМ");
   
КонецПроцедуры
11 Чел
 
30.03.12
13:48
(7) эх.... в 11ой еще оооочень много чего нет =) Загрузки классификатора банков с сайта rbc.ru нет! А ты говоришь! ))))

(9) и..?? И откуда она вызывается? из модуля обмена данными! И всё..
12 Чел
 
30.03.12
13:50
(10) ну да... тут те же самые банковские и кассовые документы... =))))
13 sanja26
 
30.03.12
13:56
и правда нет запрета на редактирование. постпление перепровелось без всяких затыков
14 BabySG
 
30.03.12
13:58
Документацию, как обычно, никто не читает

Полная дата запрета реализована только в 11.0.8
15 Чел
 
30.03.12
14:30
(14) спасибо =)
Как раз и загрузка с сайта rbc сделали ))
только ориентировочная дата выхода 28.04.2012 ((
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан