| v8: Проверка проводок перед записью| В 8.0 не контролируется при записи проводки, соответствуют ли указанные для проводки субконто тем субконто, которые положены для счета дебета и кредита.
Иногда это приводит к трудноуловимым ошибкам. Данный метод позволяет избежать таких ситуаций. |  | Автор статьи: Гений 1С | Редакторы: Последняя редакция №2 от 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. лучше использовать более быстрый метод платформы ЗначениеЗаполнено.
 |