gifts2017

Документ закрытие счетов. Может закрыть в 0 вообще все счета!

Опубликовал Димон * (DDos76) в раздел Обработки - Закрытие периода

Данный документ встраивается в любую конфигурацию, построенную на компоненте "Бухгалтерский учет". Просто скопируйте документ и назначьте ему нужный журнал. Что документ делает? Все очень просто: в табличной части указывается список балансовых счетов, которые нужно закрыть в 0. При проведении документ анализирует сальдо по счетам и формирует проводки, закрывающие счет, в корреспонденции с тем счетом, который указан в шапке документа. Может быть полезен, когда регламентные документы не позволяют закрыть, например, 90,44,20 счет из - за невыполнения каких - либо условий,  а также как шаблон для собственной разработки.

Привожу код модуля документа, для тех, кому не судьба скачать:

 


Перем Ит;

Перем
МСубконто[3];

//**********************************************************



Процедура СформироватьОперацию(ДК=0,СчетДвиж,Субконто_1,Субконто_2,Субконто_3,Сумма,Количество)

   
Операция.НоваяПроводка();

   
Операция.ПервичныйДокумент  = "Закрытие счетов № " + НомерДок;

   
Операция.Количество = Количество;

   
Операция.Сумма = Сумма;

    Если
ДК = 0 Тогда

        Если
СчетДвиж.Забалансовый = 0 Тогда

           
Операция.Дебет.Счет = СчетТранзита;

           
Операция.Дебет.Субконто(1,Субконто1);

           
Операция.Дебет.Субконто(2,Субконто2);

           
Операция.Дебет.Субконто(3,Субконто3);

        КонецЕсли;

       
Операция.Кредит.Счет = СчетДвиж;

        Если
МСубконто[1] <> 0 Тогда

           
Операция.Кредит.Субконто(МСубконто[1],Субконто_1);

        КонецЕсли;

        Если
МСубконто[2] <> 0 Тогда

           
Операция.Кредит.Субконто(МСубконто[2],Субконто_2);

        КонецЕсли;

        Если
МСубконто[3] <> 0 Тогда

           
Операция.Кредит.Субконто(МСубконто[3],Субконто_3);

        КонецЕсли;

    Иначе

        Если
СчетДвиж.Забалансовый = 0 Тогда

           
Операция.Кредит.Счет = СчетТранзита;

           
Операция.Кредит.Субконто(1,Субконто1);

           
Операция.Кредит.Субконто(2,Субконто2);

           
Операция.Кредит.Субконто(3,Субконто3);

        КонецЕсли;

       
Операция.Дебет.Счет = СчетДвиж;

        Если
МСубконто[1] <> 0 Тогда

           
Операция.Дебет.Субконто(МСубконто[1],Субконто_1);

        КонецЕсли;

        Если
МСубконто[2] <> 0 Тогда

           
Операция.Дебет.Субконто(МСубконто[2],Субконто_2);

        КонецЕсли;

        Если
МСубконто[3] <> 0 Тогда

           
Операция.Дебет.Субконто(МСубконто[3],Субконто_3);

        КонецЕсли;

    КонецЕсли;

КонецПроцедуры

//**************************************************

Процедура ЗакрытьСчет(Счет)

   
КолСубконто = 0;

    Для
Б = 1 По 3 Цикл

       
МСубконто[Б] = 0;

    КонецЦикла;

    Для
А = 1 По Счет.КоличествоСубконто() Цикл

       
//Оборотные субконто нас не интересуют!

       
Если Счет.ТолькоОбороты(А) = 0 Тогда

           
Ит.ИспользоватьСубконто(Счет.ВидСубконто(А),, 1);

           
КолСубконто = КолСубконто + 1;

           
МСубконто[КолСубконто] = А;

        КонецЕсли;

    КонецЦикла;

   
Ит.ВыполнитьЗапрос(ДатаДок, ДатаДок, Счет,,,1,, 1+4);

    Если
