Выгрузка договоров из 1с в базу sql. Проверка корректной даты
Добрый день! Помогите разобраться. Выгружаю справочник Договоров в базу SQL. В спр. есть поле Дата договора, которую пользователи иногда заполняют некорректно, например, 20.08.0216. Написала процедуру выгрузки, но она выдает ошибку при некорректных датах. Как мне перед загрузкой правильно проверить дату?
Процедура КнопкаВыполнитьНажатие(Кнопка)
СтрокаПодключения = ".....";
Connection = Новый COMОбъект("ADODB.Connection");
Command = Новый COMОбъект("ADODB.Command");
RecordSet = Новый COMОбъект("ADODB.RecordSet");
Connection.Open(СокрЛП(СтрокаПодключения));
Command.ActiveConnection = Connection;
Command.CommandText = "Delete FROM [db_1c].[asu].[vwСправочникДоговоров]";
Command.Execute();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Владелец.Код КАК КодКонтрагента,
| ДоговорыКонтрагентов.Номер КАК НомерД,
| ДоговорыКонтрагентов.Дата КАК ДатаД,
| ДоговорыКонтрагентов.Код КАК КодДоговора,
| ДоговорыКонтрагентов.Наименование КАК Наименование,
| ДоговорыКонтрагентов.А_СтавкаНДС КАК СтавкаНДС,
| ДоговорыКонтрагентов.А_НомерСУЗ КАК НомерСУЗ,
| ДоговорыКонтрагентов.А_ОтветсвенноеЛицо.Наименование КАК Инициатор,
| ДоговорыКонтрагентов.А_ИдентификаторМОпо159ФЗ КАК ИГК
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
| И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
| И ДоговорыКонтрагентов.А_ДоговорЗавершен = ЛОЖЬ";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Command.CommandText = "ins ert in to [db_1c].[asu].[vwСправочникДоговоров] ([Код_контрагента],[№_договора],[Код_договора],[Наименование],[Ставка_НДС],[№_СУЗ],[Инициатор договора],[ИГК],[Дата_договора]) values('"+Выборка.КодКонтрагента+"', '"+Выборка.НомерД+"', '"+Выборка.КодДоговора+"', '"+Выборка.Наименование+"', '"+СтавкаНДС+"', '"+Выборка.НомерСУЗ+"', '"+Выборка.Инициатор+"', '"+Выборка.ИГК+"', Cast('"+Формат(ДатаДоговора, "ДФ = ггггММдд")+"' as smalldatetime) )";
Command.CommandTimeOut = 9000;
Command.Execute();
КонецЦикла;
КонецПроцедуры
Процедура КнопкаВыполнитьНажатие(Кнопка)
СтрокаПодключения = ".....";
Connection = Новый COMОбъект("ADODB.Connection");
Command = Новый COMОбъект("ADODB.Command");
RecordSet = Новый COMОбъект("ADODB.RecordSet");
Connection.Open(СокрЛП(СтрокаПодключения));
Command.ActiveConnection = Connection;
Command.CommandText = "Delete FROM [db_1c].[asu].[vwСправочникДоговоров]";
Command.Execute();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Владелец.Код КАК КодКонтрагента,
| ДоговорыКонтрагентов.Номер КАК НомерД,
| ДоговорыКонтрагентов.Дата КАК ДатаД,
| ДоговорыКонтрагентов.Код КАК КодДоговора,
| ДоговорыКонтрагентов.Наименование КАК Наименование,
| ДоговорыКонтрагентов.А_СтавкаНДС КАК СтавкаНДС,
| ДоговорыКонтрагентов.А_НомерСУЗ КАК НомерСУЗ,
| ДоговорыКонтрагентов.А_ОтветсвенноеЛицо.Наименование КАК Инициатор,
| ДоговорыКонтрагентов.А_ИдентификаторМОпо159ФЗ КАК ИГК
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
| И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
| И ДоговорыКонтрагентов.А_ДоговорЗавершен = ЛОЖЬ";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Command.CommandText = "ins ert in to [db_1c].[asu].[vwСправочникДоговоров] ([Код_контрагента],[№_договора],[Код_договора],[Наименование],[Ставка_НДС],[№_СУЗ],[Инициатор договора],[ИГК],[Дата_договора]) values('"+Выборка.КодКонтрагента+"', '"+Выборка.НомерД+"', '"+Выборка.КодДоговора+"', '"+Выборка.Наименование+"', '"+СтавкаНДС+"', '"+Выборка.НомерСУЗ+"', '"+Выборка.Инициатор+"', '"+Выборка.ИГК+"', Cast('"+Формат(ДатаДоговора, "ДФ = ггггММдд")+"' as smalldatetime) )";
Command.CommandTimeOut = 9000;
Command.Execute();
КонецЦикла;
КонецПроцедуры
По теме из базы знаний
- Принципы внедрения и сопровождения учета на базе 1С
- Как я обработку на альтернативный сервер выносил
- Рабочее место программиста на Linux. Серия лабораторных работ. Работа 1
- Многопоточный CI-контур для 1С c Packer, Vagrant и Jenkins. Часть 1. Описание системы и обзор инструментария
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
Найденные решения
(2)Спасибо, в запрос добавила проверку, получилось)
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Владелец.Код КАК КодКонтрагента,
| ДоговорыКонтрагентов.Номер КАК НомерД,
| ВЫБОР
| КОГДА ДоговорыКонтрагентов.Дата >= ДАТАВРЕМЯ(1900, 1, 1)
| И ДоговорыКонтрагентов.Дата <= ДАТАВРЕМЯ(2079, 6, 6)
| ТОГДА ДоговорыКонтрагентов.Дата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаД,
| ДоговорыКонтрагентов.Код КАК КодДоговора,
| ДоговорыКонтрагентов.Наименование КАК Наименование,
| ДоговорыКонтрагентов.А_СтавкаНДС КАК СтавкаНДС,
| ДоговорыКонтрагентов.А_НомерСУЗ КАК НомерСУЗ,
| ДоговорыКонтрагентов.А_ОтветсвенноеЛицо.Наименование КАК Инициатор,
| ДоговорыКонтрагентов.А_ИдентификаторМОпо159ФЗ КАК ИГК
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
| И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
| И ДоговорыКонтрагентов.А_ДоговорЗавершен = ЛОЖЬ
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Владелец.Код КАК КодКонтрагента,
| ДоговорыКонтрагентов.Номер КАК НомерД,
| ВЫБОР
| КОГДА ДоговорыКонтрагентов.Дата >= ДАТАВРЕМЯ(1900, 1, 1)
| И ДоговорыКонтрагентов.Дата <= ДАТАВРЕМЯ(2079, 6, 6)
| ТОГДА ДоговорыКонтрагентов.Дата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаД,
| ДоговорыКонтрагентов.Код КАК КодДоговора,
| ДоговорыКонтрагентов.Наименование КАК Наименование,
| ДоговорыКонтрагентов.А_СтавкаНДС КАК СтавкаНДС,
| ДоговорыКонтрагентов.А_НомерСУЗ КАК НомерСУЗ,
| ДоговорыКонтрагентов.А_ОтветсвенноеЛицо.Наименование КАК Инициатор,
| ДоговорыКонтрагентов.А_ИдентификаторМОпо159ФЗ КАК ИГК
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
| И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
| И ДоговорыКонтрагентов.А_ДоговорЗавершен = ЛОЖЬ
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Спасибо, в запрос добавила проверку, получилось)
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Владелец.Код КАК КодКонтрагента,
| ДоговорыКонтрагентов.Номер КАК НомерД,
| ВЫБОР
| КОГДА ДоговорыКонтрагентов.Дата >= ДАТАВРЕМЯ(1900, 1, 1)
| И ДоговорыКонтрагентов.Дата <= ДАТАВРЕМЯ(2079, 6, 6)
| ТОГДА ДоговорыКонтрагентов.Дата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаД,
| ДоговорыКонтрагентов.Код КАК КодДоговора,
| ДоговорыКонтрагентов.Наименование КАК Наименование,
| ДоговорыКонтрагентов.А_СтавкаНДС КАК СтавкаНДС,
| ДоговорыКонтрагентов.А_НомерСУЗ КАК НомерСУЗ,
| ДоговорыКонтрагентов.А_ОтветсвенноеЛицо.Наименование КАК Инициатор,
| ДоговорыКонтрагентов.А_ИдентификаторМОпо159ФЗ КАК ИГК
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
| И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
| И ДоговорыКонтрагентов.А_ДоговорЗавершен = ЛОЖЬ
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Владелец.Код КАК КодКонтрагента,
| ДоговорыКонтрагентов.Номер КАК НомерД,
| ВЫБОР
| КОГДА ДоговорыКонтрагентов.Дата >= ДАТАВРЕМЯ(1900, 1, 1)
| И ДоговорыКонтрагентов.Дата <= ДАТАВРЕМЯ(2079, 6, 6)
| ТОГДА ДоговорыКонтрагентов.Дата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаД,
| ДоговорыКонтрагентов.Код КАК КодДоговора,
| ДоговорыКонтрагентов.Наименование КАК Наименование,
| ДоговорыКонтрагентов.А_СтавкаНДС КАК СтавкаНДС,
| ДоговорыКонтрагентов.А_НомерСУЗ КАК НомерСУЗ,
| ДоговорыКонтрагентов.А_ОтветсвенноеЛицо.Наименование КАК Инициатор,
| ДоговорыКонтрагентов.А_ИдентификаторМОпо159ФЗ КАК ИГК
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
| И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
| И ДоговорыКонтрагентов.А_ДоговорЗавершен = ЛОЖЬ
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот