powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Часовой пояс
10 сообщений из 10, страница 1 из 1
Часовой пояс
    #39515090
Слоник_677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две самописные конфигурации. Из Конф1 создаём COM-соединение с Конф2 и что-то там в Конф2 пишем. В Конф1 пользователей нет (ни одного). В Конф2 есть пользователи. В Конф1 примерно такой код:

авторсообщить(ТекущаяДата());
Файл.ДатаСоздания = ТекущаяДата();
сообщить(Файл.ДатаСоздания);

Вторая строка - это уже в Конф2 пишем. Первая строка действительно выдаёт мне текущую дату. Третья строка тоже показывает текущую дату. Но при этом когда я открываю сохранённый элемент справочника в Конф2, то вижу, что реально сохранилось значение текущей даты плюс три часа. Обе базы файловые, физически живут на одной машине. Откуда он эти +3 часа берёт?

Платформа 8.3
...
Рейтинг: 0 / 0
Часовой пояс
    #39515443
Фотография netfrog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за справочник в котором смещено время?
Посмотрите еще подписки на события.
...
Рейтинг: 0 / 0
Часовой пояс
    #39515690
Слоник_677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netfrog,

Самописный справочник самописной конфигурации. Подписка на события, похоже, не срабатывает при записи по COM-соединению. У меня ПередЗаписью не сработала подписка. Либо это связано не с COM, а с тем, что прописано ОбменДанными.Загрузка = Истина. Может, так и подписки не работают?

Проблема всё ещё актуальна.
...
Рейтинг: 0 / 0
Часовой пояс
    #39515715
Фотография netfrog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дайте больше информации, например код, который пишет в этот справочник.
...
Рейтинг: 0 / 0
Часовой пояс
    #39515734
Слоник_677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netfrog,

Пожалуйста, вот код:

авторСпрПрисоединенныйФайл = Соединение.Справочники.ЗаявкаПрисоединенныеФайлы.СоздатьЭлемент();
СпрПрисоединенныйФайл.ВладелецФайла = СсылкаНаЗаявку;
СпрПрисоединенныйФайл.ДатаСоздания = ТекущаяДата();
СпрПрисоединенныйФайл.ДатаМодификацииУниверсальная = СпрПрисоединенныйФайл.ДатаСоздания;
СпрПрисоединенныйФайл.ИндексКартинки = 42;
СпрПрисоединенныйФайл.Расширение = "jpg";
СпрПрисоединенныйФайл.Описание = "Загружено из мобильного приложения";
СпрПрисоединенныйФайл.ТипХраненияФайла = Соединение.Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
ИмяФайла = ПолучитьИмяВременногоФайла("jpg");
Файл = Новый Файл(ИмяФайла);
ВыборкаФайлы.ДанныеФайла.Получить().Записать(ИмяФайла);
двДанные = Соединение.NewObject("ДвоичныеДанные", ИмяФайла);
СпрПрисоединенныйФайл.Размер = двДанные.Размер();
СпрПрисоединенныйФайл.Наименование = Файл.ИмяБезРасширения;
СпрПрисоединенныйФайл.ОбменДанными.Загрузка = Истина;
СпрПрисоединенныйФайл.Записать();

Всё нормально записывается, только ДатаСоздания получается +3 часа
...
Рейтинг: 0 / 0
Часовой пояс
    #39516131
Фотография netfrog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слоник_677netfrog,

Пожалуйста, вот код:

авторСпрПрисоединенныйФайл = Соединение.Справочники.ЗаявкаПрисоединенныеФайлы.СоздатьЭлемент();
СпрПрисоединенныйФайл.ВладелецФайла = СсылкаНаЗаявку;
СпрПрисоединенныйФайл.ДатаСоздания = ТекущаяДата();
СпрПрисоединенныйФайл.ДатаМодификацииУниверсальная = СпрПрисоединенныйФайл.ДатаСоздания;
СпрПрисоединенныйФайл.ИндексКартинки = 42;
СпрПрисоединенныйФайл.Расширение = "jpg";
СпрПрисоединенныйФайл.Описание = "Загружено из мобильного приложения";
СпрПрисоединенныйФайл.ТипХраненияФайла = Соединение.Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
ИмяФайла = ПолучитьИмяВременногоФайла("jpg");
Файл = Новый Файл(ИмяФайла);
ВыборкаФайлы.ДанныеФайла.Получить().Записать(ИмяФайла);
двДанные = Соединение.NewObject("ДвоичныеДанные", ИмяФайла);
СпрПрисоединенныйФайл.Размер = двДанные.Размер();
СпрПрисоединенныйФайл.Наименование = Файл.ИмяБезРасширения;
СпрПрисоединенныйФайл.ОбменДанными.Загрузка = Истина;
СпрПрисоединенныйФайл.Записать();

Всё нормально записывается, только ДатаСоздания получается +3 часаЯ бы проработал этот код в отладчике и посмотрел бы, какие данные здесь формируются и передаются.
...
Рейтинг: 0 / 0
Часовой пояс
    #39516304
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слоник_677netfrog,

Самописный справочник самописной конфигурации. Подписка на события, похоже, не срабатывает при записи по COM-соединению. У меня ПередЗаписью не сработала подписка. Либо это связано не с COM, а с тем, что прописано ОбменДанными.Загрузка = Истина. Может, так и подписки не работают?

Проблема всё ещё актуальна.Все подписки работают - соединение не играет роли.
...
Рейтинг: 0 / 0
Часовой пояс
    #39517308
Слоник_677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё, нашёл. Нужно писать так:

авторСпрПрисоединенныйФайл.ДатаСоздания = УниверсальноеВремя(ТекущаяДата(), ЧасовойПояс());
И всё хорошо. У меня, по крайней мере, сработало.
...
Рейтинг: 0 / 0
Часовой пояс
    #39517316
Слоник_677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слоник_677,

Только всё равно непонятно почему. ЧасовойПояс() в обоих базах возвращает "Europe/Moscow". Базы файловые, на одой машине. Часовой пояс машины тоже UTC +3. Глюк какой-то.
...
Рейтинг: 0 / 0
Часовой пояс
    #39518666
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТекущаяДата() - используйте ТекущаяДатаСеанса()
ЧасовойПояс() - используйте ЧасовойПоясСеанса()

Слоник_677Только всё равно непонятно почему. ЧасовойПояс() в обоих базах возвращает "Europe/Moscow". Базы файловые, на одой машине. Часовой пояс машины тоже UTC +3. Глюк какой-то.
5.9.3.5. Поясное времяПри работе системы в различных часовых поясах необходимо учитывать эту особенность при получении оперативной отметки времени. Например, когда в единой информационной базе, физически расположенной в одном городе (часовом поясе), ведется учет нескольких удаленных предприятий (например, филиалы холдинга), которые расположены в других городах (и других часовых поясах). В этом случае необходимо, чтобы для каждого филиала выдавалась своя отметка времени.

Для учета часовых поясов существует понятие часового пояса информационной базы и часового пояса сеанса.

Часовой пояс информационной базы определяет часовой пояс, который по умолчанию будет установлен для нового сеанса. При создании информационной базы часовой пояс информационной базы не определен. Однако может быть установлен с помощью метода глобального контекста УстановитьЧасовойПоясИнформационнойБазы(). Информация о часовом поясе информационной базы сохраняется в базе данных и не меняется при операциях загрузки/выгрузки информационной базы. При создании начального образа информационной базы (с помощью механизмов распределенной информационной базы, см. здесь) в создаваемый образ переносится часовой пояс информационной базы, из которой создается образ.

Если часовой пояс информационной базы не задан, то используется часовой пояс компьютера, на котором установлен сервер «1С:Предприятия» (в клиент-серверном варианте), или часовой пояс локального компьютера (в файловом варианте).

Часовой пояс сеанса описывает тот часовой пояс, в котором работает конкретный сеанс. По умолчанию часовой пояс сеанса равен часовому поясу информационной базы.

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

Текущая дата сеанса равна дате компьютера, приведенной к часовому поясу сеанса. Под приведением понимается пересчет местного времени компьютера в поясное время, заданное часовым поясом сеанса. Пересчет выполняется через универсальное координированное время (UTC).

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

Следует помнить, что различные сеансы с одинаковым часовым поясом будут использовать одно и то же время для получения оперативной отметки времени. Таким образом, будет существовать столько несвязанных оперативных отметок времени, сколько уникальных часовых поясов будет установлено в качестве часовых поясов сеансов.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Часовой пояс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]