Задача 102.125310

Задача :102.125310

Краткое описание :
Бесконтрольное добавление записей ShinPut в ПЛ не связанные с комплектующей
Описание :
Картотека комплектующих
Что измененно :

Зашел в картотеку комплектующих.
Поставил фильтр по комплектующим для ТС гар.номер 0112.
Выделил три комплектующие (у комплектующих по одному закреплению, не перемещались).
Запустил пункт меню "Синхронизация с ПЛ" со следующими параметрами
(.) в выписанные ПЛ
(.) не удалять сведения по ГСМ
с 04.07.2013 по 10.07.2013
Запустил.
В результате получил бесконтрольное добавление записей ShinPut в ПЛ совершенно никак не связанные с комплектующей.

При debug исходника SRC\CompSrc\M\M_Transp\vip\SynhKarPL.vip выясняется следующее, что ошибка возникает примерно так:

1) запускается функция Function SynhComponPL(ipwTypeComp : word; iplMarker : longint ): word;

2) в ней запускается окно RunWindowModal(wndSynhComponPL2);

3) в результате выполнения события cmValue1 этого окна переменная wTypeDel получает некоторое свое значение (в моем случае оно равно 21).

4) далее по коду происходит выполнение в результате которого в указанной ниже конструкции (стр.2705)
case wTypeDel of
11,12,13 :
{
// все ПЛ
AddBounds(tbPLTransp);
} // 11,12,13
21,22,23 :
{
// выписанных ПЛ
wStatPL := 0;
AddBounds(tbPLStatTransp);
} // 21,22,23
end; // case wTypeDel of

налагается Bounds - AddBounds(tbPLStatTransp); он содержит привязку к ТС и статусу ПЛ

5) далее налагается bounds AddBounds(tbPLNoDateSp); он содержит привязку к датам ПЛ

6) далее идет выполнение и в конечном итоге система приходит к функции (стр.2866)
ReCalcComp(coCompon, Compon_Main.nRec, Compon_Main.WhatIs, date(0,0,0));

7) в функции ReCalcComp отрабатывает следующее выражение (стр.2341)
wTypeDel := RunwndSynhComponPL(coCompon, CheckCompon.Nrec, word(0));
которое полностью убивает значение переменной wTypeDel, которое мы устанавливали в окне параметров wndSynhComponPL2
Значение пересчитывается от настроек пользователя, что неверно!

8) Далее события развиваются стремительно: при следующей итерации по маркеру выбора комплектующих wTypeDel уже имеет измененное значение, в рассматриваемом случае, у нее значение 0.
следовательно в выражении
case wTypeDel of
11,12,13 :
{
// все ПЛ
AddBounds(tbPLTransp);
} // 11,12,13
21,22,23 :
{
// выписанных ПЛ
wStatPL := 0;
AddBounds(tbPLStatTransp);
} // 21,22,23
end; // case wTypeDel of

Bounds по машине не устанавливается вообще!
Идет заполнение данных во всех подряд путевых, ограниченных только датами.
Как измененно :

Устранено.

Название продукта Название компонента Тип Последняя версия Дата выхода
M_TRANSPM_TRANSPRES9.1.012.0
M_TRANSPM_TRANSPRES9.1.12.0