Процедура ОбработкаПроведения(Отказ, Режим)



//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ОстаткиМатериалов Расход

Движения.ОстаткиМатериалов.Записывать = Истина;

Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл

       Движение = Движения.ОстаткиМатериалов.Добавить();

       Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

       Движение.Период = Дата;

       Движение.Склад = Склад;

       Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;

КонецЦикла ;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

 

Обратите внимание, что строка Движение.ВидДвижения = ВидДвиженияНакопления.Расход определяет вид движения регистра накопления, производимый этим документом как Расход, а в остальном процедура обработчика документа ОказаниеУслуги идентична обработке документа ПриходнаяНакладная (см. листинг 1).

33. Отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра Остатки Материалов, связанному с документом. Для этого откроем форму документа ОказаниеУслуги. В верхнем окне перейдем на закладку Командный интерфейс. В разделе панель навигации раскроем группу Перейти и установим видимость для команды открытия регистра накопления Остатки материалов.

34. Запустим 1С:Предприятие в режиме отладки и в разделе Оказание услуг откроем документ Оказание услуги № 1 и нажмем Провести и закрыть, то есть перепроведем его.

35. Выполните команду Остатки материалов и откройте список нашего регистра накопления.

36. Мы видим, что в регистре накопления Остатки материалов поя­вилась еще одна запись, что соответствует количеству строк в табличной части проведенного документа. Все поля регистра заполнились данными документа так, как мЬ| задали в обработчике проведения документа Оказание услуги. Пиктограмма со знаком «минус» слева от записи указывает на тип движения – Расход.

37. Сейчас мы видим весь список движений регистра. Открыв это, список из формы документа, мы можем отфильтровать движения по документу-регистратору. Для этого откроем еще раз документ Оказание услуги № 1. В форме документа появилась панель навигации, в которой мы можем переходить к списку записей регистра Остатки материалов, связанному с документом, и обратно к содержимому документа. Сформированные таким образом движения этого документа будут не совсем правильны. Дело в том, что в документе Оказание услуги, в отличие от документа Приходная накладная, могут содержаться не только расходуемые материалы, но и услуги. Поэтому в регистр Остатки материалов будут попадать записи и о расходуемых услугах, что неправильно. Пока мы ничего не будем делать с движениями, которые сформировал конструктор.

Способы работы с коллекцией

В процессе формирования движений документов, когда в цикле и табличные части документов ПриходнаяНакладная и ОказаниеУслуги, мы столкнулись с одним из объектов встроенного языка, который является коллекцией. Многие объекты встроенного языка являются коллекциями.

Коллекция представляет собой совокупность объектов. Существуют принципы работы с любой коллекцией.

Во-первых, доступ к каждому объекту коллекции возможен путем перебора элементов коллекции в цикле. Для этого используется конструкция языка Для Каждого Из ... Цикл ... (листинг 3).

 

Листинг 3. Перебор элементов коллекции в цикле

Для Каждого СтрокаТабличнойЧасти из ТабличнаяЧасть Цикл

Сообщить(СтрокаТабличнойЧасти.Услуга);

КонецЦикла

 

В этом примере ТабличнаяЧасть — это коллекция строк табличной объекта конфигурации. При каждом проходе цикла в переменной СтрокаТабличнойЧасти будет содержаться очередная строка коллекции.

Во-вторых, существует доступ напрямую к элементу коллекции, без а коллекции в цикле. Здесь возможны различные комбинации двух обращений.

Во встроенном языке бывают именованные коллекции. То есть коллекции, в которых каждый элемент имеет некоторое уникальное имя. В этом случае обращение к элементу коллекции возможно этому имени (листинг 4).

 

Листинг4. Обращение к элементу коллекции

Справочники. Сотрудники;

Справочники[«Сотрудники»];

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

Если нет смысла в «персонификации» элементов коллекции (коллекция неименованная), тогда обращение к элементу коллекции возможно по индексу (индекс первого элемента коллекции - ноль), листинг 5.

 

Листинг 5. Обращение к элементу коллекции по индексу

ТабличнаяЧасть [0]

В этом примере ТабличнаяЧасть - это коллекция строк табличной части объекта конфигурации. И мы обращаемся к первому элементу этой коллекции, указывая его индекс-0

Следует отметить, что существуют коллекции, сочетающие оба вида обращений. Например, к коллекции колонок таблицы значений можно обращаться как по именам колонок, так и по индексу.

Контрольные вопросы

1. Для чего предназначен объект конфигурации Регистр накопления?

2. Почему следует использовать регистры, хотя необходимая информация содержится в других объектах?

3. Для чего нужны измерения регистра, ресурсы и реквизиты?

4. Что такое движения регистра и что такое регистратор?

5. Как создать новый регистр накопления и описать его структуру?

6. Как создать движения документа с помощью конструктора движений.

7. Как средствами встроенного языка обойти табличную часть документа и обратиться к ее данным?

8. Как показать команды открытия списка регистра в интерфейсе конфигурации и в интерфейсе формы?


Дата добавления: 2020-04-25; просмотров: 376; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!