Запрет редактирования проводок по определенным счетам

10.09.15

Задачи пользователя - Адаптация типовых решений

Задача.  В финансовой службе часто сталкиваются с изменением проводок на счетах учета денежных средств задним числом. Необходимо запретить редактирование проводок по определенным счетам на определенную дату.

Решение задачи. 

Используемая конфигурация Инталев КМ6 (на самом деле неважно. Подход подойдет для любой конфигурации с Регистром бухгалтерии).

Создаем в конфигурации:

  1. Справочник для указания счетов и даты запрета (Сценарий - тонкость Инталева)
  2. Роль для изменения созданного справочника (по желанию)
  3. Подписку на событие для регистра бухгалтерии на событие перед записью. (Хозрасчетный также присутствует в источниках и отлично срабатывает, значит в обычной бухгалтерии тоже должно работать на ура) 
  4. Общий модуль. Со следующим содержанием. 
    Процедура Новард_РегистрБухгалтерииЗапретПроведенияПоСчетамПередЗаписью(Источник, Отказ, РежимЗаписи) Экспорт
    	
    	УстановитьПривилегированныйРежим(Истина);
    	
    	Попытка
    		ИмяРегистра     = Источник.Метаданные().Имя;
    		ЕстьСценарий    = Источник.Метаданные().Измерения.Найти("Сценарий") <> Неопределено;
    		ОтазВПроведении = Неопределено;
    		
    		//Проверить регистр до изменения
    		Набор = РегистрыБухгалтерии[ИмяРегистра].СоздатьНаборЗаписей();
    		Набор.Отбор.Регистратор.Установить(Источник.Отбор.Регистратор.Значение);
    		Набор.Прочитать();
    		
    		Если  Набор.Количество() > 0 Тогда
    			ОтазВПроведении = ПроверитьВозможностьИзменения(Набор, ЕстьСценарий);
    		КонецЕсли;
    		
    		//Проверить регистр после изменения
    		Если  Источник.Количество() > 0 и ОтазВПроведении = Неопределено Тогда
    			ОтазВПроведении = ПроверитьВозможностьИзменения(Источник, ЕстьСценарий);
    		КонецЕсли; 
    		
    		Если ОтазВПроведении <> Неопределено Тогда				
    			Отказ = Истина;
    			ТекстОтказа = "Проведение по счету "+ОтазВПроведении.Счет+" запрещено настройкой "+ОтазВПроведении.Ссылка;
    			Сообщить(ТекстОтказа,СтатусСообщения.Важное);
    			//ВызватьИсключение ТекстОтказа;
    		КонецЕсли;
    		
    	Исключение
    		Информация=ИнформацияОбОшибке();
    		ВызватьИсключение "Отмена проведения "+Источник+" не была выполнена:"+Символы.ПС+Информация.Описание;
    	КонецПопытки;
    	
    КонецПроцедуры
    
    Функция ПроверитьВозможностьИзменения(Источник, ЕстьСценарий)
    	
    	УстановитьПривилегированныйРежим(Истина);
    
    	ТаблицаПроводок = Источник.Выгрузить(,);
    	
    	Если Не ЕстьСценарий Тогда
    		ТаблицаПроводок.Колонки.Добавить("Сценарий",         Новый ОписаниеТипов("СправочникСсылка.Инт_Сценарии"));
    	КонецЕсли;	
    
    	ТаблицаПроводок.Свернуть("Период,Сценарий,СчетДТ,СчетКт");
    		
    	Запрос = Новый Запрос;
    	Запрос.Текст = "ВЫБРАТЬ
    	               |	Источник.Период,
    	               |	Источник.Сценарий,
    	               |	Источник.СчетДт,
    	               |	Источник.СчетКт
    	               |ПОМЕСТИТЬ ВТИсточник
    	               |ИЗ
    	               |	&Источник КАК Источник
    	               |;
    	               |
    	               |////////////////////////////////////////////////////////////////////////////////
    	               |ВЫБРАТЬ
    	               |	ВТИсточник.Период,
    	               |	ВТИсточник.СчетДт КАК Счет,
    	               |	ВТИсточник.Сценарий
    	               |ПОМЕСТИТЬ ВТСвернутыйИсточник
    	               |ИЗ
    	               |	ВТИсточник КАК ВТИсточник
    	               |
    	               |ОБЪЕДИНИТЬ
    	               |
    	               |ВЫБРАТЬ
    	               |	ВТИсточник.Период,
    	               |	ВТИсточник.СчетКт,
    	               |	ВТИсточник.Сценарий
    	               |ИЗ
    	               |	ВТИсточник КАК ВТИсточник
    	               |;
    	               |
    	               |////////////////////////////////////////////////////////////////////////////////
    	               |ВЫБРАТЬ
    	               |	Новард_ДатыЗапретаПоСчетамСчетаЗапрета.Ссылка,
    	               |	Новард_ДатыЗапретаПоСчетамСчетаЗапрета.Счет,
    	               |	Новард_ДатыЗапретаПоСчетамСчетаЗапрета.Ссылка.ДатаВремяЗапрета
    	               |ИЗ
    	               |	Справочник.Новард_ДатыЗапретаПоСчетам.СчетаЗапрета КАК Новард_ДатыЗапретаПоСчетамСчетаЗапрета
    	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСвернутыйИсточник КАК ВТСвернутыйИсточник
    	               |		ПО Новард_ДатыЗапретаПоСчетамСчетаЗапрета.Ссылка.ДатаВремяЗапрета > ВТСвернутыйИсточник.Период
    	               |			И Новард_ДатыЗапретаПоСчетамСчетаЗапрета.Счет = ВТСвернутыйИсточник.Счет
    	               |			И (НЕ Новард_ДатыЗапретаПоСчетамСчетаЗапрета.Ссылка.ПометкаУдаления)
    	               |			И Новард_ДатыЗапретаПоСчетамСчетаЗапрета.Ссылка.Сценарий = ВТСвернутыйИсточник.Сценарий";
    	
    	Запрос.УстановитьПараметр("Источник", ТаблицаПроводок);
    		
    	Результат = Запрос.Выполнить();
    	Выборка = Результат.Выбрать();
    	
    	Пока Выборка.Следующий() Цикл
    		Возврат Выборка;		
    	КонецЦикла;
    	
    	Возврат Неопределено;
    	
    КонецФункции	
p.s. Никаких изменений существующих объектов и модулей (снятие с поддержки не считается).

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4451    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2952    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1281    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    1993    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Alonarista 59 11.09.15 09:08 Сейчас в теме
ИМХО через регистр сведений будет работать быстрей, чем через справочник + при периодичном РСе можно без проблем устанавливать актуальность и активность запрета.
+ в конце можно переработать.
После выполнения запроса проверить его пустоту.
Если результат запроса не пустой - то отбирать результаты.
2. duhh 236 11.09.15 09:47 Сейчас в теме
(1) Alonarista, Согласен, нужно всегда писать правильно, даже несмотря на то, что на фоне проведения эта проверка занимает менее процента.
3. Kamikadze 46 11.09.15 10:03 Сейчас в теме
А почему не регистр сведений?
alekseineputin; Team leader; +2 Ответить
4. duhh 236 11.09.15 11:58 Сейчас в теме
(3) Kamikadze, На моем количестве запретов по счетам, не даст значимого прироста в быстродействии. (1) уже ответил, согласен, правильней использовать регистр. вместо справочника.

5. bydk 19.09.15 13:19 Сейчас в теме
Если ОтазВПроведении <> Неопределено Тогда 

ОтКаз? Опечатку поправьте...
6. duhh 236 20.09.15 01:01 Сейчас в теме
(5) bydk, Действительно очепятался, и так шесть раз. Но так как на работоспособность алгоритма не влияет, оставлю как есть.
Оставьте свое сообщение