Помогите, в чем может быть ошибка.
Есть документ счет на оплату покупателю, у него внешняя печатная форма, у нее есть долг по контрагенту.
В отчете: "Ведомость по взаиморасчетам с контрагентами", где есть приход - расход - конечный остаток.
Если компания, которой выписывается Счет на оплату не имеет долгов, то во внешней печатной форме все равно появляется долг в виде суммы счета на оплату, а такого не должно быть
Есть документ счет на оплату покупателю, у него внешняя печатная форма, у нее есть долг по контрагенту.
В отчете: "Ведомость по взаиморасчетам с контрагентами", где есть приход - расход - конечный остаток.
Если компания, которой выписывается Счет на оплату не имеет долгов, то во внешней печатной форме все равно появляется долг в виде суммы счета на оплату, а такого не должно быть
По теме из базы знаний
Найденные решения
(1) Может не все внимательно прочел. Но все дело в этих строках:
Закомментируйте строку
Если (Час(СсылкаНаОбъект.Дата)=23)и(Минута(СсылкаНаОбъект.Дата)=59)и(Секунда(СсылкаНаОбъект.Дата)=59) Тогда
Иначе
СуммаДолга_ = СуммаДолга_+СсылкаНаОбъект.СуммаДокумента;
КонецЕсли;
Закомментируйте строку
СуммаДолга_ = СуммаДолга_+СсылкаНаОбъект.СуммаДокумента;
(10)
замените на
будет выводиться "0 руб." если нет долгов.
Если СуммаДолга_>0 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("СуммаДолга");
ОбластьМакета.Параметры.Текст_Дата="на дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"))+" составляет:";
ОбластьМакета.Параметры.Текст_руб=Строка(СуммаДолга_)+" руб.";
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
замените на
ОбластьМакета = Макет.ПолучитьОбласть("СуммаДолга");
ОбластьМакета.Параметры.Текст_Дата="на дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"))+" составляет:";
ОбластьМакета.Параметры.Текст_руб=Строка(СуммаДолга_)+" руб.";
ТабДокумент.Вывести(ОбластьМакета);
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Может не все внимательно прочел. Но все дело в этих строках:
Закомментируйте строку
Если (Час(СсылкаНаОбъект.Дата)=23)и(Минута(СсылкаНаОбъект.Дата)=59)и(Секунда(СсылкаНаОбъект.Дата)=59) Тогда
Иначе
СуммаДолга_ = СуммаДолга_+СсылкаНаОбъект.СуммаДокумента;
КонецЕсли;
Закомментируйте строку
СуммаДолга_ = СуммаДолга_+СсылкаНаОбъект.СуммаДокумента;
Вот здесь как будто что-то не так, потому что если убрать СсылкаНаОбъект.СуммаДокумента, то рамочка с долгом контрагента убирается, если долга нет, соответственно, если у кого долг, то рамочка с долгом остается, но хотелось, чтобы в рамочке был 0, если у контрагента нет долгов.
СуммаДолга_ = СуммаДолга_+СсылкаНаОбъект.СуммаДокумента;
СуммаДолга_ = СуммаДолга_+СсылкаНаОбъект.СуммаДокумента;
СуммаДолга_ = ТекущийДолгПоКонтрагенту(СсылкаНаОбъект);
//ЛЕ 30.09.2016
//Сообщить(СсылкаНаОбъект.Дата);
//Сообщить(СсылкаНаОбъект.СуммаДокумента);
Если (Час(СсылкаНаОбъект.Дата)=23)и(Минута(СсылкаНаОбъект.Дата)=59)и(Секунда(СсылкаНаОбъект.Дата)=59) Тогда
Иначе
СуммаДолга_ = СуммаДолга_+СсылкаНаОбъект.СуммаДокумента;
КонецЕсли;
//Сообщить(СуммаДолга_);
СуммаДолгаПрописью="Долг контрагента на дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"))+" "+Строка(СуммаДолга_)+" руб.";
ТекстПодписи="На дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"));
//СуммаДолгаПрописью = РаботаСДиалогами.ПолучитьТекстДолга(, СуммаДолга_);
Если СуммаДолга_ = Неопределено Тогда
ТекстПодписи =ТекстПодписи+ " долг не рассчитан";
ИначеЕсли СуммаДолга_ = 0 Тогда
ТекстПодписи =ТекстПодписи+ " нет долга";
Иначе
Если СуммаДолга_ > 0 Тогда
ТекстПодписи =ТекстПодписи+ " долг контрагента";
Иначе
ТекстПодписи =ТекстПодписи+ " долг компании";
//СуммаДолга_ = (-1) * СуммаДолга_;
КонецЕсли;
Показать
Вот функция сама ТекущийДолгПоКонтрагенту
Функция ТекущийДолгПоКонтрагенту(СсылкаДокумент) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиОстатки.Организация,
| ВзаиморасчетыСКонтрагентамиОстатки.Контрагент,
| ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК ВзаиморасчетыСКонтрагентамиОстатки
|ГДЕ
| ВзаиморасчетыСКонтрагентамиОстатки.Организация = &Организация
| И ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = &Контрагент";
Запрос.УстановитьПараметр("Контрагент", СсылкаДокумент.Контрагент);
Запрос.УстановитьПараметр("Организация", СсылкаДокумент.Организация);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
ТекущийДолг = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
ТекущийДолг = ТекущийДолг+ВыборкаДетальныеЗаписи.СуммаВзаиморасчетовОстаток;
КонецЦикла;
Возврат ТекущийДолг;
КонецФункции // ТекущийДолг()
Показать
Интересно, что в запросе не проверяется договор, а берётся долг по контрагенту в целом.
Опять же, если менять вывод, то надо найти место где выводится область в коде.
Дайте код всего что ниже строки там должно быть что-то такое же только в условии
Опять же, если менять вывод, то надо найти место где выводится область в коде.
потому что если убрать СсылкаНаОбъект.СуммаДокумента, то рамочка с долгом контрагента убирается, если долга нет, соответственно, если у кого долг, то рамочка с долгом остается, но хотелось, чтобы в рамочке был 0
Дайте код всего что ниже строки
Если СуммаДолга_ > 0 Тогда
Табдокумент.Вывести(Область);
(9)
Функция СоздатьТабличныйДокументПечатиСчетаЗаказа(Тип, ПараметрыПечати)
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
Макет = ПолучитьМакет("СчетЗаказ");
// Систех ЛЕ 28.09.2015
Если СсылкаНаОбъект.Товары.Количество()>0 Тогда
Товар_=1;
Иначе
Товар_=0;
КонецЕсли;
СуммаДолга_ = ТекущийДолгПоКонтрагенту(СсылкаНаОбъект);
//ЛЕ 30.09.2016
//Сообщить(СсылкаНаОбъект.Дата);
//Сообщить(СсылкаНаОбъект.СуммаДокумента);
Если (Час(СсылкаНаОбъект.Дата)=23)и(Минута(СсылкаНаОбъект.Дата)=59)и(Секунда(СсылкаНаОбъект.Дата)=59) Тогда
Иначе
СуммаДолга_ = СуммаДолга_+СсылкаНаОбъект.СуммаДокумента;
КонецЕсли;
//Сообщить(СуммаДолга_);
СуммаДолгаПрописью="Долг контрагента на дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"))+" "+Строка(СуммаДолга_)+" руб.";
ТекстПодписи="На дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"));
//СуммаДолгаПрописью = РаботаСДиалогами.ПолучитьТекстДолга(, СуммаДолга_);
Если СуммаДолга_ = Неопределено Тогда
ТекстПодписи =ТекстПодписи+ " долг не рассчитан";
ИначеЕсли СуммаДолга_ = 0 Тогда
ТекстПодписи =ТекстПодписи+ " нет долга";
Иначе
Если СуммаДолга_ > 0 Тогда
ТекстПодписи =ТекстПодписи+ " долг контрагента";
Иначе
ТекстПодписи =ТекстПодписи+ " долг компании";
//СуммаДолга_ = (-1) * СуммаДолга_;
КонецЕсли;
//Сообщить(ОбщегоНазначения.ФорматСумм(СуммаДолга_, СсылкаНаОбъект.ВалютаДокумента));
СуммаДолгаПрописью= ТекстПодписи + " " +
ОбщегоНазначения.ФорматСумм(СуммаДолга_, СсылкаНаОбъект.ВалютаДокумента);
КонецЕсли;
// Выводим шапку накладной
Если Тип = "Счет" Тогда
// ЛЕ 28.09.2015 систех
Если Товар_=1 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокТовары");
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
//
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезКодов");
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезСкидок");
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезКодовИСкидок");
КонецЕсли;
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Товар = "Товары (работы, услуги)";
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ПараметрыПечати.ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьСуммы);
ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");
ОбластьТовар = Макет.ПолучитьОбласть("Строка|Товар");
Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезКодов");
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезСкидок");
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезКодовИСкидок");
КонецЕсли;
Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл
Если не ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьДанных);
Если ПараметрыПечати.ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьСуммы);
КонецЦикла;
// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");
ОбластьТовар = Макет.ПолучитьОбласть("Итого|Товар");
Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезКодов");
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезСкидок");
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезКодовИСкидок");
КонецЕсли;
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ПараметрыПечати.ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьСуммы);
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести подписи
Если Тип = "Счет" Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ОбластьМакета.Параметры.ДолжностьРуководителя = "Руководитель"; //СисТех Лесов
// {{систех ВА 24.01.2017
ДоверенностьТекст="по доверенности № 9 от 23.01.2017г";
ОбластьМакета.Параметры.рДоверенностьТекст=ДоверенностьТекст;
ОбластьМакета.Параметры.бДоверенностьТекст=ДоверенностьТекст;
// }}
ТабДокумент.Вывести(ОбластьМакета);
//Систех ЛЕ 29.09.2015
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Контрагент,
| РеализацияТоваровУслуг.СтатусДокумента,
| РеализацияТоваровУслуг.Дата КАК ДатаДок,
| РеализацияТоваровУслуг.Проведен,
| РеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете Как ОтражатьБУ,
| РеализацияТоваровУслуг.ОтражатьВНалоговомУчете Как ОтражатьНУ,
| РеализацияТоваровУслуг.Проведен,
| РеализацияТоваровУслуг.Номер КАК НомерДок
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата >= &Дата_
| И РеализацияТоваровУслуг.Контрагент = &Контрагент
| И РеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете = ИСТИНА
| И РеализацияТоваровУслуг.ОтражатьВНалоговомУчете = ИСТИНА
| И РеализацияТоваровУслуг.СтатусДокумента <> &СтатусДок
| И РеализацияТоваровУслуг.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("Дата_", Дата(2015,1,1));
Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент);
Запрос.УстановитьПараметр("СтатусДок", Перечисления.СтатусыДокументов.Вернулись);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Массив_ = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
Строка_= "№ "+ВыборкаДетальныеЗаписи.НомерДок+" от "+Строка(Формат(ВыборкаДетальныеЗаписи.ДатаДок,"ДЛФ=Д"));
Массив_.Добавить(Строка_);
// Сообщить(Строка_);
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
ОбластьМакета = Макет.ПолучитьОбласть("ПустаяСтрока");
Строк_=0;СтрокПустых=15;
Если СсылкаНаОбъект.Услуги.Количество()>0 Тогда
Строк_= СсылкаНаОбъект.Услуги.Количество();
КонецЕсли;
Если СсылкаНаОбъект.Товары.Количество()>0 Тогда
Строк_= Строк_+СсылкаНаОбъект.Товары.Количество();
КонецЕсли;
Для Стр_=1 По 14-Строк_-ВыборкаДетальныеЗаписи.Количество() Цикл
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
//Сообщить(СуммаДолга_);
Если СуммаДолга_>0 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("СуммаДолга");
ОбластьМакета.Параметры.Текст_Дата="на дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"))+" составляет:";
ОбластьМакета.Параметры.Текст_руб=Строка(СуммаДолга_)+" руб.";
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если ВыборкаДетальныеЗаписи.Количество()>0 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("НеВернулись_");
ОбластьМакета.Параметры.ТекстДок=Массив_[0];
ТабДокумент.Вывести(ОбластьМакета);
Если ВыборкаДетальныеЗаписи.Количество()>1 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("НеВернулисьЕще_");
Для Стр_=1 По ВыборкаДетальныеЗаписи.Количество()-1 Цикл
ОбластьМакета.Параметры.ТекстДок=Массив_[Стр_];
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат ТабДокумент;
КонецФункции // СоздатьТабличныйДокументПечатиСчетаЗаказа()
Показать
(10)
замените на
будет выводиться "0 руб." если нет долгов.
Если СуммаДолга_>0 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("СуммаДолга");
ОбластьМакета.Параметры.Текст_Дата="на дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"))+" составляет:";
ОбластьМакета.Параметры.Текст_руб=Строка(СуммаДолга_)+" руб.";
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
замените на
ОбластьМакета = Макет.ПолучитьОбласть("СуммаДолга");
ОбластьМакета.Параметры.Текст_Дата="на дату "+Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ=Д"))+" составляет:";
ОбластьМакета.Параметры.Текст_руб=Строка(СуммаДолга_)+" руб.";
ТабДокумент.Вывести(ОбластьМакета);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот