Платежно-расчетные документы в счет-фактуре выданной. УТ 11.4
Клиент обратился с проблемой, что в счет-фактуре выданной в поле «К платежно-расчетному документу» не отображается документ «Взаимозачет задолженности».
Пример счет-фактуры, где не было такого отображения:
![](https://geniy1s.ru/wp-content/uploads/2022/11/image-55.png)
Я нашел счет-фактуру, где выводилось несколько счет-фактур:
![](https://geniy1s.ru/wp-content/uploads/2022/11/image-56.png)
Анализ кода показал, что список платежно-расчетных документов формируется запросом в методе ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов модуля менеджера документа СчетФактураВыданный.
![](https://geniy1s.ru/wp-content/uploads/2022/11/image-57.png)
Текст запроса по получению списка документов очень большой, состоял из нескольких объединенных запросов и сначала я опасался, что нужно будет проверять каждую ветку.
В списке временны таблиц можо посмотреть таблицу ТаблицаЗаполненияПлатежноРасчетныхДокументов:
![](https://geniy1s.ru/wp-content/uploads/2022/11/image-54.png)
С помощью выражения МенеджерВременныхТаблиц.Таблицы[8].ПолучитьДанные().Выгрузить(), там хранится таблица документов для вывода в поле платежно-расчетных документов:
![](https://geniy1s.ru/wp-content/uploads/2022/11/image-59.png)
Как видно, здесь взаимозачет уже присутствует. Это скриншот после моих манипуляций. Изначально он отсутствовал.
Я нашел, что текст запроса по получению документов находится в методе ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов:
![](https://geniy1s.ru/wp-content/uploads/2022/11/image-58.png)
Причем в этом методе явно отбрасываются взаимозачеты:
![](https://geniy1s.ru/wp-content/uploads/2022/11/image-60.png)
В комментариях программисты 1С не потрудились написать, почему так, остается только догадываться.
Так что я написал небольшую заплатку для модуля менеджера документа счет-фактуры выданной:
&Вместо("ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов") Функция прдсф_ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов() Результат = ПродолжитьВызов(); Маркер = "ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) <> ТИП(Документ.ВзаимозачетЗадолженности)"; Замена = "ИСТИНА"; Сообщение = "Обратитесь к программисту." + Символы.ПС + "Не найден маркер. " + Маркер + Символы.ПС + "Модуль менеджера документа СчетФактураВыданный." + Символы.ПС + "Изменения внесены 2022.11.13 в релиз 11.4.14.148." + Символы.ПС + "В запросе: " + Результат + Символы.ПС ; ЗаменитьВТекстеСКонтролем(Результат, Маркер, Замена, Сообщение); Возврат Результат; КонецФункции Процедура ЗаменитьВТекстеСКонтролем(Текст, Маркер, Замена, Сообщение) Экспорт Если Найти(Текст, Маркер) = 0 Тогда ВызватьИсключение Сообщение; КонецЕсли; Текст = СтрЗаменить(Текст, Маркер, Замена); КонецПроцедуры
И взаимозачет стал выводиться. Обратите внимание, я позаботился, чтобы доработка корректно работала после обновления, если вдруг текст запроса поменяется.
Среда: 11.4.14.148. Объем: 1.5 час.
![](https://geniy1s.ru/wp-content/uploads/2022/11/image-61.png)
Свежие комментарии