<<

стр. 10
(всего 11)

СОДЕРЖАНИЕ

>>

модулем объекта, либо модулем набора записей, в зависимости от
принадлежности к тому или иному объекту конфигурации. Для
констант этот модуль называется модулем менеджера значений.
Так вот, модуль объекта манипулирования данными будет всегда
выполняться при создании объекта манипулирования данными. Кроме
этого, он будет всегда выполняться и при интерактивном обращении
пользователя к самой структуре манипулирования данными, поскольку
такое обращение будет вызывать создание соответствующего объекта
манипулирования данными. Например, при открытии формы элемента
справочника будет создаваться объект СправочникОбъект.<имя>.
В модуле объекта манипулирования данными, кроме всего прочего,
могут быть описаны процедуры с ключевым словом Экспорт, что
подразумевает вызов этих процедур как методов соответствующего
объекта манипулирования данными. Здесь важно не путать объект
манипулирования данными с другими объектами, позволяющими
получить доступ к данным этой информационной структуры.
Например, если мы, для объекта конфигурации Справочник
«Клиенты» опишем в модуле объекта процедуру:

Процедура Проверка() Экспорт

КонецПроцедуры;




561
560
Краткий справочник разработчика Манипулирование данными объек!


Однако существует возможность манипулирования записями
то в дальнейшем сможем вызывать ее как метод объекта
регистра сведений и при помощи объекта
СправочникОбъект.Клиенты:
РегистрСведенийМенеджерЗаписи.<имя>. Но объект
РегистрСведенийМенеджерЗаписи.<имя> работает с данными
Клиент = Справочники.Клиенты.НайтиПоКоду(1)ПолучитьОбъект();
регистра не напрямую, а через объект
Клиент.Проверка();
РегистрСведенийНаборЗаписей.<имя>. Таким образом, модуль
набора записей, а также обработчики событий ПередЗаписью() и
Однако следующий код будет приводить к ошибке, т.к. объект
ПриЗаписи() набора записей, будут отрабатывать и при
СправочникСсылка.Клиенты не имеет метода «Проверка»:
манипулировании объектом
РегистрСведенийМенеджерЗаписи.<имя>. Однако процедуры и
Клиент = Справочники.Клиенты.НайтиПоКоду(1); функции, описанные в модуле набора записей с ключевым словом
Клиент.Проверка();
Экспорт, не будут доступны как методы объекта
РегистрСведенийМенеджерЗаписи.<имя>.
В следующей таблице представлен перечень объектов,
позволяющих манипулировать данными. Как всегда, не бывает правил
без исключений, и существует два таких исключения.
Во-первых, для констант указаны три объекта манипулирования
данными КонстантаМенеджерЗначения.<имя>,
КонстантаМенеджер.<имя> и КонстантыНабор. На самом деле
манипулирование данными константы осуществляется при помощи
объектаКонстантаМенеджерЗначения.<имя>.
Два других объекта - КонстантаМенеджер.<имя> и
КонстантыНабор - также позволяют изменять значения констант,
хранящиеся в базе данных, однако они, при выполнении своих
методов Установить() и Записать() вызывают создание объекта
КонстантаМенеджер.<имя>, который и выполняет
непосредственное изменение данных.
При выполнении метода Установить() объекта
КонстантаМенеджер.<имя>, будет вызван модуль менеджера
значения и обработчики событий ПриЗаписи() и ПередЗаписью()
для изменяемой константы. При выполнении метода Записать()
объекта НаборКонстант, модуль менеджера значения и
соответствующие обработчики будут вызваны для каждой константы,
входящей в набор.
Во-вторых, для регистра сведений указаны два объекта
манипулирования данными. «В чистом виде» манипулирование
данными регистра сведений осуществляется при помощи объекта
РегистрСведенийНаборЗаписей.<имя>.



562 563
Константы
Объекты встроенного языка для работы с
константами:




*Заливкой выделен объект манипулирования данными

Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.

КонстантыНабор - предоставляет возможность проведения
операций чтения и записи сразу для группы констант, в частном
случае - для всех констант. Также используется в форме констант для
хранения, записи и считывания констант.
КонстантаМенеджерЗначения<имя> - используется для
доступа к константе. Любая запись константы (интерактивно в форме,
объекты КонстантыНабор и КонстантаМенеджер.<имя>) создает
объект этого типа и производит запись с его помощью, что
обеспечивает вызов модуля и обработчиков событий этого объекта.


565
Краткий справочник разработчика
Константы

Использование объектов:
СоздатьМенеджерЗначения()

//Пример: Вывести значения всех констант, существующих в конфигурации
Для Каждого ОчереднаяКонстанта Из Константы Цикл
// Константы ИмяКонст=ОчереднаяКонстанта.СоздатьМенеджерЗначения().Метаданные().Имя-
ЗначениеКонст = ОчереднаяКонстанта.Получить(); Сообшить("Константа
"+ИмяКонст+" = "+ЗначениеКонст); КонецЦикла;
//Пример: Открыть основную форму констант
Форма = Константы.ПолучитьФорму();
Форма.Открыть();




II .<имя константы> // [<имя константы>] //
Для Каждого ... Из... Цикл ... КоненЦикла;

//Пример: Прочитать значение константы
Результат = Константы.ПрефиксНумерации.ПолучитьО;
Сообщить("Значение константы ПрефиксНумерации = "+Результат);

/ЛТример: Установить значение константы «ПрефиксНумерации» равным «ЦБ»
Константы["ПрефиксНумерации"].Установить("ЦБ");
Сообщить("Новое значение = "+Константы["ПрефиксНумерации"].Получить());

/ЛТример: Очистить значения всех констант
Для Каждого ОчереднаяКонстанта Из Константы Цикл
ОчереднаяКонстанта.Установить(Неопределено);
КоненЦикла;




// СоздатьНабор()

//Пример: Установить новые значения нескольких констант
Набор = Константы.СоздатьНабор("Руководитель, Бухгалтер");
Набор.Руководитель = "НиколаевДенис Павлович";
Набор.Бухгалтер = "Николаева Людмила Сергеевна";
Набор.Записать();




566
567
Краткий справочник разработчика Константы

Особенности внутренней реализации объекта КонстантыНабор
Последовательность событий при записи констант из таковы, что при записи набора констант, обработчики события
формы ПередЗаписью() и ПриЗаписи() модуля менеджера значения
константы будут вызваны для каждой константы, входящей в
записываемый набор.




Замечание. Работа с формой констант осуществляется при помоши
объекта КонстантыНабор, который, в свою очередь, использует
объектКонстантаМенеджерЗначения.<имя>.


569
568
Справочники

Использование объектов:
Справочники
Объекты встроенного языка для работы со II Справочники
справочниками //Пример: Вывести все типы ссылок на элементы справочников, существующие
//в конфигурации
Массив = Справочники.ТипВсеСсылки().Типы();
Для Каждого ОчереднойТип из Массив Цикл
Сообщить(ОчереднойТип);
КонецЦикла;




// .<имя справочника> // [<ими
справочника>] // Дли Каиедого ... Из ... Цикл
... КонецЦикла;

//Пример: Создать новую группу справочника Номенклатура
НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
НоваяГруппа.Наименование = "Моя новая группа";
НоваяГруппа.Записать();

//Пример: Открыть форму выбора справочника Номенклатура
Форма = Справочники["Номенклатура"].ПолучитьФормуВыбора();
Форма.Открыть();

*Заливкой выделен объект манипулирования данными

<*" Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.




570 571
Краткий справочник разработчика Справочники


// Выбрать()
// НайтиПоКоду()
// ВыбратьИерархически()
// НайтиПоНаименованик>()
// НайтиПоРеквизитуО //Пример: Вывести список элементов, расположенных в корне справочника
// ПустаяСсылка() Выборка = Справочники.Номенклатура
// ПолучнтьСсылку()
.Выбрать(Справочники.Номенклатура.ПустаяСсылкаО); Пока
// .<имя предопределенного элемента справочника>
Выборка.Следующий() Цикл Если Не Выборка.ЭтоГрутша тогда
Сообщить(Выборка);
//Пример: Проверить, помечен лн на удаление элемент справочника Номенклатура
КонецЕсли; КонецЦикла;
//c кодом 13
Если Справочники.Номенклатура.НайтиПоКоду(13).ПометкаУдаления тогда //Пример: Удалить все элементы иерархического справочника
Сообщить("Элемент с кодом 13 помечен на удаление"); Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока
КонецЕсли; Выборка.Следующий() Цикл
Выборка.Удалить();
/ЛТример: Является ли элемент справочника Номенклатура с наименованием КонецЦикла;
//«Услуги» группой
Если Справочники.Номенклатура
.НайтиПоНаименованию"Услуги", Истина).ЭтоГруппа тогда
Сообщить("Элемент Услуги является группой"); КонецЕсли;

//Пример: Проверить, что для всех элементов задан вид номенклатуры
// СоздатьГруппу() //
ПустаяСсылкаПеречисления = Перечисления.ВидыНоменклатуры.ПустаяСсылка(); Если
СоздатьЭлемент()
Не Справочники.Номенклатура.НайтиПоРеквизит("'ВидНоменклатуры",
ПустаяСсылкаПеречисления).Пустая() тогда
//Пример: Создать новый элемент справочника Сотрудники
Сообщить("Есть элементы для которых не задан вид номенклатуры");
НовыйЭлемент = Справочники.Сотрудники.СоздатьЭлемент();
КонецЕсли;
НовыйЭлемент.Наименование = "Смирнов Андрей Анатольевич";
//Заполнить табличную часть
//Пример: Передать пустую ссылку в параметр метода
НоваяСтрокаТабличнойЧасти = НовыйЭлемент.ТрудоваяДеятельность.Добавить();
Выборка = Справочники.Номенклатура
НоваяСтрокаТабличнойЧасти.Организация = "OOO НТЦ";
.Выбрать(Справочники.Номенклатура.ПустаяСсылка()); ________________
НоваяСтрокаТабличнойЧасти.НачалоРаботы = Дата(2003,05,01);
НоваяСтрокаТабличнойЧасти.ОкончаниеРаботы = Дата(2003,12,31);
НоваяСтрокаТабличнойЧасти.Должность = "Программист";
НовыйЭлемент.Записать();




573
572
Справочники
Краткий справочник разработчика

// Ссылка
//
Владелец //Пример: Заполнить табличную часть документа ПриходнаяНакладная всеми
//элементами из указанной группы справочника Номенклатура
//
Выборка = Справочники.Номенклатура.ВыбратьИерархическиСПолеВвода!);
Родитель //
Пока Выборка.Следующий() Цикл
Ссылка
СсылкаНаНоменклатуру = Выборка.Ссылка; Если
СсылкаНаНоменклатуру.ЭтоГруппа тогда
// Пример: запретить изменение подчиненных элементов, если у владельца
Продолжить;
// установлено соответствующее свойство «ИзмененияЗапрещены» // в
КонецЕсли;
модуле формы элемента справочника
НоваяСтрока = Материалы.Добавить();
Процедура ПередЗаписью(Отказ)
НоваяСтрока.Материал = СсылкаНаНоменклатуру;
Если Владелец.ИзмененияЗапрещены Тогда
КонецЦикла;
Отказ = Истина;
КонецЕсли;
КонецПроцедуры




//
// ПолучитьОбъект()
ПолучитьОбъект() //
Скопировать()
//Пример: пометить все элементы неиерархического справочника на удаление
// Пример: Изменить наименование элемента справочника
Выборка = Справочники.Клиенты.Выбрать();
Элемент = Справочники.Номенклатура.НайтиПоКоду(10).ПолучитьОбъект();
Пока Выборка.Следующий() Цикл
Элемент.Наименование = "Мое новое наименование"; Элемент.Записать();
Выборка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина);
КонецЦикла;
// Пример: Заполнить справочник тестовыми данными
Элемент = Справочвики.Номенклатура.СоздатьЭлемент();
Элемент.Наименование = "Тестовый элемент";
Элемент.ЗаписатьО; Для ш = 1 по 1000 Цикл
НовыйЭлемент = Элемент.СкопнроватьО;
НовыйЭлемент.Записать();
КонецЦикла;




575
574
Краткий справочник разработчика

элемента
Последовательность событий при записи элемента справочник
справочника из формы элемента а
Модуль
Запись элемента Модуль
формы
справочника объекта
Объекты встроенного языка для работы с
Документы документами:

*Заливкой выделен объект манипулирования данными

*" Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.




576 577
Краткий справочник разработчика Документы


Использование объектов: // НайтиПоНомеру() //
НайтиПоРеквизиту() //
ПустаяСсылка()
// Документы
//Пример: Проверить, проведен ли документ ПриходнаяНакладная с номером 3
Если Документы.ПриходнаяНакладная.НайтиПоНомеру(3).Проведен тогда
//Пример: вывести все типы ссылок на элементы справочников, существующие в
Сообщить("Документ с номером 3 проведен");
конфигурации
КонецЕсли;
Массив = Документы.ТипВсеСсылки()Типы();
Для Каждого ОчереднойТип из Массив Цикл
//Пример: Проверить, что во всех документах ПриходнаяНакладная заполнен
Сообщить(ОчереднойТип);
//реквизит Склад
КонецЦикла; ПустаяСсьшкаСклада = Справочники.Склады.ПустаяСсылка();
Если Не Документы.ПриходнаяНакладная
.НайтиПоРеквизиту("Склад", ПустаяСсылкаСклада).Пустая() тогда
Сообщит("'Есть документы, у которых не заполнен реквизит Склад");
КонецЕсли;
II .<имя документа> // [<имя документа>] //
Для Каждого ... Из ... Цикл ... КонецЦикла;

/Шример: Открыть форму нового документа ОказаниеУслуги для интерактивного
//заполнения
// Выбрать()
Форма = Документы["ОказаниеУслуги"].ПолучитьФормуНовогоДокумента();
Форма.Открьпь();
//Пример: Выбрать все документы ПриходнаяНакладная за текущий месяц
Выборка = Документы.ПриходнаяНакладная
//Пример: Открыть формы списка всех документов, существующих в
.Выбрать(НачалоМесяца(ТекущаяДата()),КонецМесяца(ТекущаяДата()));
конфигурации
Пока Выборка.Следующий() Цикл
Для Каждого ОчереднойДокумент Из Документы Цикл
Сообщить(Выборка);
Форма = ОчереднойДокумент.ПолучитьФормуСписка();
КонецЦикла;
Форма.Открыть();
КонецЦикла;



// СоздатьДокумент()

//Пример: Создать новый документ ПриходнаяНакладная
НовыйДокумент = Документы.ПриходнаяНакладная.СоздатьДокументО;
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Склад = Справочники.Склады.Основной;
//Заполнить табличную часть
НоваяСтрокаТабличнойЧасти = НовыйДокумент.Материалы.Добавить();
НоваяСтрокаТабличнойЧасти.Материал ¦ Справочники.Номенклатура.НайтиПоКоду(6);
НоваяСтрокаТабличнойЧасти.Количество = 10;
НоваяСтрокаТабличнойЧасти.Цена = 22,5;
НоваяСтрокаТабличнойЧасти.Сумма = 225;
НовыйДокумент.Записать();



579
578
Краткий справочник разработчика Дою менты


// ПолучитьОбъект()

//Пример: Удалить все документы ПриходнаяНакладная
// Ссылка Выборка = Документы.ПриходнаяНакладная.Выбрать();
Пока Выборка.Следующий() Цикл
//Пример: В модуле объекта вызвать процедуру проверки заполнения реквизитов Выборка.ПолучитьОбъект()Удалить();
КонецЦикла;
документа
Если Не ПроверитьЗаполнениеРеквизитов(ЭтотОбъект.Ссылка) тогда
Сообщить(«Реквизиты документа не заполнены!»);
Последовательность событий при записи документа
КонецЕсли;

из формы документа


II ПолучитьОбъект() //
Скопировать()

//Пример: Пометить документ на удаление
НенужныйДокумент = Документы.ОказаниеУслуги
.НайтиПоНомеру(13).ПолучитьОбъект();
НенужныйДокумент.УстановитьПометкуУдаления(Истина);




// Ссылка

//Сформировать список ссылок на все документы ПриходнаяНакладная за
//текущий месяц
СписокНакладных = Новый СписокЗначений;
Выборка = Документы.ПриходнаяНакладная
.Выбрать(НачалоМесяца(ТекущаяДата()),КонецМесяца(ТекущаяДата()));
Пока Вьтборка.Следующий() Цикл
СписокНакладных.Добавит^Выборка.Ссылка);
КонецЦикла; _________________ ^ ^




580
581
Документы
Краткий справочник разработчика


Последовательность событий при отмене
Последовательность событий при проведении
проведени документа из формы документа
документа из формы документа




583
582
Краткий справочник разработчика
Перечислени


Перечисления // .<имя перечисления>
// [<имя перечисления >]
// Для Каждого ... Из ... Цикл ... КонецЦикла;
Объекты встроенного языка для работы с
//Пример: Открыть форму выбора перечисления
перечислениями: Форма = Перечисления.ВидыНоменклатуры.ПолучитьФормуВыбора();
Форма.Открыть();




// .<имя значения перечисления>
ПеречислениеСписок.<имя> // [<имя значения перечисления >]
// [<идекс элемента коллекции>]
// Для Каждого... Из ... Цикл ... КонецЦикла;
// ПустаяСсылка()

//Пример: Получить пустую ссылку на значение перечисления

ПустаяСсылкаПеречисления= Перечисления.ВидыНоменклатуры.ПустаяСсылка();
Если ТекущаяНоменклатура.ВидНоменклатуры = ПустаяСсылкаПеречисления тогда
//предложить заполнение вида номенклатуры
...

КонецЕсли;


Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.

Использование объектов:


// Перечисления

//Пример: Открыть форму списка перечисления
Форма = Перечисления.ВидыНоменклатуры.ПолучитьФормуСписка();
Форма.Открыть();




584 585
Планы видов характеристик


Свойства и методы взаимодействия перечисленных объектов в
Планы видов характеристик большинстве своем аналогичны свойствам и методам объектов,
предназначенных для работы со справочниками (см. раздел «Объекты
Объекты встроенного языка для работы с планами встроенного языка для работы со справочниками» на странице 570).
видов характеристик
Последовательность событий при записи вида
характеристики из формы




*Заливкой выделен объект манипулирования данными

¦ Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.




586 587
Планы счетов

ПланСчетовВидыСубконто^имя>. Используется для доступа к
Планы счетов методам специальной табличной части счета ВидыСубконто в целом.
ПланСчетовВидыСубконтоСтрока^имя>. Строка специальной
Объекты встроенного языка для работы с планами табличной части счета ВидыСубконто.
Свойства и методы взаимодействия перечисленных объектов в
счетов
большинстве своем аналогичны свойствам и методам объектов,
предназначенных для работы со справочниками (см. раздел «Объекты
встроенного языка для работы со справочниками» на странице 570).
Глобальный контекст

Последовательность событий при записи счета из
формы
ПланыСчетовМенеджер | | ПланСчетовСписок.<имя>


ПланСчетовМенеджер.<имя>




И ПланСчетовОбъект.ошя>
ПланСчетовСсылка.<имя>



ПланСчетовВыборка.<имя>




ПланСчетовВидыСубконто.<имя>



ПланСчетовВидыСубконтоСтрока.^ашя>



*Заливкой выделен объект манипулирования данными

<*" Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.




589
Планы видов расчета


<*^ Узнай больше!
Планы видов расчета Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
Объекты встроенного языка для работы с планом предназначенные для работы с данными прикладных объектов
видов расчета конфигурации» на странице 551.

ВытесняющиеВидыРасчета.<имя>. Предопределенная
табличная часть вида расчета - список вытесняющих видов расчета.
Такая табличная часть определена только для планов видов расчета с
признаком ИспользуетПериодДействия. Имеет единственную
колонку- ВидРасчета типа ПланВидовРасчетаСсылка.<имя>.
ВытесняющиеВидыРасчетаСтрока^имя>. Строка
предопределенной таблицы вытесняющих видов расчета.
ВедущиеВидыРасчета.<имя>. Предопределенная табличная
часть вида расчета - список ведущих видов расчета. Имеет
единственную колонку - ВидРасчета типа
ПланВидовРасчетаСсылка.<имя>.
ВедущиеВидыРасчетаСтрока.<имя>. Строка предопределенной
таблицы ведущих видов расчета.
БазовыеВидыРасчета.<имя>. Предопределенная табличная
часть вида расчета - список ведущих видов расчета. Такая табличная
часть (свойство БазовыеВидыРасчета) определена только для
планов видов расчета со свойством ЗависимостьОтБазы не равным
значению «Не зависит». Имеет единственную колонку - ВидРасчета
типа ПланВидовРасчетаСсылка^имя>.
БазовыеВидыРасчетаСтрока.<имя>. Строка предопределенной
таблицы базовых видов расчета.
Свойства и методы взаимодействия перечисленных объектов в
большинстве своем аналогичны свойствам и методам объектов,
предназначенных для работы со справочниками (см. раздел «Объекты
встроенного языка для работы со справочниками» на странице 570).



ВытесняющиеВидыРасчетаСтрока.<имя>



*Заливкой выделен объект манипулирования данными



590 591
Регистры сведений
Последовательность событий при записи вида
расчета из формы
Объекты встроенного языка для работы с регистрами
сведений




*Заливкой выделен объект манипулирования данными

<*" Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.

РегистрСведенийМенеджерЗаписи^имя>. Позволяет читать,
записывать и удалять отдельную запись регистра сведений.
Используется только для регистров сведений, не изменяемых



593
592
Краткий справочник разработчика Регистры сведе ни

регистраторами, т.е. для которых в конфигураторе установлен режим
// СоздатьКлючЗаписи()
записи «Независимый».
РегистрСведенийЗапись.<имя>. Предоставляет доступ к записи //Пример: Активизировать требуемую строку списка регистра сведений
СтруктураКлючевыхПолей = Новый Структура;
регистра сведений. Объект не создается непосредственно, а
СтруктураКлючевыхПолей.Вставить("Период",Дата("20040331000000"));
предоставляется другими объектами, связанными с регистром СтруктураКлючевыхПолей.Вставить("Номенклатура",
сведений. Например, данный объект представляет записи регистра в Справочники.Номенклатура.НайтиПоКоду("0000006"));
ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока =
наборе записей. _______
РегистрСведенийКлючЗаписи.<имя>. Представляет собой _______ РегислрыСведений.Цены.СоздатьКлючЗаписи(СтруктураКлючевыхПолей)
набор значений, однозначно идентифицирующих запись регистра. ;
Объект используется в тех случаях, когда необходимо сослаться на
определенную запись. Например, он выступает в качестве значения
свойства «ТекущаяСтрока» табличного поля, отображающего список
записей регистра.
// СоздатьНаборЗаписей()

//Пример: Показать номенклатуру, цена на которую была установлена в заданную
Использование объектов: //дату и время
Набор = РегистрыСведений.Цены.СоздатьНаборЗаписей();
Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина);
Набор.Прочитать();
// РегистрыСведений
Для Каждого ОчереднаяЗапись Из Набор Цикл
//Прнмер: Получить текущую цену из периодического регистра сведений Цены Сообщить("Номенклатура = "+ОчереднаяЗапись.Номенклатура+
", цена = "+ОчереднаяЗапись.Цена);
Элемент = Справочники.Номенклатура.НайтиПоКоду(4);
КонецЦикла;
Отбор = Новый Структурв("Номенклатура",Элемент);
ЗначенияРесуроов = РегистрыСведений.Цены
.ПолучитьПоследнее(ТекущаяДата(), Отбор);



// СоздатьМенеджерЗаписи()

/Шример: Добавить новое значение цены в регистр Цены
II .<имя регистра сведений> // [<имя регистра
Запись = РегистрыСведений.Цены.СоздатьМенеджерЗаписи();
сведений >] // Для Каждого ... Из ... Цикл ...
Запись.Период = ТекущаяДата();
КонецЦикла;
Запись.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("0000005");
Запись.Цена = 568;
//Пример: Открыть форму списка регистра сведений Цены
Запись .Записать();
ИмяРегистра= "Цены";
Форма = РегистрыСведений[ИмяРегистра].ПолучитьФормуСписка();
Форма.Открыть();




595
594
Регистры сведений
Краткий справочник разработчика

Последовательность событий
// [<индекс элемента коллекции >]
// Для Каждого ... Из ... Цикл ... КонецЦикла;
При записи из формы записи регистра сведений из формы
записи
/Шример: Показать номенклатуру, цена на которую была установлена в заданную
//дату и время
Набор = РегистрыСведений.Цены.СоздатьНаборЗаписей();
Набор.Отбор.Период,Установить(ЗаданнаяДата,Истина);
Набор.Прочитать();
Для Каждого ОчереднаяЗапись Из Набор Цикл
Сообщить("Номенклатура = "+ОчереднаяЗапись.Номенклатура+
", цена = "+ОчереднаяЗапись.Цена);
КонецЦикла; __________________________________________________________




// ПолучитьМенеджерЗаписи()

//Пример: Удалить все записи регистра сведений за текущий месяц
Выборка = РегистрыСведений.Цевы
.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
Пока Выборка.Следующий() цикл
Выборка.ПолучютьМенеджерЗначения()-Удалить();
КонецЦикла; _____________________________________________________________




// Выбрать()
// ВыбратьПоРегистратору()

//Пример: Показать изменение цен на элемент номенклатуры в течение года
Отбор = Новый Структур("'Номенклатура",
Справочники.Номенклатура.НайтиПоКоду("0000005"));
Выборка = РегистрыСведений.Цены
.Выбрать(НачалоГода(ТекущаяДата()),ТекущаяДата(),Отбор);
Пока Выборка.Следующий() цикл
Сообщить("Дата = "+Выборка.Период+ ", цена = "+Выборка.Цена);
КонецЦикла; _____________________________________________


Замечание. Работа с формой записи регистра сведений
осуществляется при помощи объекта
РегистрСведенийМенеджерЗаписи.<имя>, который, в свою


597
596
Краткий справочник разработчика

очередь, использует объект
Регистры накопления
РегистрСведенийНаборЗаписей^имя>.
Особенности внутренней реализации объекта
Объекты встроенного языка для работы с регистрами
РегистрСведенийМенеджерЗаписи^имя> таковы, что в случае
накопления
записи существующей записи регистра сведений, обработчики
события ПередЗаписью() и ПриЗаписи() модуля набора записей
будут вызваны дважды: сначала для «старого» набора записей (с
количеством записей 0) и затем для «нового» набора записей (с
количеством записей 1).
При записи из формы набора записей регистра сведений




*Заливкой выделен объект манипулирования данными

Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.

РегистрНакопленияЗапись^имя>. Используется для доступа к
записи регистра накопления. Объект не создается непосредственно, а
предоставляется другими объектами, отвечающими за регистр
накопления. Например, данный объект представляет записи регистра в
наборе записей.
РегистрНакопленияКлючЗаписи^имя>. Представляет собой
набор значений, однозначно идентифицирующих запись регистра.


599
598
Краткий справочник разработчика
Регистры накопле

Объект используется в тех случаях, когда необходимо сослаться на
определенную запись. Например, он выступает в качестве значения // СоздатьНаборЗаписей()
свойства «ТекущаяСтрока» табличного поля, отображающего список
//Пример: Получить движения документа
записей регистра. НужныйДокумент = Документы.ПриходнаяНакладная.НайтиПоНомеру(4);
Движения = РегистрыНакопления.ОстаткиМатериалов.СоздатьНаборЗаписей();
Движения.Отбор.Регистратор.Значение = НужныйДокумент;
Использование объектов: Движения.Прочитать();


// РегистрыНакопления

//Пример: Открыть форму списка регистра ОстаткиМатериалов
// Выбрать()
Форма = РегистрыНакопления.ОстаткиМатериалов.ПолучитьФормуСписка();
// ВыбратьПоРегистратору()
Форма.Открыть();

//Пример: Выбрать все записи регистра ОстаткиМатериалов за текущий месяц
Выборка = РегистрыНакопления.ОстаткиМатериалов
.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));

II .<имя регистра накопления> // [<имя
регистра накопления >] // Для Каждого ... Из ...
Цикл... КонецЦикла;
// [<индексэлементаколлекции>|
//Пример: Рассчитать итоги регистра ОстаткиМатериалов на указанную дату // Для Каждого ... Из ... Цикл ... КонецЦикла;
ИмяРегистра = ОстаткиМатериалов;
//Пример: Получить движения документа
РегистрыНакопления[ИмяРегистра]
НужныйДокумент = Документы.ПриходнаяНакладная.НайтиПоНомеру(4);
.УстановитьПериодРассчитанныхИтогов(УказаннаяДата);
Движения = РегистрыНакопления.ОстаткиМатериалов.СоздатьНаборЗаписей();
Движения.Отбор.Регистратор.Значение = НужныйДокумент;
Движения.Прочитать();
Для Каждого ОчередноеДвижение Из Движения Цикл
//алгоритм обработки движений
// СоздатьКлючЗапнси() КонецЦикла;
//Пример: Активизировать требуемую строку списка регистра накопления
СтруктураКлючевыхПолей = Новый Структура;
СтруктураКлючевыхПолей.Вставить("Регистратор",
Документы.ПриходнаяНакладная.НайтиПоНомеру("0000002"));
СтруктураКлючевыхПолей.Вставить("НомерСтроки",2);
ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока =
РегистрыНакопления.ОстаткиМатериалов
.СоздатьКлючЗапис^СтруктураКлючевыхПолей)
;




600
601
Регистры бухгалтерии
Последовательность событий при записи набора
записей регистра накопления из формы набора Объекты встроенного языка для работы с регистрами
записей бухгалтерии




*Заливкой выделен объект манипулирования данными

Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.

РегистрБухгалтерииЗапись. Используется для доступа к записи
регистра бухгалтерии. Объект не создается непосредственно, а
предоставляется другими объектами, отвечающими за регистр




603

602
Краткий справочник разработчика Регистры бухгалтерии

бухгалтерии. Например, данный объект представляет записи регистра Последовательность событий при записи набора
в наборе записей. записей регистра бухгалтерии из формы
РегистрБухгалтерииСубконто. Коллекция значений субконто
записи регистра бухгалтерии. Установка и получение значения
конкретного субконто осуществляется через оператор [], в качестве
параметра которому передается вид субконто или через имя
предопределенного субконто.
РегистрБухгалтерииКлючЗаписи. Набор значений, однозначно
идентифицирующий запись регистра. Объект используется в тех
случаях, когда необходимо сослаться на определенную запись.
Например, он выступает в качестве значения свойства
ТекущаяСтрока табличного поля, отображающего список записей
регистра.
Свойства и методы взаимодействия перечисленных объектов в
большинстве своем аналогичны свойствам и методам объектов,
предназначенных для работы с регистрами накопления (см. раздел
«Регистры накопления» на странице 599).




604 605
Регистры расчета


»¦ Узнай больше!
Регистры расчета Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
Объекты встроенного языка для работы с регистрами предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.
расчетов
РегистрРасчетаЗапись.<имя>. Используется для доступа к
записи регистра расчета. Объект не создается непосредственно, а
предоставляется другими объектами, отвечающими за регистр Расчета.
Например, данный объект представляет записи регистра в наборе
записей.
РегистрРасчетаКлючЗаписи.<имя>. Представляет собой набор
значений, однозначно идентифицирующих запись регистра. Объект
используется в тех случаях, когда необходимо сослаться на
определенную запись. Например, он выступает в качестве значения
свойства ТекущаяСтрока табличного поля, отображающего список
записей регистра.
РегистрРасчетаПерерасчеты.<имя>. Менеджер всех
менеджеров перерасчетов регистра расчетов.
ПерерасчетМенеджер.<имя>. Менеджер перерасчета служитдля
получения набора записей перерасчета.
ПерерасчетНаборЗаписей.<имя>. Набор записей перерасчета.
ПерерасчетЗапись.<имя>. Объект используется для доступа к
записи перерасчета.
ФактическийПериодДействия. Массив значений типа
ЭлементФактическогоПериодаДействия.
ЭлементФактическогоПериодаДействия. Элемент
фактического периода действия.
Свойства и методы взаимодействия перечисленных объектов в
большинстве своем аналогичны свойствам и методам объектов,
предназначенных для работы с регистрами накопления (см. раздел
«Регистры накопления» на странице 599).



*Заливкой выделены объекты манипулирования данными


607
606
Сраткий справочник разработчика


Последовательность событий при записи набора
Планы обмена
записей регистра расчета из
Запись набора
формы
Объекты встроенного языка для работы с планами
записей регистра
Модуль набора
расчета
обмена
записей
регистра
расчета




Модуль формы
набора записей
регистра
расчета




ПослеЗаписи() ˜J




ПланОбменаСписок.<имя>



*Заливкой выделен объект манипулирования данными

<*^ Узнай больше!
Про основные виды объектов встроенного языка можно
прочитать в главе «Виды объектов встроенного языка,
предназначенные для работы с данными прикладных объектов
конфигурации» на странице 551.




608
609
Краткий справочник разработчика


ЗаписьСообщенияОбмена - Объект предназначен дл я
4acTbV. Приложения
организации записи сообщения обмена данными.
ЧтениеСообщенияОбмена - Объект предназначен для приема
сообщений обмена данными. При начале чтения он осуществляет
проверку правильности задания заголовка сообщения, и отвергает
неправильные сообщения. При завершении чтения данный объект
модифицирует значение реквизита «НомерПринятого»
соответствующего узла плана обмена в соответствии с номером
принятого сообщения.
Свойства и методы взаимодействия перечисленных объектов в
большинстве своем аналогичны свойствам и методам объектов,
предназначенных для работы со справочниками (см. раздел «Объекты
встроенного языка для работы со справочниками» на странице 570).

Последовательность событий при записи узла из
формы




610
611
Вопросы при переходе с версии 7.


Использование команды Отладка | Начать отладку (клавиша F5)
Глава 1. Вопросы при переходе с позволяет начинать ' отладку с сохранением редактируемой
конфигурации и обновлением конфигурации базы данных.
версии 7.7 Для сохранения редактируемой конфигурации без обновления
конфигурации базы данных следует использовать команду
Версия 7.7 - версия 8.0 Сохранить конфигурацию или Сохранить (клавиша Ctrl+S).
Более подробную информацию можно прочитать в разделе
Общие вопросы «Основная конфигурация и конфигурация базы данных» на странице
52, и в главе «Немного о конфигурациях» на странице 535.
Я изменил конфигурацию, но когда запускаю 1С:Предприятие -
Как прервать работу модуля? Esc не работает...
там нет моих изменений. Почему мои изменения не видны?
В версии 8.0 прерывание длительных действий выполняется
В информационной базе версии 8.0 хранится несколько
клавишей Ctrl+Break.
конфигураций одного и того же прикладного решения.
Пользователь может прервать работу модуля, только если в
Конфигурация, редактируемая разработчиком, - основная
процессе выполнения модуля выполняется вызов процедуры
конфигурация, - сохраняется без выполнения реструктуризации базы
глобального контекста «ОбработкаПрерыванияПользователя». Эта
данных. Другими словами, ее сохранение не оказывает влияние на
процедура проверяет, была ли нажата пользователем клавиша
работающих пользователей.
Ctrl+Break и прерывает работу модуля.
Для работы пользователей в режиме «1С:Предприятие»
Следует отметить, что работа модуля будет прервана не всегда, а
используется другая конфигурация - конфигурация базы данных, также
только в тех случаях, когда работа модуля была инициирована
хранящаяся в информационной базе.
следующими действиями пользователя:
Чтобы привести конфигурацию базы данных в соответствие с
основной конфигурацией, нужно выполнить обновление • нажатие кнопки в форме;
конфигурации базы данных (меню • выбор пункта меню или кнопки панели инструментов в
Конфигурация | Обновить конфигурацию базы данных). При этом форме;
выполняются дополнительные проверки конфигурации, • выбор пункта меню или кнопки панели инструментов
реструктуризация базы данных (если изменилась структура данных) и интерфейса;
замена конфигурации базы данных на редактируемую конфигурацию.
• действия, инициируемые обработчиками событий "Выбор"
В меню Конфигурация | Конфигурация базы данных можно элементов управления.
выполнить сравнение редактируемой конфигурации с конфигурацией
Более подробную информацию можно найти на диске ИТС в статье
базы данных и при необходимости вернуться к конфигурации базы
"Особенности прерывания пользователем работы модуля".
данных.
Использование команды
Почему в типовой конфигурации я не могу отредактировать
Конфигурация | Обновить конфигурацию базы данных (клавиша
полученную печатную форму документа?
F7) позволяет сохранять редактируемую конфигурацию сразу с
Печатные формы первичных документов в типовых конфигурациях
обновлением конфигурации базы данных.
защищены от изменений пользователем. Режим «Защита» установлен




613
Вопросы при переходе с версии 7.7
Краткий справочник разработчика

Я не могу внести никаких изменений в типовую конфигурацию.
средствами встроенного языка, и типовые конфигурации содержат
Почему?
настройку, позволяющую регулировать установку этого режима.
В версии 8.0 существует механизм поддержки и обновления
Следует заметить, что при включенной защите невозможно не
конфигураций, позволяющий пользователям обновлять конфигурации
только внесение изменений, но и копирование ячеек данного в автоматическом или полуавтоматическом режиме при выходе новых
табличного документа. версий.
Аналогичный подход использовался и в типовых конфигурациях
Естественно, что для всех типовых конфигураций, выпускаемых
версии 7.7 (например, в девятой редакции «Торговля и склад»).
фирмой «1С» по умолчанию включен режим, позволяющий
производить обновления автоматически. Поэтому вся конфигурация
В программных модулях у меня не выделяется цветом все, что защищена от изменений, и вы не имеете возможности что-либо
относится к глобальному контексту (свойства, методы...)? редактировать.
Да, в версии 8.0 выделяются цветом только конструкции
Можно изменить режим поддержки конфигурации так, чтобы
встроенного языка: иметь возможность вносить в нее изменения. Для этого следует
Процедура ... КонецПроцедуры, воспользоваться командой меню
Конфигурация | Поддержка | Настройка поддержки Включить
Функция ... КонецФункции,
возможность изменений. После этого все объекты
Возврат,
конфигурации могут редактироваться, и при обновлении
Попытка ... Исключение ... КонецПопытки, конфигурации будет выполняться синхронизация сделанных
изменений с изменениями поставщика.
Для ... По ... Цикл ... КонецЦикла,
Для Каждого ... Из ... Цикл ... КонецЦикла, В этом же окне существует возможность вообще снять
конфигурацию с поддержки, но тогда обновление не будет
Пока ... Цикл ... КонецЦикла,
производиться, о чем необходимо заранее предупредить
Если ... Тогда ... ИначеЕсли ... Иначе ... КонецЕсли,
пользователей.
Перейти, О том, какие существуют конфигурации, можно прочитать в главе
Прервать, «Немного о конфигурациях» на странице 535.
Продолжить, Более подробную информацию можно найти на диске ИТС в статье
"Обновление прикладных решений".
Новый,
Перем,
Права
Выполнить,
конструкция "?".
Я добавил новую роль, но не могу назначить ее ни одному
Встроенные функции языка, свойства и методы глобального
пользователю, она не появляется в списке выбора.
контекста не являются конструкциями встроенного языка и поэтому не
В версии 8.0 в информационной базе хранится несколько
выделяются цветом. конфигураций, в том числе основная конфигурация (которую
редактирует разработчик), и конфигурация базы данных (которая
соответствует структуре базы данных, и с которой работают
пользователи в режиме 1С:Предприятие).



615
614
Вопросы при переходе
раткий справочник разработчика версии

В версии 8.0 обработка ожидания может быть установлена методом
При редактировании пользователей доступны только те объекты
ПодключитьОбработчикОжидания() (для отключения обработчика
конфигурации (роли, интерфейсы и языки), которые содержатся в
ожидания используется метод ОтключитьОбработчикОжидания()).
конфигурации базы данных.
Обработка ожидания может выполняться как в модуле приложения,
Поэтому, чтобы созданную роль можно было назначить так и в модуле формы. Для каждой формы, как и для приложения в
пользователю, нужно сначала выполнить обновление конфигурации целом, может быть установлено несколько обработчиков ожидания с
базы данных (меню Конфигурация | Обновить конфигурацию базы разными интервалами.
данных).
Более подробно о событиях, связанных с формой, можно прочитать
О том, какие существуют конфигурации, можно прочитать в главе
в главе «События, связанные с формой» на странице 547.
«Немного о конфигурациях» на странице 535.
Что использовать вместо разделителя строк, который был в 7.7?
Системные константы, процедуры и функции Вместо системной константы РазделительСтрок версии 7.7, в
версии 8.0 следует использовать системный набор значений Символы.
В версии 7.7 была функция КаталогИБ, а как теперь определить В частности, для указания символа перевода строки следует
использовать значение этого набора - «ПС»:
каталог информационной базы, чтобы хранить в нем свои файлы?
Системная функция 1С:Предприятия 7.7 КаталогИБ() не
реализована в версии 8.0. Сообщить("Первая строка"+Символы.ПС+"Вторая строка");
Это связано с тем, что в версии 8.0 вся информационная база
физически является одним файлом, независимо от используемого
файлового или клиент-серверного варианта работы. Таким образом Есть ли аналог в 8-ке - ПериодСтр() в 7.7?
подразумевается, что понятие каталога, как некоей совокупности Да, в версии 8.0 есть аналог системной функции ПериодСтр().
файлов, относящихся к данной информационной базе, отсутствует. Для формирования текстового представления периода следует
Теперь все нужные файлы должны размещаться внутри использовать функцию глобального контекста
информационной базы. Для этого в 1С:Предприятии 8.0 введен новый ПредставлениеПериода(). В качестве параметров в эту функцию
тип реквизитов и ресурсов — ХранилищеЗначения. передаются даты начала и окончания периода, а также строка,
определяющая способ форматирования периода.
Функция СтатусВозврата(). Есть аналог в 8.0?
Нет, в версии 8.0 метод СтатусВозврата() не используется. ОписаниеПериода = "Период:" +
ПредставлениеПериода(ДатаНачала, ДатаКонца, "ФП = Истина");
Чтобы в обработчике события указать на необходимость отмены
стандартных действий, выполняемых системой для данного события,
нужно использовать специальный параметр обработчика события.
Как узнать текущее время в сеансе работы? РабочаяДата
Этот параметр имеет тип Булево, а его название зависит от вида
предлагает только дату.
с о б ыт ия , и может б ыт ь различ ным ( «Отказ » или
Свойство глобального контекста РабочаяДата служит для
«СтандартнаяОбработка»).
отображения или установки рабочей даты, используемой в текущем
сеансе конфигурации. Поэтому оно содержит дату в виде 44:MM:CC
Есть ли аналог процедуры ОбработкаОжидания()? 00:00:00, указывающую на начало дня.
Есть.



617
516
Краткий справочник разработчика Вопросы при переходе с версии 7.7

