Жёлтая тетрадь 📒 Блог о разработке в 1С 👨‍💻
1.11K 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 | #интеграция #листинг
Программная доработка форм типовых конфигураций

В типовых конфигурациях в формах ПриСозданииНаСервере вызывается метод общего модуля СобытияФорм (см. скрин 1). Если расширить только этот модуль, то можно в одном модуле собрать все программные модификации форм (см. скрин 2).

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

@yellow_pad | #совет #оснастка #Форма #листинг
Управление кэшем из кода

При использовании общего модуля с повторным использованием приведенная структура вызовов (см. скриншот) позволяет в момент вызова определять, хотим мы использовать кэширование получаемого параметра или нет:
ПолныеПрава.ПолучитьПроизвольныйПараметр("ОсновнойСкладОтгрузки", Истина);

@yellow_pad | #Программист1С #кэш #ОбщийМодуль #листинг
Получение самого верхнего родителя для элемента справочника

Посчитал, что перебирать всех родителей запросом или рекурсией, а тем более выполнять запрос по иерархии, совсем не оптимально.
Идея - выбираем все верхние элементы справочника и для каждого проверяем НашаСсылка.ПринадлежитЭлементу(Выборка.Ссылка)

Пример функции: paste1C

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

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

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

Код: paste1C, fastcode

@yellow_pad | #1С #Код #Листинг #Проведение #Документ
Получение самого верхнего родителя для элемента справочника (вариант)

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

  Строка = Ссылка.ПолныйКод();
Массив = СтрРазделить(Строка, "/");
КодВерхнегоРодителя = Массив[0];
Родитель = Справочники.Номенклатура.НайтиПоКоду(КодВерхнегоРодителя);

@yellow_pad | #1С #Справочник #Иерархия