Платежно-расчетные документы в счет-фактуре выданной. УТ 11.4
Клиент обратился с проблемой, что в счет-фактуре выданной в поле «К платежно-расчетному документу» не отображается документ «Взаимозачет задолженности».
Пример счет-фактуры, где не было такого отображения:
Я нашел счет-фактуру, где выводилось несколько счет-фактур:
Анализ кода показал, что список платежно-расчетных документов формируется запросом в методе ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов модуля менеджера документа СчетФактураВыданный.
Текст запроса по получению списка документов очень большой, состоял из нескольких объединенных запросов и сначала я опасался, что нужно будет проверять каждую ветку.
В списке временны таблиц можо посмотреть таблицу ТаблицаЗаполненияПлатежноРасчетныхДокументов:
С помощью выражения МенеджерВременныхТаблиц.Таблицы[8].ПолучитьДанные().Выгрузить(), там хранится таблица документов для вывода в поле платежно-расчетных документов:
Как видно, здесь взаимозачет уже присутствует. Это скриншот после моих манипуляций. Изначально он отсутствовал.
Я нашел, что текст запроса по получению документов находится в методе ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов:
Причем в этом методе явно отбрасываются взаимозачеты:
В комментариях программисты 1С не потрудились написать, почему так, остается только догадываться.
Так что я написал небольшую заплатку для модуля менеджера документа счет-фактуры выданной:
&Вместо("ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов") Функция прдсф_ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов() Результат = ПродолжитьВызов(); Маркер = "ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) <> ТИП(Документ.ВзаимозачетЗадолженности)"; Замена = "ИСТИНА"; Сообщение = "Обратитесь к программисту." + Символы.ПС + "Не найден маркер. " + Маркер + Символы.ПС + "Модуль менеджера документа СчетФактураВыданный." + Символы.ПС + "Изменения внесены 2022.11.13 в релиз 11.4.14.148." + Символы.ПС + "В запросе: " + Результат + Символы.ПС ; ЗаменитьВТекстеСКонтролем(Результат, Маркер, Замена, Сообщение); Возврат Результат; КонецФункции Процедура ЗаменитьВТекстеСКонтролем(Текст, Маркер, Замена, Сообщение) Экспорт Если Найти(Текст, Маркер) = 0 Тогда ВызватьИсключение Сообщение; КонецЕсли; Текст = СтрЗаменить(Текст, Маркер, Замена); КонецПроцедуры
И взаимозачет стал выводиться. Обратите внимание, я позаботился, чтобы доработка корректно работала после обновления, если вдруг текст запроса поменяется.
Среда: 11.4.14.148. Объем: 1.5 час.
Свежие комментарии