Ошибка в исходном коде, которая делает импорт интервью в опросах некорректным.

Кусок кода из скрипта wnd_ContactInSurveyGridAreaScript,где очевидно видна ошибка,причем которые делают только "студенты". StartList и EndList - строковые,далее по коду идет сравнение строковых в условии цикла. Что больше из строк "8" или "12" ?

Очевидно в цикл не зайдет и ответы будут проигнорированы,если ваш вопрос будет содержать CheckBox,общий номер которого будет меньше 10,а номер последнего CheckBox этого вопроса будет больше или равно 10.

 if (TypeID == sqtMultipleSelection) {
       ContactInSurveyGridArea.IACDataset = PrepareDataset(
       ContactInSurveyGridArea.IACDataset, 'ds_InterviewAnswerChoice')
       var IACDataset = ContactInSurveyGridArea.IACDataset;
       IACDataset.Open();
       var StartList = StartListCell.substr(1, StartListCell.length);
       var EndList = EndListCell.substr(1, EndListCell.length);
                            for (j = StartList; j = EndList; j++) {
                                var CheckBoxesName = 'CheckBoxX' + j;

Ошибку исправили самостоятельно.

Продукт был приобретен больше года назад, но сразу не удалось его внедрить,возникали проблемы интеграции с 1С и даже платная тех поддержка не смогла нам помочь. Решили купить другой продукт,этот отложить,пока не исправят ошибки. На днях запросил дистрибутив продукта и решили начать им пользоваться. Начали с простого - была необходимость в опросах(импорт,экспорт) и сразу ошибки. Причем элементарные и такая ошибка, которая показывают уровень программиста и тем более не могу понять,как это модуль прошел тестирование. )))))

Нравится

1 комментарий

Добрый день!

Да, это ошибка. В условии цикла действительно сравниваются строки, а не целочисленные значения.
Если переписать так:

if (TypeID == sqtMultipleSelection) {
       ContactInSurveyGridArea.IACDataset = PrepareDataset(
       ContactInSurveyGridArea.IACDataset, 'ds_InterviewAnswerChoice')
       var IACDataset = ContactInSurveyGridArea.IACDataset;
       IACDataset.Open();
       var StartList = StartListCell.substr(1, StartListCell.length);
       var EndList = EndListCell.substr(1, EndListCell.length);
              StartList = StartList * 1;
              EndList = EndList * 1;
                            for (j = StartList; j <= EndList; j++) {
                                var CheckBoxesName = 'CheckBoxX' + j;

То всё будет хорошо.
Людям свойственно делать ошибки. Мы стараемся их исправлять оперативно.

Показать все комментарии