Синхронизирую Розницу 2.1.2.5 - УТ 11.1.4.10
Типовые правила регистрации и конвертации. Ордерная схема.
Проверяю состав отправляемых данных, там только один документ - приходный ордер на основании перемещения.
Смотрю большой файл обмена - 6Мб. Там почему то есть номенклатура, которой нет в документе.
Лезу в КД, там в ПРО ордера есть два обработчика событий:
При обработке:
ИспользоватьКэш = Ложь;
МассивТоваров = Объект.Товары.ВыгрузитьКолонку("Номенклатура");
ПараметрыЗапроса.Вставить("МассивТоваров", МассивТоваров);
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПланОбменаОсновнаяТаблица.Ссылка КАК Ссылка
|ИЗ
| ПланОбмена.ОбменУправлениеТорговлейРозница КАК ПланОбменаОсновнаяТаблица
|ЛЕВОЕ СОЕДИНЕНИЕ
| ( ВЫБРАТЬ ПЕРВЫЕ 1
| СправочникНоменклатура.Ссылка КАК Номенклатура
| ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
| ГДЕ
| СправочникНоменклатура.Ссылка В(&СвойствоОбъекта_МассивТоваров)
| И СправочникНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
| ) КАК ТаблицаТоваров
|ПО ИСТИНА
|ГДЕ
| ПланОбменаОсновнаяТаблица.ДатаНачалаВыгрузкиДокументов <= &СвойствоОбъекта_Дата
| И НЕ ПланОбменаОсновнаяТаблица.Ссылка = &ОбменУправлениеТорговлейРозницаЭтотУзел
| И НЕ ПланОбменаОсновнаяТаблица.ПометкаУдаления
| И НЕ ТаблицаТоваров.Номенклатура ЕСТЬ NULL
|[УсловиеОтбораПоРеквизитуФлагу]
|";
При обработке (доп):
ИспользоватьКэш = Ложь;
ПередаватьДокумент = Истина;
Запрос = Новый Запрос("
|ВЫБРАТЬ ПЕРВЫЕ 1
| Товары.Номенклатура КАК Номенклатура
|ИЗ
| Документ.ПриходныйОрдерНаТовары.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка
| И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
|");
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ПередаватьДокумент = НЕ РезультатЗапроса.Пустой();
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПланОбменаОсновнаяТаблица.Ссылка КАК Ссылка
|ИЗ
| ПланОбмена.ОбменУправлениеТорговлейРозница КАК ПланОбменаОсновнаяТаблица
|ГДЕ
| ПланОбменаОсновнаяТаблица.ДатаНачалаВыгрузкиДокументов <= &СвойствоОбъекта_Дата
| И НЕ ПланОбменаОсновнаяТаблица.Ссылка = &ОбменУправлениеТорговлейРозницаЭтотУзел
| И НЕ ПланОбменаОсновнаяТаблица.ПометкаУдаления
| И &СвойствоОбъекта_ПередаватьДокумент
|[УсловиеОтбораПоРеквизитуФлагу]
|";
Как проверить где они цепляют лишнюю номенклатуру?
Неужели ошиблись в параметре "СвойствоОбъекта_МассивТоваров" вместо "МассивТоваров"? Почему тогда не ругается? Или "СвойствоОбъекта_МассивТоваров" устанавливается в другом месте?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший