Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
// регистр ОстаткиМатериалов Расход
Движения.ОстаткиМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла ;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Обратите внимание, что строка Движение.ВидДвижения = ВидДвиженияНакопления.Расход определяет вид движения регистра накопления, производимый этим документом как Расход, а в остальном процедура обработчика документа ОказаниеУслуги идентична обработке документа ПриходнаяНакладная (см. листинг 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!