Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   77-83 (http://forums.kuban.ru/f1040/77-83_a-8209754.html)

USSR 21.02.2017 11:16

77-83
 
Из 7.7 по OLE делаю сверку документов с БП 3.0. И все бы замечательно, выбираются, сверяются, но не могу сделать
маленький "бантик" - получить время документа БП 3.0 из реквизита "Дата" документа бухгалтерии. Вроде простая задача, но как то не выходит. База83.XMLСтрока(Док83.Дата) дает дату и следом нулевое время, хотя время есть.

VZ 21.02.2017 12:08

И не получишь. Напрямую. "Семерошное" OLE [em]датавремя[/em] не знает.
Поступай обычным способом: читай строковое представление.
Конечно, в структуре записи должно быть предусмотрено и поле "Время".

USSR 21.02.2017 12:43

(1)то что клюшки напрямую не знают ДатаВремя это понятно и очевидно. Я думал как то с помощью методов 8.3 выделить это время, но мне ничего вызвать из клюшек не удалось
Ради получения времени делать дополнительное поле меня останавливает внутреннее чувство. Какое то решение должно быть ) Наиболее частый ответ - вызывай из снеговика клюшки, но мне этот ответ не кажется очевидным. Там при работе по COM есть свои неудобства. Хотя контрагентов и их договоры я именно так в 7-ку пихал

VZ 21.02.2017 14:08

2-USSR > Про EvalExsr напомнить? Про Формат()? Который и в "восьмерке" доступен?

USSR 21.02.2017 14:55

(3)Напомнить всегда полезно, но вот в отладчике пробовал
БазаOLE.Format(Док83.Дата, "ДЛФ=Т"), получил фигу, пишет что неверное выражение. Уж неужели бы я формат не попробовал. Потому и обратился к тем кто реально делал

VZ 21.02.2017 14:59

4-USSR >EvalExsr(<[b]выражение[/b]>)

USSR 21.02.2017 15:44

(5)это незнакомый мне синтаксис,знаю только EvalExpr, но он в контексте клюшек

Ткачик 21.02.2017 16:40

Надеяться, что OLE "научит" 7.7 восьмерочным методам - это полное непонимание механизма OLE.

USSR 21.02.2017 17:04

(8)а по сути что то есть, или только так, на вентилятор ? я и не собирался стать магистром по OLE или COM. Не все же умные уродились

Ткачик 21.02.2017 17:24

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

Поэтому по сути: "на вентилятор" - это именно то, чего заслуживает "говнюк" (с)

USSR 21.02.2017 17:32

(9)тебя сюда звали ?)

VZ 21.02.2017 18:43

6-USSR > Конечно, EvalExpr. Поношенная клавиатура, севшее зрение и ctrl-V способствует ошибкам ;)

"[em]пишет что неверное выражение[/em]" - во! Выражение было принято, проанализировано, и признано неправильным.
Итак:
ДатаВремя = БазаOLE.Format(Док83.Дата, "ДЛФ=Т");
Пусть так, без EvalExpr. Но синтаксис v77 должен быть соблюден. Т.е., "семерошной" команде должен быть известен объект [b]Док83[/b]. И его свойство [b]Дата[/b]. Иначе - "неверное выражение". Это тебе не OLE говорит. И не 1CV8 - "восьмерка" еще ничего не получила.
Вот потому и важно применение EvalExpr() - все, что внутри скобок, отдается серверу OLE, т.е. 1Cv8.
И сервер ОЛЕ будет разбирать содержимое внутри скобок.
И клиент ОЛЕ получит строку, возможно, пустую.

OLE плохо отлаживается. Команды, выполняющиеся через ОЛЕ лучше заранее отрепетировать на стороне сервера: на клиенте ошибок не увидишь.

USSR 22.02.2017 07:40

Короче, немного через известное место, но удалось победить. Для требуемой ссылки на документ 8.3 OLE запросом получаю число секунд от начала дня, а затем уже средствами 7.7 из полученных секунд выражаю время документа ЧЧ:ММ:CC
(VZ)Спасибо за поддержку и за внимание к теме
Буду рад увидеть более компактный и красивый способ. Может при случае сам поищу.


Текущее время: 07:02. Часовой пояс GMT +3.