Книга знаний

1С:Предприятие / v8 / Объекты конфигурации / Бухгалтерский учет

v8: Проверка проводок перед записью

В 8.0 не контролируется при записи проводки, соответствуют ли указанные для проводки субконто тем субконто, которые положены для счета дебета и кредита. Иногда это приводит к трудноуловимым ошибкам. Данный метод позволяет избежать таких ситуаций.Автор статьи:
Последняя редакция №1 от 05.02.08
URL: http://kb.mista.ru/article.php?id=634

В модуле записей регистра бухгалтерии в процедуре "Перед записью" нужно добавить код:


Процедура ПередЗаписью(Отказ, РежимЗаписи)
   Сч=0;
   Для Каждого МЗ Из ЭтотОбъект Цикл
       ДампПроводки=ложь;
       Если МЗ.Период<='19000101' ИЛИ МЗ.Период>='22000101' Тогда
           Сообщить("В проводке номер "+Сч+1+" указан период, выходящий за допустимый диапазон 1900-2200 гг ", СтатусСообщения.Важное);
           ДампПроводки=истина;
           Отказ=Истина;
       КонецЕсли;
       
       Если ЗначениеНеЗаполнено(Мз.СчетДт) Тогда
           Если НЕ МЗ.СчетКт.Забалансовый Тогда
               Сообщить("В проводке номер "+Сч+1+" не указан счет Дебета", СтатусСообщения.Важное);
               ДампПроводки=истина;
               Отказ=Истина;
           КонецЕсли;
       Иначе
           Для Каждого ВидСубконто ИЗ МЗ.СубконтоДт Цикл
               Если НЕ ЗначениеНеЗаполнено(ВидСубконто.Значение) И МЗ.СчетДт.ВидыСубконто.Найти(ВидСубконто.Ключ) = Неопределено Тогда
                   Сообщить("В проводке номер "+Сч+1+" используется недопустимое субконто счета дебета:"+ВидСубконто.Ключ, СтатусСообщения.Важное);
                   ДампПроводки=истина;
                   Отказ=Истина;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
       
       Если ЗначениеНеЗаполнено(Мз.СчетКт) Тогда
           Если НЕ МЗ.СчетДт.Забалансовый Тогда
               Сообщить("В проводке номер "+ЭтотОбъект.Индекс(МЗ)+1+" не указан счет Кредита", СтатусСообщения.Важное);
               ДампПроводки=истина;
               Отказ=Истина;
           КонецЕсли;
       Иначе
           Для Каждого ВидСубконто ИЗ МЗ.СубконтоКт Цикл
               Если НЕ ЗначениеНеЗаполнено(ВидСубконто.Значение) И МЗ.СчетКт.ВидыСубконто.Найти(ВидСубконто.Ключ) = Неопределено Тогда
                   Сообщить("В проводке номер "+Сч+1+" используется недопустимое субконто счета кредита:"+ВидСубконто.Ключ, СтатусСообщения.Важное);
                   ДампПроводки=истина;
                   Отказ=Истина;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
   

       
       Если ДампПроводки Тогда
           ТЗ=ЭтотОбъект.Выгрузить();
           Стр=ТЗ[Сч];
           Для Каждого Колонка Из ТЗ.Колонки Цикл
               Сообщить(Символы.Таб+Колонка.Имя+Символы.Таб+"="+Символы.Таб+Стр[Колонка.Имя]);
           КонецЦикла;
           ТЗ=0;
       КонецЕсли;
       Сч=Сч+1;
   КонецЦикла;

КонецПроцедуры
В 8.1. лучше использовать более быстрый метод платформы ЗначениеЗаполнено.

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика