Ищем должников, сортируем долги по срокам задолженности
Скачать файл
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Обработка для конфигурации Торговля и Склад 7.7, которая поможет рассчитать пени на просроченные платежы ваших Покупателей за выбранный период, с применением нескольких ставок рефинансирования по датам.
Акт сверки для 1С:Бухгалтерии 7.7 И УСН 7.7 (начиная с версии файла 1.0.1) и для Комплексной конфигурации 7.7 Тестировался на релизах (бухгалтерии от 594 и выше, упрощенки от 250 и выше, комплексной конфигурации на релизе 587). Добавлена возможность группировать операции по договорам контрагента и формировать обороты по ним.
Сортировка 62 счета по субсчетам
Обработка сама закрывает авансы, при этом она позволяет работать с кореспонденцией любого типа по 62 счету, например схлопнуть 62,4 на 62,1 , а затем 62,1 на 62,2 или сразу 62,2 на 62,1 ,т.е. сколько раз хотите столько и запустите с различными вариациями.
Раньше этот отчет распространялся платно и только по нашим клиентам. Сегодня выкладываем его в общее пользование, в память о золотом веке семерки. Впрочем, уверен, что и сейчас скачиваний будет немало, ведь семерка жива, и на "1С:Торговле и склад" многие торговые компании предпочитают до сих пор вести учет продаж.
В отчете присутствует ОШИБКА. Рассмотрим случай: У контрагента Дт задолженность с 2007 г. Оплаты нет. И в октябре 2008 г. задолженность увеличивается. Вопрос: Почему вся задолженность считается как СВЫШЕ МЕСЯЦЕВ?
А во всем остальном - удобный отчет. Сообщите, когда переделаете и обновите.
У вас не работает режим( вообще его нет):"сортировать по клиентам". Может в этом и заключается ошибка.
І шо тут паролити?
// Определение возраста задолжности по контрагенту
// Тип = 1 - по деебту
// Тип <> 1 - по кредиту
Процедура ПолучитьВозраст(Тип, Ит, СуммаЗадолженности, ДатаЗадолженности)
// ТЗ будет содержать суммы и даты возникновения положительных
// (если можно так сказать) задолженностей
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Дата", "Дата");
ТЗ.НоваяКолонка("Сумма", "Число");
// тут у нас нарастающее сальдо (дебетовое или кредитовое, в зависимости
// от реквищита "тип"), хотя нарастать оно будет только вниз
// положительные суммы будут заноститься в ТЗ
ъСумма = СуммаЗадолженности;
Если ъСумма > 0 Тогда
// если задолженность уже была, то датой её возникновения
// установим начальную дату бух итогов - 1
ТЗ.НоваяСтрока();
ТЗ.Дата = Ит.НачДата - 1;
ТЗ.Сумма = ъСумма;
ъСумма = 0;
КонецЕсли;
Ит.ВыбратьПериоды();
Пока Ит.ПолучитьПериод() = 1 Цикл
// перебираем все операции по текущему контрагенту
Опер = Ит.Операция;
Если ъСумма > 0 Тогда
// если операция ведёт к увеличению задолжности
// то добавляем новую строку в ТЗ
ТЗ.НоваяСтрока();
ТЗ.Дата = Ит.Операция.ДатаОперации;
Сообщить(ТЗ.Дата);
ТЗ.Сумма = ъСумма;
ъСумма = 0;
ИначеЕсли ъСумма < 0 Тогда
// если задолженность уменьшается, то "закрываем" ранние
// операции приведшие к этой самой задолжености (если они конечно имеются)
ку = 1;
Пока ку <= ТЗ.КоличествоСтрок() Цикл
ТЗ.ПолучитьСтрокуПоНомеру(ку);
Если ТЗ.Сумма <= -ъСумма Тогда
ъСумма = ъСумма + ТЗ.Сумма;
ТЗ.УдалитьСтроку(ку);
Продолжить;
Иначе
ТЗ.Сумма = ТЗ.Сумма + ъСумма;
ъСумма = 0;
Прервать;
КонецЕсли;
ку = ку + 1;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ДатаЗадолженности = Дата(0);
Если ъСумма < 0 Тогда
// если наше нарастающее сальдо отрицательное, то значит никакой
// задолженности и небыло
СуммаЗадолженности = ъСумма;
Иначе
// иначе за дату возникновения задолжености берём дату самой
// первой операции
СуммаЗадолженности = ТЗ.Итог("Сумма");
Если ТЗ.КоличествоСтрок() > 0 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(1);
ДатаЗадолженности = ТЗ.Дата;
КонецЕсли;
КонецЕсли;
КонецПроцедуры //ПолучитьВозраст
//_____________________________________________________________________________
Ит.ВыбратьСубконто(1);
ИтСум=0;
Пока Ит.ПолучитьСубконто(1)=1 Цикл
СумКл=Ит.СКД()-Ит.СКК();
Если СумКл<=0 Тогда
Продолжить;
КонецЕсли;
//ИтСум=ИтСум+СумКл;
СуммаЗадолженности = СумКл - (Ит.ДО() - Ит.КО());
ДатаЗадолженности = Дата(0);
// расчитываем дату возникновения задолжности
ПолучитьВозраст(1, Ит, СуммаЗадолженности, ДатаЗадолженности);
// Сумма будет содержать возрат задолженности
Сумма = ДатаЗадолженности;
//Сообщить(ДатаЗадолженности);
ТЗ1.НоваяСтрока();
ТЗ1.Контрагент = ИТ.Субконто(1);
ТЗ1.Сумма = СуммаЗадолженности;
ТЗ1.Дат=ДатаЗадолженности;
Если ПустоеЗначение(Сумма)=0 Тогда
Если Сумма>=Предел1 Тогда
ТЗ1.Срок=1;
ИначеЕсли Сумма>=Предел2 Тогда
ТЗ1.Срок=3;
ИначеЕсли Сумма>=Предел3 Тогда
ТЗ1.Срок=12;
Иначе
ТЗ1.Срок=30;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Таб=СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Шапка");
Сум=0;
ТЗ1.Сортировать("Срок-,Дат,Контрагент");
Срок=-1;
Сум=0;
ИтСум1=0;
ТЗ1.ВыбратьСтроки();
Пока ТЗ1.ПолучитьСтроку()=1 Цикл
Если Срок<>ТЗ1.Срок Тогда
Если Сум>0 Тогда
Если Срок=1 Тогда
СтрСрок="Меньше месяца";
ИначеЕсли Срок=3 Тогда
СтрСрок="от 1 до 3 месяцев";
ИначеЕсли Срок=12 Тогда
СтрСрок="от 3 до 12 месяцев";
Иначе
СтрСрок="Свыше 12 месяцев";
КонецЕсли;
ИтСум1=ИтСум1+Сум;
Таб.ВывестиСекцию("Итог");
КонецЕсли;
Срок=ТЗ1.Срок;
Сум=0;
КонецЕсли;
Сум=Сум+ТЗ1.Сумма;
Если ТЗ1.Срок=1 Тогда
Секц="Строка1";
ИначеЕсли ТЗ1.Срок=3 Тогда
Секц="Строка2";
ИначеЕсли ТЗ1.Срок=12 тогда
Секц="Строка3";
Иначе
Секц="Строка4";
КонецЕсли;
Таб.ВывестиСекцию(Секц);
КонецЦикла;
Если Сум>0 Тогда
Если Срок=1 Тогда
СтрСрок="Меньше месяца";
ИначеЕсли Срок=3 Тогда
СтрСрок="от 1 до 3 месяцев";
ИначеЕсли Срок=12 Тогда
СтрСрок="от 3 до 12 месяцев";
ИначеЕсли Срок=0 Тогда
СтрСрок="дата в договоре не установлена";
Иначе
СтрСрок="Свыше 12 месяцев";
КонецЕсли;
ИтСум1=ИтСум1+Сум;
Таб.ВывестиСекцию("Итог");
КонецЕсли;
//Сообщить("Общая сумма по долгам покупателей "+ИтСум);
//Сообщить("Общая сумма по отчету "+ИтСум1);
Таб.ВывестиСекцию("Ит");
Таб.ТолькоПросмотр(1);
Таб.Показать();
КонецПроцедуры
ВыбДата=РабочаяДата();
Лучше смотрите от Димыча
http://infostart.ru/projects/4412/