Сообщения

Показаны сообщения с ярлыком "объект"

Сериализация объектов в XML

СКД. Программное чтение/запись СКД в/из XML. Наверняка, каждый начинающий программист сталкивался с заданием выгрузки объектов в XML, но из-за плохого знания механизмов платформы 1С, выполнял задание в лоб. Алгоритм выгрузки заключался в написании кода по записи значения каждого реквизита в XML-файл. Наиболее простой способ выгрузки объектов в XML - воспользоваться глобальным методом ЗаписатьXML() , который предназначен для сериализации объектов/значений в формат XML. Функция ПолучитьXML(Значение) ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписатьXML(ЗаписьXML, Значение); Возврат ЗаписьXML.Закрыть(); КонецФункции Важно! Значения не всех типов могут быть записаны в формате XML данным методом. В XML могут быть записаны значения следующих типов: Неопределено, Null, Булево, Число, Строка, Дата, Тип, УникальныйИдентификатор, ДвоичныеДанные, ХранилищеЗначения, ОписаниеТипов, а также ссылки объектов данных и сами объекты данных, наборы записей регистров, менед...

Инициализация реквизитов при создании нового объекта

Один из методов упрощения работы пользователя - это заполнение реквизитов нового объекта (элемент справочник, документ) значениями по умолчанию. Реализовать заполнение реквизитов можно двумя способами: в обработчике события формы элемента - ПриСозданииНаСервере; в обработчике события объекта - ОбработкаЗаполнения. Первый способ не рекомендуется использовать, но все-равно его рассмотрим. Создадим в модуле формы обработчик события ПриСозданииНаСервере. В обработчике проверим факт создания нового объекта, если объект новый, то произведем заполнение реквизитов. &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Если ссылка у объекта пустая, значит он еще не записан, // а следовательно он является новым объектом. ЭтоНовыйОбъект = Объект.Ссылка.Пустая(); // Если объект новый, то выполняем заполнение реквизитов. Если ЭтоНовыйОбъект Тогда Объект.Ответственный = Пользователи.ТекущийПользователь(); Объект.Комментарий = "Документ созда...

Фиксируйся транзакция большая и маленькая!

Платформа 1С не поддерживает вложенные транзакции, но разработчик может использовать вложенность транзакций при написании кода. По факту будет существовать только один уровень транзакций. Такое поведение платформы накладывает ограничение: не существует возможности отменить действие транзакции некоторого уровня, не отменяя транзакции вышестоящего уровня. В рамках уже выполняемой транзакции можно обращаться к методам: НачатьТранзакцию(); ЗафиксироватьТранзакцию(); ОтменитьТранзакцию(). Вызов метода НачатьТранзакцию() при выполняемой транзакции не окажет никакого влияния на работу системы, просто произойдет увеличение значения счетчика транзакций на 1. Данный метод начинает новую транзакцию только в том случае, если значение счетчика транзакций равно 0.

Грамотно назначаем типы реквизитам объектов метаданных конфигурации

Создавая новый реквизит, каждый раз ломал голову, какой разрядности задать числовой тип, какую выбрать длину строки и т.п. К счастью, были найдены рекомендации фирмы 1С, описывающие, какие значения необходимо задавать для реквизитов объектов конфигурации. Числовой тип Реквизиты Флаг - тип данных Булево ; Реквизиты Сумма - длина 15 , точность 2 ; Реквизиты Количество - длина 15 , точность 3 ; Реквизиты Коэффициент  - длина 10 , точность 3 ; Реквизиты Курс - длина 10 , точность 4 ; Реквизиты Процент - длина 5 , точность 2 .