Отчет отрабатывает до определенной даты.
Этот отчет формирует информацию о задолженности только до ноября 2015г. Как только период с декабря 2015г. ошибка типа:
Поле агрегатного объекта не обнаружено (СрокПлатежа)
Бух. итоги на 4 квартал 2016г. установлены.
Поле агрегатного объекта не обнаружено (СрокПлатежа)
Бух. итоги на 4 квартал 2016г. установлены.
Функция ПолучитьДокументы(ТекКА,Т,Знач Д1,Знач Д2, СальдоКон=0)
Таб=СоздатьОбъект("ТаблицаЗначений");
Таб.НоваяКолонка("Приход","Число",15,2);
Таб.НоваяКолонка("Расход","Число",15,2);
Таб.НоваяКолонка("Дата","Дата");
Таб.НоваяКолонка("Позиция");
Таб.НоваяКолонка("Документ","Документ");
Таб.НоваяКолонка("ДатаПогашения","Дата");
Ит=СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,ТекКА,2,0);
Если Ит.ВыполнитьЗапрос(Д1,Д2,"62.0",,,1,"операция","С")=0 Тогда
Сообщить("Ошибка!");
Возврат 0;
КонецЕсли;
Если СальдоКон=0 Тогда
СальдоКон=Ит.СКД("С")-Ит.СКК("С");
Опл=1;
Иначе
Опл=0;
КонецЕсли;
СальдоНач=СальдоКон;
Если СальдоКон<=0 Тогда
Возврат 0;
КонецЕсли;
Ит.ВыбратьПериоды(); //,,,1
Пока Ит.ПолучитьПериод()=1 Цикл
Таб.НоваяСтрока();
Контрагент=ТекКА;
Таб.Приход=Ит.ДО("С");
Таб.Расход=Ит.КО("С");
Таб.Документ=Ит.Операция.Документ;
Таб.Дата=Ит.Операция.Документ.ДатаДок;
Таб.Позиция=Ит.Операция.Документ.ПолучитьПозицию();
//Если Ит.Операция.Документ.Вид()="РасходнаяНакладная" Тогда
Если ПустоеЗначение(Ит.Операция.Документ.СрокПлатежа) = 1 Тогда
Таб.ДатаПогашения=Ит.Операция.Документ.ДатаДок+СрокОплаты;
Иначе
Таб.ДатаПогашения=Ит.Операция.Документ.СрокПлатежа;
КОнецЕсли;
//КонецЕсли;
КонецЦикла;
ДопТаб=СоздатьОбъект("ТаблицаЗначений");
ДопТаб.НоваяКолонка("Долг","Число",15,2);
ДопТаб.НоваяКолонка("Дата","Дата");
ДопТаб.НоваяКолонка("Документ","Документ");
ДопТаб.НоваяКолонка("ДатаПогашения","Дата");
Если Таб.КоличествоСтрок()=0 Тогда
Если СальдоКон>0 Тогда
ПолучитьДокументы(ТекКА,ДопТаб,Д1-31,Д1-1,СальдоКон);
Иначе
Возврат СальдоНач;
КонецЕсли;
Иначе
Ном=-1;
Таб.Сортировать("-Позиция");
Таб.ВыбратьСтроки();
Пока (Таб.ПолучитьСтроку()=1)и(СальдоКон>0) Цикл
Если Таб.Приход>0 Тогда
ДопТаб.НоваяСтрока();
ДопТаб.Документ=Таб.Документ;
ДопТаб.Дата=Таб.Дата;
ДопТаб.ДатаПогашения=Таб.ДатаПогашения;
ДопТаб.Долг=Таб.Приход;
КонецЕсли;
СальдоКон=СальдоКон-Таб.Приход;
КонецЦикла;
Если СальдоКон>0 Тогда
ПолучитьДокументы(ТекКА,ДопТаб,Д1-31,Д1-1,СальдоКон);
КонецЕсли;
КонецЕсли;
Оплата=СальдоНач;
Если Опл=1 Тогда
ДопТаб.Сортировать("-Дата");
ДопТаб.ВыбратьСтроки();
Пока ДопТаб.ПолучитьСтроку()=1 Цикл
Сум=Мин(ДопТаб.Долг,Оплата);
Оплата=Оплата-Сум;
ДопТаб.Долг=Сум;
КонецЦикла;
КонецЕсли;
ДопТаб.Сортировать("+Дата");
ДопТаб.ВыбратьСтроки();
Пока ДопТаб.ПолучитьСтроку()=1 Цикл
Т.НоваяСтрока();
Т.Документ=ДопТаб.Документ;
Т.Дата=ДопТаб.Дата;
Т.ДатаПогашения=ДопТаб.ДатаПогашения;
Т.Долг=ДопТаб.Долг;
КонецЦикла;
Возврат ?(Опл=1,СальдоНач,Оплата);
КонецФункции
//*******************************************
Процедура Сформировать()
КА=СоздатьОбъект("Справочник.Контрагенты");
Сп=СоздатьОбъект("СписокЗначений");
Если ВыбКА.Выбран()=1 Тогда
Если ВыбКА.ЭтоГруппа()=1 Тогда
КА.ВыбратьЭлементы(0);
Пока КА.ПолучитьЭлемент()=1 Цикл
Если КА.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если КА.ПринадлежитГруппе(ВыбКА)=0 Тогда
Продолжить;
КонецЕсли;
Сп.ДобавитьЗначение(КА.ТекущийЭлемент());
КонецЦикла;
Иначе
Сп.ДобавитьЗначение(ВыбКА);
КонецЕсли;
Иначе
КА.ВыбратьЭлементы(0);
Пока КА.ПолучитьЭлемент()=1 Цикл
Если КА.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Сп.ДобавитьЗначение(КА.ТекущийЭлемент());
КонецЦикла;
КонецЕсли;
Сп.Сортировать();
ДопТаб=СоздатьОбъект("ТаблицаЗначений");
ДопТаб.НоваяКолонка("Долг","Число",15,2);
ДопТаб.НоваяКолонка("Дата","Дата");
ДопТаб.НоваяКолонка("Документ","Документ");
ДопТаб.НоваяКолонка("ДатаПогашения","Дата");
Т=СоздатьОбъект("Таблица");
Т.ИсходнаяТаблица("Таблица");
Таблица.Очистить();
_Секц=Т.ПолучитьСекцию("Шапка");
Таблица.ВывестиСекцию(_Секц);
ОбщСуммаДолга=0;
ОбщСуммаПросрДолга=0;
Для К=1 По Сп.РазмерСписка() Цикл
Стр="";
Контрагент=Сп.ПолучитьЗначение(К,Стр);
Д1=Дата(ДатаРасч-30);
Д2=ДатаРасч;
ДопТаб.УдалитьСтроки();
СуммаДолга=ПолучитьДокументы(Контрагент,ДопТаб,Д1,Д2);
Если СуммаДолга<=0 Тогда
Продолжить;
КонецЕсли;
ОбщСуммаДолга=ОбщСуммаДолга+СуммаДолга;
_Секц=Т.ПолучитьСекцию("Контрагент");
Таблица.ВывестиСекцию(_Секц);
//ДопТаб.Сортировать("+Дата");
ДопТаб.ВыбратьСтроки();
Пока ДопТаб.ПолучитьСтроку()=1 Цикл
Если ДопТаб.ДатаПогашения<ДатаРасч Тогда
ОбщСуммаПросрДолга=ОбщСуммаПросрДолга+ДопТаб.Долг;
_Секц=Т.ПолучитьСекцию("Документ2");
Иначе
_Секц=Т.ПолучитьСекцию("Документ1");
КонецЕсли;
Таблица.ВывестиСекцию(_Секц);
КонецЦикла;
КонецЦикла;
_Секц=Т.ПолучитьСекцию("Подвал");
Таблица.ВывестиСекцию(_Секц);
Таблица.Показать(0);
КонецПроцедуры
Процедура ПриОткрытии()
Таблица.Опции(0,0,2,0,"ДолгиПоКА1","ДолгиПоКА2");
Таблица.ТолькоПросмотр(1);
ДатаРасч=РабочаяДата();
СрокОплаты=30;
КонецПроцедуры //ПриОткрытии
ПоказатьПо теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Разобрался с именем документа.
Вопрос в другом: определяю дату документа:
Функция ПолучитьДокументы(ТекКА,Т,Знач Д1,Знач Д2, СальдоКон=0)
хочу получить проводки:
Если Ит.ВыполнитьЗапрос(Д1,Д2,"62.0",, 1,, "С")=0 Тогда
Ошибка:
Неверно задана периодичность запроса!
Хотя отладчиком: Д1-22.11.16 Д2-22.12.16.
Вопрос в другом: определяю дату документа:
Функция ПолучитьДокументы(ТекКА,Т,Знач Д1,Знач Д2, СальдоКон=0)
хочу получить проводки:
Если Ит.ВыполнитьЗапрос(Д1,Д2,"62.0",, 1,, "С")=0 Тогда
Ошибка:
Неверно задана периодичность запроса!
Хотя отладчиком: Д1-22.11.16 Д2-22.12.16.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот