1с получить время сервера

Обновлено: 07.07.2024

Особенности использования системной даты компьютера при оперативном проведении документов

Оперативное проведение подразумевает проведение в текущей дате. Проведение предыдущей и последующей датой, не может быть оперативным. Поэтому в оперативном проведении используется текущая системная дата.

Так как оперативное проведение призвано отражать события, происходящие в жизни предприятия в реальном времени, то оно включает механизм, обеспечивающий расстановку документов в порядке их проведения. Это позволяет обеспечить в информационной базе расположение документов в той последовательности, в которой реально происходили события.

В ходе оперативного проведения система изменяет время документа таким образом, чтобы очередной документ, проводимый в оперативном режиме, имел бы момент времени более поздний чем, у предыдущего оперативно проведенного документа. Для этого используется понятие оперативной отметки времени. Оперативная отметка получается системой автоматически при оперативном проведении, но может быть получена во встроенном языке в явном виде с помощью метода ПолучитьОперативнуюОтметкуВремени () .

Все пользователи обращаются к единому механизму оперативной отметки времени, а механизм выдает каждому пользователю очередную отметку. Механизм получения оперативной отметки времени обеспечивает получение даты, большей, чем предыдущая отметка, полученная этим или другим пользователем в данном сеансе работы. В этом случае под сеансом работы понимается не работа одного пользователя, а работа всех пользователей, от момента входа первого пользователя в систему, до выхода последнего.

В качестве оперативной отметки система, как правило, возвращает текущее время (текущую дату и текущее время). Однако если текущее время больше или равно последней выданной какому-либо пользователю отметке, то возвращается значение на секунду большее, чем значение последней выданной отметки. Таким образом обеспечивается получение при каждом обращении значения по возможности соответствующего текущему времени, но в обязательном порядке большего, чем предыдущее полученное значение.

Изменение даты документа при оперативном проведении влияет на время в пределах дня, но не изменяет день. Это объясняется тем, что время документа используется, в основном, для обеспечения правильного порядка документов в пределах дня, а день имеет существенное влияние на отражение документа в учетных механизмах, например, влияет на налогообложение по конкретной хозяйственной операции. Поэтому время документа в пределах дня система изменяет автоматически, а день может изменить только пользователь.

В файловом варианте в качестве исходного значения для получения оперативной отметки используется текущее время компьютера пользователя, который обратился за получением оперативной отметки. Полученное значение сверяется с последним выданным значением, хранимым в служебном файле в каталоге информационной базы, и если оно меньше или равно сохраненному значению, то сохраненное значение увеличивается на секунду и выдается в качестве оперативной отметки.

В клиент-серверном варианте в качестве исходного значения для получения оперативной отметки используется системное время компьютера, на котором работает сервер 1С:Предприятия, а последнее выдаваемое значение сохраняется в памяти сервера.

Из описанных особенностей реализации механизма оперативной отметки времени следует, что для корректной работы оперативного проведения необходимо обеспечить правильную установку системного времени на компьютерах пользователей.

Для исправления этой ситуации необходимо завершить работу всех пользователей с этой информационной базой, включая режим запуска Конфигуратор. При этом запомненное значение оперативной отметки будет стерто, и очередная отметка будет получена при следующем обращении.

Распечатать

Как заполнить табличную часть формы программно?  6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной  18
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 1C и Google Maps  20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server  20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П 1C: Enterprise Development Tools  50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Посмотреть все результаты поиска похожих

Еще в этой же категории

Момент Времени и Граница, назначение, примеры использования  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); Посмотреть все в категории Работа с Датами (Временем)

Распечатать

Как заполнить табличную часть формы программно?  6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной  18
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и rphost занимает память и грузит процессор  19
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и что делат Ввод по строке - поиск по первым символам или в любом месте наименования  6
При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования! В 1С 8.3 по умолчанию настройки справочника номенклатуры такие: При такой настройке, механизм поиска в Вывод в поле Наименование справочника Штатное список значений из справочника Подразделения?  0
Есть два справочника Штатное и Подразделения. В справочнике Штатное есть автоматически генерируемое поле Наименование. Как программно сделать так чтобы в поле Наименование справочника Штатное выводились списком значений из поля Наименование справочн Посмотреть все результаты поиска похожих

Еще в этой же категории

