По теме из базы знаний
- Отчет: Акт сверки взаиморасчетов для БП 8.1
- Акт сверки взаиморасчетов по списку контрагентов или свернуто на 1 контрагента
- Рассылка по электронной почте и автоматическое формирование актов сверки взаиморасчетов для КА 2.5, УТ 11, ERP 2.5
- Акт сверки взаиморасчетов с покупателями (Розница 2.2, 2.3)
- Акт сверки взаиморасчетов для УТ 11.5, КА, ERP 2.5
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
..АУУ??? Кто хорошо знаком с БП...помогите очень срочно нужно...
Вот код изначальный начала подпралять...
Функция ПечатьАктаСверки()
.....
.....
.....
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(ОстатокНаНачало > 0, ОстатокНаНачало, 0);
ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(ОстатокНаНачало < 0, -ОстатокНаНачало, 0);
ТабДок.Вывести(ОбластьНачОстатки);
ОборотыДт = 0;
ОборотыКт = 0;
ОборотыДтКонтр = 0;
ОборотыКтКонтр = 0;
Если ПоДаннымОрганизации.Количество()>0 ИЛИ ПоДаннымКонтрагента.Количество()>0 Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ВлЗапрос.Договор КАК Договор,
| ВлЗапрос.Дата КАК Дата,
| ВлЗапрос.Документ,
| ВлЗапрос.Представление,
| ВлЗапрос.ДатаК,
| ВлЗапрос.ПредставлениеК,
| Дебет как СуммаДогДт,
| Кредит как СуммаДогКт,
| ДебетК как СуммаДогДтКонтр,
| КредитК как СуммаДогКтКонтр
|Из
| (Выбрать"
+?(РазбитьПоДоговорам,"
| ПоДаннымОрганизации.Договор КАК Договор,","
| NULL КАК Договор,")
+"
| ПоДаннымОрганизации.Дата как Дата,
| NUll как ДатаК,
| ПоДаннымОрганизации.Документ КАК Документ,
| ПоДаннымОрганизации.Представление КАК Представление,
| NULL КАК ПредставлениеК,
| ПоДаннымОрганизации.Дебет КАК Дебет,
| ПоДаннымОрганизации.Кредит КАК Кредит,
| 0 КАК ДебетК,
| 0 КАК КредитК
| ИЗ
| Документ.АктСверкиВзаиморасчетов.ПоДаннымОрганизации КАК ПоДаннымОрганизации
| Где
| ПоДаннымОрганизации.Ссылка = &ТекущийДокумент
|
| ОБЪЕДИНИТЬ ВСЕ
|
| Выбрать"
+?(РазбитьПоДоговорам,"
| ПоДаннымКонтрагента.Договор,","
| NULL КАК Договор,")
+"
| NULL,
| ПоДаннымКонтрагента.Дата,
| NULL,
| NULL,
| ПоДаннымКонтрагента.Представление,
| 0,
| 0,
| ПоДаннымКонтрагента.Дебет,
| ПоДаннымКонтрагента.Кредит
|
| ИЗ
| Документ.АктСверкиВзаиморасчетов.ПоДаннымКонтрагента КАК ПоДаннымКонтрагента
| Где
| ПоДаннымКонтрагента.Ссылка = &ТекущийДокумент
|
|
|) КАК ВлЗапрос
|
| ИТОГИ
| СУММА(СуммаДогДт),
| СУММА(СуммаДогКт),
| СУММА(СуммаДогДтКонтр),
| СУММА(СуммаДогКтКонтр)
| ПО
| Общие,Договор";
Результат = Запрос.Выполнить();
ОбходПоОбщимИтогам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Общие");
ОбходПоОбщимИтогам.Следующий();
ОборотыДт = ОбходПоОбщимИтогам.СуммаДогДт;
ОборотыКт = ОбходПоОбщимИтогам.СуммаДогКт;
ОборотыДтКонтр = ОбходПоОбщимИтогам.СуммаДогДтКонтр;
ОборотыКтКонтр = ОбходПоОбщимИтогам.СуммаДогКтКонтр;
ОбходПоДоговорам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Договор");
Пока ОбходПоДоговорам.Следующий() Цикл
Если РазбитьПоДоговорам Тогда
//Выводим заголовок с договором
ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор;
ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор;
ТабДок.Вывести(ОбластьДоговор);
ОбходПоДокументам=ОбходПоДоговорам.Выбрать();
Вот тут нужно вывести сальдо начально по договору т.е проблема в том как именно на данный момент высчитать если ли сальдо начальное(СуммаНДТ) по данному договору или нет!!!!
ОбластьСальдоН.Параметры.СуммаНДТ = ?(СУммаНДТ, СуммаНДТ, 0);
ТабДок.Вывести(ОбластьСальдоН);
Иначе
ОбходПоДокументам=Результат.Выбрать();
КонецЕсли;
//Создадим список документов по организации и контрагенту
СписокДокументов = новый массив;
СписокДокументовК = новый массив;
Пока ОбходПоДокументам.Следующий() Цикл
Если ОбходПоДокументам.Дата<>NULL Тогда
СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт",
ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт));
КонецЕсли;
Если ОбходПоДокументам.ДатаК<>NULL Тогда
СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр",
ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр));
КонецЕсли;
КонецЦикла;
//Для упрощения вывода, сравним списки по количеству элементов, добавив пустые
МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
Если СписокДокументов.Количество()<СписокДокументовК.Количество() Тогда
Для инд = МинИндекс По МаксИндекс-1 Цикл
СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт","","","","",""));
КонецЦикла;
ИначеЕсли СписокДокументов.Количество()>СписокДокументовК.Количество() Тогда
Для инд = МинИндекс По МаксИндекс-1 Цикл
СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр","","","",""));
КонецЦикла;
КонецЕсли;
Для Инд = 0 По МаксИндекс Цикл
ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);
ТабДок.Вывести(ОбластьОбороты);
КонецЦикла;
Если РазбитьПоДоговорам Тогда
//Выводим итоги по каждому договору
ОбластьДоговорИтоги.Параметры.Заполнить(ОбходПоДоговорам);
ТабДок.Вывести(ОбластьДоговорИтоги);
Ну а тут получается должно выводиться Сальдо конечное по договору
СуммаКДт=СуммаНДТ+ОбходПоДоговорам.СуммаДогДт-ОбходПоДоговорам.СуммаДогКт;
ОбластьСальдоК.Параметры.СуммаКДт=?(СуммаКдт > 0, СуммаКДт, 0);
ТабДок.Вывести(ОбластьСальдоК);
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
ОбластьОборотыИтог.Параметры.СуммаОборотДт = ОборотыДт;
ОбластьОборотыИтог.Параметры.СуммаОборотКт = ОборотыКт;
Если СверкаСогласована тогда
ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ОборотыДтКонтр;
ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ОборотыКтКонтр;
КонецЕсли;
ТабДок.Вывести(ОбластьОборотыИтог);
КонецЕсли;
ОстатокНаКонец = ОстатокНаНачало + ОборотыДт - ОборотыКт;
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);
Если СверкаСогласована тогда
ОстатокНаКонецК = ОстатокНаНачало - ОборотыДтКонтр + ОборотыКтКонтр;
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецК > 0, ОстатокНаКонецК, 0);
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецК < 0, -ОстатокНаКонецК, 0);
КонецЕсли;
ТабДок.Вывести(ОбластьКонОстатки);
......
......
......
Возврат ТабДок;
КонецФункции
Ну вроде подробно описала проблему помогите же кто-нибудь???Или сегодня глухо тут???
Вот код изначальный начала подпралять...
Функция ПечатьАктаСверки()
.....
.....
.....
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(ОстатокНаНачало > 0, ОстатокНаНачало, 0);
ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(ОстатокНаНачало < 0, -ОстатокНаНачало, 0);
ТабДок.Вывести(ОбластьНачОстатки);
ОборотыДт = 0;
ОборотыКт = 0;
ОборотыДтКонтр = 0;
ОборотыКтКонтр = 0;
Если ПоДаннымОрганизации.Количество()>0 ИЛИ ПоДаннымКонтрагента.Количество()>0 Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ВлЗапрос.Договор КАК Договор,
| ВлЗапрос.Дата КАК Дата,
| ВлЗапрос.Документ,
| ВлЗапрос.Представление,
| ВлЗапрос.ДатаК,
| ВлЗапрос.ПредставлениеК,
| Дебет как СуммаДогДт,
| Кредит как СуммаДогКт,
| ДебетК как СуммаДогДтКонтр,
| КредитК как СуммаДогКтКонтр
|Из
| (Выбрать"
+?(РазбитьПоДоговорам,"
| ПоДаннымОрганизации.Договор КАК Договор,","
| NULL КАК Договор,")
+"
| ПоДаннымОрганизации.Дата как Дата,
| NUll как ДатаК,
| ПоДаннымОрганизации.Документ КАК Документ,
| ПоДаннымОрганизации.Представление КАК Представление,
| NULL КАК ПредставлениеК,
| ПоДаннымОрганизации.Дебет КАК Дебет,
| ПоДаннымОрганизации.Кредит КАК Кредит,
| 0 КАК ДебетК,
| 0 КАК КредитК
| ИЗ
| Документ.АктСверкиВзаиморасчетов.ПоДаннымОрганизации КАК ПоДаннымОрганизации
| Где
| ПоДаннымОрганизации.Ссылка = &ТекущийДокумент
|
| ОБЪЕДИНИТЬ ВСЕ
|
| Выбрать"
+?(РазбитьПоДоговорам,"
| ПоДаннымКонтрагента.Договор,","
| NULL КАК Договор,")
+"
| NULL,
| ПоДаннымКонтрагента.Дата,
| NULL,
| NULL,
| ПоДаннымКонтрагента.Представление,
| 0,
| 0,
| ПоДаннымКонтрагента.Дебет,
| ПоДаннымКонтрагента.Кредит
|
| ИЗ
| Документ.АктСверкиВзаиморасчетов.ПоДаннымКонтрагента КАК ПоДаннымКонтрагента
| Где
| ПоДаннымКонтрагента.Ссылка = &ТекущийДокумент
|
|
|) КАК ВлЗапрос
|
| ИТОГИ
| СУММА(СуммаДогДт),
| СУММА(СуммаДогКт),
| СУММА(СуммаДогДтКонтр),
| СУММА(СуммаДогКтКонтр)
| ПО
| Общие,Договор";
Результат = Запрос.Выполнить();
ОбходПоОбщимИтогам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Общие");
ОбходПоОбщимИтогам.Следующий();
ОборотыДт = ОбходПоОбщимИтогам.СуммаДогДт;
ОборотыКт = ОбходПоОбщимИтогам.СуммаДогКт;
ОборотыДтКонтр = ОбходПоОбщимИтогам.СуммаДогДтКонтр;
ОборотыКтКонтр = ОбходПоОбщимИтогам.СуммаДогКтКонтр;
ОбходПоДоговорам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Договор");
Пока ОбходПоДоговорам.Следующий() Цикл
Если РазбитьПоДоговорам Тогда
//Выводим заголовок с договором
ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор;
ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор;
ТабДок.Вывести(ОбластьДоговор);
ОбходПоДокументам=ОбходПоДоговорам.Выбрать();
Вот тут нужно вывести сальдо начально по договору т.е проблема в том как именно на данный момент высчитать если ли сальдо начальное(СуммаНДТ) по данному договору или нет!!!!
ОбластьСальдоН.Параметры.СуммаНДТ = ?(СУммаНДТ, СуммаНДТ, 0);
ТабДок.Вывести(ОбластьСальдоН);
Иначе
ОбходПоДокументам=Результат.Выбрать();
КонецЕсли;
//Создадим список документов по организации и контрагенту
СписокДокументов = новый массив;
СписокДокументовК = новый массив;
Пока ОбходПоДокументам.Следующий() Цикл
Если ОбходПоДокументам.Дата<>NULL Тогда
СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт",
ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт));
КонецЕсли;
Если ОбходПоДокументам.ДатаК<>NULL Тогда
СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр",
ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр));
КонецЕсли;
КонецЦикла;
//Для упрощения вывода, сравним списки по количеству элементов, добавив пустые
МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
Если СписокДокументов.Количество()<СписокДокументовК.Количество() Тогда
Для инд = МинИндекс По МаксИндекс-1 Цикл
СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт","","","","",""));
КонецЦикла;
ИначеЕсли СписокДокументов.Количество()>СписокДокументовК.Количество() Тогда
Для инд = МинИндекс По МаксИндекс-1 Цикл
СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр","","","",""));
КонецЦикла;
КонецЕсли;
Для Инд = 0 По МаксИндекс Цикл
ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);
ТабДок.Вывести(ОбластьОбороты);
КонецЦикла;
Если РазбитьПоДоговорам Тогда
//Выводим итоги по каждому договору
ОбластьДоговорИтоги.Параметры.Заполнить(ОбходПоДоговорам);
ТабДок.Вывести(ОбластьДоговорИтоги);
Ну а тут получается должно выводиться Сальдо конечное по договору
СуммаКДт=СуммаНДТ+ОбходПоДоговорам.СуммаДогДт-ОбходПоДоговорам.СуммаДогКт;
ОбластьСальдоК.Параметры.СуммаКДт=?(СуммаКдт > 0, СуммаКДт, 0);
ТабДок.Вывести(ОбластьСальдоК);
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
ОбластьОборотыИтог.Параметры.СуммаОборотДт = ОборотыДт;
ОбластьОборотыИтог.Параметры.СуммаОборотКт = ОборотыКт;
Если СверкаСогласована тогда
ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ОборотыДтКонтр;
ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ОборотыКтКонтр;
КонецЕсли;
ТабДок.Вывести(ОбластьОборотыИтог);
КонецЕсли;
ОстатокНаКонец = ОстатокНаНачало + ОборотыДт - ОборотыКт;
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);
Если СверкаСогласована тогда
ОстатокНаКонецК = ОстатокНаНачало - ОборотыДтКонтр + ОборотыКтКонтр;
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецК > 0, ОстатокНаКонецК, 0);
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецК < 0, -ОстатокНаКонецК, 0);
КонецЕсли;
ТабДок.Вывести(ОбластьКонОстатки);
......
......
......
Возврат ТабДок;
КонецФункции
Ну вроде подробно описала проблему помогите же кто-нибудь???Или сегодня глухо тут???
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот