![]() |
|
Преобразование значения к типу Дата не может быть выполнено | ☑ | ||
---|---|---|---|---|
0
Grinpic
19.08.15
✎
11:57
|
Доброго времени суток,
При выполнении в 1С 8.3 выдает ошибку: Преобразование значения к типу Дата не может быть выполнено Запрос.УстановитьПараметр("ДатаН", НачалоДня(НВдат)); Имеется файл формата dbf я из него выгружаю данные, дата была в формате строки, я ее переделал в формат дата: НВдатДБФ = (Лев(База.ПолучитьЗначениеПоля("NVdat"), 10)); Год = Прав(НВдатДБФ, 4); // 2005; Месяц1 = СтрЗаменить(НВдатДБФ, Лев(НВдатДБФ,3), ""); Месяц = СтрЗаменить(Месяц1, Прав(Месяц1,5), ""); День = Лев(НВдатДБФ, 2); НВдат = Дата(Год + Месяц + День); Я знаю что не учитываются пробелы с лева и точное время создания документа, но из строки в формат даты перевести получается и она "по идее" должна идти дальше в запрос: Запрос = Новый Запрос("ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.НомерВходящегоДокумента = &НомерКонтрагента | И ПоступлениеТоваровУслуг.Контрагент = &Контрагент | И ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаН И &ДатаК"); Запрос.УстановитьПараметр("НомерКонтрагента", НВход); Запрос.УстановитьПараметр("Контрагент", ПоискС(ИНН)); Запрос.УстановитьПараметр("ДатаН", НачалоДня(НВдат)); Запрос.УстановитьПараметр("ДатаК", КонецДня(НВдат)); Результат=Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат Неопределено; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Возврат Выборка.Ссылка.номер; Я начинающий в 1С. Кто знает в чем ошибка? Прошу помощи исправить. |
|||
1
Nuobu
19.08.15
✎
11:59
|
(0) Остановись отладчиком, посмотри, что возвращает.
|
|||
2
Господин ПЖ
19.08.15
✎
12:00
|
очередная жертва неразрывного пробела...
|
|||
3
Grinpic
19.08.15
✎
12:05
|
(1) НВдат принимает значение 13.08.2015 0:00:00
|
|||
4
Господин ПЖ
19.08.15
✎
12:09
|
значит "гуляют" либо число либо месяц... больно они вырубаются топорно...
|
|||
5
Grinpic
19.08.15
✎
12:12
|
(2) Пробела между датой и временем? (4) имеете ввиду что они не на своих местах?
|
|||
6
hhhh
19.08.15
✎
12:13
|
(3) а если так?
Запрос.УстановитьПараметр("ДатаН", НачалоДня(База.ПолучитьЗначениеПоля("NVdat"))); Запрос.УстановитьПараметр("ДатаК", КонецДня(База.ПолучитьЗначениеПоля("NVdat"))); |
|||
7
Апош
19.08.15
✎
12:13
|
вот бы ХБасе умел даты датами говорить...
|
|||
8
Господин ПЖ
19.08.15
✎
12:14
|
(5) у тебя отладчик есть... а в нем "останавливаться по ошибке" что гадать сидеть
|
|||
9
Grinpic
19.08.15
✎
12:15
|
(6) Дело в том что там формат строки, и он в дату переводится только как в (0)
|
|||
10
Апош
19.08.15
✎
12:16
|
Вариант синтаксиса: По составляющим
Синтаксис: Дата(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>) |
|||
11
Grinpic
19.08.15
✎
12:16
|
(8) Я писал что я начинающий 2 недели работаю с 1С. Еслиб мог давно бы сам решил проблему)
|
|||
12
Апош
19.08.15
✎
12:17
|
(11) а образованиев для того, чтобы понять, что в переменной хрень, не хватает?
|
|||
13
Grinpic
19.08.15
✎
12:17
|
(10) Хм... тоесть мне надо перевернуть дату? у меня 13.08.2015 0:00:00
|
|||
14
Господин ПЖ
19.08.15
✎
12:17
|
||||
15
Апош
19.08.15
✎
12:19
|
(13) тебе надо понять, как три строки сделать датой
|
|||
16
GROOVY
19.08.15
✎
12:19
|
"2 недели работаю с 1С", прикольно, когда уволят, контакты работодателя сюда запости, чтоб народ понимал, что разгребать надо.
|
|||
17
hhhh
19.08.15
✎
12:20
|
(13) вот это что за фигня?
Месяц1 = СтрЗаменить(НВдатДБФ, Лев(НВдатДБФ,3), ""); Месяц = СтрЗаменить(Месяц1, Прав(Месяц1,5), ""); напишите просто Месяц = Сред(НВдатДБФ, 4, 2); |
|||
18
Господин ПЖ
19.08.15
✎
12:21
|
(15) он уже все сделал: НВдат = Дата(Год + Месяц + День);
не сношайте мозг ребенку |
|||
19
Апош
19.08.15
✎
12:22
|
(18) ну тогда поздравим товарища. я всегда через запятую делал
|
|||
20
Grinpic
19.08.15
✎
12:22
|
(17) Благодарю за оптимизацию)
|
|||
21
Господин ПЖ
19.08.15
✎
12:24
|
(19) просто из за костылестроения
Месяц1 = СтрЗаменить(НВдатДБФ, Лев(НВдатДБФ,3), ""); Месяц = СтрЗаменить(Месяц1, Прав(Месяц1,5), ""); День = Лев(НВдатДБФ, 2); вместо адекватной строки получается мусор |
|||
22
Grinpic
19.08.15
✎
12:38
|
(21) Тут хоть и костыль, но рабочий. А вот подходит ли формат моей даты для функции НачалоДня()
|
|||
23
Господин ПЖ
19.08.15
✎
12:39
|
если он всегда "ГГГГ" + "ММ" + "ДД" с ведущими нулями (т.е. март = "05", а первое число = "01") - то подходит
|
|||
24
Grinpic
19.08.15
✎
12:43
|
(23) НачалоДня(13.08.2015 0:00:00)
|
|||
25
hhhh
19.08.15
✎
12:50
|
(24) лучше как в (10)
Дата(Число(Год), Число(Месяц), Число(День)) |
|||
26
Господин ПЖ
19.08.15
✎
12:51
|
(24) 13.08.2015 0:00:00 - это строка такая? или дата?
|
|||
27
Grinpic
19.08.15
✎
12:57
|
(25) Переделал, результат тот же
|
|||
28
Grinpic
19.08.15
✎
12:57
|
(26) тип дата
|
|||
29
hhhh
19.08.15
✎
13:01
|
(28) ну, Сообщить("Год=" + Год + " Месяц=" + Месяц + " День=" + День);
что выдает? |
|||
30
Господин ПЖ
19.08.15
✎
13:01
|
где-то автор свистит... или смотрит не туда
|
|||
31
Grinpic
19.08.15
✎
13:09
|
(26) в конце запроса переменная принимает другое значение = 7446029151, а вот почему я еще не понял
|
|||
32
Grinpic
19.08.15
✎
13:12
|
(29) Год=2015 Месяц=08 День=13
|
|||
33
Grinpic
19.08.15
✎
13:13
|
(30) То есть не в конце а когда доходит до строки НачалоДня()
|
|||
34
Апош
19.08.15
✎
13:15
|
(33) на какой строке изменяется?
|
|||
35
Grinpic
19.08.15
✎
13:15
|
(34) Запрос.УстановитьПараметр("ДатаН", НачалоДня(НВдат));
|
|||
36
Grinpic
19.08.15
✎
13:17
|
(34) нет вру где то в другом месте пойду искать...
|
|||
37
Grinpic
19.08.15
✎
13:41
|
(34) (26) Не подскажете как правильно условие составить на останов отладчика, мне надо остановить когда НВдат<> 13.08.2015 0:00:00, множно <> Дата() типу даты или ваши варианты)
|
|||
38
Апош
19.08.15
✎
13:54
|
(37) ТипЗнч(НВдат)<>Тип("Дата")
|
|||
39
Grinpic
19.08.15
✎
14:04
|
(38) Не остановился(
|
|||
40
Господин ПЖ
19.08.15
✎
14:06
|
(37) не надо тебе никаких условий - галку ставь "останавливаться по ошибке" - сам встанет
|
|||
41
Господин ПЖ
19.08.15
✎
14:07
|
зы... если функция серверная и - не встанет без -debug
|
|||
42
Grinpic
19.08.15
✎
14:15
|
(41) ну он мне останавливает когда уже НВдата изменил значение, я пытаюсь вычислить где он его меняет
|
|||
43
Grinpic
19.08.15
✎
14:38
|
(41) (38) я понял в чем проблема, ИНН поменялся значениями с НВдат, только немогу найти где именно поменялся...
|
|||
44
hhhh
19.08.15
✎
14:43
|
(43) переименуй, назови ГринписДат
|
|||
45
Grinpic
19.08.15
✎
14:48
|
(44) Переименовал, но значения поменялись все равно...
|
|||
46
Апош
19.08.15
✎
14:54
|
эх, придумали бы уже какую-нибудь штуку с пошаговым выполнением кода и возможностью просмотра значений переменных...
|
|||
47
rs_trade
19.08.15
✎
14:57
|
(46) зачем? все равно никто не будет пользоваться. хрень какая то.
|
|||
48
Grinpic
19.08.15
✎
15:02
|
(47) Ну это ты зря, я бы использовал, если взят ьв пример python в IDE IDEA там вообще дебагер прелесть, все покажет и расскажет, а самое странное что нельзя шаг назад в дебаге сделать
|
|||
49
Апош
19.08.15
✎
15:03
|
шаг назад - это круто. ждём возможности сохранения
|
|||
50
hhhh
19.08.15
✎
15:07
|
(47) еще про оптимизацию
вместо Возврат Выборка.Ссылка.номер; надо писать Возврат Выборка.СсылкаНомер; соответственно в запросе ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка, | ПоступлениеТоваровУслуг.Ссылка.Номер КАК СсылкаНомер |
|||
51
hhhh
19.08.15
✎
15:08
|
ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка, | ПоступлениеТоваровУслуг.Номер КАК СсылкаНомер |
|||
52
Grinpic
19.08.15
✎
15:13
|
(51) хм, мне нужно просто проверить существует ли документ в данном запросе, а номер я вытягиваю для сверки в условии, чтоб если не существует создать новый, не уверен что мне нужна ссылка
|
|||
53
Grinpic
19.08.15
✎
15:16
|
(51) У меня 2 таких запроса на самом деле, один тянет ссылку а другой номер из ссылки, они слущат для разных целей. 1 создает документ поступление товаров, а 2 добавляет в документе номенклатуру если не находит то создает новую
|
|||
54
Fish
гуру
19.08.15
✎
15:16
|
(46) А чем существующий отладчик не устраивает?
|
|||
55
hhhh
19.08.15
✎
15:18
|
(52) но запрос ваш медленнее будет раз в 70. Просто вытаскивайте номер в запросе, в этом случае лучше наступить на горло соственной песне, ради скорости программы можно пострадать.
|
|||
56
Grinpic
19.08.15
✎
15:18
|
(51) в связи с тем что я начинающий код плохо читаем и в нем можно запутаться)
|
|||
57
Grinpic
19.08.15
✎
15:19
|
(54) не могу найти где значение НВдата меняется с ИНН
|
|||
58
hhhh
19.08.15
✎
15:20
|
(57) точки останова не судьба поставить? И значение НВДат кинуть вниз, в табло.
|
|||
59
Grinpic
19.08.15
✎
15:21
|
(55) попробую переделать запрос, только надо ошибку исправить, а после займусь
|
|||
60
Grinpic
19.08.15
✎
15:22
|
(58) во всем коде поставить?
|
|||
61
Grinpic
19.08.15
✎
15:23
|
на все строки кода*?
|
|||
62
Fish
гуру
19.08.15
✎
15:23
|
(57) Так по шагам иди, и смотри, где оно меняется.
|
|||
63
Grinpic
19.08.15
✎
15:24
|
(62) Так и делал от НВдат ставил точку и F10 но он прыгает в один момент на функцию с запросом и уже поменял...
|
|||
64
Fish
гуру
19.08.15
✎
15:25
|
(63) Используй силу F11.
|
|||
65
Grinpic
19.08.15
✎
15:29
|
(64) Блин... спасибо)
|
|||
66
Grinpic
19.08.15
✎
15:46
|
Нашел проблему, у функциии моей было 3 параметра ИНН, НВдат, НВход
я не знал что их нужно было использовать в том порядке в котором они были заданы и в процедуре я этот порядок не соблюдал из-за этого ИНН присвоелось значение НВдат, заменил все заработало, всем спасибо) |
|||
67
ДенисЧ
19.08.15
✎
15:47
|
(66) мда....
Выбирай - метла или утка? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |