Жёлтая тетрадь 📒 Блог о разработке в 1С 👨‍💻
1.12K subscribers
42 photos
69 links
В основном небольшие и нерегулярные личные заметки о разработке на платформе 1С:Предприятие.

@builin - по всем вопросам, вакансии и рекламу не размещаю.

Еще один мой канал: @kodbaza (осторожно, там Java)
Download Telegram
Простая работа с JSON в 1C

Два метода, которые любые данные преобразуют в json и прочитают из json (проверено на передаче и чтении типа Структура):

Функция ПолучитьТекстJSON(Данные) Экспорт

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(, Символы.Таб));

ЗаписатьJSON(ЗаписьJSON, Данные);

Возврат ЗаписьJSON.Закрыть();

КонецФункции

Функция ПрочитатьJSONвСтруктуру(Текст) Экспорт

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Текст);

Результат = ПрочитатьJSON(ЧтениеJSON);

ЧтениеJSON.Закрыть();

Возврат Результат;

КонецФункции

@yellow_pad | #интеграция #листинг
Получение измененных и удаленных данных узла плана обмена

К таблицам изменений планов обмена можно строить запросы. И если данные удалить, то в таблице изменений ссылка будет заполнена (<Объект не найден ...>), а в данных этой ссылки не будет (NULL). Пример запроса:
ВЫБРАТЬ
НоменклатураИзменения.Ссылка КАК Ссылка,
НоменклатураИзменения.Ссылка.Ссылка КАК Ссылка1
ИЗ
Справочник.Номенклатура.Изменения КАК НоменклатураИзменения
ГДЕ
НоменклатураИзменения.Узел = &Узел
//И НоменклатураИзменения.Ссылка.Ссылка ЕСТЬ NULL

Результат:
Первый - Первый
<Объект не найден> (92852:832900155d00f10711eb173504f418ec) - <NULL>
Четвертый - Четвертый

@yellow_pad | #ПланОбмена #интеграция #РегистрацияИзменений #запросы
Синхронизация даты и времени при интеграциях

Если обмены привязаны ко времени, а мы не учли при разработке разницу в часовых поясах, может происходить смещение и часть данных может быть "утеряна". Например, мы хотим получить все изменения за "сегодня". Но находимся мы в Хабаровске, и при запросе за [00:00:00-23:59:59] получим данные только с 7:00 местного времени (если сервер работает по МСК).

Самый простой вариант решения проблемы - все даты значений и отборов привести к единому часовому поясу. Платформа начиная с версии 8.2 поддерживает методы преобразования с учетом системного часового пояса. Пример перевода в универсальное время и обратно (UTC), работает и на клиенте и на сервере:

  ДатаВремяСервера = УниверсальноеВремя(ТекущаяДатаСеанса());
ДатаВремяМестное = МестноеВремя(ДатаВремяСервера);

@yellow_pad | #1С #УниверсальноеВремя #Интеграция #ДатаВремя