Задваивание контрагентов обработкой клиент-банка

Обработка клиент-банка при работе использует следующие процедуры в модуле менеджера обработки:

Процедура ЗаполнитьКонтрагентов(ДокументыКЗагрузке, ТаблицаДокументов) Экспорт

которая вызывается из процедуры

Процедура ПодготовитьСтрокиВыписки(ДокументыКЗагрузке, БанковскийСчет, НомерСчета)

В Таблицу документов попадают строки, которые должны быть выгружены в соответствии с выбранным номером счета. В таблице так же есть два реквизита, влияющие на поиск:

 ИННДляПоиска = ?(Исходящий, СтрокаДокумента.ПолучательИНН, СтрокаДокумента.ПлательщикИНН);
 СтрокаДокумента.ПроверятьИНН = ЗначениеЗаполнено(ИННДляПоиска);
 
 КППДляПоиска = ?(Исходящий, СтрокаДокумента.ПолучательКПП, СтрокаДокумента.ПлательщикКПП);
 СтрокаДокумента.ПроверятьКПП = (ЗначениеЗаполнено(КППДляПоиска) И КППДляПоиска <> "0");

Далее ищется контрагент и номер счета. Поиск осуществляется по нескольким способам, распределенным по приоритетам. В случае обнаружения контрагента, результаты, найденные способом более низкого приоритета, игнорируются.

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки КАК НомерСтроки,
 ДанныеСправочника.Владелец КАК Контрагент,
 ДанныеСправочника.Ссылка КАК СчетКонтрагента,
 0 КАК Приоритет
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаОрганизаций КАК ДанныеСправочника
 ПО (ДанныеСправочника.НомерСчета = ТаблицаДокументов.НомерСчета)
 И (ДанныеСправочника.Владелец.ИНН = ТаблицаДокументов.ИНН)
 И (ТаблицаДокументов.ПроверятьИНН)
 И (НЕ ДанныеСправочника.Закрыт)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки,
 Контрагенты.Ссылка,
 ДанныеСправочника.Ссылка,
 5
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
 ПО (Контрагенты.Ссылка = ТаблицаДокументов.Контрагент)
 ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаКонтрагентов КАК ДанныеСправочника
 ПО (ДанныеСправочника.НомерСчета = ТаблицаДокументов.НомерСчета)
 И (ДанныеСправочника.Владелец = Контрагенты.Ссылка)
 И (НЕ ДанныеСправочника.Закрыт)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки,
 ДанныеСправочника.Владелец,
 ДанныеСправочника.Ссылка,
 10
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаКонтрагентов КАК ДанныеСправочника
 ПО (ДанныеСправочника.НомерСчета = ТаблицаДокументов.НомерСчета)
 И (ДанныеСправочника.Владелец.ИНН = ТаблицаДокументов.ИНН)
 И (ДанныеСправочника.Владелец.КПП = ТаблицаДокументов.КПП)
 И (ТаблицаДокументов.ПроверятьКПП)
 И (НЕ ДанныеСправочника.Закрыт)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки,
 ДанныеСправочника.Владелец,
 ДанныеСправочника.Ссылка,
 20
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаКонтрагентов КАК ДанныеСправочника
 ПО (ДанныеСправочника.НомерСчета = ТаблицаДокументов.НомерСчета)
 И (ДанныеСправочника.Владелец.ИНН = ТаблицаДокументов.ИНН)
 И (ТаблицаДокументов.ПроверятьИНН)
 И (НЕ ДанныеСправочника.Закрыт)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки,
 ДанныеСправочника.Владелец,
 ДанныеСправочника.Ссылка,
 30
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаКонтрагентов КАК ДанныеСправочника
 ПО (ДанныеСправочника.НомерСчета = ТаблицаДокументов.НомерСчета
 И ДанныеСправочника.Владелец.НаименованиеПолное = ТаблицаДокументов.Наименование
 ИЛИ ДанныеСправочника.Владелец.НаименованиеПолное = ТаблицаДокументов.СокращенноеНаименование
 И НЕ ДанныеСправочника.Закрыт)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки,
 ДанныеСправочника.Ссылка,
 НЕОПРЕДЕЛЕНО,
 40
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеСправочника
 ПО (ДанныеСправочника.ИНН = ТаблицаДокументов.ИНН)
 И (ДанныеСправочника.КПП = ТаблицаДокументов.КПП)
 И (ТаблицаДокументов.ПроверятьКПП)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки,
 ДанныеСправочника.Ссылка,
 НЕОПРЕДЕЛЕНО,
 50
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеСправочника
 ПО (ДанныеСправочника.ИНН = ТаблицаДокументов.ИНН)
 И (ТаблицаДокументов.ПроверятьИНН)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки,
 ДанныеСправочника.Ссылка,
 НЕОПРЕДЕЛЕНО,
 60
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеСправочника
 ПО (ДанныеСправочника.НаименованиеПолное = ТаблицаДокументов.Наименование)
 И (ДанныеСправочника.ИНН = ""
 ИЛИ НЕ ТаблицаДокументов.ПроверятьИНН)
 И (ДанныеСправочника.КПП = ""
 ИЛИ НЕ ТаблицаДокументов.ПроверятьКПП)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 ТаблицаДокументов.НомерСтроки,
 ДанныеСправочника.Ссылка,
 НЕОПРЕДЕЛЕНО,
 70
ИЗ
 ТаблицаДокументов КАК ТаблицаДокументов
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ДанныеСправочника
 ПО (ДанныеСправочника.Наименование = ТаблицаДокументов.Наименование)
 И (ДанныеСправочника.ИНН = ТаблицаДокументов.ИНН
 ИЛИ ДанныеСправочника.ИНН = ""
 ИЛИ НЕ ТаблицаДокументов.ПроверятьИНН)

УПОРЯДОЧИТЬ ПО
 НомерСтроки,
 Приоритет

Для отлавливания ошибки задвоения, необходимо поставить точку останова после данного запроса и посмотреть результат этого запроса. Обращаю внимание, что запуск этих процедур выполняется в фоновом задании, поэтому необходимо в отладке настроить автоматическое подключение фоновых заданий.

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

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

*

code