1с получить время из интернета
(18)
Очень интересное решение!
Спасибо большое!
Завтра же проверю.
(18)<quote>Функция ВремяСети()
шелл = CreateObject("WScript.Shell");
консоль = шелл.Exec("cmd.exe /q /k echo off");
поток = консоль.StdOut;
консоль.StdIn.WriteLine("net time");
консоль.StdIn.WriteLine("exit");
Возврат поток.ReadAll();
КонецФункции</quote>
Красивый вариант, не нужно с файлом заморачиваться.
Но есть маленький недостаток - при таком получении потока нельзя управлять кодировкой. 1С 7.7 не понимает.
Хотя, если нужно только время, цифры то видны.
И первой строкой можно обойтись
(27) simply1, Да, кирилица выходит кашей, но парсить то нужно цифры и латиницу (PM или AM). Функция на vbs вполне это делает и там, кстати, тоже кодировка кирилицы - мрак. Решать в любом случае Вам. Здесь уже вариантов масса.
Не забудьте написать на чем остановитесь, для будущих посетителей топика, так как никто развернутого конечного решения не предложил - Вы первый кто столкнулся с такой проблемой и Ваш опыт будет весьм ценен другим. (18) dusha0020, после отработки скрипта окно 1С становиться не активным.
Как избавиться? + (39)
на мгновение открывается окно консоли, а после закрытия активным становится окно, открытое перед окном 1С (40) simply1, А вот и не знаю:( CMD в любом случае активизирется, а после этого стандартный Shell не может активировать окно 1С. Точнее может, но хитро и по-разному. У меня не взлетел ни один способ. А так у кого какой получается сюдя по форумам. Универсального способа скорее всего нет, а значит (если потеря активации окна 1С критична) лучше искать другой способ или экспериментировать пока не получится.
Скорее всего Windows блокирует где-то возможности wshShell.appActivate, так что от версии винды и нужно плясать.
Почитать можно здесь и здесь .
Вот и время прошло.
Вариант через сайт начал присылать фидбеки:
- msxml3.dll: The system cannot locate the resource specified.
- msxml3.dll: Системная ошибка: -2146697211.
Подключил вариант (18) dusha0020 через vbs. Каждый раз когда сбоит через сайт - запускаю скрипт.
а может лучше синхронизировать время на компьютере, а потом брать текущееВремя()(21) доменным пользователям запрещено категорически. И я полностью с этим согласен.
Надо в групполиси покопаться, чтобы само синхронизировалось быстро и качественно.
Может и впрямь, зачем огород городить?
(21) brunet, Сказано же, правов нет.
Впрочем, кто мешает запускать синхронизацию с DC из планировщика?
И даже более того, раздайте NTP-сервер по DHCP - и будет вам счастье.
(23)да, спасибо!
Синхронизировать винду - вариантов много. (31) Спасибо! Интересный сайт! Хорошо расписано.
Сейчас попробую
Останавливаюсь на Вашем варианте с VBS.
Вчера быстренько набросать свой парсинг из файла - получилось 70 строк кода 1С.
А у Вас - 20!
Логику вижу следующую:
1) При подключении фискального регистратора проверяю доступность контролера домена.
2) Если доступен - получаю время через Ваш код VBS и если разница составляет более 120 секунд (ИХМО, не критическое расхождение), то обновляю время в ФР.
3) Если нет интернета - ничего не делаю.
"=16" в конце веб-ссылки - это киевское время.
Там есть и другие города
глИнформация() - пишет в лог 1С и при наличии ошибок - отправляет мне на е-маил.
Inkognito --> InkognitoНеобходимо получить реальную дату-время (ТекущаяДата() покажет некорректное значение, если оно некорректно установлено).
Может есть какая-то возможность получить значение, обратившись в Интернет?
На локальном компьютере пользователя дату могут перекрутить.
На локальном компьютере пользователя дату могут перекрутить.
Ограничение прав подразумевает не только ограничение в 1С. Иначе от Формат:С ничего не спасет.
Если вызывать ТекущаяДата() в серверном модуле, то она вернет время сервера. Ну а на сервере не должен кто попало иметь возможность менять время.
Inkognito --> InkognitoVofka @ Сегодня, 13:25 ,
Обработка внешняя, ею могут пользоваться на разных ПК, даже там где ничего не знают о сущевствовании серверов.
Нужна именно возможность знать реальное время, не смотря на то, каким оно установлена на ПК или сервере.
WEB сервисы (посылаем запрос на сервак, получаем данные)
Petre --> PetreГуглим серверы синхронизации времени, изучаем их API, при открытии обработки делаем запрос по списку, пока не будет получено время.
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Можете посоветовать какой-то из них? Почитал немного, не понял, как просто взять и получить это злосчастное время.
Например, взял [необходимо зарегистрироваться для просмотра ссылки] и [необходимо зарегистрироваться для просмотра ссылки]
Что с ними дальше делать, непонятно. Где там ссылки на API? Не вижу.
Надо искать не NTP-серверы, а web-сервисы, например, [необходимо зарегистрироваться для просмотра ссылки].
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Никогда не доводилось считывать данные из Интернета. Почитал статью: [необходимо зарегистрироваться для просмотра ссылки]
Попробовал сделать так:
//------------------------------------
Вопрос актуален: как получить эту дату из интернета? И нельзя ли обойтись без сохранения во временный файл?
Petre --> PetreДеноминация 2016 в 1С 0
Чтобы провести деноминацию в 1С на 1 июля 2016 года, нужно учесть, что желательно учет вести в двух суммовых измерениях в белорусских рублях старого и нового образца. Однако, даже если Вы решите упростить задачу и проведете деноминацию в программе в Как в периодическом независимом регистре сведений удалить все записи по валютам с наименованиями? 0
Как в периодическом независимом регистре сведений «КурсыВалют» удалить все записи по валютам с наименованиями «EUR» и «USD», период которых меньше 01 января 2005 года? Сначала получим таблицу записей, которые необходимо оставить. Поскольку условий Как поменять период у записей периодического независимого регистра, соответствующих ряду условий? 0
В периодическом независимом регистре сведений ОтветственныеЛицаОрганизации все записи, касающиеся организации с наименованием Групп-трейдинг, период которых меньше 01 января 2005 года, необходимо перенести на 01 января 2004 года. Но записи с указани Как указать нужную,конкретную дату? 5
Значения данного типа содержит дату григорианского календаря (с 01 января 0001 года) и время с точностью до секунды. Литералы: Строка цифр, заключенная в одинарные кавычки вида: ГГГГММДДччммсс, где: ГГГГ - четыре цифры года (включая тысячелетие Перенумерация документов, справочников 9
Восстановить нумерацию документов или справочников нам поможет специальная обработка «Универсальные подбор и обработка объектов». Эту обработку можно найти на диске ИТС (УниверсальныеПодборИОбработкаОбъектов.epf). Порядок работы с обработкой: Откр Посмотреть все результаты поиска похожих
Еще в этой же категории
Момент Времени и Граница, назначение, примеры использования 38
Момент времени: Фирма 1С описывает так: Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методо Преобразование даты 1С в unixtime (Unix Time Stamp) 17
Как известно, unixtime содержит количество секунд, прошедших с 1 января 1970 года. Поэтому, для преобразования даты 1С в дату unixtime нам всего то нужно от нашей даты отнять дату 01.01.1970 и перевести получившееся значения в удобоваримый формат. Функция месяц прописью 11
// пример от glory01 А = Формат(20020820153309, " ДФ=ММММ" ) // А = " Август" А = Формат(ТекущаяДата(), " ДФ=ММММ" ) // А = " Март" Функция МесяцПрописью(НомерМесяца) Экспорт НомерМесяца=Число(НомерМесяца); Если НомерМесяца = 1 Тогда Воз Как вычислить разницу между двумя датами в месяцах 11
Функция РазницаДатВМесяцах(Дата1, Дата2) Экспорт ДатаНач = ?(Дата1 Дата2, Дата1, Дата2); ДатаКон = ?(Дата1 Дата2, Дата2, Дата1); Годы = Год( датаКон ) - Год( датаНач ); Месяцы = Месяц( датаКон ) - Месяц( датаНач ); Разность = месяцы + Как вычислить разницу между двумя датами в часах и минутах 10
Функция РазностьВремени(Время1, Время2); Разность = Время1 - Время2; Если Разность 0 Тогда Часов = Цел(Разность / 3600); Минут = Цел((Разность - Часов * 3600) / 60); Возврат Дата(1, 1, 1, Часов, Минут, 0); Иначе Возврат Дата(1,1,1,0,0,0); Посмотреть все в категории Работа с Датами (Временем)
Читайте также: