Может кто подсказать, как обновить все строки в SQL из 1с запросом, чтоб не писалось последнее значение запроса, для всех строк в БД?
ЗапросБольше = Новый Запрос;
ЗапросБольше.Текст =
"ВЫБРАТЬ
| ВидСобытия.Код КАК Код,
| ВидСобытия.Наименование КАК Наименование,
| ВидСобытия.Публиковать КАК Публиковать,
| ВидСобытия.Отредактировано КАК Отредактировано,
| ВидСобытия.Автор КАК Автор,
| ВидСобытия.Ответственный КАК Ответственный,
| ВидСобытия.Проверено КАК Проверено,
| ВидСобытия.GPT КАК GPT,
| ВидСобытия.Типограф КАК Типограф,
| ВидСобытия.Комментарий КАК Комментарий
|ИЗ
| Справочник.ВидСобытия КАК ВидСобытия
|ГДЕ
| ВидСобытия.IDSQL > 0";
ВыборкаБольше = ЗапросБольше.Выполнить().Выбрать();
Попытка
Пока ВыборкаБольше.Следующий() Цикл
Соединение.Execute("UPDATE Events_Types
|SET
| Title = '"+ВыборкаБольше.Наименование+"',
| Responsible = '"+ВыборкаБольше.Ответственный+"',
| Creator = '"+ВыборкаБольше.Автор+"',
| Publish = '"+Число(ВыборкаБольше.Публиковать)+"',
| GPT = '"+Число(ВыборкаБольше.GPT)+"',
| Edited = '"+Число(ВыборкаБольше.Отредактировано)+"',
| Printer ='"+Число(ВыборкаБольше.Типограф)+"',
| Verified = '"+Число(ВыборкаБольше.Проверено)+"");
КонецЦикла;
Сообщить("Данные обновлены!");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Смысл такой, что я из 1с должен сначала insert всех записей у которых idSQL = 0, после обновляю записи в sql где в 1с idSQL > 0 и вытаскиваю из sql id строки и пресваиваю его для idsql в 1с. Мне в запросе sql по сути не нужно условие, я так понимаю надо сделать цикл с счетчиком, но он жалуется постоянно
Смысл такой, что я из 1с должен сначала insert всех записей у которых idSQL = 0, после обновляю записи в sql где в 1с idSQL > 0 и вытаскиваю из sql id строки и пресваиваю его для idsql в 1с. Мне в запросе sql по сути не нужно условие, я так понимаю надо сделать цикл с счетчиком, но он жалуется постоянно
Прикрепленные файлы:
(2)
Вот весь мой код, не судите строго, с БД из 1с никогда не работал и понимаю, что не оптимально так использовать
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////
//Инициализация переменных
Провайдер = Константы.Провайдер.Получить();
Драйвер = Константы.Драйвер.Получить();
СРВ = Константы.Сервер.Получить();
БД = Константы.БазаДанных.Получить();
УИД = Константы.Логин.Получить();
ПВД = Константы.Пароль.Получить();
//Подключение к SQL-серверу
Попытка
Соединение = Новый COMОбъект("ADODB.Connection");
Команда = Новый COMОбъект("ADODB.Command");
ВыборкаСоединения = Новый COMОбъект("ADODB.RecordSet");
Соединение.ConnectionString = "DRIVER=" + Драйвер + ";Server=" + СРВ + ";Database=" + БД + ";UID=" + УИД + ";PWD=" + ПВД + ";";
Соединение.ConnectionTimeout = 30;
Соединение.CommandTimeout = 600;
//Открытие соединение
Соединение.Open();
Команда.ActiveConnection = Соединение;
Сообщить("Успешное подключение!");
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////
//////Запрос на объкты 1С где IDSQL = 0
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидСобытия.Код КАК Код,
| ВидСобытия.Наименование КАК Наименование,
| ВидСобытия.Публиковать КАК Публиковать,
| ВидСобытия.Отредактировано КАК Отредактировано,
| ВидСобытия.Автор КАК Автор,
| ВидСобытия.Ответственный КАК Ответственный,
| ВидСобытия.Проверено КАК Проверено,
| ВидСобытия.GPT КАК GPT,
| ВидСобытия.Типограф КАК Типограф,
| ВидСобытия.Комментарий КАК Комментарий
|ИЗ
| Справочник.ВидСобытия КАК ВидСобытия
|ГДЕ
| ВидСобытия.IDSQL = 0";
Выборка = Запрос.Выполнить().Выбрать();
Попытка
Пока Выборка.Следующий() Цикл
Соединение.Execute("INS ERT INTO Events_Types(Title, Responsible, Creator, Publish, GPT, Edited, Printer, Verified, ID1c)
|VALUES('" + Выборка.Наименование + "', '" + Выборка.Ответственный + "','" + Выборка.Автор +"', '" + Число(Выборка.Публиковать) + "', '" + Число(Выборка.GPT) + "', '" + Число(Выборка.Отредактировано) + "', '" + Число(Выборка.Типограф) + "', '" + Число(Выборка.Проверено) +"', '"+ Выборка.Код + "' )");
КонецЦикла;
Сообщить("Данные загружены!");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////////////////////////////////
////Запрос на объкты 1С где IDSQL > 0
ЗапросБольше = Новый Запрос;
ЗапросБольше.Текст =
"ВЫБРАТЬ
| ВидСобытия.Код КАК Код,
| ВидСобытия.Наименование КАК Наименование,
| ВидСобытия.Публиковать КАК Публиковать,
| ВидСобытия.Отредактировано КАК Отредактировано,
| ВидСобытия.Автор КАК Автор,
| ВидСобытия.Ответственный КАК Ответственный,
| ВидСобытия.Проверено КАК Проверено,
| ВидСобытия.GPT КАК GPT,
| ВидСобытия.Типограф КАК Типограф,
| ВидСобытия.Комментарий КАК Комментарий
|ИЗ
| Справочник.ВидСобытия КАК ВидСобытия
|ГДЕ
| ВидСобытия.IDSQL > 0";
ВыборкаБольше = ЗапросБольше.Выполнить().Выбрать();
Попытка
Пока ВыборкаБольше.Следующий() Цикл
Соединение.Execute("DECLARE Sum INT
| SET Sum = 1
| WHILE Sum > 0 DO
| UPD ATE Events_Types SET
| Title = '"+ВыборкаБольше.Наименование+"',
| Responsible = '"+ВыборкаБольше.Ответственный+"',
| Creator = '"+ВыборкаБольше.Автор+"',
| Publish = '"+Число(ВыборкаБольше.Публиковать)+"',
| GPT = '"+Число(ВыборкаБольше.GPT)+"',
| Edited = '"+Число(ВыборкаБольше.Отредактировано)+"',
| Printer ='"+Число(ВыборкаБольше.Типограф)+"',
| Verified = '"+Число(ВыборкаБольше.Проверено)+"
| SE T Sum=Sum+1;
| END WHILE");
КонецЦикла;
Сообщить("Данные обновлены!");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////////////////////////////////
//Читаем записи
ТекстИнструкции = "SEL ECT ID, ID1C FR OM Events_Types";
Попытка
Команда.CommandText = ТекстИнструкции;
ВыборкаExecute = Команда.Execute();
// Создаем таблицаЗначений
ТаблицаЗначенийSQL = Новый ТаблицаЗначений;
ТаблицаЗначенийSQL.Колонки.Добавить("Код");
ТаблицаЗначенийSQL.Колонки.Добавить("IDSQL");
//Заполняем колонки = (Код, IDSQL);
Если ВыборкаExecute.BOF = Ложь Тогда
ВыборкаExecute.MoveFirst();
Пока ВыборкаExecute.EOF = Ложь Цикл
НоваяСтрока = ТаблицаЗначенийSQL.Добавить();
НоваяСтрока.Код = Число(ВыборкаExecute.Fields("ID1C").Value);
НоваяСтрока.IDSQL = Число(ВыборкаExecute.Fields("ID").Val ue);
ВыборкаExecute.MoveNext();
КонецЦикла;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидСобытия.Ссылка КАК Ссылка,
| ВидСобытия.IDSQL КАК IDSQL
|ИЗ
| Справочник.ВидСобытия КАК ВидСобытия";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СЧ = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ИзменяемыйОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ИзменяемыйОбъект.IDSQL = ТаблицаЗначенийSQL[СЧ].IDSQL;
ИзменяемыйОбъект.Записать();
СЧ = СЧ +1;
КонецЦикла;
Сообщить("IDSQL записан!");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
ПоказатьВот весь мой код, не судите строго, с БД из 1с никогда не работал и понимаю, что не оптимально так использовать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот