8.х выгрузка из 1С в SQL(Формат даты)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Алф, 29 сен 2010.

  1. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    За 31 число не попадают данные в Скул,в 1с Есть поступл.за 31.03.2010 23:59:59 в скул она не попало(форматом ММ/дд/гггг чч:сс не попагло),Поступ за 31.03.2010 16:32:52(в 1С) так же нет в Скуле и т.д...
    то есть в Скуле 23:59:59 воспринимает как 11:59:59,период 01.03.2010 0:00:00 Скул выводит 01.03.2010 12:00.В связи с этим остаток неправельная.
    Во время выгрузи исправил время на 00-00,результат тот же
  2. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Ошибку ситакса мне так и не удалось исправить,наверное от сюда прежде надо копать
    Ошибка: {Форма.Форма(157)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Incorrect syntax near ','.
    Ошибка: {Форма.Форма(157)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Incorrect syntax near ','.
    Ошибка: {Форма.Форма(164)}: Ошибка при вызове метода контекста (Close): Произошла исключительная ситуация (ADODB.Recordset): Operation is not allowed when the object is closed.

    Как отловить где это ошибка ситакса?
    ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"',"
    +ВыборкаРез.type+",'"
    +ВыборкаРез.Agent_name+"',"
    +ВыборкаРез.inn+","
    +ВыборкаРез.kpp+","
    +Строка(Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0"))+",'"
    +ВыборкаРез.comment+"')" ;
    //Сообщить(ТекстЗапроса);
    Команда.CommandText=ТекстЗапроса;
    Попытка
    НаборЗаписей=Команда.Execute();
    Исключение
    Сообщить("Ошибка: " + ОписаниеОшибки());
    КонецПопытки;
    КонецЦикла;
    Попытка
    НаборЗаписей.Close();
    исключение
    Сообщить("Ошибка: " + ОписаниеОшибки());
    КонецПопытки;
  3. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Нет не у кого опыта выгрузки в Скул?
    SQL-ков мало тут наверное...
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    пробуй в формате YYYYMMDDHHMMSS выгружать, возможно нужно сделать преобразование к типу DATE, т.е.

    "INSERT INTO dbo.io_agent_debt VALUES (CAST '" + Формат(ВыборкаРез.Dt, "ДФ=YYYYMMDDDHHMMSS") + "' AS DATE)"
  5. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26

    Вот так не работает,может не правильно я добавил:
    ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES (CAST'"+Формат(ВыборкаРез.Dt,"ДФ=""YYYYMMDDHHMMSS")+"',"
    +ВыборкаРез.type+",'"
    +ВыборкаРез.Agent_name+"',"
    +ВыборкаРез.inn+","
    +ВыборкаРез.kpp+","
    +Строка(Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0"))+",'"
    +ВыборкаРез.comment+"'AS DATE)";

    Если убераешь САST и AS DATE то дата и время загружает.но на 31 числа все равно не попадает в СКУЛ
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    CAST (<Выражение> AS TYPE) должно относится к одному значению, т.е. в общем виде будет

    INSERT INTO table VALUES (CAST ('String' AS <TYPE> Тип(Длина, Точность)), Value2, Value3,....)
  7. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    помоги написать как в моем случаи должно быть.как то так:
    ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES (CAST( '" + Формат(ВыборкаРез.Dt, "ДФ=YYYYMMDDHHMMSS") + "' AS DATE)" ??
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    да, а потом добавляешь остальные значения.
    помни, что текст заключается в " ' ", а не в " " ", числовые значения в строке нужно привести к виду "ЧДЦ=2; ЧРД=.; ЧГ=0".

    ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES (CAST( '" + Формат(ВыборкаРез.Dt, "ДФ=YYYYMMDDHHMMSS") + "' AS DATE)" + ",'" +ВыборкаРез.type + "','" + ВыборкаРез.Agent_name + "','" +ВыборкаРез.inn + "','" + ВыборкаРез.kpp+"','" + Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0") + "','" +ВыборкаРез.comment+"')";

    писАл без проверки на синтаксис и пунктуацию.
  9. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26

    Вот так не работает,Скул не видит полей:
    ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES (CAST( '" + Формат(ВыборкаРез.Dt, "ДФ=YYYYMMDDHHMMSS")+"' AS DATE)"+"',"
    +ВыборкаРез.type+",'"
    +ВыборкаРез.Agent_name+"',"
    +ВыборкаРез.inn+","
    +ВыборкаРез.kpp+","
    +Строка(Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0"))+",'"
    +ВыборкаРез.comment+"')";
    Без CAST и AS DATE данные выводит,т.е.с синтексом я не ошибаюсь помоему,или я ошибаюсь?
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    данные выводит куда? скуль без CAST запрос отрабатывает?

    я для кого

    ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES (CAST( '" + Формат(ВыборкаРез.Dt, "ДФ=YYYYMMDDHHMMSS") + "' AS DATE)" + ",'" +ВыборкаРез.type + "','" + ВыборкаРез.Agent_name + "','" +ВыборкаРез.inn + "','" + ВыборкаРез.kpp+"','" + Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0") + "','" +ВыборкаРез.comment+"')";

    составлял? именно так надо делать, а не:

    ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES (CAST( '" + Формат(ВыборкаРез.Dt, "ДФ=YYYYMMDDHHMMSS")+"' AS DATE)"+"',"
    +ВыборкаРез.type+",'"
    +ВыборкаРез.Agent_name+"',"
    +ВыборкаРез.inn+","
    +ВыборкаРез.kpp+","
    +Строка(Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0"))+",'"
    +ВыборкаРез.comment+"')";

    - здесь текст не заключается в ' ', а это необходимо.
  11. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    да да скуль без CAST запрос отрабатывает
  12. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    в вашем случаи:
    ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES (CAST( '" + Формат(ВыборкаРез.Dt, "ДФ=YYYYMMDDHHMMSS") + "' AS DATE)" + ",'" +ВыборкаРез.type + "','" + ВыборкаРез.Agent_name + "','" +ВыборкаРез.inn + "','" + ВыборкаРез.kpp+"','" + Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0") + "','" +ВыборкаРез.comment+"')";
    скуль запрос не отрабатывает

    помоему +ВыборкаРез.inn+
    +ВыборкаРез.kpp+ они у меня числовые.........

    Вообщем вот сам запрос из 1С:
    ВЫБРАТЬ
    | ХозрасчетныйОбороты.Период КАК dt,
    | 1 КАК type,
    | ХозрасчетныйОбороты.Субконто1 КАК agent_name,
    | ЕСТЬNULL(ХозрасчетныйОбороты.Субконто1.ИНН, 0) КАК inn,
    | ВЫБОР
    | КОГДА ХозрасчетныйОбороты.Субконто1.КПП = """"
    | ИЛИ ХозрасчетныйОбороты.Субконто1.КПП = ""-""
    | ТОГДА ""0""
    | ИНАЧЕ ХозрасчетныйОбороты.Субконто1.КПП
    | КОНЕЦ КАК kpp,
    | ХозрасчетныйОбороты.СуммаОборот КАК amount,
    | ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты.Регистратор) КАК comment
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет В ИЕРАРХИИ (&Счет), , , , ) КАК ХозрасчетныйОбороты
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    | КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ),
    | 2,
    | ХозрасчетныйОстаткиИОбороты.Субконто1,
    | ХозрасчетныйОстаткиИОбороты.Субконто1.ИНН,
    | ХозрасчетныйОстаткиИОбороты.Субконто1.КПП,
    | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
    | ""Остаток на дату ""
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНачОстатки, &КонецПериода, Месяц, ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
    |
    |УПОРЯДОЧИТЬ ПО
    | agent_name";
  13. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Попробуй не CAST, а CONVERT, в нем можно указать формат представления даты
    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
    параметр style, я обчно использую 104
    Without century (yy) | With century (yyyy) | Standard | Input/Output**
    4 | 104 | German | dd.mm.yy

    если надо со временем
    - | 20 or 120 (*) | ODBC canonical | yyyy-mm-dd hh:mi:ss(24h)

Поделиться этой страницей