Имя: Пароль:
1C
1С v8
Проблема с датой при записи в FireBird
,
0 AS_DANCE
 
15.12.19
19:17
Всем добрый день.
Конфигурация самописная, создал внешний источник - база FireBird. Подключился, читаю данные - все отлично. Есть необходимость внести изменения в базу.

    ВнешниеИсточникиДанных.ВИ.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединенияMBS);
    
    Попытка
        ВнешниеИсточникиДанных.ВИ.УстановитьСоединение();
    Исключение
        возврат;
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

    СтрокаВИ = ВнешниеИсточникиДанных.ВИ.Таблицы.COUNTERD.НайтиПоПолю("ID",2);
    ОбТекстрока = СтрокаВИ.ПолучитьОбъект();
    ОбТекстрока.DELTA = 36;
    ОбТекстрока.Записать();
Выдает ошибку
    
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: HY000
Номер ошибки: -413
Описание: [ODBC Firebird Driver][Firebird]conversion error from string "2019-11-29 00:00:00"

В таблице есть столбец "DELTADATE" и "DELTATIME" с типами дата и время соответственно. Ругается на "DELTADATE"
Я ее не исправляю. Пытался ввести в нее любую дату, мучался с форматами типа "ДФ='yyyy.dd.М hh:mm:ss'" - проблема та же. Кроме типа дата ничего не воспринимает (
Создать новую строку тоже не получается из-за этой ошибки.
В других таблицах этого внешнего источника все создается отлично.
Как записать дату или эту строку чтобы не ругалась ODBC??
1 H A D G E H O G s
 
15.12.19
19:41
Назначить правильный тип у реквизита в 1С.
2 AS_DANCE
 
15.12.19
19:44
У реквизита DELTADATE тип Дата. поменял на Дата и время,  не помогло.
3 v77
 
15.12.19
19:45
4 AS_DANCE
 
15.12.19
19:56
(3) а как это 1С объяснить? формат не помог. простое приравнивание - тоже.
5 v77
 
15.12.19
20:02
а где там у тебя в коде дата и шо такое 36?
6 H A D G E H O G s
 
15.12.19
20:04
(4) Сделай реквизит строкой и тупо запиши в него
"25.12.2016 00:00:00.0000"

Если прокатит - просто приводи к такому виду.

если прокатит - я бы еще попробовал сделать таблицу необъектной и писать через менеджер записей.
И не трогать это поле, просто выбросив его из реквизитов
7 AS_DANCE
 
15.12.19
20:16
(5) вот в том и дело что в строке я только нахожу строку и еняю там условно 1 значение и записываю

(6) прокатило, просто удалил из внешнего источника колонки которые имели тип Дата и все норм но теперь вылезла другая ошибка

Ошибка ODBC. SQLSTATE: HY000
Номер ошибки: -836
Описание: [ODBC Firebird Driver][Firebird]exception 9
E_EDIT_FORBIDDEN
Редактирование запрещено
At trigger 'UPD_BEF_COUNTERD0' line: 5, col: 31

Я так понимаю на апдейт есть триггер. Из 1С я его никак не увижу?
8 H A D G E H O G s
 
15.12.19
20:19
(7)
E_EDIT_FORBIDDEN
Редактирование запрещено

Да, лезьте в огнептицу.
9 Сияющий в темноте
 
15.12.19
21:22
не знаб,как через внешний источник,но через ADO дата пишется просто,как в VbScript числом double.
Просто,ADO для полей даты возвращает свой тип,который не все стстемы понимают.
У меня,например,из php не получилось работать с датами,в итоге,перешел обычным числам,где число дней,не забывая переводить в дату.
10 Сияющий в темноте
 
15.12.19
21:23
триггеры можно через isql посмотреть.