Платежно-расчетные документы в счет-фактуре выданной. УТ 11.4

Клиент обратился с проблемой, что в счет-фактуре выданной в поле «К платежно-расчетному документу» не отображается документ «Взаимозачет задолженности».

Пример счет-фактуры, где не было такого отображения:

Я нашел счет-фактуру, где выводилось несколько счет-фактур:

Анализ кода показал, что список платежно-расчетных документов формируется запросом в методе ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов модуля менеджера документа СчетФактураВыданный.

Текст запроса по получению списка документов очень большой, состоял из нескольких объединенных запросов и сначала я опасался, что нужно будет проверять каждую ветку.

В списке временны таблиц можо посмотреть таблицу ТаблицаЗаполненияПлатежноРасчетныхДокументов:

С помощью выражения МенеджерВременныхТаблиц.Таблицы[8].ПолучитьДанные().Выгрузить(), там хранится таблица документов для вывода в поле платежно-расчетных документов:

Как видно, здесь взаимозачет уже присутствует. Это скриншот после моих манипуляций. Изначально он отсутствовал.

Я нашел, что текст запроса по получению документов находится в методе ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов:

Причем в этом методе явно отбрасываются взаимозачеты:

В комментариях программисты 1С не потрудились написать, почему так, остается только догадываться.

Так что я написал небольшую заплатку для модуля менеджера документа счет-фактуры выданной:


&Вместо("ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов")
Функция прдсф_ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()
	Результат = ПродолжитьВызов();       
	Маркер = "ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) <> ТИП(Документ.ВзаимозачетЗадолженности)";
	Замена = "ИСТИНА";
	Сообщение = "Обратитесь к программисту." + Символы.ПС 
	+ "Не найден маркер. " + Маркер + Символы.ПС 
	+ "Модуль менеджера документа СчетФактураВыданный." + Символы.ПС 
	+ "Изменения внесены 2022.11.13 в релиз 11.4.14.148." + Символы.ПС 
	+ "В  запросе: " + Результат + Символы.ПС
	;
	ЗаменитьВТекстеСКонтролем(Результат, Маркер, Замена, Сообщение);
	Возврат Результат;
КонецФункции


Процедура ЗаменитьВТекстеСКонтролем(Текст, Маркер, Замена, Сообщение) Экспорт
    Если Найти(Текст, Маркер) = 0 Тогда
        ВызватьИсключение Сообщение;
    КонецЕсли;
    Текст = СтрЗаменить(Текст, Маркер, Замена);
КонецПроцедуры

И взаимозачет стал выводиться. Обратите внимание, я позаботился, чтобы доработка корректно работала после обновления, если вдруг текст запроса поменяется.

Среда: 11.4.14.148. Объем: 1.5 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *