1С-Предприятие 8.0. Практическое пособие разработчика

       

Справочник


Есть ли в версии 8.0 аналог методу формы справочника ИспользоватьСписокЭлементов()?

Нет.

Для того чтобы отобразить в списке специально отобранный перечень объектов, следует использовать выборку данных запросом и отображение их в форме в таблице значений или табличном документе. При этом система 1С:Предприятие 8.0 будет обеспечивать полноценное взаимодействие других системных механизмов с такими формами.

При использовании динамических списков документов, справочников и т.д., также можно программно установить отбор по полю Ссылка, и указать, что в качестве вида сравнения будет использовано вхождение в список значений. Такой прием тоже позволяет отображать в списке только определенные объекты. Однако такой способ может иметь только ограниченное применение, потому что динамический список обладает большим количеством универсальных возможностей (установка отбора пользователем, переходы по уровням в иерархических списках и т.д.), и сложно совместить в прикладных решениях эти механизмы с отбором по конкретным значениям ссылок. [623]

Говорят, что в версии 8.0 нет периодических реквизитов справочников. А как же теперь хранить историю изменения их значений?

Действительно, в версии 8.0 нет возможности создавать периодические реквизиты объектов. На смену им пришел новый, более универсальный механизм, представленный регистрами сведений. Регистры сведений позволяют хранить информацию любого типа на пересечении комбинации значений измерений.

Регистр сведений можно сделать периодическим, и тогда он будет хранить историю изменения этих значений, с заданной точностью (имеется возможность задать различную периодичность регистра сведений – месяц, день, позиция документа и пр.).

В качестве примера можно посмотреть периодический регистр сведений "Цены", хранящий историю изменения цен номенклатуры, в главе "Периодический регистр сведений" на странице 118.

Более подробную информацию можно найти на диске ИТС в статье "Периодические регистры сведений".




Написал процедуру ПриОткрытии() в модуле формы, но она не вызывается, когда я открываю форму. В чем дело?

Дело в том, что в версии 8.0 любому событию формы может быть назначена процедура, которая будет обрабатывать это событие. Имя такой процедуры может не совпадать (а в большинстве случаев и не совпадает) с именем события, поэтому для того, чтобы ваша процедура "ПриОткрытии" стала обрабатывать событие формы "При открытии" необходимо в конфигураторе, в палитре свойств формы, явным образом назначить ее обработчиком этого события.



Для упрощения работы, в версии 8.0 можно создавать шаблоны обработчиков событий формы. Для этого следует выбрать нужное событие в палитре свойств и нажать на символ лупы в конце поля ввода. Система создаст объявление процедуры в модуле формы и свяжет ее с выбранным событием.

Подробнее можно прочитать об этом в главе "Обработчики событий" на странице 546, и на диске ИТС в статье "Процедуры - обработчики событий". [624]

У меня не получается программно изменить элемент справочника. Почему?

По всей видимости, вы пытаетесь изменять элемент справочника, используя объект СправочникСсылка.<имя>. Объекты этого типа позволяют обращаться к реквизитам и табличным частям справочника в режиме "только чтение".

Для того чтобы изменить данные элемента справочника следует получить объект СправочникОбъект.<имя>, который позволяет как читать, так и записывать данные. Это возможно с помощью метода ПолучитьОбъект().

Более подробную информацию можно найти в главах "Виды объектов встроенного языка, предназначенные для работы с данными прикладных объектов конфигурации" на странице 551, "Манипулирование данными объектов" на странице 561, а также в статьях на диске ИТС: "Работа с прикладными объектами средствами встроенного языка" и "Типы значений, связанные с прикладными объектами".

У прикладных объектов нет методов ПолучитьАтрибут() и УстановитьАтрибут(). Как теперь обращаться к атрибутам объектов, если имя атрибута формируется в процессе вычислений?



Встроенный язык версии 8. 0 поддерживает универсальную возможность обращения к свойствам объектов, используя конструкцию [<имя свойства>], где <имя свойства> – строка или строковая переменная, содержащая имя требуемого свойства:

ИмяСвойства = "Наименование";

Объект[ИмяСвойства] = Объект[ИмяСвойства] + " Новый";

В 7.7 были методы ТекущийДокумент() и ТекущийЭлемент() для получения позиционированного элемента справочника или документа. А как теперь это сделать в 8.0?

В версии 8.0 была введена унифицированная объектная структура данных. Теперь значение ссылки на объект базы данных хранится в поле Ссылка, и во всех случаях (при использовании объекта, выборки, [625] запроса и т.д.) значение ссылки на объект можно получить по имени этого поля:

Выборка = Справочники.Склады.Выбрать();

Пока Выборка.Следующий() Цикл

   Склад = Выборка.Ссылка;

   ...

КонецЦикла;

Содержание раздела