Содержание
Справочники
Описание
Справочники хранят в себе одинаковые по структуре данные. Например, справочник товаров или справочник должностей. Справочники это ссылочный тип данных, на любой элемент справочника можно сослаться, в документах, константах или вообще в каких либо реквизитах.
Структура справочника
Справочник обычно описываются следующим набором данных:
-
Пользовательские реквизиты — при проектировании пользователь определяет какие данные, какого типа будут храниться в справочнике. Например у справочника Банковские счета будут определены реквизиты: номер счета, банк и тд, для справочника контрагенты ИНН, КПП и тд.
-
Предопределенные реквизиты — любой справочник обладает набором предопределенных реквизитов.
-
Табличные части — справочник может любое количество табличных частей.
Предопределенные реквизиты
У каждого справочника есть номер и наименование. В принципе их можно отключить, указав длину 0. Так же код может быть числовым или текстовым, если код текстовый для удобства сортировки система дополняет код лидирующими нулями на всю длину кода, например если у справочника указана длина кода 9 и справочнику был присвоен код 3 то система дополнит нулями до такого вида: «000000003». Также в случае если имеется распределенная база в код обычно добавляется префикс той базы в которой был создан элемент, например: «ЦН0000003». Нужно учитывать эту особенность если вы соберетесь указывать числовой код, этот объект не сможет корректно работать в распределенной базе. У справочника есть и другие предопределенные реквизиты:
-
ЭтоГруппа– Имеет смысл только для иерархических справочников. Указывает на то что элемент является группой. -
Родитель— Имеет смысл только для иерархических справочников. Указывает на группу или элемент который является родителем для этого справочника. -
Владелец– Имеет смысл только для подчиненных справочников. Указывает на владельца данного справочника. -
ПометкаУдаления– атрибут с типом булево, указывает помечен ли элемент на удаление или нет. -
Ссылка– это самый главный атрибут, справочник потому и называется ссылочным типом, потому, что у него есть уникальная ссылка, которая хранится в этом атрибуте. -
Предопределенный– атрибут с типом булево указывает на то, что элемент создан в конфигураторе.
Иерархичность.
Иерархия это способность выводить справочник в виде дерева. Эта возможность бывает очень удобной, в случаях когда в справочнике содержится много информации. В таких случаях бывает полезно разложить номенклатуру «по полочкам». При включении иерархичности у справочника, добавляются два стандартных реквизита ЭтоГруппа и Родитель. Манипулируя значением реквизита Родитель, можно переназначать родителей элемента. Строится иерархия на группах, в эти группы могут входить другие элементы или другие группы. Аналогию можно провести с проводником windows или с большинством файловых систем если вам будет удобно: есть папки в которых могут быть как файлы так и папки в которых в свою очередь тоже могут быть и файлы и папки итд. Иерархия может работать и без групп. То есть родителями могут выступать другие элементы справочника. Такой вид иерархии называется иерархия элементов. Если мы настроили иерархию, у нас появляется возможность настраивать, для какого типа могут использоваться реквизиты, для групп, элементов, или и для того и для другого. Иерархия настраивается на закладке Иерархия свойств справочника.
Подчиненность
Подчиненность это возможность сделать несколько записей одного справочника уникальными для одной записи другого справочника(если вы знакомы с основами реляционных баз даных, это связь, один ко многим ). Например: у одного контрагента, может быть много договоров, но это будут только его договора, у второго контрагента будет свой набор договоров. В этом случае справочник договоры подчинен справочнику контрагенты. Подчинение справочника реализовано предопределенным реквизитом Владелец, следовательно у одной конкретно взятой записи справочника, может быть только один владелец. В то же время у одного справочника может быть несколько владельцев. Владельцами могут быть не только справочники, а также планы обмена, планы видов характеристик, планы счетов, планы видов расчета. Также можно указать вид объекта для подчинения, доступны элементы, группы или и то и другое. Если для справочника определены подчиненные справочники и у элемента справочника не назначена основная форма, то при открытии элемента этого справочника в режиме предприятия, в управляемых формах система автоматически добавит панель для открытия подчиненных справочников с фильтром на поле владелец по текущему элементу. Такое поведение можно настроить и на уже существующих формах. 
Ввод по Строке
При выборе ссылочных данных в 1С есть возможность выбрать элемент справочника или документ, набирая ключевые реквизиты объекта который мы хотим найти, выглядит это следующим образом: пользователь, набирает «масло моторное» в поле ввода с типом «Справочник.Номенклатура» и нажимает ввод. 1С находит все записи которые начинаются с названия со слов «масло моторное» и показывает их в виде выпадающего списка под полем где пользователь вводил текст. Такой же ввод возможен и для документов. Это поведение системы можно настроить на закладке «Формы». Там есть поле Ввод по строке, по умолчанию для справочников указана возможность поиска по коду и наименованию, но туда можно добавить и свои реквизиты, для того, что бы добавить этот реквизит, он должен быть индексирован и реквизит должен быть примитивного типа.
Предопределенные элементы справочников.
Предопределенные элементы справочников определяются в конфигураторе на закладке Прочие. При создании элемента указывается имя и наименование предопределенного элемента. Имя и будет являться идентификатором для обращения к этому предопределенному элементу, поэтому к имени предъявляются такие же требования как и к другим идентификаторам(не может начинаться с числа, нельзя использовать пробелы и тд). Наименование может быть любым, его пользователь и увидит в справочнике и сможет его при желании изменить. Пользователь не может изменить имя который был указано при создании этого элемента, зато он может удалить предопределенный элемент.
Обращение к предопределенным элементам происходит так:
НашаФирма = Справочники.Контрагенты.НашаДочерняяФирма
Таким образом, очень удобно ссылаться на предопределенные элементы из встроенного языка или опираться на них при построении каких то условий. Предопределенные элементы справочников можно использовать в схемах СКД и запросах.
Важно. Контроль за удалением предопределенных элементов лежит на плечах разработчиков, а не платформы.
Для предопределенных элементов справочников, стандартный реквизит Предопределенный имеет значение Истина. Это свойство которое доступно только на чтение, но это не означает, что нельзя «обычный» элемент справочника сделать предопределенным и наоборот. В последних релизах 8.3FIXME(Надо узнать в каких именно), появилась возможность переопределять предопределенные элементы изменяя свойство ИмяПредопределенныхДанных. Например, вот так можно сделать элемент не предопределенным:
ПредОпрЭлемент = Справочники.МойСправочник.НайтиПоКоду("КодЭлемента").ПолучитьОбъект();
ПредОпрЭлемент.ИмяПредопределенныхДанных = “”;
ПредОпрЭлемент.Записать();
И наоборот указав в свойстве ИмяПредопределенныхДанных имя предопределенного элемента справочника, можно сделать его предопределенным. У иерархических справочников возможно указывать предопределенные группы. Предопределенные элементы нельзя создавать у подчиненных справочников. В пользовательском режиме предопределенный элемент отличается, от обычного, следующим образом
Подсказка. Предопределенные элементы часто используют для того, что бы избавиться в коде от конструкций вида: НайтиПоКоду и НайтиПоНаименованию. Использование этих методов считается дурным тоном, так как наименование и код справочника достаточно часто изменяются. Обычно поступают следующим образом: Создают справочник, например Настройки с единственным реквизитом Значение. После этого в конфигураторе добавляют предопределенный элемент с нужным названием а в режиме 1с Предприятие, задают его значение. Теперь вместо того что бы писать в коде:
Нашафирма = Справочники.Организации.НайтиПоНаименованию("ООО Рога и копыта")
или что еще хуже
Нашафирма = Справочники.Организации.НайтиКоду("000112")
Можно просто указать:
Нашафирма = Справочники.Настройки.НашаФирма.Значение
подробнее можно почитать здесь http://infostart.ru/public/275145/
Классы для работы со справочниками.
Все классы справочника можно увидеть в ветке Прикладные объекты –> Справочники.
Cправочники это элементы которые хранятся в базе данных, считается очевидным, что обращение к любому из классов возможно только на сервере.
Справочник менеджер
Справочник менеджер – можно получить с помощью переменных глобального контекста:
Номенклатура = Справочники.Номенклатура;
Этот класс служит для:
-
Поиска по наименованию, коду или другому реквизиту.
Ножницы = Справочники.Номенклатура.НайтиПоНаименованию("Ножницы канцелярские"); -
Программного создания групп или элементов:
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); НовыйЭлемент.Реквизит1 = "КакоеТоЗначение"; НовыйЭлемент.Записать();
-
Делать выборки:
Выборка = Справочники.Номенклатура.Выбрать()
Получать пустые ссылки:
Пусто = Справочники.Номенклатура.ПустаяСсылка();
И много еще разных возможностей которые можно наблюдать в синтаксис помощнике в ветке: Прикладные объекты – >Справочники – СправочникМенеджер.<ИмяСправочника>
Справочник ссылка
Справочник ссылка – самый часто используемый тип. Используется для чтения данных справочника. Его можно получить с помощью НайтиПоНаименованию, НайтиПоКоду и др методов класса СправочникМенеджер. Так же его можно получить с помощь класса Выборка и этот тип данных хранится в реквизите Cсылка объекта класса Справочник объект.
В этом классе нам доступны все реквизиты справочника, табличные части и все стандартные реквизиты. Абсолютно все свойства этого класса нам доступны только на чтение. Для того что бы изменять реквизиты справочника нам нужен класс Справочник Объект. Получить его можно с помощью метода Получить Объект().
Справочник Объект
Класс Справочник Объект отличается от класса Справочник Ссылка не многим, основная его функция обеспечить возможность изменения элемента справочника. Запись происходит с помощью метода Записать()
Справочник Выборка
Справочник Выборка получается с помощью методов Выбрать и Выбрать Иерахически он позволяет обойти элементы справочника в цикле, с помощью метода Следующий().
Популярные приемы работы со справочниками
Поиск по наименованию.
Несмотря на то, что неоднократно рассматривается поиск элемента справочника по наименованию, «зашивать» в код значения из базы данных считается дурным тоном.
Для поиска по наименованию используется функция НайтиПоНаименованию(). Для использования этого метода необходимо указать наименование по которому будет происходить поиск. Если поиск должен проходить по точному соответствию с указанной строкой то вторым параметром, нужно указать Истина, иначе поиск будет проходить по первым буквам указанного шаблона поиска, то есть если в качестве строки для поиска указать «Слон» то под шаблон попадут и «Слон» и «Слон игрушечный» и «Слонопотам». Поиск можно ограничить определенной группой, если справочник иерархический или владельцем, если справочник подчиненный. Если значение не найдено, метод вернет пустую ссылку того типа справочника для которого производился поиск.
Поиск по коду
Для поиска по коду используется функция НайтиПоКоду(). Для использования этого метода необходимо в параметре «Код» указать код, по которому будет производиться поиск. Если в качестве кода указывается полный путь с учетом иерархии (уровни справочника разделяются символом «/»), то второй параметр поиск по полному коду, необходимо установить в Истина. Например:
Номенклатура «Слонопотам» с кодом «001142» находится в папке «Мягкие Игрушки» с кодом «000826» которая находится в папке «Игрушки» с кодом 000375. Тогда можно найти ее с помощью вот такой строки
Слонопотам = Справочники.Номенклатура.НайтиПоКоду("000375/000826/001142", Истина);
Или можно искать сразу:
Слонопотам = Справочники.Номенклатура.НайтиПоКоду("001142");
Поиск можно ограничить определенной группой, если справочник иерархический или владельцем, если справочник подчиненный. Если значение не найдено, метод вернет пустую ссылку того типа справочника для которого производился поиск. Поиск может осуществляться и по реквизиту с помощью одноименного метода, главное условие реквизит должен быть индексирован.
Выборка
Выборка позволяет обходить в цикле элементы справочника.
Для иерарахических справочников доступна выборка по родителю, для подчиненных по владельцу. Для любого вида справочника возможно указать отбор, которому будут соответствовать элементы в выборке и поле по которому выборка будет упорядочена. Работает выборка следующим образом:
Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; КонецЦикла;
При использовании метода Следующий() в классе выборка, текущим устанавливается следующий элемент из текущей выборки. Если в выборка спозиционировалась на определенном элементе, она возвращает Истина, иначе Ложь. Для класса Справочник Выборка доступны все поля и табличные части, которые определены для текущего справочника, а так же есть свойство Ссылка которое позволяет получить ссылку на текущий элемент справочника из выборки.
Для того что бы при выборке учитывалась иерархия справочника, необходимо использовать метод ВыбратьИерархически().
Программное создание элементов справочника
Элементы и группы справочников, можно создавать и не посредственно из программного кода. Для этого используется следующий код:
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемнт(); НовыйЭлемент.Наименование = "ТестоваяНоменклатура"; НовыйЭлемент.ПолноеНаименование = "ТестоваяНоменклатура"; //Заполнение всех остальных элементов НовыйЭлемент.Записать();
Группа справочника создается аналогично с помощью метода СоздатьГруппу()
В том случае, если у справочника установлено свойство Автонумерация код указывать не нужно, он устанавливается автоматически.
Проверка переменной с типом СправочникСсылка на заполненность
Иногда возникает необходимость проверить заполнено ли значение с типом «Справочник.Ссылка». Такая необходимость может возникнуть, когда реквизит какого либо объекта имеет тип «Справочник.Ссылка» или когда вы например ищете элемент справочника по коду или наименованию, или в ряде других случаев, когда метод возвращает пустую ссылку на справочник. Есть несколько способов это сделать:
-
Использовать метод глобального контекста
ЗначениеЗаполнено()который можно применить к любому типу а не только к справочнику. Доступно и на клиенте и на сервере. -
Сравнить c пустой ссылкой менеджера этого справочника. Например:
Если ПроверяемоеЗначение = Справочники.Номенклатура.ПустаяСсылка() Тогда
Только для сервера
-
Использовать метод ‘Пустая()’ доступный на клиенте для объектов класса «Справочник ссылка».
Проверка элемента справочника на вхождение в какую либо группу или подчинение элементу
Когда мы говорим о проверке подчиненности, необходимо понимать, что все методы справедливы не только для групп, но и для элементов, если у справочника установлен вид иерархии «Иерархия элементов».
Здесь возможно несколько вариантов: если у нас есть группа и нам необходимо знать если ли именно в ней и нигде иначе определенный элемент справочника, то можно сравнить предопределенный реквизит Родитель нужного нам элемента справочника с ссылкой на группу, например:
Если КакойтоЭлемент.Родитель = НужнаяГруппа Тогда
Если справочник многоуровневый и нужно знать есть ли элемент в этой группе или где то в подчинненых группах то можно воспользоваться методом «ПринадлежитЭлементу()» этот метод вернет Истина если элемент содержится в текущей или любой подчиненной группе. Например в этом случае

НужнаяГруппа = НайтиПоНаименованию("ГруппаРаз");
Если НашЭлемент.ПринадлежитЭлементу(НужнаяГруппа) Тогда
условие будет истинным.
СправочникСсылка <> СправочникОбъект
При работе со справочниками очень важно понимать, что во всех реквизитах, выборках и тд, мы чаще всего работаем с типом СправочникСсылка и этот тип позволяет получить любую информацию которая находится в его реквизитах, но не поддерживает запись. Для изменения реквизитов справочника и записи следует использовать тип СправочникОбъект. Преобразовать ссылку в объект можно с помощью метода ПолучитьОбъект() Например:
КонтрагентПетров = Справочники.Контрагенты.НайтиПоНаименованию("Петров Иван Сергеевич");
КонтрагентОбъект = КонтрагентПетров.ПолучитьОбъект();
//Здесь идут какие то изменения
КонтрагентОбъект.Записать(); //и непосредственно запись
Проверка на то что ссылка является ссылкой на справочник
Проверить то что справочник является ссылкой можно очень просто, с помощью одной строки:
Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаЭлементСправочника));
Где СсылкаНаЭлементСправочника проверяемая ссылка, эта строка вернет Истина если проверяемая ссылка является ссылкой на какой либо элемент справочника.
Только авторизованные участники могут оставлять комментарии.
Про реквизит Ссылка
Оглавление
- Введение
- Пример
- Примеры использования в запросах
- Пример 1
- Пример 2
- Пример 3
Введение
При изучении запросов ученики часто спрашивают про реквизит Ссылка, который есть, например, у справочников и документов.
Давайте зайдём в базу Гастроном и откроем данные справочника Цвета:
Здесь нажмём на кнопку «Стандартные реквизиты»:
Вот она наша Ссылка. Это стандартный реквизит и он есть у многих прикладных типов данных.
Вот примеры его значений:
0xA9BA005056C0000811EAA968D227F09E
0xA9BA005056C0000811EAA968D8B6ACBD
0xA9BA005056C0000811EAA968D8B6ACBE
0xA9BA005056C0000811EAA96D0BC160C1
Вся прелесть этого реквизита в том, что его значение формируется платформой 1С автоматически в момент записи нового объекта в базу данных и является уникальным в пределах прикладного типа, к которому этот реквизит относится.
То есть, например, в справочнике Цвета не может быть двух элементов с одинаковым значением реквизита Ссылка.
А раз так, то значение реквизит Ссылка может использоваться для того, чтобы ссылаться на объект, которому оно принадлежит.
Пример
Представим, что мы создали новый элемент справочника Цвета со следующими значениями реквизитов:
| Реквизит | Значение | Пояснение |
|---|---|---|
| Наименование | Красный | значение этого реквизита указали мы сами при создании элемента |
| Ссылка | 0xA9BA005056C0000811EAA968D227F09C | значение этого реквизита платформа сформировала сама при записи нового элемента в базу данных |
А далее мы создали новый элемент справочника Клиенты со следующими реквизитами:
| Реквизит | Значение | Пояснение |
|---|---|---|
| Наименование | Андрей | значение этого реквизита указали мы сами при создании элемента |
| Пол | Мужской | значение этого реквизита указали мы сами при создании элемента |
| Ссылка | 0xA9BA005056C0000811EAA96D0BC160C0 | значение этого реквизита платформа сформировала сама при записи нового элемента в базу данных |
А теперь самое интересное. У элемента справочника Клиенты есть реквизит ЛюбимыйЦвет, который указывает (ссылается) на элемент справочника Цвета.
Как вы думаете, какое именно значение мы должны записать в реквизит ЛюбимыйЦвет, чтобы он указывал на созданный нами ранее элемент справочника Цвета с наименованием «Красный»?
Верно, в этот реквизит мы должны записать значение реквизита Ссылка этого самого элемента (с наименованием «Красный»).
То есть будет вот так:
| Реквизит | Значение | Пояснение |
|---|---|---|
| ЛюбимыйЦвет | 0xA9BA005056C0000811EAA968D227F09C |
Примеры использования в запросах
Пример 1
Как мы уже выяснили, значение поля Ссылка уникально в пределах прикладного типа, к которому оно относится.
А значит мы можем использовать эту особенность, например, для подсчёта количества элементов в справочнике:
ВЫБРАТЬ
Количество(Ссылка)
ИЗ
Справочник.Цвета
Пример 2
Давайте напишем очень глупый запрос, который тем не менее продемонстрирует нам, что в реквизит ЛюбимыйЦвет записывается именно значение реквизита Ссылка элемента, на который он ссылается:
ВЫБРАТЬ
Клиенты.Наименование,
Клиенты.ЛюбимыйЦвет,
Цвета.Ссылка
ИЗ
Справочник.Клиенты КАК Клиенты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Справочник.Цвета КАК Цвета
ПО
Клиенты.ЛюбимыйЦвет = Цвета.Ссылка
Обратите внимание, как выглядит строковое значение реквизита ЛюбимыйЦвет и Ссылка.
Платформа 1С не вывела нам его настоящее значение (например, 0xA9BA005056C0000811EAA968D227F09C).
Вместо этого она определила, что это значение указывает на элемент справочника «Цвета» с наименованием «Красный» и вывела нам слово «Красный» в качестве представления этого элемента.
Это стандартное поведение платформы, просто так мы никогда и нигде не увидим «сырое» представление реквизита Ссылка.
Пример 3
Наконец, значение поля Ссылка можно использовать для так называемого разыменования через точку для получения значений реквизитов объекта, которому принадлежит поле Ссылка.
К примеру, если мы знаем, что реквизит ЛюбимыйЦвет указывает на элемент справочника Цвета, то мы можем путём разыменования через точку получить любой другой реквизит этого элемента.
Вот пример запроса, в котором мы для каждого элемента справочника Клиенты выводим значение реквизита Код элемента справочника Цвета, на который указывает реквизит ЛюбимыйЦвет.
ВЫБРАТЬ
Клиенты.Наименование,
Клиенты.ЛюбимыйЦвет,
Клиенты.ЛюбимыйЦвет.Код
ИЗ
Справочник.Клиенты КАК Клиенты
В данной статье мы подробно рассмотрим основные типы значений в 1С – примитивные, ссылочные, системные типы значений, а также познакомимся с основными приемами работы с типами значений.
Содержание
Вместо предисловия
Статья не ставит целью пересказ встроенной справки или руководства разработчика. Подразумевается, что читатели самостоятельно могут посмотреть необходимую информацию в синтакс-помощнике, глоссарии терминов 1С, или другой документации.
Примитивные типы значений в 1С
Значения примитивных типов не содержат в себе ничего, кроме литерала своего типа. Например, значение типа число может определяться литералом 12345, типа строка – “12345”, типа булево – Истина, и т.д.
Всего примитивных типов в 1С шесть:
- Число
- Строка
- Дата
- Булево
- Неопределено
- NULL
Значения примитивных типов могут преобразовываться к другим типам. Для явного преобразования используются соответствующие методы глобального контекста – например, Строка(12345) приведет число к строке, Дата(“20210101”) – преобразует строку в дату 01.01.2021, и др.
Но самое интересное начинается при неявном преобразовании типов. Значения преобразуются по определенным правилам. Так, например, второй операнд и последующие преобразуются к первому операнду выражения, до тех пор, пока это подразумевается используемыми операторами Т.е. если первым идет число, последующие операнды также будут преобразовываться к числу, если строка – к строке.
Но если в выражении попадается оператор, который работает только с конкретным типом, то будет повторное преобразование к этому типу.
Пример:
Строка1 = 1; Строка2 = "2"; Строка3 = Строка1 + Строка2; // Вернет число 3 Строка4 = Строка2 + Строка1; // Вернет строку "21" Строка5 = "2" + 2 - 2 ; // Вернет число 20, т.к. оператор "минус" не работает со строковыми выражениями, и оба его операнда преобразуются к числу.
Значение типа Неопределено – это специальное значение, которое используется как значение по умолчанию для полей составных типов, а также для обозначения неуказанного значения. Объявленные переменные, в которые еще не поместили значение, будут иметь тип Неопределено.
Значение Null – это литерал, обозначающий отсутствие значения в выборке данных. Прежде всего это значение используется при работе с запросами, например, при левом соединении двух таблиц, отсутствующие значения в левой таблице будут заменены значениями Null. Также значение Null будет иметь реквизит иерархического справочника для элемента-группы, если в свойствах реквизита указано, что данный реквизит используется только для элементов. Аналогично для реквизитов, которые используются только для групп, их значения в обычных элементах справочника будут равны Null.
Прикладные типы значений
Прикладные типы значений создаются платформой, когда разработчик добавляет новые прикладные объекты – документы, справочники, регистры и т.д. При этом при создании одного прикладного объекта становятся доступны сразу несколько прикладных типов данных. Например, при добавлении в конфигурацию справочника “Пользователи”, платформа создаст следующие типы:
- СправочникСсылка.Пользователи
- СправочникОбъект.Пользователи
- СправочникМенеджер.Пользователи
- СправочникСписок.Пользователи
- СправочникВыборка.Пользователи
Каждый прикладной тип служит для определенной функциональности – например, ссылка нужна для доступа к свойствам конкретного элемента на чтение, объект – для возможности редактировать свойства это элемента, выборка – для перебора коллекции элементов, и т.п.
Изначально прикладные типы платформой не поддерживаются, и существуют только в конкретном прикладном решении. Следует иметь в виду, что при создании двух разных справочников, даже с одинаковым набором реквизитов, например “Покупатели” и “Поставщики”, для платформы это будут разные типы данных, несмотря на одинаковый реквизитный состав, и унаследованную базовую функциональность типа “Справочники”.
Интерфейсные типы данных в 1С
К интерфейсным типам относятся типы данных, позволяющие организовать интерактивное взаимодействие прикладного решения с пользователем. Прежде всего, это типы, связанные с формами и их элементами, например “КнопкаФормы”, “ПолеФормы” и др. Также к интерфейсным типам данных относятся значения, позволяющие работать с избранным, историей, окном клиентского приложения, и т.д.
Общие типы данных
Платформа предоставляет специфичные объекты языка, отвечающие за различную функциональность: ТабличныйДокумент, Диаграмма, ПостроительЗапроса, Картинка и др.
В отличие от примитивных типов, значения общих типов представляют собой совокупность значений свойств конкретного объекта. Каждое значение общего типа называется “экземпляром объекта”, и создается ключевым словом Новый – Новый ТекстовыйДокумент, Новый ХранилищеЗначения, и т.д.
Универсальные коллекции значений
Для работы с временными наборами данных в течение сеанса работы пользователя используются универсальные коллекции, такие как Массив, ТаблицаЗначений, Структура и др. Они не являются объектами базы данных, и в ней не хранятся. Универсальные коллекции используются для сбора, группировки, анализа и обработки данных.
Значения типа универсальной коллекции создаются при помощи ключевого слова Новый, например – Новый СписокЗначений, Новый ДеревоЗначений.
Платформа также предоставляет разработчику связанные типы значений, такие как КолонкаТаблицыЗначений, СтрокаДереваЗначений, КлючИЗначение, для работы с содержимым универсальных коллекций.
Следует учитывать, что два одинаковых экземпляра универсальной коллекции для платформы будут разными объектами, даже если эти два экземпляра полностью идентичны.
Составные типы значений
Реквизиты объектов конфигурации могут иметь составной тип. Например, для реквизита “Платежный документ” может быть указаны типы “Приходная накладная”, “Авансовый отчет”, “Оприходование товаров”. В этом случае разработчик указывает, что реквизит имеет составной тип, и отмечает нужные типы на этапе конфигурирования, а пользователь в процессе эксплуатации может выбрать в реквизит значение одного из доступных типов. Следует иметь в виду, что в каждый конкретный момент времени значение имеет только один конкретный тип. Если значение составного типа не указано, тип будет Неопределено. Одновременно двух типов значение составного типа быть не может.
Проверка типа конкретного значения
При реализации прикладной логики, часто возникает необходимость проверить, к какому типу принадлежит то или иное значение. Например, если в параметр процедуры передана структура – реализуется одно поведение, а если единственное значение – то другое.
Для такой проверки используется два метода глобального контекста: Тип и ТипЗнч.
Пример. Реквизит Плательщик имеет составной тип – плательщиками могут быть Сотрудники и Контрагенты. Нам нужно проверить, что выбранное значение реквизита является элементом справочника Контрагенты:
Если ТипЗнч(Плательщик) = Тип("СправочникСсылка.Контрагенты") Тогда
Как определить, что значение является справочником или документом?
Иногда в коде нужно определить, что переданное значение или параметр является справочником или документом. Например, это может быть необходимо в общей подписке на события при записи объектов. Для этого следует использовать методы ТипВсеСсылки() и Содержит().
Пример. В подписке ПриЗаписи мы получаем параметр Источник, который может быть как любым элементом любого справочника, так и любым документом.
Если Справочники.ТипВсеСсылки().Содержит(ТипЗнч(Источник)) Тогда // Это справочник ИначеЕсли Документы.ТипВсеСсылки().Содержит(ТипЗнч(Источник)) Тогда // Это документ КонецЕсли;
Справочники в 1С используются для работы с постоянной или условно постоянной информацией, но, в отличие от констант, данная информация может содержать множество значений. К примеру, если мы разрабатываем конфигурацию для учета движения товаров на складе, то такой информацией может быть вид товара, информация о самих товарах, информация о складах и т.п. Таким образом, справочники необходимы для хранения аналитики учета (то, по чему в дальнейшем будет осуществляться анализ, например, сколько товаров продано). В пользовательском режиме работа осуществляется с элементами справочника. Именно элементы справочника и являются объектами аналитики (именно они и будут анализироваться). Например, у справочника Товары могут быть элементы «Гвозди», «Хлеб» и «Молоко».
Элементы справочника создают операторы в пользовательском режиме 1С. В дальнейшей своей работе они могу использовать тот или иной созданный ранее элемент справочника. Например, элементы справочника Товары могут использоваться в отображении прихода или расхода товара в соответствующих документах.
По умолчанию у любого справочника имеется два реквизита — это Код и Наименование. Это так называемые стандартные реквизиты. Наименование обычно заполняет оператор, а код заполняется автоматически. Иногда стандартных реквизитов Код и Наименование бывает достаточно для работы, но чаще всего прикладная задача требует хранения вспомогательной информации. Для этого создаются реквизиты справочника, позволяющие хранить любую дополнительную информацию об элементе справочника.
Применительно к товарам это может быть артикул, полное наименование, наименование для продажи, вид товара и т.п. Еще новая возможность справочников (в 1С 7.7. этого нет) — это возможность создавать табличные части, в которых хранится однотипная информация, количество которой может быть изменчивым. Например, для товара это могут быть какие-то дополнительные свойства.
Реквизитов и табличных частей может быть неограниченное количество.
Создать новый справочник в 1С достаточно просто. Для этого необходимо зайти в конфигуратор 1С, открыть окно конфигурации, выделить ветвь Справочники, вызвать правой кнопкой мышки контекстное меню, где выполнить команду Добавить.
После этого откроется конструктор справочника, где на закладке «Основные» необходимо ввести имя справочника.
На закладке Данные можно задать длину кода и наименования, тип кода (число или строка) и основное представление элемента справочника (в виде кода или в виде строки).
А также можно создать необходимые реквизиты и табличные части.
В отличие от наименования, код может элементу справочника присваиваться автоматически, если установлен флаг Автонумерация на закладке нумерация.
Реквизиты справочников 1С создаются на закладке Данные в окне реквизитов.
В качестве реквизитов справочника могут выступать, как примитивные типы, так и ссылочные. Например, мы уже создали справочник ВидыТоваров, а сейчас создадим справочник Товары, где будут реквизиты Артикул (тип Строка) и ВидТовара (ссылка на справочник ВидыТоваров).
В режиме «1С: Предприятия» это будет выглядеть следующим образом.
Обращаю внимание, на что влияет свойство «Основное представление» (закладка Данные конструктора справочника). Если у нас основное представление в виде наименования, то представление элемента справочника в каком-либо реквизите будет в виде наименование этого элемента, как на рисунке представлен элемент справочника ВидыТоваров в реквизите справочника Товары. А если основное представление в виде кода, то тогда представление этого элемента будет в виде кода элемента.
Табличные части справочников 1С
Табличные части создаются на закладке «Данные» в конструкторе справочника.
Можно создавать неограниченное количество табличных частей.
Сделаем справочник Комплектация, у которого будет табличная часть Состав.
У табличной части может быть неограниченное количество реквизитов. Для того, чтобы создать реквизит табличной части, её необходимо выделить и нажать на кнопку «Добавить реквизит».
Реквизиты табличной части могут быть как примитивных типов, так и ссылочных.
Подчиненные справочники 1С
В конфигурации 1С 8.3 можно разрабатывать Подчиненные справочники. В Подчиненном справочнике каждый его элемент имеет владельца, который является элементом или группой другого справочника. Элемент подчиненного справочника не может существовать без владельца.
Сделаем возможность учета единиц измерения. Сначала создадим справочник «Классификатор единиц измерения», в котором будут храниться различные единицы измерения (штуки, килограммы и тд).
У справочника Товары сделаем реквизит основная единица измерения (ссылка на справочник классификатор единиц измерения)
И сделаем справочник, подчиненный справочнику Товары, в котором будут храниться коэффициенты соотношений единиц измерения к основной единице измерения товара. К примеру, основная единица измерения килограмм, но есть еще единица тонна и центнер. Соответственно в первом случае коэффициент будет 1000, а во втором 100.
Создадим справочник ЕдиницыИзмерения.
На закладке Владельцы установим, что владельцем этого справочника является справочник Товары.
И создадим реквизиты: Коэффициент (тип число) и единица измерения (тип ссылка на справочник «Классификатор единиц измерения»).
Вот как это будет выглядеть в режим «1С: Предприятия».
Подробно о подчиненных справочниках читайте в этой статье:
Подчиненный справочник 1С
Иерархический справочник 1С
Любой справочник можно сделать Иерархическим – это значит, что пользователь сможет создавать каталоги (или, говоря простым языком, папки), в которых будут содержаться элементы.
Сделаем справочник Товары иерархическим. Для этого переходим на закладку «Иерархия» конструктора справочника и установим флаг «Иерархический».
Иерархия у справочников бывает двух видов: Иерархия групп и элементов и просто Иерархия элементов.
Иерархия групп — это каталоги, которые в себе содержат определенные элементы. А что такое Иерархия элементов? Это когда один элемент подчинен другому.
Посмотрим, как выглядит иерархический справочник в «1С:Предприятии»
Как видите, в форме списка появилось две команды. «Создать» и «Создать группу». При выполнении команды «Создать» будет открыта форма на создание нового элемента, а при выполнении команды «Создать группу» — форма на создание группы (папки).
Вы можете создавать нужные группы, в этих группах создавать элементы, или переносить уже созданные элементы в группы.
Подробно, про иерархический справочник читайте в этой статье:
Иерархический справочник 1С
Что такое предопределенные элементы справочников, и как с ними работать, читайте в этой статье:
Предопределенные элементы справочников 1С
Формы справочников в 1С 8.3
Остальные статьи по теме конфигурирования:
Документы в 1С 8.3
Журнал документов в 1С 8.3
Подсистемы 1С 8.3
Общие реквизиты в 1С
Более подробно и основательно работа со справочникам в дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
Содержание:
1. Группы типов данных в конфигурации программы 1С
2. Понятие ссылка и ее составные части в конфигурации системы 1С: Предприятие
1. Группы типов данных в конфигурации программы 1С
Что же такое тип данных? Оказывается системный тип данных – это фундаментальное понятие, без которого просто не мыслим любой язык программирования (хотя бы один тип, но должен быть). Ведь в общем случае программирование – это работа по преобразованию данных, а данные должны иметь какой-то тип (пусть даже неопределенный). Встроенный язык программирования 1С не исключение и тоже имеет свои типы данных.
Типы данных в 1С можно разделить на следующие группы:
· Базовые или примитивные типы данных (строка, число, булево, дата, null, неопределенно, тип);
· Сложные типы (универсальные коллекции, общие объекты и прикладные объекты метаданных 1С, с доступом через ссылку);
· Составные типы данных (включает в себя другие типы данных).
В рамках данной статьи интерес вызывают прикладные объекты метаданных 1С, с доступом через ссылку (ссылочные типы данных), по своей сути представляющие собой модель сущности предметной области, использующие объектный подход системы манипулирования данными (Справочник, Документ, ПланСчетов и т.п.). Работа с указанными сущностями базы данных ведется через ссылки.
2. Понятие ссылка и ее составные части в конфигурации системы 1С: Предприятие
Термин «ссылка» используется как в обычной жизни, так и в компьютерных науках, не удивительно, что его смысл очень зависит от того в каком контексте используется. Например, в языках программирования, ссылка – это объект, у которого основная задача предоставить доступ к другому объекту, расположенному в другом месте, имеющему другой размер и т.д.
Ссылка привязывается к другому объекту, но при этом не хранит его, таким образом, получив ссылку на конкретный объект, мы можем узнать информацию об этом объекте, но не можем внести какие-нибудь изменения в эту информацию, в то же время через ссылку можно осуществлять манипуляции со связанным объектом.
Рассмотрим вопрос о том, какой смысл заложен в понятие ссылка в концепции 1С? Ссылка в 1С — это тип данных, однозначно определяющий объект системы 1С.
Получение из базы 1С данных может быть выполнено запросом, в ответ на который данные приходят в виде таблицы. Однако в 1С есть более распространенный способ – это работа с данными как с объектами 1С, то есть при обработке данных, расположенных в базе 1С, используется объектный подход к программированию. То есть, при обращении (записи или чтении) к некоторой совокупности данных, размещенных в базе данных, обращение происходит как к некоему целому объекту.
Отличительной особенностью манипулирования данными в бд как объектом является следующее: у каждого объекта, имеется уникальный идентификатор ссылки, позволяющий определить указанный в объекте базы данных 1С. Эта ссылка находится в поле самой базы данных, вместе с другими данными указанного объекта.
Ссылка состоит из двух частей – имя объекта метаданных (это и есть тип ссылки) и 1С УИДа, в общем смысле являющегося GUID. И несмотря на то, что уникальность отдельного GUID не гарантируется, количество уникальных ключей невероятно велико, так что вероятность того, что в мире будут сгенерированы два одинаковых ключа, крайне мала.
Ссылку можно использовать в качестве переменной, а можно указывать, как реквизит других объектов метаданных 1С.
Следует иметь в виду, что при создании двух разных объектов метаданных 1С (например, справочника поставщиков и справочника покупателя), даже с одинаковым набором реквизитов, для платформы системы 1С: Предприятие это будут разные типы данных, несмотря на одинаковый реквизитный состав, и унаследованную базовую функциональность системы.
Специалист компании «Кодерлайн»
Сергей Сотников
В предыдущей статье типы и значения 1С — мы начали обсуждать что такое типы значений 1С и преобразование типов 1С.
Сегодня мы поговорим подробнее про типы объектов конфигурации 1С (тип документа 1С, тип справочника 1С и др.)
Так как в программном коде мы работаем со значениями, то периодически требуется знать их тип. Тип 1С всегда указывается в метаданных у реквизитов — в справочниках, документах.
Работа с типами 1С часто используется:
- Условия в программе
Разные действия в зависимости от типа значения 1С в конструкции «Если … Тогда …» - Ограничения при работе в интерфейсе
Запрет или разрешение пользователю вводить в поле на форме значения определенных типов 1С. - Определение фактического параметра функции/процедуры
Если параметр функции/процедуры может быть любого типа 1С, то нужно его определить, чтобы правильно получить значение.
Тип 1С можно получить:
- Определить тип фактического значения 1С
- Значения-объекты имеют свойства, в которых указан разрешенный тип 1С (например типы 1С разрешенные в колонке таблицы, в поле на форме, в метаданных) или методы, которые возвращают эти типы 1С
- Из метаданных – можно получить тип 1С так, как он указан в метаданных в конфигураторе.
Типы 1С можно разделить на три вида:
- Базовые типы 1С
- Типы 1С базы данных (ссылочные, объекты)
- Типы 1С.
Определение типа 1С и сравнение типов 1С
Узнать тип значения 1С можно с помощью функции ТипЗнч(Переменная)
Чтобы понять какой тип 1С эта функция вернула – нужно указать нужный нам Тип(«ИмяТипа»)
Например, определение (сравнение) типа 1С переменной:
Если ТипЗнч(Переменная) = Тип("ИмяТипа") Тогда
Какие типы писать в качестве ИмяТипа?
Базовые типы
Базовые типы 1С — число, строка, дата, булево.
Например:
Знч = 12;
Если ТипЗнч(Знч) = Тип("Число") Тогда
ИначеЕсли Знч = Тип("Строка") Тогда
ИначеЕсли Знч = Тип("Дата") Тогда
ИначеЕсли Знч = Тип("Булево") Тогда
КонецЕсли;
Типы базы данных
1С хранит данные в базе данных, но не в виде отдельных записей, а в виде объектов.
Большинство сохраняемых объектов (в том числе: справочники, документы, перечисления, бизнес-процессы, задачи) доступны в виде Объекта (для изменения и записи) и в виде Ссылки (для чтения). Подробнее см. «Ссылки и объекты».
Например:
Знч = Справочники.Организации.ПустаяСсылка();
Если ТипЗнч(Знч) = Тип("СправочникСсылка.Организации") Тогда
ИначеЕсли Знч = Тип("СправочникОбъект.Организации") Тогда
ИначеЕсли ТипЗнч(Знч) = Тип("ДокументСсылка.ПоступлениеТоваров") Тогда
ИначеЕсли Знч = Тип("ДокументОбъект.ПоступлениеТоваров") Тогда
КонецЕсли;
Регистры могут быть представлены различными типами. Имя типа регистра составное:
РегистрТипрегистраТипдоступа.ИмяРегистра
Типы 1С регистров:
- Сведений
- Накопления
- Бухгалтерии
- Расчета.
Типов доступов к регистру несколько. Чаще всего используются:
- НаборЗаписей
- Список
- Выборка
- Запись
- КлючЗаписи.
Итого, пример:
Если ТипЗнч(Знч) = Тип("РегистрСведенийСписок.ИмяРегистра") Тогда
ИначеЕсли Знч = Тип("РегистрНакопленияНаборЗаписей.ИмяРегистра") Тогда
КонецЕсли;
Типы 1С
Язык 1С позволяет работать со множеством объектов, создаваемых динамически в программе, например – массив, список значений, таблица значений, структура…
Такие типы 1С указываются по их названию (одним словом, без пробелов). Например:
Если ТипЗнч(Знч) = Тип("Массив") Тогда
ИначеЕсли Знч = Тип("СписокЗначений") Тогда
КонецЕсли;
Определение значения ссылочного типа 1С
Работа со всеми объектами базы данных (справочники, документы…) ведется через ссылки. Например, если мы хотим в документе сделать реквизит – справочник, то его тип 1С будет «СправочникСсылка.ИмяСправочника».
Мы можем определить является ли ссылка справочником или документом с помощью метода ТипВсеСсылки()
Например:
Значение = Справочники.Организации.ПустаяСсылка();
Если Справочники.ТипВсеСсылки().Содержит( ТипЗнч(Значение) ) Тогда
//это справочник
ИначеЕсли Документы.ТипВсеСсылки().Содержит( ТипЗнч(Значение)) Тогда
//это документ
КонецЕсли;
Работа с типами 1С в запросе
В запросе тип 1С можно проверить двумя способами.
Первый – аналогично описанному, но в имени типа 1С не указывается «Ссылка» или «Объект», то есть вместо «СправочникСсылка.Организации» пишем «Справочник.Организации»
Получение доступных типов 1С
У множества объектов есть свойство .ТипЗначения, которое содержит список типов 1С:
- Поле на форме толстого клиента
ЭлементыФормы.ИмяПоля.ТипЗначения - Поле на форме тонкого клиента (исключение: называется ДоступныеТипы)
Элементы.ИмяПоля.ДоступныеТипы - Колонка таблицы значений, дерева значений
- Реквизит формы
- Элемент отбора
- …
Как работать с этим списком типов 1С в поле .ТипЗначения – см. «ОписаниеТипов» в разделе «Язык 1С».
Работа с типами 1С реквизитов в метаданных конфигурации
При добавлении и редактировании реквизитов в конфигураторе программист указывает тип(ы) 1С реквизита. В программном коде на языке 1С можно получить (узнать) тип(ы) 1С реквизита.
Подробнее про работу с метаданными см. далее «Работа с метаданными».
Основные методы:
- У объекта 1С вызвать метод Метаданные(), который возвращает метаданные конкретного объекта и далее работать со списком реквизитов (и реквизитов табличной части)
Документы.ПоступлениеТоваров.ПустаяСсылка().Метаданные().Реквизиты - Использовать глобальную переменную «Метаданные», которая возвращает все метаданные конфигурации, и далее выйти на реквизиты конкретного объекта
Метаданные.Документы.ПоступлениеТоваров.Реквизиты
У реквизита есть свойство .Тип, которое содержит список типов 1С, установленный в конфигураторе у этого реквизита.
Как работать с этим списком типов 1С – см. «ОписаниеТипов» в разделе «Язык 1С».
Указать фильтр типов 1С
У многих объектов возможно указать фильтр типов значений 1С, возможных к использованию, например:
- Список значений (.ДоступныеЗначения)
- Поле формы управляемого клиента (.ДоступныеТипы)
Там, где фильтра не доступен к изменению, доступно указать фильтр в методе объекта. Например у колонки таблицы (дерева) значений есть .ТипЗначения и мы не можем его изменять, но при добавлении колонки с помощью метода .Добавить() вторым параметром можно указать список доступных типов 1С.
Чтобы указать список типов 1С для фильтра – используется список типов 1С, как с ним работать – см. «Описание типов» в разделе «Язык 1С».
Загрузка…
Как получить данные у реквизита ссылочного типа? |
Я |
27.02.19 — 12:44
Есть реквизит Клиенты (Ссылочного типа). Имеется запрос и параметром является тот самый клиент, которого выберет пользователь. Думал в запросе дело, в конструкторе проверил и всё работает. Попробовал поставить у реквизита Клиенты тип данных Строка и всё заработало, но это не удобно. Подскажите, кто знает, как решить проблему, чтобы запрос видел данные реквизита Клиенты (ссылочного типа).
1 — 27.02.19 — 12:53
Клиент — ссылка на твоего клиента
Запрос = Новый Запрос();
Запрос.Текст = «ВЫБРАТЬ
| Клиенты.Код,
| Клиенты.Наименование
|ИЗ
| Справочник.Клиенты КАК Клиенты
|ГДЕ
| Клиенты.Ссылка = &Клиент»;
Запрос.УстановитьПараметр(«Клиент», Клиент);
РезультатЗапроса = Запрос.Выполнить();
ТаблицаРезультата = Запрос.Выгрузить();
Вот стандартный запрос. Теперь объясни, что тебе не понятно
2 — 27.02.19 — 12:53
Это самый прикольная тема февраля! Спасибо. Повеселил.
3 — 27.02.19 — 12:55
Если проблема с конкретным кодом, приведите листинг программы, но придерживайтесь принципа разумной достаточности – ошибку проще найти в небольшом листинге, чем изучать весь модуль.
4 — 27.02.19 — 17:12
(3) На форме есть реквизит Организация (Тип: Ссылка на справочник Организации). Запрос показан ниже. Когда я в режиме пользователя выбираю организацию, ничего не происходит, но если я поставлю реквизиту Организация тип: Строка и напишу туда организацию, которая есть в справочнике Организации, то всё работает.
Может вся проблема в этой строчке? Запрос.УстановитьПараметр(«Организация»,Объект.Организация);
&НаСервере
Процедура ОрганизацияПриИзменении(Элемент)
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| Организации.ДолжностьРуководителя,
| Организации.ФамилияРуководителя,
| Организации.ИмяРуководителя,
| Организации.ОтчествоРуководителя
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.Наименование = &Организация»;
Запрос.УстановитьПараметр(«Организация»,Объект.Организация);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
НовСтр = Объект.ТЧДолжностьФИО.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр, Результат);
КонецЦикла;
КонецПроцедуры
5 — 27.02.19 — 17:17
ошибка тут:
ГДЕ Организации.Наименование = &Организация
6 — 27.02.19 — 17:21
(5) Как исправить?
7 — 27.02.19 — 17:22
(6) искать не по наименованию, а по ссылке. Твой реквизит на форме — это и есть ссылка.
8 — 27.02.19 — 17:23
(5) Думал вроде по наименованию организацию искать надо
9 — 27.02.19 — 17:23
А ты в имя пихаешь ссылку.
От стеба меня останавливает только нормальный код после запроса. Может человек старается.
10 — 27.02.19 — 17:24
(8) зачем, когда есть ссылка? Она уже найдена.
11 — 27.02.19 — 17:24
(7) То есть правильно будет так? Всё остальное правильно?
ГДЕ Организации.Ссылка = &Организация
12 — 27.02.19 — 17:24
да. Можно даже без .Ссылка, а просто ГДЕ Организации = &Организация
13 — 27.02.19 — 17:25
ой
сорян. Все так. Не смотри последнее сообщение)
14 — 27.02.19 — 17:25
(12) Спасибо, просто ещё не сильно в этом разбираюсь
15 — 27.02.19 — 17:26
(13) Хорошо)
16 — 27.02.19 — 17:27
Если конфа типовая, привыкай к БСП. В модуле «ОбщегоНазначения» есть функция ЗначенияРеквизитовОбъекта. Она вернет тебе все необходимые значения твох «ДолжностьРуководителя» и прочее. По сути сама напишет запрос.
17 — 27.02.19 — 17:30
(16) Модуль общего назначение — это модуль объекта?
18 — 27.02.19 — 17:30
это общий модуль
19 — 27.02.19 — 17:32
(18) Вся суть в том, что я не знаю как с ним работать)
20 — 27.02.19 — 17:34
21 — 27.02.19 — 17:34
(18) Всё равно не работает, когда организацию выбираю, может проблема ещё в чем то?
22 — 27.02.19 — 17:36
Вместо своего кода попробуй напиши это:
НовСтр = Объект.ТЧДолжностьФИО.
ЗаполнитьЗначенияСвойств(НовСтр, ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Организация, «ДолжностьРуководителя, ФамилияРуководителя, ИмяРуководителя, ОтчествоРуководителя»));
23 — 27.02.19 — 17:37
(4) Если пишешь на конфигурации с БСП то там вообще-то в общем модуле есть целый набор функций
ЗначениеРеквизитаОбъекта, ЗначенияРеквизитовОбъектов, ЗначениеРеквизитаОбъектов
24 — 27.02.19 — 17:37
в первой строка допиши .Добавить()
25 — 27.02.19 — 17:37
(23) + лучше приучиться не изобретать велосипедов 
26 — 27.02.19 — 17:38
Тема сделала мой день, тс спасибо!)
27 — 27.02.19 — 17:39
(22) Переменная не определена (ОбщегоНазначения)
28 — 27.02.19 — 17:41
Значит нетиповая конфа) допиливай свой код
29 — 27.02.19 — 17:42
(25) так сейчас без бсп далеко не уедешь
30 — 27.02.19 — 17:53
(27) Или БСП другой версии.
Перезжали они по модулям.
kostya1999990
31 — 27.02.19 — 18:39
(29) Всё заработало, спасибо большое, ошибку в параметре сделал)
Объектные и необъектные данные
Все данные в 1С можно поделить на 2 вида:
— Объектные данные
— Необъектные данные
Объектные данные имеют уникальный идентификатор. С помощью данного идентификатора можно обращаться к совокупности всех таблиц объекта как к единому целому.
Примеры объектных данных:
— Справочник
— Документ
— План видов характеристик
— План счетов
— План видов расчета
— План обмена
— Бизнес-процесс
— Задача
Для объектных данных в базе данных создается основная таблица, в которой хранятся все реквизиты объекта, а также по одной таблицы для каждой табличной части. Между собой таблицы связываются по уникальному идентификатору, который хранится в служебном реквизите «Ссылка».
Уникальный идентификатор присваивается при записи объекта в базу данных. Нельзя создать два объекта одного типа с одним идентификатором. Если удалить объект, а потом создать новый с такими же значениями всех реквизитов, это все равно будет другой объект, с новым уникальным идентификатором.
Необъектные данные хранятся как набор записей в таблице. У них нет уникального идентификатора. Если удалить записи из таблицы, а потом создать с таким же значениями, то это будет тот же самый набор записей.
Примеры необъектных данных:
— Константа
— Последовательность
— Регистр сведений
— Регистр накопления
— Регистр бухгалтерии
— Регистр расчета
— Перерасчет
Все записи, кроме константы и независимого регистра сведений должны быть подчинены регистратору. В роли регистратора выступает документ. Набор записей, подчиненный регистратору называется движения документа.
Ссылка и Объект
Ссылка — это внутренний уникальный идентификатор, который хранится в поле «Ссылка» базы данных. Ссылка одного вида справочника (документа или любого другого вида объектных данных) никогда не будет равна ссылке другого вида справочника.
Пустая ссылка — это ссылка, которой не соответствует ни один объект базы данных.
Ссылка доступна только для объектных данных.
В интерфейсе ссылка имеет свое представление, которое можно настроить в конфигураторе. Для справочника это может быть код или наименование:
Объект — это совокупность записей основной таблицы и записей табличных частей. Объект используется для записи в базу данных. Также через объект можно читать данные из базы. Объект доступен только для объектных данных.
Объект можно получить:
— С помощью менеджера объекта методом СоздатьЭлемент или СоздатьДокумент:
НовыйОбъект = Справочники.Номенклатура.СоздатьЭлемент();
НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Будет создан новый экземпляр программного объекта, которому не соответствует ни один объект базы данных. При записи в базу данных будет создана новая запись.
— Через ссылку с помощью метода ПолучитьОбъект:
СправочникОбъект = СсылкаНаСправочник.ПолучитьОбъект();
— Из выборки методом ПолучитьОбъект. Выборка — это специальный тип данных, который позволяет считывать все данные объекта порциями. Например:
Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл СправочникОбъект = Выборка.ПолучитьОбъект(); КонецЦикла;
В данном примере на каждой итерации цикла из выборки будет получен очередной объект базы данных.
Для необъектных данных используется Набор записей.
Типы данных
Типы данных, определенные на уровне платформы
— Примитивные типы
— Универсальные коллекции
— Общие типы, например Запрос, ХранилищеЗначения, Файл и т.п.
— Интерфейсные типы — это Форма и ЭлементыФормы.
Типы данных, определенные в конкретном прикладном решении
Это все прикладные типы: справочники, документы, регистры и т.п. На уровне платформы определены основные классы. Каждый класс имеет свою базовую функциональность. Новые объекты наследуют базовую функциональность, а также могут добавлять свою функциональность.
При создании нового объекта конфигурации автоматически создаются новые типы:
— для константы и критерия отбора это только менеджер
— Для журнала документов: менеджер и выборка
— перечисление: менеджер и ссылка
— справочник, документ, план видов характеристик, план счетов, план видов расчета, план обмена, бизнес процесс и задача: менеджер, выборка, ссылка, объект
— отчет и обработка: менеджер и объект
— последовательность и перерасчет: менеджер, набор записей, запись
— регистры сведений, регистры накопления, регистры бухгалтерии, регистры расчета: менеджер, выборка, набор записей, запись, ключ записи.
Дополнительные типы:
— константа: КонстантаМенеджерЗначения и КонстантыНабор
— план счетов: ПланСчетовВидыСубконто, ПланСчетовВидыСубконтоСтрока
— план видов расчета: ВедущиеВидыРасчета, ВедущиеВидыРасчетаСтрока, ВытесняющиеВидыРасчета, ВытесняющиеВидыРасчетаСтрока,
— БазовыеВидыРасчета, БазовыеВидыРасчетаСтрока
— регистр сведений: РегистрСведенийМенеджерЗаписи
— регистр бухгалтерии: РегистрБухгалтерииСубконто
Для примера добавим в конфигурацию два справочника: Номенклатура и Контрагенты. У справочника Номенклатура добавим реквизит Поставщик. В свойствах реквизита при выборе типа, помимо примитивных и общих типов будут доступны два новых типа: СправочникСсылка.Номенклатура и СправочникСсылка.Контрагент:
Составной тип данных
Если в окне выбора типа данных установить флаг «Составной тип данных», то такой реквизит сможет хранить значения нескольких типов данных. Например, установим для реквизита Поставщик галку «Составной тип данных» и укажем 2 типа: СправочникСсылка.Номенклатура и СправочникСсылка.Контрагент.
Теперь в данном реквизите можно будет сохранить как ссылку на номенклатуру, так и ссылку на контрагента.
Тип СправочникСсылка позволяет сохранить в таком реквизите ссылку на любой тип справочника. Если добавить в конфигурацию новый справочник «Физические лица», то при текущей настройки его нельзя будет записывать в реквизит «Поставщик». Однако, если выбрать тип СправочникСсылка, то такой реквизит может хранить ссылку на любой тип справочника, в том числе на те справочники, которые могут быть добавлены в конфигурацию после настройки типа данного реквизита. При запуске конфигурации тип СправочникСсылка преобразуется в составной тип данных, который включает в себя все справочники.
Тип ЛюбаяСсылка позволяет хранить ссылки на любые объектные данные. То есть в одном реквизите можно будет сохранить как ссылку на справочники Контрагенты и Номенклатура, так и на любой вид документов, планов видов характеристик и т.п.
Смотрите также:
Электронный учебник по по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Программное решение для сдачи и подготовки к экзаменам
Программирование в 1С 8.3 с нуля — краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

