Разница между датами в рабочих днях, подсчет рабочих дней в 1С  5
Разрабатывая некий функционал в 1С, бывает, необходимо посчитать количество рабочих дней после какой-то даты. В этой статье примеры кода и запросы в которых считается количество рабочих дней: Код, при вычислении определяет только по дню недели, ви Как посчитать разницу между двумя датами?  5
Код уникален и сработает везде. Функция ПолучитьКоличествоДней() Счетчик = 1; НачалоПериода = Объект.НачалоПериода; Пока НачалоПериода Объект.КонецПериода Цикл Счетчик = Счетчик + 1; Как получить день недели прописью?  4
При разработке часто пользователю хочется видеть на форме день недели словом, например: Вторник , Среда и т.д. Собственно как получить день недели словом? Через функцию формат: ДеньПрописью = Формат(ТекущаяДата(), "ДФ=дддд"); Еще вариант для кра Как получить количество рабочих дней в месяце по календарю?  1
Для одного проекта потребовалось получить количество рабочих дней в месяце по календарю, без учета праздников. В результате получилась простая функция: Функция ПолучитьКолВоРабочихДнейПоКалендарю(ДатаМесяца) Рабочие=0; Кон=НачалоМесяца(ДатаМес Подсчет реального количества месяцев между датами, включая начало и конец месяца  0
В одном проекте понадобилось подсчитывать полное количество месяцев между датами, Допустим надо получить кол-во месяцев между датами 25.10.14 и 21.11.14 Функция РазницаДатВМесяцах ( Как вычислить разницу между двумя датами в месяцах ) вернет Посмотреть все в категории Работа с Датами (Временем)


Сначала файл помещается во временное хранилище и получается его адрес. Адрес передается на сервер. На сервере файл получается из временного хранилища и записывается на диск компьютера сервера:

ПослеПомещения = Новый ОписаниеОповещения ( "ПослеПомещения" , ЭтотОбъект ) ; НачатьПомещениеФайлаНаСервер ( ПослеПомещения , , , , ПутьКФайлу ) ; Процедура ПослеПомещения ( ОписаниеПомещенногоФайла , ДопПараметры ) Экспорт Расширение = ОписаниеПомещенногоФайла . СсылкаНаФайл . Файл . Расширение ;

Первый параметр процедуры из описания оповещения имеет тип ОписаниеПомещенногоФайла. Данный объект имеет 3 свойства:

В результате через параметр Адрес можно получить файл из временного хранилища. А через параметр СсылкаНаФайл.Файл можно получить всю необходимую информацию о файле.

По умолчанию файл будет удален из временного хранилища после окончания серверного вызова. Однако, если последним параметром указать уникальный идентификатор формы, то файл будет удален только после закрытия этой формы:

НачатьПомещениеФайлаНаСервер ( ПослеПомещения , , , , ПутьКФайлу , УникальныйИдентификатор ) ;

Если до помещения файла в хранилище известен адрес во временном хранилище, куда нужно поместить файл, то его можно указать четвертым параметром:

НачатьПомещениеФайлаНаСервер ( ПослеПомещения , , , Адрес , ПутьКФайлу ) ;

Проверка файла до помещения во временное хранилище

Если до помещения файла во временное хранилище нужно выполнить какие-то проверки, то это можно сделать в специальной процедуре, выполняемой до помещения файла во временное хранилище. Имя этой процедуры нужно указать в описании оповещения, которое указывается третьим параметром в методе НачатьПомещениеФайлаНаСервер:

ПослеПомещения = Новый ОписаниеОповещения ( "ПослеПомещения" , ЭтотОбъект ) ; ПередПомещением = Новый ОписаниеОповещения ( "ПередПомещением" , ЭтотОбъект ) ; НачатьПомещениеФайлаНаСервер ( ПослеПомещения , , ПередПомещением , , ПутьКФайлу ) ;

У данной процедуры должно быть 3 параметра:

Например, можно проверить размер файла и если он слишком большой, то отказаться от помещения во временное хранилище:

ПослеПомещения = Новый ОписаниеОповещения ( "ПослеПомещения" , ЭтотОбъект ) ; ПередПомещением = Новый ОписаниеОповещения ( "ПередПомещением" , ЭтотОбъект ) ; НачатьПомещениеФайлаНаСервер ( ПослеПомещения , , ПередПомещением , , ПутьКФайлу ) ; Процедура ПередПомещением ( ПомещаемыйФайл , ОтказОтПомещенияФайла , ДопПараметры ) Экспорт

Помещение файла во временное хранилище с диалогом выбора

Можно предоставить пользователю самому выбрать файл, который нужно поместить во временное хранилище. В этом случае сначала будет открыт диалог выбора файла, пользователь выберет файл и данный файл будет помещен во временное хранилище.

Для открытия диалога выбора файла нужно пятым параметром вместо пути к файлу указать объект ПараметрыДиалогаПомещенияФайлов. Данный объект схож с объектом ДиалогВыбораФайла, но имеет только 4 свойства:

  • Заголовок
  • МножественныйВыбор
  • Фильтр
  • ИндексФильтра
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов ; ПослеПомещения = Новый ОписаниеОповещения ( "ПослеПомещения" , ЭтотОбъект ) ; НачатьПомещениеФайлаНаСервер ( ПослеПомещения , , , , ПараметрыДиалога ) ; Процедура ПослеПомещения ( ОписаниеПомещенногоФайла , ДопПараметры ) Экспорт

В этом случае сначала будет открыто диалоговое окно для выбора файла:


Выбранный файл будет помещен во временное хранилище.

Если пользователь нажмет на кнопку Отмена и откажется от выбора файла, то первый параметр в процедуре, вызываемой после помещения файла во временное хранилище будет равен Неопределено.

Если использовалась процедура, вызываемая до помещения файла во временное хранилище, то она будет вызвана после того как пользователь выберет файл.

Можно вообще не указывать объект ПараметрыДиалогаПомещенияФайлов, в этом случае все равно будет открыт диалог выбора файла:

ПослеПомещения = Новый ОписаниеОповещения ( "ПослеПомещения" , ЭтотОбъект ) ;

Прогресс помещения файла во временное хранилище

Если файл большой, то он может долго загружаться во временное хранилище. В этом случае неплохо было бы показать пользователя прогресс помещения файла во временное хранилище. Для этого в метод НачатьПомещениеФайлаНаСервер вторым параметром можно передать описание оповещения с именем процедуры, которая будет периодически вызываться в процессе помещения файла во временное хранилище. У данной процедуры должно быть 4 параметра:

ПослеПомещения = Новый ОписаниеОповещения ( "ПослеПомещения" , ЭтотОбъект ) ; ХодВыполнения = Новый ОписаниеОповещения ( "ХодВыполнения" , ЭтотОбъект ) ; НачатьПомещениеФайлаНаСервер ( ПослеПомещения , ХодВыполнения , , , ПутьКФайлу ) ; Процедура ХодВыполнения ( ПомещаемыйФайл , Помещено , ОтказОтПомещенияФайла , ДопПараметры ) Экспорт Процедура ПослеПомещения ( ОписаниеПомещенногоФайла , ДопПараметры ) Экспорт

В результате в процессе помещения файла во временное хранилище будет показано окно состояния с прогрессом:


Количество вызовов процедуры ХодВыполнения не определено. Для маленького файла это может быть только 1 раз, для большого даже больше 100.

Если в этой процедуре присвоить параметру ОтказОтПомещенияФайла = Истина, то в процедуре, которая будет вызвана после помещения файла у первого параметра свойство ПомещениеФайлаОтменено тоже будет равно Истина и файл не будет помещен во временное хранилище:

ПослеПомещения = Новый ОписаниеОповещения ( "ПослеПомещения" , ЭтотОбъект ) ; ХодВыполнения = Новый ОписаниеОповещения ( "ХодВыполнения" , ЭтотОбъект ) ; НачатьПомещениеФайлаНаСервер ( ПослеПомещения , ХодВыполнения , , , ПутьКФайлу ) ; Процедура ХодВыполнения ( ПомещаемыйФайл , Помещено , ОтказОтПомещенияФайла , ДопПараметры ) Экспорт Процедура ПослеПомещения ( ОписаниеПомещенногоФайла , ДопПараметры ) Экспорт Сообщить ( ОписаниеПомещенногоФайла . ПомещениеФайлаОтменено ) ; //Истина

Асинхронный метод через обещание

Есть аналогичный метод ПоместитьФайлНаСерверАсинх. Данный метод тоже является асинхронным, но вместо описания оповещения использует обещание.

Параметры данного метода полностью совпадают с параметрами метода НачатьПомещениеФайлаНаСервер, только здесь не используется первый параметр с описанием оповещения с именем процедуры, которая вызывается после помещения файла во временное хранилище. Вместо этого обещание возвращает объект ОписаниеПомещенногоФайла (или Неопределено, если использовался диалог выбора и пользователь отказался от выбора файла):

Обещание = ПоместитьФайлНаСерверАсинх ( , , , ПутьКФайлу ) ; Расширение = ОписаниеПомещенногоФайла . СсылкаНаФайл . Расширение ;

Помещение во временное хранилище нескольких файлов

Параметры данного метода схожи с параметрами метода НачатьПомещениеФайлаНаСервер, только там где был один файл или объект, здесь будет массив файлов/объектов.

Вместо пути к файлу нужно передать массив объектов ОписаниеПередаваемогоФайла. Данный объект имеет 2 свойства:

ПослеПомещения = Новый ОписаниеОповещения ( "ПослеПомещения" , ЭтотОбъект ) ; НачатьПомещениеФайловНаСервер ( ПослеПомещения , , , ПомещаемыеФайлы , УникальныйИдентификатор ) ; Процедура ПослеПомещения ( ПомещенныеФайлы , ДопПараметры ) Экспорт Расширение = ОписаниеФайла . СсылкаНаФайл . Файл . Расширение ;

В данном примере последним параметром был указан уникальный идентификатор формы. Если его не указать, то второй файл не будет записан на сервер. Дело в том, что в данном примере вызов сервера происходит дважды: сначала для первого файла, потом для второго. Если не указан уникальный идентификатор формы, то файл будет удален из временного хранилища после окончания серверного вызова, то есть после записи первого файла. А при втором вызове сервера, для записи второго файла, временное хранилище уже будет пустым.

Поэтому нужно или указывать уникальный идентификатор формы в методе НачатьПомещениеФайловНаСервер или записывать все файлы на сервер за один серверный вызов.

Процедура, которая вызывается до помещения файлов во временное хранилище ничем не отличается от метода НачатьПомещениеФайлаНаСервер. Только в данном случае первым параметром будет не объект СсылкаНаФайл, а массив объектов СсылкаНаФайл, по одному для каждого файла. Второй параметр отменяет помещение во временное хранилище не одного файла, а сразу всех файлов:

Читайте также: