|
|||
Kashton
13.07.11 — 10:00 |
Как программно получить список реквизитов справочника? Платформа 8.2 |
||
Ёпрст
1 — 13.07.11 — 10:01 |
метаданные |
||
Kashton
2 — 13.07.11 — 10:12 |
(1) Пример есть? |
||
Ненавижу 1С
3 — 13.07.11 — 10:13 |
(2) СП украли? |
||
butterbean
4 — 13.07.11 — 10:13 |
(2) ё…, уже простой цикл нарисовать не могут |
||
Ненавижу 1С
5 — 13.07.11 — 10:15 |
Для каждого Реквизит из Метаданные.Справочники.ТвойИдентификатор.Реквизиты Цикл |
||
СвинТуз
6 — 13.07.11 — 10:16 |
4 года это уже срок |
||
Kashton
7 — 13.07.11 — 10:20 |
(5) спс. а я зачемто после Реквизит кавычки ставлю )))) |
||
Kashton
8 — 13.07.11 — 10:20 |
(6) и че? |
||
Ненавижу 1С
9 — 13.07.11 — 10:20 |
(7) кавычки или скобки? ))) а посмотреть в СП, что это свойство? |
||
Kashton
10 — 13.07.11 — 10:21 |
(9) Вообще гоню. В отпуск пора |
||
СвинТуз
11 — 13.07.11 — 10:22 |
нажми наконец Ctrl+F1. Нажми не мучай себя брат. |
||
Kashton
12 — 13.07.11 — 10:23 |
(11) ценный совет. я и не знал |
||
Gars 13 — 13.07.11 — 11:49 |
(11) Среда, но пятнично… |
&НаСервере Процедура СозданиеИИзменениеЭлементовИГруппСправочникаНаСервере() /// Как создать новый элемент справочника в 1с 8.3, 8.2 // создадим новый элемент справочника Города // с именем Владивосток Владивосток = Справочники.Города.СоздатьЭлемент(); Владивосток.Наименование = "Владивосток"; Владивосток.Записать(); /// Как создать новую группу справочника в 1с 8.3, 8.2 // создадим новую группу справочника Города ГородаУМоря = Справочники.Города.СоздатьГруппу(); ГородаУМоря.Наименование = "Города у моря"; ГородаУМоря.Записать(); /// Как перенести элемент справочника в другую группу в 1с 8.3, 8.2 // перенесём созданный Владивосток в группу "Города у моря" Владивосток.Родитель = ГородаУМоря.Ссылка; Владивосток.Записать(); /// Как внести изменения в элемент справочника по ссылке /// в 1с 8.3, 8.2 // найдём город Калькутта КалькуттаСсылка = Справочники.Города.НайтиПоНаименованию("Калькутта"); Если Не КалькуттаСсылка.Пустая() Тогда // изменим и запишем численность жителей в городе Калькутта = КалькуттаСсылка.ПолучитьОбъект(); Калькутта.Численность = 1000000; Калькутта.Записать(); КонецЕсли; /// Как получить и проверить пустую ссылку типа справочник в 1с 8.3, 8.2 ПустаяСсылка = Справочники.Города.ПустаяСсылка(); Если ПустаяСсылка.Пустая() Тогда Сообщить("Ссылка действительно пустая."); КонецЕсли; /// Как узнать принадлежность элемента справочника группе /// с учетом уровней иерархии в 1с 8.3, 8.2 ПермьСсылка = Справочники.Города.НайтиПоНаименованию("Пермь"); РоссияСсылка = Справочники.Города.НайтиПоНаименованию("Россия"); // проверим принадлежит ли город Пермь группе Россия Если ПермьСсылка.ПринадлежитЭлементу(РоссияСсылка) Тогда Сообщить("Элемент Пермь находится в группе Россия."); КонецЕсли; /// Как скопировать существующий элемент справочника в 1с 8.3, 8.2 // скопируем элемент Пермь КопияПерми = ПермьСсылка.Скопировать(); КопияПерми.Наименование = КопияПерми.Наименование + " КОПИЯ"; КопияПерми.УстановитьНовыйКод(); КопияПерми.Записать(); /// Как выяснить уровень вложенности элемента справочника /// в 1с 8.3, 8.2 Сообщить(КопияПерми.Уровень()); // 1 /// Как заблокировать элемент справочника перед изменениями /// в 1с 8.3, 8.2 // выполним блокировку элемента справочника // от изменения другими режимами или пользователями Пермь = ПермьСсылка.ПолучитьОбъект(); Если Не Пермь.Заблокирован() Тогда Пермь.Заблокировать(); // тут идёт какой-то долгий алгоритм // в результате которого мы меняем // заблокированный элемент Пермь.Численность = 5000; Пермь.Записать(); // и только потом освобождаем его // для других режимов и пользователей Пермь.Разблокировать(); КонецЕсли; /// Как заполнить новый элемент справочника на основании /// в 1с 8.3, 8.2 // в модуле справочника Города я определил процедуру // ОбработкаЗаполнения, которая обрабатывает ситуации // когда мы заполняем один элемент на основании // данных другого (см. в базе для скачивания) Хабаровск = Справочники.Города.СоздатьЭлемент(); Хабаровск.Заполнить( Справочники.Города.НайтиПоНаименованию("Рио-де-Жанейро") ); Хабаровск.Наименование = "Хабаровск"; Хабаровск.Записать(); /// Как пометить на удаление элемент справочника в 1с 8.3, 8.2 // пометим на удаление только что созданный Хабаровск Хабаровск.УстановитьПометкуУдаления( Истина, // пометка удаления Ложь // включая подчиненные (если речь о группе справочника) ); // метод Записать вызывать не нужно КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьКлиентаПоИмени(Имя) Возврат Справочники.Клиенты.НайтиПоНаименованию(Имя); КонецФункции /// Как открыть форму существующего элемента справочника /// по ссылке в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСуществующегоЭлементаСправочника(Команда) СсылкаНаЭлемент = ПолучитьКлиентаПоИмени("Андрей"); ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлемент); ОткрытьФорму( "Справочник.Клиенты.ФормаОбъекта", // имя формы ПараметрыФормы // параметры для формы ); КонецПроцедуры /// Как открыть форму существующей группы справочника /// по ссылке в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСуществующейГруппыСправочника(Команда) СсылкаНаГруппу = ПолучитьКлиентаПоИмени("Vip"); ПараметрыФормы = Новый Структура("Ключ", СсылкаНаГруппу); ОткрытьФорму( "Справочник.Клиенты.ФормаГруппы", // имя формы ПараметрыФормы // параметры для формы ); КонецПроцедуры /// Как открыть форму выбора элемента справочника и /// отследить её закрытие в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуВыбораЭлементаСправочника(Команда) ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораЭлемента", ЭтотОбъект); ОткрытьФорму( "Справочник.Клиенты.ФормаВыбора",,,,,,ОповещениеОЗакрытии ); КонецПроцедуры &НаКлиенте Процедура ПослеВыбораЭлемента(Результат, Параметры) Экспорт Если Результат <> Неопределено Тогда Сообщить("Был выбран элемент " + Результат); КонецЕсли; КонецПроцедуры /// Как открыть форму выбора группы справочника и /// отследить её закрытие в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуВыбораГруппыСправочника(Команда) ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораГруппы", ЭтотОбъект); ОткрытьФорму( "Справочник.Клиенты.ФормаВыбораГруппы",,,,,,ОповещениеОЗакрытии ); КонецПроцедуры &НаКлиенте Процедура ПослеВыбораГруппы(Результат, Параметры) Экспорт Если Результат <> Неопределено Тогда Сообщить("Была выбрана группа " + Результат); КонецЕсли; КонецПроцедуры /// Как открыть форму списка справочника и /// установить отбор по реквизиту в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормаСпискаСправочникаСОтбором(Команда) // откроем список клиентов, оставив // только мужчин ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Пол", ПолучитьПеречислениеМужской()); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора); ОткрытьФорму( "Справочник.Клиенты.ФормаСписка", ПараметрыФормы ); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьПеречислениеМужской() Возврат Перечисления.Пол.Мужской; КонецФункции /// Как открыть форму списка справочника с нужным отображением /// в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСпискаСправочникаСНужнымОтображением(Команда) // откроем список клиентов с отображением "Список" ФормаСписка = ПолучитьФорму("Справочник.Клиенты.ФормаСписка"); ФормаСписка.Открыть(); ФормаСписка.Элементы.Список.Отображение = ОтображениеТаблицы.Список; КонецПроцедуры /// Как открыть форму только что созданного, но ещё /// не записанного элемента справочника в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуНовогоНеЗаписанногоСправочника(Команда) // получаем форму нового справочника ФормаНовогоСправочника = ПолучитьФорму( "Справочник.Еда.ФормаОбъекта",,, Истина); // делаем копию её данных (так как напрямую их менять // нельзя) КопияДанныхФормы = ФормаНовогоСправочника.Объект; // заполняем эти данные на сервере ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы); // копируем заполненные данные в исходную форму КопироватьДанныеФормы(КопияДанныхФормы, ФормаНовогоСправочника.Объект); // показываем форму нового заполненного // элемента справочника пользователю ФормаНовогоСправочника.Открыть(); КонецПроцедуры &НаСервере Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы) // преобразуем данные формы в документ Еда = ДанныеФормыВЗначение(ДанныеФормы, Тип("СправочникОбъект.Еда")); Еда.Наименование = "Груша"; Еда.Калорийность = 500; // преобразуем документа обратно в данные формы ЗначениеВДанныеФормы(Еда, ДанныеФормы); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
Опубликовано в Статьи по 1С 27.10.2018
В библиотеке стандартных подсистем 1С дополнительные реквизиты и сведения включены и активно применяются. Эти механизмы позволяют добавить дополнительный реквизит к объекту метаданных без изменения типовой конфигурации. Принцип работы дополнительных реквизитов и сведений, их добавление и получение значений.
Отличие дополнительного реквизита от дополнительного сведения в том, что
- Дополнительные реквизиты – список реквизитов, доступных в форме документа или справочника; причем эти реквизиты хранятся в табличной части объекта, к которому они добавлены;
- Дополнительные сведения – список значений доступных по дополнительной кнопке; причем доп. сведения хранятся в отдельном регистре.
После ввода дополнительного реквизита или сведения 1С, можно создать подключаемую обработку, где считать введенные дополнительные данные и задать необходимую логику обработки данных, в которой использовать этот реквизит или сведение.
Как получить 1С дополнительные реквизиты и сведения программно:
Для получения дополнительных данных используем запрос, в котором получим значение дополнительных реквизитов и сведений:
////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДополнительныеСведения.Свойство,
| ДополнительныеСведения.Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Объект»;
Запрос.УстановитьПараметр(«Объект», СсылкаДокумент);
////
Для получения дополнительного реквизита использую код вида:
////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Свойство,
| НоменклатураДополнительныеРеквизиты.Значение
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
| И НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка»;
Запрос.УстановитьПараметр(«Ссылка», СсылкаДокумент);
Запрос.УстановитьПараметр(«Свойство», ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Коэффициент бруто»));
////
Теперь вы без труда сможете добавить и получить необходимые дополнительные 1С данные без снятия конфигурации 1С с поддержки и изменения типовой конфигурации. Без сомнения, такой инструмент должен быть в арсенале 1С программиста и активно использоваться в работе.