Сообщения

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

Для чего свойство "Сохраняемые данные" у реквизита формы

Изображение
Допустим, стоит задача, необходимо в справочнике хранить дорожную карту в виде графической схемы и её описание в виде табличного документа. Для решения этой задачи необходимо создать в справочнике два реквизита с типом ХранилищеЗначений . В форме элемента справочника создать реквизиты с типами ГрафическаяСхема и ТабличныйДокумент . При открытии формы данные из реквизитов объекта загружаются в реквизиты формы, при записи выполняется обратная операция. Теперь давайте разберемся, нужно ли устанавливать для реквизитов формы свойство "Сохраняемые данные" или нет? Для эксперимента создадим два реквизита формы с разным состоянием свойства "Сохраняемые данные" (см. рисунок 1): ДорожнаяКарта - тип ГрафическаяСхема , свойство "Сохраняемые данные" установлено; ОписаниеДорожнойКарты - тип ТабличныйДокумент , свойство "Сохраняемые данные" не установлено. Рисунок 1. Реквизиты формы

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

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

Использование маски на примере плана счетов

Изображение
Одним из важнейших свойств объекта метаданных "План счетов" является   Маска . Данное свойство предназначено для ограничения вводимых пользователем символов в коде элемента (т.е. в счете), а так же для задания иерархической структуры плана счетов. Рисунок 1. Ввод кода для предопределенного счета Что бы ограничить ввод некоторых символов и задать формат для кода счета, необходимо составить маску из специальных символов: ! - любой введенный символ преобразуется в верхний регистр;  9 - допустимо ввести произвольный символ цифры;  # - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;  N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);  U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;  X (латинского алфавита) - допустимо ввести произвольный символ;  ^ - недопустимо вводить этот символ интерактивно пол...

Передача таблицы значений с сервера на клиент

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

Получение старого значения реквизита в момент записи объекта или OLD

Реляционные системы управления базами данных, такие как InterBase или FireBird, в своих триггерах поддерживают контекстные переменный NEW и OLD. Контекстная переменная NEW содержит новые значения записи, а вот переменная OLD содержит старые значения записи, следовательно, при обновлении записи (допустим BEFORE UPDATE) разработчик имеет доступ к записи до её обновления и после. Стоит заметить что переменные OLD и NEW доступны не во всех типах триггера. Платформа 1С так же позволяет разработчику иметь доступ к старым значениям реквизита (до обновления) и одновременно к новым значениям реквизита (после обновления), но при одном условии, разработчик должен использовать события перед записью ! Допустим, у нас имеется справочник Договоры, у которого имеется реквизит ДатаПодписания. Что бы сравнить старое и новое значение реквизита, воспользуемся событием модуля объекта ПередЗаписью. Далее два варианта развития события. 1. Выполнить явный запрос Запрос = Новый Запрос; Запрос.Текст...

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

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