Для получения текущего времени следует использовать
Контекст формы
встроенную функцию ТекущаяДата(), которая возвращает
системную дату и время, установленные на компьютере:
Куда вписать выражение, чтобы его результат отображался в
текстовой колонке табличного поля?
ДатаВремя = ТекущаяДата();
В версии 8.0 нет возможности задавать для колонок текстового
Сообщить(*Текущее время = "+Формат(ТекущаяДата(),"ДФ='дд.мм.гг чч:мм:сс'"));
поля выражения, которые будут автоматически рассчитываться при
отображении этого табличного поля.
Глобальный модуль Такая возможность не реализована, поскольку весь текст
программы в версии 8.0 располагается только в программных модулях.
Как «отловить» интерактивную пометку на удаление? Поэтому теперь, для вывода вычисляемого значения в колонку
В версии 8.0 изменена реакция на снятие и установку пометки на табличного поля следует использовать обработчик события «При
выводе строки» табличного поля. Это событие возникает каждый раз
удаление объекта.
при формировании очередной строки табличного поля, которая будет
В отличие от версии 7.7, где пометка на удаление обрабатывалась
отображена на экране.
соответствующим событием удаления («ПриУдаленииЭлемента»,
В качестве примера можно посмотреть процедуру
«ПриУдаленииДокумента» и т.д.), в версии 8.0 реакция на снятие и
«СправочникСписокПриВыводеСтроки» в модуле формы списка
установку пометки на удаление приведена в соответствие физическому
справочника «Номенклатура» в разделе «Вычисляемые колонки в
смыслу выполняемых действий.
списках» на странице 524.
При установке пометки удаления не происходит непосредственного
удаления элемента из базы, а выполняется всего лишь сохранение его Более подробную информацию можно найти на диске ИТС в статье
измененного свойства ПометкаУдаления. Поэтому реакцией на это "Вывод связанной информации по текущему объекту из списка".
действие в версии 8.0 являются события «Перед записью» и «При
записи» (это справедливо и в случае снятия пометки на удаление). В 8.0 в формах нет слоев. А как теперь создавать закладки в
Событие «Перед удалением» возникает теперь только при форме?
непосредственном удалении объекта из базы данных. В версии 8.0 вместо механизма слоев в формах используются
Таким образом, для того, чтобы отследить интерактивную или панели.
программную пометку объекта на удаление, необходимо в Одна панель может содержать несколько страниц. Поддерживается
обработчике события «ПередЗаписью» проанализировать свойство большое количество вариантов отображения закладок, режим
объекта ПометкаУдаления: значение Истина будет говорить о том, прокручиваемых страниц, использование закладок без распределения
что пометка на удаление устанавливается, Ложь - снимается. по страницам.
Если в обработчике события «Перед записью» есть необходимость
Следует заметить, что один элемент управления может
анализировать то состояние объекта, которое было до наступления располагаться только на одной странице. Поэтому если вы хотите,
этого события, нужно считывать данные из базы данных при помощи чтобы в форме присутствовали элементы управления, доступные с
запроса. любой страницы формы, следует размещать их вне той панели, в
которой находятся страницы формы.
Пример использования страниц формы можно посмотреть в форме
элемента справочника «Номенклатура» в разделе «Доработка
справочника Номенклатура» на странице 261, а также в форме


618 619
Вопросы при переходе с версии 7.7
Сраткий справочник разработчика

Более подробно о том, что такое расширения формы, можно
документа «ОказаниеУслуги» в разделе «Отбор объектов, введенных
прочитать в разделе «Данные и элементы управления» на странице
на основании» на странице 497. 502.

Как в формах 1С:Предприятия 8.0 сохранить настройки
Никак не могу заставить работать элемент управления
пользователя (по аналогии с сохранением настроек форм отчетов
Переключатель! В чем дело?
и обработок в 1С:Предприятии 7.7)?
В версии 8.0 работа с переключателем ведется таким же образом,
Чтобы задействовать сохранение настроек в версии 8.0, как и в версии 7.7, за исключением одного отличия.
необходимо в палитре свойств формы установить значения свойств
Теперь для каждого переключателя в группе можно задать
"Сохранять значения" и "Сохраняемые значения". В командной панели
значение, которое будет помещаться в данные при выборе этого
формы можно использовать стандартные кнопки сохранения и
пер е ключателя . Это значение з а д ае т ся в свойст ве
восстановления настроек.
ВыбираемоеЗначение. По умолчанию выбираемое значение имеет тип
Следует иметь в виду, что сохранение настроек возможно, только Число и значение равное нулю. Таким образом, если при создании
если в качестве основного объекта формы выбраны значения типа переключателя не определить его выбираемое значение, то в данные
ОтчетОбъект.<имя> или ОбработкаОбъект.<имя>, поскольку эту всегда будет помещаться нулевое значение.
функциональность обеспечивают соответствующие расширения Возможность задания значения, которое будет выбираться
формы. конкретным переключателем, позволяет сделать алгоритм обработки
Более подробно о том, что такое расширения формы, можно работы переключателя независимым от порядка следования элементов
прочитать в разделе «Данные и элементы управления» на странице управления, расположенных в форме.
502. Примеры использования переключателя можно посмотреть в
разделах «Изменение источника данных табличного поля» на странице
Есть л и в 1С :Пр едпр иятии 8.0 аналог мето да 516, и «Изменение данных табличного поля путем установки типа
АктивизироватьОбъект(), чтобы активизировать нужную строку значения» на странице 520.
табличного поля?
В версии 8.0 активизация строки табличного поля выполняется Как настроить порядок обхода в форме?
установкой свойства ТекущаяСтрока соответствующего элемента По умолчанию, у панелей форм в 1С:Предприятии 8.0 установлен
управления. Этому свойству нужно присвоить значение, которое будет режим автоматического определения порядка обхода. В этом режиме
идентифицировать нужную строку. Тип этого значения зависит от настроить порядок обхода вручную нельзя.
типа данных, с которыми связано табличное поле.
Для того чтобы стала доступна ручная настройка порядка обхода,
К примеру, если речь идет о списке справочника, то это будет нужно в палитре свойств панели формы сбросить флаг «Автопорядок
ссылка на элемент справочника. обхода».
Кроме механизма, описанного выше, существует более общий Также нужно помнить, что порядок обхода задается не для всей
механизм, позволяющий организовывать взаимодействие между формы целиком, а для каждой панели, расположенной в форме,
различными формами. поэтому и свойство «Автопорядок обхода» нужно регулировать для
Как правило, для установки текущей строки в некоторой форме каждой панели отдельно.
списка из другой формы, нужно использовать свойство формы
НачальноеЗначениеВыбора, а также свойства
ПараметрТекущаяСтрока соответствующих расширений форм
списков.

621
620
гкий справочник разработчика Вопросы при переходе с версии 7.7

Как в иерархическом списке программно установить отбор по После этого, используя значение реквизита формы, связанного с
полем выбора, можно устанавливать текущее и получать выбранное
конкретному родителю?
значение в поле выбора.
Так как табличное поле поддерживает стандартную механику
работы с иерархическими списками, то поле «Родитель» не Пример работы с полем выбора можно посмотреть в модуле формы
используется в стандартной механике отборов, а управляется отчета «РейтингКлиентов» в разделе «Создание отчета
специальным способом. Свойство ТекущийРодитель табличного РейтингКлиентов» настранице 198.
поля позволяет получить и установить текущего родителя, а свойство
ИзменятьТекущегоРодителя позволяет запретить пользователю Не могу найти аналог «семерочного» Активизировать(<имя
переход по родителям. реквизита>). Нужно периодически программно активизировать
элемент формы.
Как работать с элементом управления ПолеВыбора? Для указания текущего активного элемента управления,
В 1С:Предприятии 8.0 значением поля выбора является собственно расположенного в форме, следует использовать свойство объекта
Форма - ТекущийЭлемент.
само выбираемое значение, а не список выбора.
Список выбора, соответствующий полю выбора, задается в
Справочник
свойстве СписокВыбора элемента управления.
Заполнять список выбора рекомендуется в теле модуля, а не в
обработчиках событий «Перед открытием» и «При открытии». Есть ли в версии 8.0 аналог методу формы справочника
ИспользоватьСписокЭлементов()?
Это связано с тем, что значение, устанавливаемое для поля выбора,
Нет.
сохраняется, если оно найдено в списке выбора этого поля. Если же
устанавливаемое значение не найдено в списке выбора - сохраняется Для того чтобы отобразить в списке специально отобранный
значение Неопределено. перечень объектов, следует использовать выборку данных запросом и
Таким образом, поскольку установка значения поля выбора в отображение их в форме в таблице значений или табличном
открываемой форме производится в процессе создания формы (до документе. При этом система 1С:Предприятие 8.0 будет обеспечивать
вызова событий «Перед открытием» и «При открытии») - список полноценное взаимодействие других системных механизмов с такими
формами.
выбора поля выбора должен быть заполнен в теле модуля формы.
В противном случае, при создании формы значение, При использовании динамических списков документов,
устанавливаемое для поля ввода, не будет найдено в его списке выбора справочников и т.д., также можно программно установить отбор по
(потому что список выбора еще пустой), и в поле выбора будет полю Ссылка, и указать, что в качестве вида сравнения будет
сохранено значение Неопределено (несмотря на то, что реквизит, с использовано вхождение в список значений. Такой прием тоже
которым связано поле выбора, имеет другое значение). Последующие позволяет отображать в списке только определенные объекты. Однако
попытки заполнить список выбора в обработчиках событий «Перед такой способ может иметь только ограниченное применение, потому
открытием» или «При открытии» не дадут ожидаемого результата, что динамический список обладает большим количеством
поскольку в поле ввода ранее уже сохранено значение Неопределено. универсальных возможностей (установка отбора пользователем,
переходы по уровням в иерархических списках и т.д.), и сложно
Например:
совместить в прикладных решениях эти механизмы с отбором по
конкретным значениям ссылок.
ЭлементыФормы.ПолеВыбора 1 .СписокВыбора.Добавить( 1,"Один");
ЭлементыФормы.ПолеВыбора 1 .СписокВыбора.Добавить( 2,"Два");
ЭлементыФормы.ПолеВыбора 1 .СписокВыбора.Добавить( 3,"Три");



623
Вопросы при переходе с версии
раткий справочник разработчика

У меня не получается программно изменить элемент справочника.
Говорят, что в версии 8.0 нет периодических реквизитов Почему?
справочников. А как же теперь хранить историю изменения их По всей видимости, вы пытаетесь изменять элемент справочника,
значений? используя объект СправочникСсылка^имя>. Объекты этого типа
Действительно, в версии 8.0 нет возможности создавать позволяют обращаться к реквизитам и табличным частям справочника
периодические реквизиты объектов. На смену им пришел новый, более в режиме "только чтение".
универсальный механизм, представленный регистрами сведений.
Для того чтобы изменить данные элемента справочника следует
Регистры сведений позволяют хранить информацию любого типа на
получить объект СправочникОбъект.<имя>, который позволяет как
пересечении комбинации значений измерений. читать, так и записывать данные. Это возможно с помощью метода
Регистр сведений можно сделать периодическим, и тогда он будет ПолучитьОбъект().
хранить историю изменения этих значений, с заданной точностью
Более подробную информацию можно найти в главах «Виды
(имеется возможность задать различную периодичность регистра
объектов встроенного языка, предназначенные для работы с данными
сведений - месяц, день, позиция документа и пр.).
прикладных объектов конфигурации» на странице 551,
В качестве примера можно посмотреть периодический регистр «Манипулирование данными объектов» на странице 561, а также в
сведений «Цены», хранящий историю изменения цен номенклатуры, в статьях на диске ИТС: "Работа с прикладными объектами средствами
главе «Периодический регистр сведений» на странице 118. встроенного языка" и "Типы значений, связанные с прикладными
Более подробную информацию можно найти на диске ИТС в статье объектами".
"Периодические регистры сведений".
У прикладных объектов нет методов ПолучитьАтрибут() и
Написал процедуру ПриОткрытии() в модуле формы, но она не УстановитьАтрибут(). Как теперь обращаться к атрибутам
вызывается, когда я открываю форму. В чем дело? объектов, если имя атрибута формируется в процессе
Дело в том, что в версии 8.0 любому событию формы может быть вычислений?
назначена процедура, которая будет обрабатывать это событие. Имя Встроенный язык версии 8.0 поддерживает универсальную
такой процедуры может не совпадать (а в большинстве случаев и не возможность обращения к свойствам объектов, используя
совпадает) с именем события, поэтому для того, чтобы ваша процедура конструкцию [<имя свойства>], где <имя свойства> - строка или
«ПриОткрытии» стала обрабатывать событие формы «При открытии» строковая переменная, содержащая имя требуемого свойства:
необходимо в конфигураторе, в палитре свойств формы, явным
образом назначить ее обработчиком этого события. ИмяСвойства = "Наименование";
Для упрощения работы, в версии 8.0 можно создавать шаблоны Объект[ИмяСвойства] = Объект[ИмяСвойства] + " Новый"
обработчиков событий формы. Для этого следует выбрать нужное
событие в палитре свойств и нажать на символ лупы в конце поля
ввода. Система создаст объявление процедуры в модуле формы и В 7.7 были методы ТекущийДокумент() и ТекущийЭлемент() для
свяжет ее с выбранным событием. получения позиционированного элемента справочника или
документа. А как теперь это сделать в 8.0?
Подробнее можно прочитать об этом в главе «Обработчики
В версии 8.0 была введена унифицированная объектная структура
событий» на странице 546, и на диске ИТС в статье "Процедуры -
данных. Теперь значение ссылки на объект базы данных хранится в
обработчики событий".
поле Ссылка, и во всех случаях (при использовании объекта, выборки,




625
624
Вопросы при переходе с версии 7.7
!раткий справочник разработчика

Документ
запроса и т.д.) значение ссылки на объект можно получить по имени
этого поля:
В версии 7.7 была предопределенная процедура ВводНового().
Что-то не могу найти ее в версии 8.0...
Выборка = Справочники.Склады.Выбрать();
Пока Выборка.Следующий() Цикл
Теперь факт интерактивного ввода нового объекта (элемента
Склад = Выборка.Ссылка;
справочника, документа и т.д.) не выделяется в отдельное событие.
КонецЦикла;
В версии 8.0 для анализа аналогичного факта следует использовать
событие объекта Форма - «При открытии». Для того чтобы в
Перечисление обработчике этого события проанализировать, выполняется ли ввод
нового объекта, или открыт уже существующий, нужно вызвать метод
прикладного объекта ЭтоНовый(). Метод вернет значение Истина,
Как получить имя значения перечисления, которое задано в
если вводится новый объект, и Ложь - в противном случае.
метаданных?
В качестве примера можно посмотреть процедуру
Чтобы определить имя значения перечисления, которое задано в
«СвойстваПередНачаломДобавления» формы элемента справочника
метаданных, можно поступить следующим образом.
«ВариантыНоменклатуры» в разделе «Доработка справочника
Допустим, у нас есть значение типа
ВариантыНоменклатуры» на странице 269, или обработчик события
ПеречислениеСсылка.<имя>. Сначала нужно получить имя объекта
«Перед записью» формы узла плана обмена «Филиалы» в разделе
метаданных, описывающего само перечисление (при помощи метода «Создание плана обмена Филиалы» на странице 403.
Метаданные() и свойства Имя).
Более подробную информацию можно найти на диске ИТС в статье
Затем, зная имя перечисления и конкретное значение
"Процедуры - обработчики событий".
перечисления, нужно получить индекс этого значения. метода
В заключение, по имени перечисления и индексу нужного значения Есть ли какой-нибудь аналог для
перечисления можно получить объект метаданных, описывающий ПриЗаписиПерепроводить() в версии 8.0?
интересующее нас значение перечисления, и в свойстве Имя получить Есть.
имя значения перечисления, как оно задано в метаданных.
Режим перепроведения при записи проведенного документа
Следующий пример иллюстрирует описанную методику:
устанавливается с помощью свойства ПриЗаписиПерепроводить,
которое существует у расширения формы документа. Если это
ЗначениеПеречисления = Перечисления.ВидыКонтрагентов.Организация; свойство установить, то при вызове стандартных команд записи в
ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
форме, запись проведенного документа будет автоматически
ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].
выполняться с проведением.
Индекс(ЗначениеПеречисления);
Более подробно о том, что такое расширения формы, можно
ИмяЗначенияПеречисления = Метаданные.
Перечисления [ИмяПеречисления]. прочитать в разделе «Данные и элементы управления» на странице
ЗначенияПеречисления[ИндексЗначенияПеречисления].
502.
Имя;



<<

стр. 10
(всего 11)

СОДЕРЖАНИЕ

>>