Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
04 июн 2024, 05:56

Преобразование значения к типу Дата не может быть выполнено

Автор Grinpic, 19 авг 2015, 11:34

0 Пользователей и 1 гость просматривают эту тему.

Grinpic

Доброго времени суток,
При выполнении в 1С 8.3 выдает ошибку:
Преобразование значения к типу Дата не может быть выполнено
   Запрос.УстановитьПараметр("ДатаН", НачалоДня(НВдат));

Имеется файл формата dbf я из него выгружаю данные, дата была в формате строки, я ее переделал в формат дата:
   НВдатДБФ = (Лев(База.ПолучитьЗначениеПоля("NVdat"), 10));
   Год = Прав(НВдатДБФ, 4); // 2005;
        Месяц1 = СтрЗаменить(НВдатДБФ, Лев(НВдатДБФ,3), "");
   Месяц = СтрЗаменить(Месяц1, Прав(Месяц1,5), "");
   
        День = Лев(НВдатДБФ, 2);   
        НВдат = Дата(Год + Месяц + День);
Я знаю что не учитываются пробелы с лева и точное время создания документа, но из строки в формат даты перевести получается и она "по идее" должна идти дальше в запрос:
Запрос = Новый Запрос("ВЫБРАТЬ
                         |   ПоступлениеТоваровУслуг.Ссылка
                         |ИЗ
                         |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                         |ГДЕ
                         |   ПоступлениеТоваровУслуг.НомерВходящегоДокумента = &НомерКонтрагента
                         |   И ПоступлениеТоваровУслуг.Контрагент = &Контрагент
                         |   И ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаН И &ДатаК");
   Запрос.УстановитьПараметр("НомерКонтрагента", НВход);
   Запрос.УстановитьПараметр("Контрагент", ПоискС(ИНН));
   Запрос.УстановитьПараметр("ДатаН", НачалоДня(НВдат));
   Запрос.УстановитьПараметр("ДатаК", КонецДня(НВдат));
   Результат=Запрос.Выполнить();
   
   Если Результат.Пустой() Тогда
      Возврат Неопределено;
   КонецЕсли;

        Выборка = Результат.Выбрать();
   Выборка.Следующий();
   
   Возврат Выборка.Ссылка.номер;
Я начинающий в 1С. Кто знает в чем ошибка? Прошу помощи исправить.

KrivosheevEV

1. Отладка - Остановка по ошибке... - Останавливаться по ошибке ИЛИ
   Точка останова на строке Запрос.УстановитьПараметр("ДатаН", НачалоДня(НВдат));
2. Shift + F9
3. Проверяй типы переменных.

В функцию "НачалоДня" необходим входной параметр с типом "Дата".

Grinpic

Цитата: KrivosheevEV от 19 авг 2015, 12:18
1. Отладка - Остановка по ошибке... - Останавливаться по ошибке ИЛИ
   Точка останова на строке Запрос.УстановитьПараметр("ДатаН", НачалоДня(НВдат));
2. Shift + F9
3. Проверяй типы переменных.

В функцию "НачалоДня" необходим входной параметр с типом "Дата".

НВдат принимает значение 13.08.2015 0:00:00, этот тип подходит?

cska-fanat-kz

Цитата: Grinpic от 19 авг 2015, 12:35НВдат принимает значение 13.08.2015 0:00:00, этот тип подходит?

При просмотре значения там указан тип.
Если "Строка", то не подходит.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

nemesls

Попробуй преобразовать твои переменные "Год", "Месяц", "День" к числу:

ДеньЧисло=Число(День);
МесяцЧисло=Число(Месяц);
ГодЧисло=Число(Год);

Если возникнут ошибки о невозможности преобразовать в число, то у тебя в строках есть лишние пробелы, точки, двоеточия и т.п.

И обязательно установи в "региональных установках информационной базы" в поле группировка значение 0.

В результате у тебя должна быть такая строка "20150820000000". Вот ее уже преобразуй.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск