Да, не сложно. Была у меня функция:
Код |
---|
// Возвращает Истина, если документ полностью оплачен безналично (выпискоЙ)
//
Функция ПроверкаОплатыБезНаличными(Документ = Неопределено, Основание, Сумма = 0, СписокВыписок = Неопределено, Спрашивать = Истина) Экспорт
Если Документ <> Неопределено
И ТипЗнч(Документ) <> Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
И ТипЗнч(Документ) <> Тип("ДокументОбъект.ЧекНаОплату") Тогда
Возврат Ложь;
КонецЕсли;
Если ТипЗнч(Основание) <> Тип("ДокументСсылка.РеализацияТоваров")
И ТипЗнч(Основание) <> Тип("ДокументСсылка.ЗаказНаряд") Тогда
Возврат Ложь;
КонецЕсли;
Сумма = 0;
СписокВыписок = Новый СписокЗначений;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ВыпискаСостав.Ссылка,
| ВыпискаСостав.СуммаПриход - ВыпискаСостав.СуммаРасход КАК Сумма
|ИЗ
| Документ.Выписка.Состав КАК ВыпискаСостав
|ГДЕ
| ВыпискаСостав.Сделка = &Сделка
| И ВыпискаСостав.Ссылка.Проведен";
Запрос.УстановитьПараметр("Сделка", Основание);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сумма = Сумма + Выборка.Сумма;
Если СписокВыписок.НайтиПоЗначению(Выборка.Ссылка) <> Неопределено Тогда
Продолжить;
КонецЕсли;
СписокВыписок.Добавить(Выборка.Ссылка);
КонецЦикла;
Сумма = ?(Сумма < 0, -Сумма, Сумма);
Если Не Спрашивать Тогда Возврат Истина; КонецЕсли;
ТекстПредупреждения = ?(Сумма = 0, "", "'" + СокрЛП(Основание) + "' полностью оплачен
|'" + СокрЛП(СписокВыписок[0].Значение) + "'" + ?(СписокВыписок.Количество() = 1, "", " и другими") + ".");
Если Сумма = 0 Тогда
Возврат Ложь;
ИначеЕсли Сумма >= Основание.СуммаДокумента Тогда
Предупреждение(ТекстПредупреждения + Символы.ПС + "Ввод оплаты отменен.", 60);
Возврат Истина;
КонецЕсли;
Ответ = Вопрос(СтрЗаменить(ТекстПредупреждения, "полностью", "частично (" + Сумма + " руб.)") + Символы.ПС + "Продолжить ввод оплаты?", РежимДиалогаВопрос.ДаНет, 60);
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции // ПроверкаОплатыБезНаличными()
|
Немного ее доработал, и применил ее в обработке ДеревоДокументов:
Код |
---|
Попытка
СтрокаСумма = ?(Документ.СуммаДокумента = 0,"",Символы.ПС + "Сумма: " + Документ.СуммаДокумента + " " + Документ.ВалютаДокумента);
Исключение
СтрокаСумма = ?(СуммаВыписки = 0,"",Символы.ПС + "Сумма: " + СуммаВыписки + " " + Документ.ВалютаДокумента); //+МВ 22.12.2019
КонецПопытки;
Область.Параметры.ПечДок = Документ.ХозОперация.Наименование + " № "+СокрЛП(Документ.Номер) + " от "+Формат(Документ.Дата,"ДФ=dd.MM.yyyy hh:mm:ss") + СтрокаСумма;
Область.Параметры.Док = Документ;
Область.Рисунки[0].Картинка = ?(Документ.ПометкаУдаления, БиблиотекаКартинок.ДокументПомеченНаУдаление, ?(Документ.Проведен, БиблиотекаКартинок.ДокументПроведен, БиблиотекаКартинок.ДокументНеПроведен));
Таб.Присоединить(Область);
мвДоработки.ПроверкаОплатыБезНаличными(, Документ, СуммаВыписки,, Ложь); //+МВ 22.12.2019
Для Каждого Строка Из СтрокаДерева.Строки Цикл
ВывестиСтрокуДерева(Дерево, Строка, Макет, Таб, Уровень+1, спУровни, СуммаВыписки); //-МВ
КонецЦикла;
КонецПроцедуры // ВывестиСтрокуДерева()
|
Два последних исправлений добавил так же в ВывестиДеревоДокументов().