Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Отрицательные значения ID-ков. Вопрос по работе Скрипта для выполнения работы по шагам от Долганина Антона.

00 голосов
2
Преамбула: Переношу информацию из базы MSSQL в базу Битрикса MySQL.. Данная процедура происходит в два этапа:
1. С помощью ODBC сначала закидывается вся информация из базы MSSQL в базу MySQL Битрикса !в другие промежуточные таблицы. Т.е. НЕ в таблицы Битрикса.
2. Далее уже админ Битрикса с помощью «Скрипта для выполнения работы по шагам» который предложил Антон переносит из этих промежуточных таблиц данные в Битрикс.

• Большое спасибо Антону за скрипт – который здесь http://dev.1c-bitrix.ru/community/webdev/user/11948/blog/2047/

Все работает нормально.

Но в одной таблице MSSQL оказались отрицательные ID-ки. Как оказалось в MSSQL такое возможно.
И соответственно уже в промежуточной таблице MySQL часть ID-ков с отрицательным значением.

И вышеупомянутый скрипт не «хочет брать» строки с отрицательными ID-ками в работу. Т.е. все строки в которых нормальные (с положительными значениями) ID-ки обрабатываются как и задумано, а отрицательные он просто не берет из таблицы. :(

Я понимаю, что это вопрос скорее по PHP но все таки подскажите пжлста как сделать что бы данный «Скрипт для выполнения работы по шагам» так же работал со строками у которых отрицательные ID-ки.

За выборку строк из таблицы отвечает участок кода:
$lastID = intval($_REQUEST["lastid"]);
$table = "b_TABLISA"; // здесь указываем с какой таблицей будем работать.

$rs = $DB->Query("select * from $table where ID>$lastID order by ID asc limit 500;");
while ($ar = $rs->Fetch())
{
/*
* do something !!! т.е. здесь нужно вставить что обрабатывать
*/
$lastID = intval($ar["ID"]);
}

Т.е. как я понимаю, нужно изменить строку:
$lastID = intval($_REQUEST["lastid"]);
но как?

Попробовал:
$lastID = intval(-100000);
Дак скрипт начинает циклить бесконца по первым 500 строкам.

Заранее спасибо.
спросил 23 Янв, 14 от EDKA (980 баллов)

2 Ответы

00 голосов
По идее просто должно работать:

Код
$lastID = intval($_REQUEST["lastid"]);
if (!$lastID)
   $lastID = -1000000;
ответил 17 Май, 14 от Arn4 (2,140 баллов)
00 голосов
Цитата
Антон Долганин пишет:
По идее просто должно работать:
Код $lastID = intval($_REQUEST["lastid"]); if (!$lastID)$lastID = -1000000;

УРА! заработало! Антон огромнейшее спасибо!
ответил 13 Сен, 14 от EDKA (980 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 08 Сен, 13 от Derhos (120 баллов)
0 голосов
2 ответов
спросил 21 Июнь, 13 от WETERa (800 баллов)
0 голосов
2 ответов
0 голосов
2 ответов
спросил 17 Июль, 13 от Jekanama (320 баллов)