Опубликован: 06.12.2011 | Уровень: для всех | Доступ: платный
Лекция 9:

Оборотные регистры накопления, последовательности, нумераторы, регистры сведений

Программное получение данных из регистра сведений

Решим следующую задачу. Нам хотелось бы вывести курс валюты на текущую дату в списке справочника Валюты.

Для начала создадим форму списка справочника Валюты.

Обратите внимание на то, что реквизит Список имеет тип ДинамическийСписок. Это означает, что мы можем вмешаться в создание этого списка, так как он строится на основе некоего запроса, генерируемого, в данном случае, системой автоматически. Для того, чтобы самостоятельно отредактировать запрос, который лежит в основе динамического списка, нам нужно в окне его свойств ( рис. 8.25.) установить флаг ПроизвольныйЗапрос.

Редактирование свойств динамического списка

увеличить изображение
Рис. 8.25. Редактирование свойств динамического списка

После установки этого флага мы можем нажать на ссылку Открыть у поля Настройка списка и увидеть, какой именно запрос система построила для создания этого списка, рис. 8.26.

Запрос по умолчанию для заполнения динамического списка

Рис. 8.26. Запрос по умолчанию для заполнения динамического списка

Дополним запрос таким образом, чтобы он выводил в дополнение к запрошенным полям еще и наиболее свежее значение курса. Запрос можно ввести вручную в поле Запрос, воспользоваться конструктором запроса, доступным из этого же поля или, как мы уже делали, сначала отладить запрос в консоли запросов, а потом добавить его в поле Запрос. То, что мы хотим, можно сделать с помощью следующего запроса:

ВЫБРАТЬ
  СправочникВалюты.Ссылка,
  СправочникВалюты.ВерсияДанных,
  СправочникВалюты.ПометкаУдаления,
  СправочникВалюты.Предопределенный,
  СправочникВалюты.Код,
  СправочникВалюты.Наименование,
  КурсыВалютСрезПоследних.Курс
ИЗ
  Справочник.Валюты КАК СправочникВалюты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
    ПО СправочникВалюты.Ссылка = КурсыВалютСрезПоследних.Валюта

Здесь мы получаем из виртуальной таблицы КурсыВалютСрезПоследних наиболее поздние значения курса, не прибегая к специальной настройке ее параметров.

После показанной модификации запроса, формирующего динамический список и размещения в форме списка справочника нового поля Курс, которое будет доступно в списке реквизитов динамического списка, форма списка приобретет вид, показанный на рис. 8.27.

Измененная форма списка справочника

увеличить изображение
Рис. 8.27. Измененная форма списка справочника

Выводы

В этой лекции мы рассмотрели особенности работы с оборотными регистрами накопления, с регистрами сведений, последовательностями и нумераторами. Рассмотрели методы редактирования управляемых форм, в частности, построение форм списков на основе произвольных запросов.

Лариса Дятчина
Лариса Дятчина

Код 

&НаКлиенте

Процедура ОсновноеКонтактноеЛицоПриИзменении(Элемент)

Если НЕ ПроверитьЗаполнениеРеквизита() Тогда

 Сообщить("Выбранное контактное лицо, "+Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента.");

КонецЕсли;

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

 

&НаСервере

Функция ПроверитьЗаполнениеРеквизита()

 Возврат (Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);  

КонецФункции

&НаСервере

Процедура УстановитьНомерПредставителя()

 

 Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения;

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

При проверке выдает ошибку:

{Справочник.Контрагенты.Форма.ФормаСписка.Форма(12,11)}: Переменная не определена (Объект)
 Возврат (<<?>>Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);   (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,2)}: Переменная не определена (Объект)
 <<?>>Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,32)}: Переменная не определена (Объект)
 Объект.ТелефонКонтактногоЛица=<<?>>Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(6,41)}: Переменная не определена (Объект)
 Сообщить("Выбранное контактное лицо, "+<<?>>Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента."); (Проверка: Тонкий клиент)

 

работаю на версии 1С:Предприятие 8.3 (8.3.10.2650)

максим матасов
максим матасов