Добрый день!
Продукт CRM 3.3.0.49 (это версия tscrm.exe), клиент на Win 2008, а SQL 2005
Преамбула:
В ходе реализации задачи (выгрузка в XML определенных изменений из журнала логов) в tbl_DatabaseLog было создано поле "IsChecked" (тип: булево, хотя в SQL тип получился число), это же поле было добавлено и в sq_DatabaseLog и в ds_DatabaseLog - и скорее всего всё правильно настроено.
В SQL у данного поля по умолчанию установлено устанавливать значение 0 (ноль), а не null
Ситуация
В CRM в настройках журнала добавляем "следить" за изменениями Наименования справочника Контрагенты.
Открываем любого контрагента, немного меняем название, сохраняем.
Смотрим в SQL в записи таблицы tbl_DatabaseLog, находим изменение нашего контрагента и видим что поле IsChecked приняло значение 0 - отлично. Это означает для меня что появилась запись в журнале логов, которое еще я не обработал.
В jscript`е я не силен, поэтому скорее всего что-то делаю не так, и поэтому прошу уважаемую аудиторию помочь
Проблема
Скрипт приведенный ниже выполняет выборку данных. В конце обхода каждой записи из выборки мне нужно в поле IsChecked устанавливать значение true (таким образом помечать запись, что она обработана)
/////......................
var Dataset = Services.GetNewItemByUSI('ds_DatabaseLog');
//Применим фильтр к таблице изменний , где TableID =Контрагенты,
ApplyDatasetFilter(Dataset, 'TableID','03D2B91C-93A7-4D3F-80DC-8D80C397FBDE', true);
//Применить фильтр на отбор только не проверенных записей.
ApplyDatasetFilter(Dataset, 'IsChecked',false, true);
EnableDatasetFilters(Dataset, true,'TableID','IsChecked');
Dataset.FetchRecordsCount = -1;
Dataset.Open();
while (!Dataset.IsEOF) {
//////Сначала здесь чтение данных
/////Затем здесь у данной записи (элемента выборки) мне необходимо установить
/////значение поля IsChecked = true и делаю я это след. образом
Dataset.Edit(); //режим редактирования вкл
Dataset.Values('IsChecked') = true; //установка значения
Dataset.Post(); //запись изменений
Dataset.GotoNext();
}
Dataset.Close();
Но! смотрю в SQL и вижу что у обработанных записей поле IsChecked действительно приняло значение = 1 , а в полях TableID, RecordID, RecordTitle, ActionID отсутствуют значения (т.е. null).
Вопрос: Как присвоить полю IsChecked нужное значение, но при этом не затереть значения в других полях?