|
из 7.7 в 8.2 через ole Дату и Время документа | ☑ | ||
---|---|---|---|---|
0
ЧессМастер
01.08.12
✎
17:01
|
Всем доброе время суток !
Делаю перенос из 7.7 в 8.2 через ole перенос документов. Все работает документы отлично заполняются записываются и проводятся. Но хочу записывать документы в 8.2 с временем 7.7. Как это сделать ? В 7.7 я могу присвоить создаваемому документу Дату но она будет без времени (время установится 00:00:00) А присвоить Дату через конструкцию Дата(Год,Месяц,День,Час,Минута,Секунда) не получается - работа же идет в 77 Как решить эту проблему ? |
|||
1
DrShad
01.08.12
✎
17:04
|
что-то ты гонишь в клюшках у документов тоже есть время
|
|||
2
Азат
01.08.12
✎
17:05
|
КГ/АМ!
Док.ПолучитьВремя(ЧЧ, ММ, СС); |
|||
3
ЧессМастер
01.08.12
✎
17:05
|
(1) в 7.7 Время и Дата отдельно
а мне надо установить Дату создаваемого документа v8 |
|||
4
ЧессМастер
01.08.12
✎
17:06
|
(2) дальше что ? время я получил
мне надо УСТАНОВИТЬ время создаваемому документу v8 находясь в 7.7 |
|||
5
viktor_vv
01.08.12
✎
17:06
|
Я так понял ты к восьмерке цепляешься из семерки и надо по ОЛЕ время в восьмерке установить.
|
|||
6
DrShad
01.08.12
✎
17:06
|
ну и что в снеговике конструкция Дата(2012, 1, 1, 1, 1, 1) что сделает?
|
|||
7
hhhh
01.08.12
✎
17:07
|
(3) ну делайте конструкцию Дата() в 8.2. Зачем вы ее в 7.7 делаете?
|
|||
8
DrShad
01.08.12
✎
17:07
|
(4) у тебя изначально неверный подход к реализации задачи, нужно было из 8-ки цепляться к клюшкам
|
|||
9
Попытка1С
01.08.12
✎
17:08
|
http://infostart.ru/public/83859/
Проблема времени из 7.7 (не можем передать) Добавляем в нашу базу регистр накопления и документ регистратор и пишем в 7.7 простую функцию, формирующую движения данного документа Функция ТипаПереносОстатков() Попытка ОткрытиеБазы("V81.ComConnector"); Исключение Сообщить("Не удалось открыть базу с заданными параметрами"); Возврат ""; КонецПопытки; Стр=""; Если ВвестиСтроку(Стр,"Справочник",50)=1 Тогда Спр=connection.Справочники.Справочник1.НайтиПоНаименованию(Стр); Если Спр.Ссылка=connection.Справочники.Справочник1.ПустаяСсылка() Тогда Спр=connection.Справочники.Справочник1.СоздатьЭлемент(); Спр.Наименование=Стр; Спр.Записать(); КонецЕсли; Док=connection.Документы.Документ1.СоздатьДокумент(); Док.Дата=connection.ЗначениеИзСтрокиВнутр("{""D"",20081231235959}"); Док.Реквизит1=Спр.Ссылка; Док.Записать(); Движение=Док.Движения.РегистрНакопления1.ДобавитьПриход(); Движение.Период=connection.ЗначениеИзСтрокиВнутр("{""D"",20081231235959}"); Движение.Измерение1=Спр.Ссылка; Движение.Ресурс1=15; Док.Движения.РегистрНакопления1.Записать(); Сообщить(connection.String(Док.Ссылка)); КонецЕсли; connection = ""; cntr = ""; КонецФункции Рассмотрим лог сообщений Документ1 000000001 от 31.12.2008 0:00:00 Вывод из этого лога прост. Время даже при передаче через ЗначениеИзСтрокиВнутр теряется. |
|||
10
viktor_vv
01.08.12
✎
17:11
|
(4) Мне кажется тебе надо выполнить
ДатаДокВосьмерки = ОлеОбъектВосьмерки.Дата(Год,Месяц,День,Час,Минута,Секунда) ; |
|||
11
olegves
02.08.12
✎
09:47
|
(0) в клюшках время записано в Журнале документов (таблица _1SJOurn) в 36-ричном формате(секунд с 0 часов текущих суток). Поищи функции преобразования 36-ричного в 10-чное (есть даже на скуле, кот можно дергать ОЛЕй), ну а дальше сообразишь
|
|||
12
olegves
02.08.12
✎
09:50
|
(3) а СОМ-коннектор религия не позволяет использовать? Из клюшек спокойно можно подключиться к 8.2
|
|||
13
ЧессМастер
02.08.12
✎
12:11
|
(5) правильно понимаешь. ИЗ 7.7 В 8.2 по OLE
(6) в 7.7 нет конструкции Дата(2012, 1, 1, 1, 1, 1). Есть конструкция Дата(2012, 1, 1) (8) а разница ? у меня ИЗ 7.7 В 8.2 по OLE все отлично получается - документы заполняются записываются и проводятся (10) >ДатаДокВосьмерки = ОлеОбъектВосьмерки.Дата(Год,Месяц,День,Час,Минута,Секунда); так не работает (11) у меня перенос ИЗ 7.7 В 8.2 по OLE зачем мне находясь в 7.7 лезть в таблицу _1SJOurn если я могу использовать конструкцию ПолучитьВремя() |
|||
14
ЧессМастер
02.08.12
✎
12:12
|
(12) а разница ? у меня ИЗ 7.7 В 8.2 по OLE все отлично получается - документы заполняются записываются и проводятся
|
|||
15
ЧессМастер
02.08.12
✎
12:16
|
(10) у меня импорт ИЗ 7.7 В 8.2
соответственно я могу написать ДокВосьмерки.Дата = ДокСемерки.ДатаДок; или ДокВосьмерки.Дата = Дата(2012,08,02); но не ДокВосьмерки.Дата = Дата(2012,08,02,01,01,01); |
|||
16
DrShad
02.08.12
✎
12:24
|
(15) а как именно не работает (10)?
|
|||
17
viktor_vv
02.08.12
✎
12:31
|
(16)+ Кстати да, ты под ОлеОбъектВосьмерки что понял ? Я имел ввиду саму базу, а не документ. По идее тогда метод будет выполняться в контексте восьмерки.
|
|||
18
viktor_vv
02.08.12
✎
13:00
|
(17)+ Не так не работает, как я думал. Поле агрегатного объекта не обнаружено.
|
|||
19
viktor_vv
02.08.12
✎
13:44
|
Это таки надо как в (9) но время все равно теряется.
|
|||
20
DrShad
02.08.12
✎
13:47
|
(19) а не лучше ли делать как нормальные люди, т.е. из 8-ки конектиться к клюшкам и тянуть доки?
|
|||
21
viktor_vv
02.08.12
✎
14:10
|
(20) Так это не ко мне :), я в принципе только за, это ТС упирается :).
Я встрял чисто для себя поразбираться. |
|||
22
DrShad
02.08.12
✎
14:11
|
(21) а мне было влом писать конект из клюшек к снеговику :)
|
|||
23
viktor_vv
02.08.12
✎
14:22
|
Кстати прикол, оказывается все намного проще. Неявное преобразование рулит :).
ДокВосьмерки.Дата = ""+ДокСемерки.ДатаДок + " "+ДокСемерки.ПолучитьВремя(); Это все в семерке. Вроде даже работает :). |
|||
24
viktor_vv
02.08.12
✎
14:29
|
Проверял так. Док записывается, время есть из клюшек. фадДок - это реквизит на форме.
ладДок = СоздатьОбъект("Документ.РасходнаяНакладная"); ладДок.НайтиДокумент(фадДок); v8=СоздатьОбъект("V82.ComConnector"); База = v8.Connect("File="""+СокрЛП(КаталогБазы)+""";Usr=""ОЛЕ"";Pwd=""12345"";"); Док8=База.Документы.Проверка.СоздатьДокумент(); //"13.06.2012 00:00:00" ; Док8.Дата = ""+фадДок.ДатаДок+" "+ладДок.ПолучитьВремя() ; Док8.Записать(); |
|||
25
viktor_vv
02.08.12
✎
14:34
|
(24)+ Для верности лучше так, а то неизвестно какой формат в настройках будет стоять.
Док8.Дата = ""+Формат(фадДок.ДатаДок,"ДДДММГГГГ")+" "+ладДок.ПолучитьВремя() ; |
|||
26
Torquader
03.08.12
✎
00:21
|
Можно создать прослойку из объекта MSScriptControl и в нём уже использовать стандартную OLE-дату, которая со временем.
|
|||
27
ЧессМастер
06.08.12
✎
09:41
|
(20) у меня сейчас так бизнес-процесс устроен. не хочется ломать
(25) да так работает отлично. спасибо за подсказку ! |
|||
28
ЧессМастер
06.08.12
✎
16:33
|
еще один вопрос
встал вопрос сверки табличных частей документов 7.7 и 8.2 по OLE выгрузить в таблицу значений табличную часть по OLE не сложно. проблема в том что в 7.7 и 8.2 разные методы языка по работе с таблицей значений и поэтому как сравнивать таблицы ? например ТЗ77 = СоздатьОбъект("ТаблицаЗначений"); Док77.ВыгрузитьТабличнуюЧасть(ТЗ77); ТЗ82 = Док77.Товары.Выгрузить(); Для х=1 По ТЗ77.КоличествоСтрок() Цикл ТекНом77 = ТЗ77.ПолучитьЗначение(х,"Материал"); // и вот тут самое интересное - такая конструкция не работает ТекНом77 = ТЗ82[х-1].Номенклатура; КонецЦикла; конструкция Для Каждого СтрокаТаблицы Из ТЗ82 Цикл Сообщить(СтрокаТаблицы.Номенклатура); КонецЦикла выполняемая в среде 77 тоже не сработает. в результате я сделал обходным путем - передачей текста запроса из 77 в 82 и обработка выборки уже в 77 но интересует ответ - возможно ли как-то сравнивать ТЗ разных версий 1С? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |