- Работа программы со справочниками
- Создать запись справочника
- Поиск записей справочника
- Изменить записи справочника
- Удаление записей каталога
- Пропустить записи справочника
- Отбор элементов словаря по запросу
- Программно получить/записать дополнительные сведения
- Получить дополнительные сведения программно
- Напишите более подробную информацию программно
- Как извлечь признак из ссылка на книгу «Номенклатура» ?
- Получить и записать сведения о документе или каталоге с помощью метаданных.
Работа программы со справочниками
Справочники в 1С — это конфигурационные объекты, предназначенные для хранения данных, которые имеют одинаковую структуру и имеют листовой тип. Например, в справочниках могут храниться: список номенклатур, поставщиков, сотрудников, счета в банках и т. д. В данной статье описаны основные принципы работы с этим объектом метаданных.
Создать запись справочника
Создание новых записей справочника и групп осуществляется через программный объект CatalogManager. . Этот объект доступен только на сервере .
Создание новой записи каталога или группы состоит из следующих шагов:
- Создание записи или группы;
- Заполнить владельца (если каталог дочерний);
- Заполнить родительский каталог (если каталог иерархический);
- Заполнить имя и данные (если автоматическая нумерация не настроена, то и код);
- Заполнение частей таблицы;
- Элемент ввода.
Создайте новую группу:
Новая группа = Каталоги. Поставщики. Создать группу(); // Создаем группу
NewGroup . Имя = «Покупатель»; // Завершение имени
NewGroup . Напишите(); // Групповая запись
Создать новый элемент:
NewElement = Reference. Поставщики. создатьЭлемент(); // Создать элемент
NewElement . Родитель = Каталоги. Поставщики. НайтиПоИме(«Покупатель»); // Заполняем родительский элемент
NewItem . Имя = «ООО Ромашка» ; // Завершение имени
NewElement . НИФ = «123456789»; // Добавляем атрибут
// Добавление новой строки в секцию таблицы
NewString = NewElement . Контактная информация. Добавлять ();
Новая строка. Тип = «Адрес»;
Новая строка. Display = «Moscow» ;
Новый элемент. Напишите(); // Запись элемента
Поиск записей справочника
Существует несколько способов поиска элементов справочника в языке программирования 1С:
- Найти по код (код >, поиск по полному коду >, родитель >, владелец >)
- Поиск по имени (имя >, точное совпадение >, родитель >, владелец >)
- Поиск по атрибуту (имя атрибута >, значение атрибута >, родитель >, владелец >)
Во всех методах, если поиск успешен, ссылка на найденный элемент будет возвращен.
Аккаунт найден = реферал. Поставщики. Поиск по коду («123»); // Находим контрагента с кодом «123»
Сделка найдена = Справочники . Связанные контракты. FindByCode(«1» , , , совпадение найдено ); // Поиск контракта, подчиненного найденному контрагенту с номером «1»
Найден контрагент = Справочники. Поставщики. НайтиПоИме(«Покупатель»); // Поиск товара с именем «Покупатели»
Найдено Counterparty1 = Directorys. Поставщики. FindByName(«Ромашка ООО», аналог найден); // Поиск записи «ООО Ромашка» в группе «Покупатели»
Найден контрагент = Справочники . Поставщики. FindByAttribute(«ИНН», «123456789»); // Поиск контрагента с ИНН «123456789»
Изменить записи справочника
Изменить детали поиска, выполните следующие действия:
- Получить объект из элемента словаря (метод GetObject(), возвращаемый тип DirectoryObject. );
- Присвоить атрибутам объекта новые значения;
- Введите объект записи каталога.
Программное изменение каталога возможно только на стороне сервера.
Например, в форме обработки отображается атрибут Номенклатура типа СправочникСсылка.Номенклатура. Вот пример кода, который переименовывает элемент, выбранный пользователем:
NomenclatureObject = Item. ПолучитьОбъект();
Именование объекта. Имя = «Новое имя»;
Именование объекта. Напишите();
Удаление записей каталога
Словарные записи могут быть помечены для удаления и удалены непосредственно из базы данных.
Немедленное удаление является необратимой операцией , при этом пометка может быть отменена для удаления. Метка для удаления сохраняется в предопределенном атрибуте тега удаления. В пользовательском режиме записи справочника и группы, помеченные для удаления, помечаются красным крестиком.
Метка удаления может быть установлена/снята двумя различными способами:
// Способ 1. Использование метода SetDeletionMark()
Найден аналог = Ссылки. Поставщики. Поиск по коду («123»);
AccountObject = AccountFound . ПолучитьОбъект();
AccountObject . SetRemoveFlag(True);
// Способ 2. Изменить свойство RemoveFlag
Account found = Referrals. Поставщики. Поиск по коду («123»);
AccountObject = AccountFound . ПолучитьОбъект();
АккаунтОбъект . флаг удаления = истина;
AccountObject . Напишите();
Пример прямого удаления искомого элемента:
Учетная запись найдена = Поиск. Поставщики. Поиск по коду («123»);
AccountObject = AccountFound . ПолучитьОбъект();
AccountObject . Удалить ();
Пропустить записи справочника
Пропустить записи справочника в языке программирования 1С можно двумя способами:
- Выбрать (Главная >, Владелец >, Выбор >, Порядок >)
- Выбрать иерархически (Основной >, Владелец >, Выбор >, Порядок >)
методы с различаются порядком выбора элементов: при иерархическом выборе для каждого элемента сначала выбираются элементы, родителем которых он является, а затем выбираются элементы следующего уровня.
Рассмотрим примеры пропуска элементов каталога:
// Пропуск всех элементов каталога Counterparts
Selection = Directorys . Поставщики. Выбирать (); // Получить выделение всех элементов в директории
While Selection . Next() Loop
// действие со следующим элементом
Message ( Selection . Name );
Конец цикла;
// Исключить контрагентов из группы «Покупатели»
GroupBuyers = Directorys . Поставщики. НайтиПоИме(«Покупатель»);
Выбор = Каталоги. Поставщики. Выбрать (группировать покупателей);
Во время выбора. Следующий() Цикл
Отчет(Выбор. Имя);
Конец цикла;
//Пропуск контрагентов по договорам ООО «Ромашка»
Найден контрагент = Справочники . Поставщики. FindByName(«ООО «Ромашка»»);
Выбор = Каталоги. Связанные контракты. Выберите (, VendorFound);
Во время выбора. Следующий() Цикл
Отчет(Выбор. Имя);
Конец цикла;
// Пропускать одноранговые узлы с пустым TIN
// Атрибут TIN должен быть проиндексирован!
Выбор = новая структура («ИНН», «»); // Структура может содержать только один элемент
Selection = References. Поставщики. Выделить (, , Выделение);
Во время выбора. Следующий() Цикл
Отчет(Выбор. Имя);
Конец цикла;
Отбор элементов словаря по запросу
Искать данные в базе 1С удобнее с помощью запросов. Запрос позволяет описать практически любое условие выбора, в отличие от методов Select() и SelectHierarchically(), которые имеют существенные ограничения. В большинстве случаев работа с запросами также быстрее, чем работа с кодом.
Простой пример поиска и отображения товаров с ценой больше 1000:
Запрос = Новый запрос;
Запрос. Text =
«ВЫБЕРИТЕ
Контрагент);
ОткрытьФорму(«Справочник.Счета.Форма.ФормаЭлементов», Открыть Параметры);
// Открыть Групповую Форму
// ГрупповыеСчета – атрибут формы, заполняемый пользователем в интерактивном режиме
ShowValue (, GroupAccounts);
// Другой способ открыть групповую форму
OpenParams = New Struct («Key» , GroupAccounts);
OpenForm(» Directory.Accounts.Form.GroupForm» , Open Options );
Внимание!
Следует отметить, что интерактивная работа (в т.ч. открытие форм) в 1С возможна только на стороне клиента, при этом поиск и редактирование данных возможно только на стороне клиента.сервера.
Источник
Программно получить/записать дополнительные сведения
Дополнительные сведения в 1с 8 — это специальная табличная часть для некоторых документов и справочников. другие данные, относящиеся к данному объекту метаданных. Этот механизм реализуется только в конфигурации, работающей в управляемом приложении. Другие детали аналогичны по назначению дополнительной информации, за исключением того, что они являются дополнительными. информация хранится в отдельном реестре, это его плюс, но доп. детали автоматически отображаются в форме объекта. В этой статье рассказывается, как программно получить и записать дополнительные сведения.
Получить дополнительные сведения программно
Функция получает значение следующего объекта атрибута по ссылке и свойству.
- Ссылка . Тип: Любая ссылка . Ссылка на искомый объект;
- Свойство . Тип: Таблица типов элементов Атрибуты и другая информация . Необязательное свойство.
Напишите более подробную информацию программно
Функция записывает значение суммы. атрибуты объекта по ссылке и свойству.
- Ссылка . Тип: Любая ссылка . Ссылка на искомый объект;
- Свойство . Тип: Таблица типов элементов Атрибуты и другая информация . Другое имущество;
- Значение. Тип: Установите для этого свойства.
Если вы до сих пор не знаете, как для работы с механизмом дополнительной информации в 1с 8 читайте об этом в статье 1С Регистрация и получение дополнительной информации.
Источник
Как извлечь признак из ссылка на книгу «Номенклатура» ?
Почему не работает?Ошибка?Или пустое значение?В последнем случае может быть в поле «Товар» пустое значение?
Number = References.Nomenclature.FindByCode(«00000000028» );
Notify(«Номер позиции: » + Номер позиции);
Ps: Мой пункт не был заполнен, я прокомментировал и результат выполнения был такой:
Может у вас переменная Номенклатура не типа СправочникСсылка.Номенклатура и дальше точки ничего не получается.Тогда надо смотреть как вы получаете номенклатуру и что вы обычно ставите в этой переменной. Если вы храните имя со строковым типом (и не хотите, чтобы оно было исправлено), то
Скажите, какую ошибку он покажет, если не работает?
выберите свойства элемента по запросу:
Значение = References.ObjectPropertyValues.FindByName(String.NameFromDocumen т);
Property = PlansViewsCharacteristics.PropertiesObjects.FindBy Name(«Account1»);
Request = new Request; // найти свойства статьи, где указан аналог и статья
Request.Text =
«SELECT
Получить и записать сведения о документе или каталоге с помощью метаданных.
Методы работы с деталями документа или каталога через метаданные | Автор статьи: Document Burial Angel. |
Теперь о справочниках.
Они сложнее.
Получить список идентификаторов справочных сведений:
Но это еще не все. В дополнение к этим деталям есть еще такие вещи, как Код, Имя, Родитель и Владелец.
Конечно, вам не нужно копировать код. Атрибуты также могут быть периодическими, использоваться только группами, только элементами или и тем, и другим. Его можно редактировать вручную или с помощью документации…
Универсальная процедура копирования словарной статьи выглядит так:
Процедура имеет ряд недостатков: не копируются периодические реквизиты и дочерние справочники. не создаются. Но я думаю, что вы можете сделать это сами.
Шрифт