![]() |
77-83 Из 7.7 по OLE делаю сверку документов с БП 3.0. И все бы замечательно, выбираются, сверяются, но не могу сделать маленький "бантик" - получить время документа БП 3.0 из реквизита "Дата" документа бухгалтерии. Вроде простая задача, но как то не выходит. База83.XMLСтрока(Док83.Дата) дает дату и следом нулевое время, хотя время есть. |
И не получишь. Напрямую. "Семерошное" OLE [em]датавремя[/em] не знает. Поступай обычным способом: читай строковое представление. Конечно, в структуре записи должно быть предусмотрено и поле "Время". |
(1)то что клюшки напрямую не знают ДатаВремя это понятно и очевидно. Я думал как то с помощью методов 8.3 выделить это время, но мне ничего вызвать из клюшек не удалось Ради получения времени делать дополнительное поле меня останавливает внутреннее чувство. Какое то решение должно быть ) Наиболее частый ответ - вызывай из снеговика клюшки, но мне этот ответ не кажется очевидным. Там при работе по COM есть свои неудобства. Хотя контрагентов и их договоры я именно так в 7-ку пихал |
2-USSR > Про EvalExsr напомнить? Про Формат()? Который и в "восьмерке" доступен? |
(3)Напомнить всегда полезно, но вот в отладчике пробовал БазаOLE.Format(Док83.Дата, "ДЛФ=Т"), получил фигу, пишет что неверное выражение. Уж неужели бы я формат не попробовал. Потому и обратился к тем кто реально делал |
4-USSR >EvalExsr(<[b]выражение[/b]>) |
(5)это незнакомый мне синтаксис,знаю только EvalExpr, но он в контексте клюшек |
Надеяться, что OLE "научит" 7.7 восьмерочным методам - это полное непонимание механизма OLE. |
(8)а по сути что то есть, или только так, на вентилятор ? я и не собирался стать магистром по OLE или COM. Не все же умные уродились |
Память у меня, конечно, уже не та, что раньше, но и склерозом пока не страдаю, в отличие от некоторых. Поэтому по сути: "на вентилятор" - это именно то, чего заслуживает "говнюк" (с) |
(9)тебя сюда звали ?) |
6-USSR > Конечно, EvalExpr. Поношенная клавиатура, севшее зрение и ctrl-V способствует ошибкам ;) "[em]пишет что неверное выражение[/em]" - во! Выражение было принято, проанализировано, и признано неправильным. Итак: ДатаВремя = БазаOLE.Format(Док83.Дата, "ДЛФ=Т"); Пусть так, без EvalExpr. Но синтаксис v77 должен быть соблюден. Т.е., "семерошной" команде должен быть известен объект [b]Док83[/b]. И его свойство [b]Дата[/b]. Иначе - "неверное выражение". Это тебе не OLE говорит. И не 1CV8 - "восьмерка" еще ничего не получила. Вот потому и важно применение EvalExpr() - все, что внутри скобок, отдается серверу OLE, т.е. 1Cv8. И сервер ОЛЕ будет разбирать содержимое внутри скобок. И клиент ОЛЕ получит строку, возможно, пустую. OLE плохо отлаживается. Команды, выполняющиеся через ОЛЕ лучше заранее отрепетировать на стороне сервера: на клиенте ошибок не увидишь. |
Короче, немного через известное место, но удалось победить. Для требуемой ссылки на документ 8.3 OLE запросом получаю число секунд от начала дня, а затем уже средствами 7.7 из полученных секунд выражаю время документа ЧЧ:ММ:CC (VZ)Спасибо за поддержку и за внимание к теме Буду рад увидеть более компактный и красивый способ. Может при случае сам поищу. |
Текущее время: 07:02. Часовой пояс GMT +3. |