- Как проверить тип значения документа, справочника?
- Программирование в 1С для всех
- Создаем определяемый тип в 1С
- Использование примитивного типа с общими квалификаторами.
- Использование составного типа
- Определяемые типы в 1С 8.3
- Работа с определяемыми типами
- Определяемый тип программно
- Типы данных в 1С 8.3
- Объектные и необъектные данные
- Ссылка и Объект
- Типы данных
- Типы данных, определенные на уровне платформы
- Типы данных, определенные в конкретном прикладном решении
- Составной тип данных
Как проверить тип значения документа, справочника?
Во-первых, во встроенном языке 1С:Предприятия 8 для работы с одним прикладным объектом реализовано несколько типов. Например, задачи, которые в 1С:Предприятии 7.7 решал тип «Документ» решаются теперь несколькими типами. Они разделены по своему назначению. Тип «ДокументСсылка» используется для хранения ссылок на объект базы данных в реквизитах других объектов. Тип «ДокументОбъект» используется для записи и удаления отдельных документов. Тип «ДокументВыборка» используется для перебора документов, хранящихся в базе данных. Существуют и другие типы данных, предназначенные для работы с документом. При написании модулей используются те типы, которые необходимы для решения конкретных задач.
Во-вторых, в 1С:Предприятии 8 нет двух понятий — «Тип» и «Вид». Для каждого объекта метаданных имеется свой набор типов используемых во встроенном языке для работы с описываемым им прикладным объектом. То есть при использовании конфигурации не будет существовать такого типа как «ДокументСсылка», а будут существовать конкретные типы, например, «ДокументСсылка.Счет», «ДокументОбъект.Счет», «ДокументСсылка.Накладная», и т.д.
Кроме того, в 1С:Предприятии 8 для манипулирования типами используются не их строковые наименования, а специальный тип «Тип». Значение типа Тип может быть получено функцией Тип(), получающей в качестве параметра имя типа.
Чтобы проверить тип значения переменной нужно определить ее тип функцией ТипЗнч() и использовать функцию Тип() для получения типа по имени.
Если ТипЗнч(Основание) = Тип(«ДокументСсылка.ПриходнаяНакладная») Тогда
Источник
Программирование в 1С для всех
В 1С 8.3. имеется объект Определяемые типы, которые позволяет разработчику создать новый тип данных на основе имеющихся типов, как примитивных, так и более сложных типов (ссылочные, объектные и т.п.). В этой статье я расскажу, как создать определяемый тип, и в каких случаях необходимо использовать определяемый тип.
Создаем определяемый тип в 1С
Создадим определяемый тип. Для этого в конфигураторе 1С развернем ветку Общие, в этой ветке нас интересует ветка Определяемые Типы. У данной ветки нужно вызвать контекстное меню с единственной командной Добавить.
После выполнения этой команды, определяемый тип будет создан, а справа откроется палитра свойств этого типа.
В этой палитре свойств мы можем указать название нового типа и определить его тип.
Причем, если мы нажмем на кнопку «…» свойства Тип, то обнаружим, что новый определяемый тип может быть составным…
Мы научились создавать определяемый тип, теперь перейдем к случаям, когда его необходимо использовать.
Использование примитивного типа с общими квалификаторами.
Рассмотрим первую возможность применения определяемого типа. Иногда в конфигурации необходимо массово использовать примитивный тип с одинаковыми квалификаторами. Например, у нас в разных документах есть реквизит цена, который использует тип Число с длинной 10, точностью 2, и еще неотрицательный. В платформе 1С 8.3 мы можем создать определяемый тип с таким примитивным типом.
Теперь мы можем у соответствующего реквизита документа выбрать этот тип.
Замечу, что после этих действий, у реквизита объекта управляемой формы, которая является основной формой документа, будет указан новый определяемый тип.
После создания нового определяемого типа, мы можем у всех объектов, где применяется сущность цена, использовать этот определяемый тип, не заботясь о том, что мы ошибемся с определением квалификатора в каком-то случае.
Использование составного типа
Иногда возникают ситуации, когда в конфигурации необходимо использовать составной тип данных, причем одинаковый состав типов нужно применять в разных объектах метаданных. В этом случае рациональнее создать новый определяемый тип, который будет составным, и который можно применять в нужных объектах.
У этого подхода есть следующие преимущества:
- Вы уверены, что в реквизите, в котором применим составной определяемый тип, используется всегда нужный состав типов, и вы ни чего не забыли.
- При доработке конфигурации, когда вам нужно в состав типа добавить новый тип, то вам достаточно доработать определяемый тип, при этом остальные объекты дорабатывать нет необходимости. И вы будете уверены, что после доработки определяемого типа (добавления нового типа в состав), возможность использовать новый тип появится во всех реквизитах, где указан определимый тип.
Рассмотрим пример использования составного типа в определяемом типе. В моей учебной конфигурации, у документов прихода товара и расхода товара есть реквизит Склад.
В этой конфигурации, товар может поступать (и списываться) как на склад, так и в магазин . А склад и магазин это отдельные справочники.
В этом случае реквизит Склад документов необходимо сделать составным. Можно это сделать вручную для каждого реквизита документа в отдельности, а можно создать новый определяемый тип, который будет составным.
И этот тип, указать в соответствующих реквизитах документов.
После этих действий, при заполнении склада нужного документа, необходимо выбрать сначала нужный тип данных.
А потом уже выбрать нужный элемент справочника
Если же мы добавим новый справочник (например, Автобаза), и укажем его в составе нашего определяемого типа.
То нам не нужно будет изменять реквизиты объектов. Новый тип появится автоматически, и значение этого типа можно будет указать в соответствующем реквизите.
Другие статьи по теме конфигурирования:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Источник
Определяемые типы в 1С 8.3
Работа с определяемыми типами
Определяемый тип предназначен для упрощения процедуры изменения типа данных у каких-либо свойств, например у реквизитов объекта. Например, в конфигурации есть десять документов с реквизитом Ответственный. Тип данного реквизита — СправочникСсылка.Пользователи. Допустим, в конфигурацию добавили новый справочник ВнешниеПользователи. Теперь нужно сделать тип реквизита Ответственный составным, включив в него новый справочник. Для этого придется менять тип у каждого из десяти документов. А таких документов может быть не десять, а сто. Для упрощения этой процедуры можно использовать определяемый тип.
При создании определяемого типа нужно указать его имя и тип. Можно указать составной тип данных:
Для выбора доступно множество различных типов, в том числе примитивные типы, ссылки, объекты, менеджеры, системные перечисления, некоторые универсальные коллекции и т.п.
Теперь данный определяемый тип можно указывать как тип для реквизитов объектов:
Если в дальнейшем нужно будет изменить тип реквизита Ответственный, то достаточно будет добавить новый тип в состав определяемого типа. Тип реквизитов, где был выбран определяемый тип будет изменен автоматически.
Также через определяемый тип можно определять квалификаторы примитивных типов. Например, создать определяемый тип Артикул типа строка и указать для него длину 30.
Если в качестве типа для реквизитов выбирать данный определяемый тип, то гарантируется, что длина везде будет 30 символов.
У определяемого типа есть некоторые ограничения:
- его нельзя использовать как тип значения в плане видов характеристик
- он не может входить в составной тип данных
- не может входить в состав другого определяемого типа
- доступен только начиная с версии платформы 8.3.3
Определяемый тип программно
Чтобы программно указать тип свойства как определяемый тип можно просто создать Описание типов и перечислить все те типы, которые указаны для определяемого типа. Но можно получить готовое описание типов через метаданные:
Источник
Типы данных в 1С 8.3
Объектные и необъектные данные
Все данные в 1С можно поделить на 2 вида:
- Объектные данные
- Необъектные данные
Объектные данные имеют уникальный идентификатор. С помощью данного идентификатора можно обращаться к совокупности всех таблиц объекта как к единому целому.
Примеры объектных данных:
- Справочник
- Документ
- План видов характеристик
- План счетов
- План видов расчета
- План обмена
- Бизнес-процесс
- Задача
Для объектных данных в базе данных создается основная таблица, в которой хранятся все реквизиты объекта, а также по одной таблицы для каждой табличной части. Между собой таблицы связываются по уникальному идентификатору, который хранится в служебном реквизите «Ссылка».
Уникальный идентификатор присваивается при записи объекта в базу данных. Нельзя создать два объекта одного типа с одним идентификатором. Если удалить объект, а потом создать новый с такими же значениями всех реквизитов, это все равно будет другой объект, с новым уникальным идентификатором.
Необъектные данные хранятся как набор записей в таблице. У них нет уникального идентификатора. Если удалить записи из таблицы, а потом создать с таким же значениями, то это будет тот же самый набор записей.
Примеры необъектных данных:
- Константа
- Последовательность
- Регистр сведений
- Регистр накопления
- Регистр бухгалтерии
- Регистр расчета
- Перерасчет
Все записи, кроме константы и независимого регистра сведений должны быть подчинены регистратору. В роли регистратора выступает документ. Набор записей, подчиненный регистратору называется движения документа.
Ссылка и Объект
Ссылка — это внутренний уникальный идентификатор, который хранится в поле «Ссылка» базы данных. Ссылка одного вида справочника (документа или любого другого вида объектных данных) никогда не будет равна ссылке другого вида справочника.
Пустая ссылка — это ссылка, которой не соответствует ни один объект базы данных.
Ссылка доступна только для объектных данных.
В интерфейсе ссылка имеет свое представление, которое можно настроить в конфигураторе. Для справочника это может быть код или наименование:
Объект — это совокупность записей основной таблицы и записей табличных частей. Объект используется для записи в базу данных. Также через объект можно читать данные из базы. Объект доступен только для объектных данных.
Объект можно получить:
- С помощью менеджера объекта методом СоздатьЭлемент или СоздатьДокумент:
Будет создан новый экземпляр программного объекта, которому не соответствует ни один объект базы данных. При записи в базу данных будет создана новая запись.
- Через ссылку с помощью метода ПолучитьОбъект:
- Из выборки методом ПолучитьОбъект. Выборка — это специальный тип данных, который позволяет считывать все данные объекта порциями. Например:
В данном примере на каждой итерации цикла из выборки будет получен очередной объект базы данных.
Для необъектных данных используется Набор записей.
Типы данных
Типы данных, определенные на уровне платформы
- Примитивные типы
- Универсальные коллекции
- Общие типы, например Запрос, ХранилищеЗначения, Файл и т.п.
- Интерфейсные типы — это Форма и ЭлементыФормы.
Типы данных, определенные в конкретном прикладном решении
Это все прикладные типы: справочники, документы, регистры и т.п. На уровне платформы определены основные классы. Каждый класс имеет свою базовую функциональность. Новые объекты наследуют базовую функциональность, а также могут добавлять свою функциональность.
При создании нового объекта конфигурации автоматически создаются новые типы:
- для константы и критерия отбора это только менеджер
- Для журнала документов: менеджер и выборка
- перечисление: менеджер и ссылка
- справочник, документ, план видов характеристик, план счетов, план видов расчета, план обмена, бизнес процесс и задача: менеджер, выборка, ссылка, объект
- отчет и обработка: менеджер и объект
- последовательность и перерасчет: менеджер, набор записей, запись
- регистры сведений, регистры накопления, регистры бухгалтерии, регистры расчета: менеджер, выборка, набор записей, запись, ключ записи.
- константа: КонстантаМенеджерЗначения и КонстантыНабор
- план счетов: ПланСчетовВидыСубконто, ПланСчетовВидыСубконтоСтрока
- план видов расчета: ВедущиеВидыРасчета, ВедущиеВидыРасчетаСтрока, ВытесняющиеВидыРасчета, ВытесняющиеВидыРасчетаСтрока,
БазовыеВидыРасчета, БазовыеВидыРасчетаСтрока - регистр сведений: РегистрСведенийМенеджерЗаписи
- регистр бухгалтерии: РегистрБухгалтерииСубконто
Для примера добавим в конфигурацию два справочника: Номенклатура и Контрагенты. У справочника Номенклатура добавим реквизит Поставщик. В свойствах реквизита при выборе типа, помимо примитивных и общих типов будут доступны два новых типа: СправочникСсылка.Номенклатура и СправочникСсылка.Контрагент:
Составной тип данных
Если в окне выбора типа данных установить флаг «Составной тип данных», то такой реквизит сможет хранить значения нескольких типов данных. Например, установим для реквизита Поставщик галку «Составной тип данных» и укажем 2 типа: СправочникСсылка.Номенклатура и СправочникСсылка.Контрагент.
Теперь в данном реквизите можно будет сохранить как ссылку на номенклатуру, так и ссылку на контрагента.
Тип СправочникСсылка позволяет сохранить в таком реквизите ссылку на любой тип справочника. Если добавить в конфигурацию новый справочник «Физические лица», то при текущей настройки его нельзя будет записывать в реквизит «Поставщик». Однако, если выбрать тип СправочникСсылка, то такой реквизит может хранить ссылку на любой тип справочника, в том числе на те справочники, которые могут быть добавлены в конфигурацию после настройки типа данного реквизита. При запуске конфигурации тип СправочникСсылка преобразуется в составной тип данных, который включает в себя все справочники.
Тип ЛюбаяСсылка позволяет хранить ссылки на любые объектные данные. То есть в одном реквизите можно будет сохранить как ссылку на справочники Контрагенты и Номенклатура, так и на любой вид документов, планов видов характеристик и т.п.
Источник