КолСубконто = 0 Тогда

        Если (
Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда

           
СформироватьОперацию(0,Счет,,,,Ит.СКД(),Ит.СКД(3));

        ИначеЕсли (
Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда

           
СформироватьОперацию(1,Счет,,,,Ит.СКК(),Ит.СКК(3));

        КонецЕсли;

    ИначеЕсли
КолСубконто > 0 Тогда

       
Ит.ВыбратьСубконто(Счет.ВидСубконто(МСубконто[1]));

        Пока
Ит.ПолучитьСубконто(Счет.ВидСубконто(МСубконто[1])) = 1 Цикл

            Если
КолСубконто > 1 Тогда

               
//Для материальных счетов = итоговые проводки по сумме делаем сразу

               
Если (Счет.УчетПосумме(2) = 0) и (Счет.УчетПоКоличеству(2) = 1) Тогда

                    Если (
Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда

                       
СформироватьОперацию(0,Счет,Ит.Субконто(1),,,Ит.СКД(),0);

                    ИначеЕсли (
Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда

                       
СформироватьОперацию(1,Счет,Ит.Субконто(1),,,Ит.СКК(),0);

                    КонецЕсли;

                ИначеЕсли (
Счет.УчетПосумме(2) = 1) и (Счет.УчетПоКоличеству(2) = 0) Тогда

                    Если (
Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда

                       
СформироватьОперацию(0,Счет,Ит.Субконто(1),,,0,Ит.СКД(3));

                    ИначеЕсли (
Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда

                       
СформироватьОперацию(1,Счет,Ит.Субконто(1),,,0,Ит.СКК(3));

                    КонецЕсли;

                КонецЕсли;

               
Ит.ВыбратьСубконто(Счет.ВидСубконто(МСубконто[2]));

                Пока
Ит.ПолучитьСубконто(Счет.ВидСубконто(МСубконто[2])) = 1 Цикл

                    Если
КолСубконто > 2 Тогда

                       
Ит.ВыбратьСубконто(Счет.ВидСубконто(МСубконто[3]));

                        Пока
Ит.ПолучитьСубконто(Счет.ВидСубконто(МСубконто[3])) = 1 Цикл

                            Если (
Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда

                               
СформироватьОперацию(0,Счет,Ит.Субконто(1),Ит.Субконто(2),Ит.Субконто(3),Ит.СКД(),Ит.СКД(3));

                            ИначеЕсли (
Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда

                               
СформироватьОперацию(1,Счет,Ит.Субконто(1),Ит.Субконто(2),Ит.Субконто(3),Ит.СКК(),Ит.СКК(3));

                            КонецЕсли;

                        КонецЦикла;

                    Иначе

                        Если (
Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда

                           
СформироватьОперацию(0,Счет,Ит.Субконто(1),Ит.Субконто(2),,Ит.СКД(),Ит.СКД(3));

                        ИначеЕсли (
Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда

                           
СформироватьОперацию(1,Счет,Ит.Субконто(1),Ит.Субконто(2),,Ит.СКК(),Ит.СКК(3));

                        КонецЕсли;

                    КонецЕсли;

                КонецЦикла;

            Иначе

                Если (
Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда

                   
СформироватьОперацию(0,Счет,Ит.Субконто(1),,,Ит.СКД(),Ит.СКД(3));

                ИначеЕсли (
Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда

                   
СформироватьОперацию(1,Счет,Ит.Субконто(1),,,Ит.СКК(),Ит.СКК(3));

                КонецЕсли;

            КонецЕсли;

        КонецЦикла;

    КонецЕсли;

КонецПроцедуры

//**************************************************

Процедура ОбработкаПроведения()

   
Ит = СоздатьОбъект("БухгалтерскиеИтоги");

   
Ит.ИспользоватьПланСчетов(ОсновнойПланСчетов());

   
//Ит.ИспользоватьРазделительУчета(Фирма);

   
ВыбратьСтроки();

    Пока
ПолучитьСтроку() = 1 Цикл

       
ЗакрытьСчет(СчетЗакрытия);

    КонецЦикла;

   
Операция.Записать();

КонецПроцедуры

 

Скачать файлы

Наименование Файл Версия Размер
1Cv7.MD 88
.MD 179,00Kb
07.10.11
88
.MD 179,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Александр Лыткин (TrinitronOTV) 07.10.11 11:17
интересный вариант реализации...
2. Димон * (DDos76) 07.10.11 12:24
Особенно если сделать кнопку "заполнить счетами". Нажал - провел- баланс по 0!. Вручную так и делал в Комплексной. Только по разделителю учета. Вычищал остатки по ликвидированным фирмам перед обрезанием базы. Чтоб хвосты не таскать.
3. Александр Лыткин (TrinitronOTV) 07.10.11 19:37
DDos76 пишет:

Особенно если сделать кнопку "заполнить счетами". Нажал - провел- баланс по 0!. Вручную так и делал в Комплексной. Только по разделителю учета. Вычищал остатки по ликвидированным фирмам перед обрезанием базы. Чтоб хвосты не таскать.

спасибо за отчет
4. salli al (salli80) 08.10.11 11:21
А нельзя чуть (для блондинок ) подробнее.Я создала журнал в конфигураторе ,а вот куда скопировать файл не поняла .Подскажите пожалуста.Вещица нужная для меня ))
5. Димон * (DDos76) 09.10.11 16:18
Специально для блондинок:
Код, приведенный на сайте, может быть полезен только тем, кто знаком с редактированием
документов в конфигураторе. В Вашем случае придется поступить по - другому:
Скачиваем файл 1CV7.MD с сайта. (там он есть, уже готовый)
Сохраняем его в отдельную папку на компьютере.
Прописываем путь запуска 1с в эту папку (регистрируем новую базу)
Запускаем конфигуратор этой базы. Далее в конфигураторе Конфигурация - открыть конфигурацию.
Раскрываем папочку "Документы". Там есть только один документ. Встаем на него - говорим "Ctrl+C"
(копировать в буфер), потом открываем свою, рабочую конфигурацию, открываем конфигурацию, встаем на
папочку "документы" и давим "ctrl+v" (вставить). Потом листаем содержимое этой папочки до самого
низа и видим вставленный документ. Щелкаем по нему и в открывшемся окне справа вверху выставляем журнал.
Сохраняем конфигурацю. Запускаемся в режиме бухгалтерии и работаем.
В Н И М А Н И Е! Перед всеми манипуляциями настоятельно рекомендую сделать архивную копию базы данных,
с которой Вы работаете. Хотя если все делать правильно , то ничего плохого не случится.
6. Мария Езупова (ezupowam) 12.10.11 16:27
Ух ты! Еще и субконто закрываются! Супер. А то у меня двадцатка от предыдущего бухгалтера досталась такая заросшая, листов на двадцать ))) Сальдо правильное, а по субконто все красное ((
Спасибо автору!
7. элла иванова (2011b11) 13.10.11 08:34
Спасибо, класс а то вечная проблема по закрытию счетов.
8. Natali P (NPodolsk) 13.10.11 12:29
Как вовремя, огромное спасибо! Закрываю вручную именно "из - за невыполнения каких - либо условий"
9. Валерий (warenic) 13.10.11 17:39
А чем не устроила старая добрая обработка "Закрытие счетов" (UCAccCls.ert) ажно 2008 года выпуска? Там не требовалось создавать новый документ (менять конфигурацию. тем более она могла быть базовой). Просто формировалась операция. Остатки по счетам и субконто можно закрывать с коэффициентом...
Ну, человек старался, минус ставить смысла нет.
10. Димон * (DDos76) 13.10.11 18:57
(9) warenic,
Есть такая обработка. Сам пользовался не раз. Кажется только 2005 года. На диске ИТС.
А теперь вопрос: Изменили что - то "задним числом", т.е раньше этой операции - и счет уже не закрыт. Надо "Ручками" запускать обработку заново. И за 1 месяц. И за второй. И за третий. И через пару недель опять что - то поменяли. И опять обработку. И опять разбирайся когда "хвосты" возникли. И опять... приличные слова кончились. А тут перепровел документ - и опять 0! Всегда ноль! Гарантированный! А перепроведение - это вообще признак хорошего тона в бухии. У меня так все работают - перепровели доки - после баланс сводят и НДС.
11. Димон * (DDos76) 13.10.11 19:18
(9) warenic,
Не поленился. Посмотрел - ACCLS.ERT у меня 2000 года рождения. И прекрасно работает! До поры до времени.
12. Любовь Жаткина (Полковник) 19.10.11 07:05
Спасибо, проверила на копии базы, все отлично. Вспоминаю закрытие счетов в начале года, просто как ужас! Без конца изменение задним числом, проведение, перепроведение и счет опять не закрыт! Наконец-то это закончилось! ура!
16. simuljakr (simuljakr) 13.07.12 12:31
Спасибо за разработку !
Еще бы неплохо сделать возможность отбора по субконто: если я хочу закрыть не весь счет, а только по одному контрагенту.
17. simuljakr (simuljakr) 13.07.12 14:27
Столкнулся с ошибкой: при закрытии забалансового счета ГТД - документ рисует лишнюю проводку (по каждой номенклатуре - по которой есть остаток) с пустым ГТД (второе субконто)...
18. Светлана Фоменко (safia-med) 14.03.14 11:04
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа