Движения документа «Оказание услуги»




Теперь мы аналогичным образом создадим движения документа ОказаниеУслуги. Для этого потребуется выполнить уже знакомые нам действия.

В режиме Конфигуратор

Откроем окно редактирования объекта конфигурации Документ ОказаниеУслуги.

Перейдем на закладку Движения и в списке регистров конфигурации отметим регистр накопления ОстаткиМатериалов.

Нажмем кнопку Конструктор движений.

В открывшемся окне конструктора изменим тип движения регистра на Расход, так как документ ОказаниеУслуги должен расходовать материалы. Пиктограмма слева от названия регистра изменится на знак -.

В поле выбора Табличная часть выберем табличную часть нашего документа - ПереченьНоменклатуры.

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

Теперь нажмем кнопку Заполнить выражения.

В нижнем окне сформируется соответствие полей (измерений и ресурсов) регистра и выражений для их расчета. Однако при авто­матическом заполнении поле Материал не заполнится.

Так происходит потому, что имя поля табличной части - Номенклатура не совпадает с именем измерения регистра - Материал. Если мы оставим это так, как есть, то в регистре накопления в строках с типом Движение регистра - расход номенклатура фиксироваться не будет.

Чтобы избежать этого, нужно выделить поле регистра Материал и в окне Реквизиты документа дважды щелкнуть по строке ТекСтрокаПереченьНомеклатуры.Номенклатура.

Таким образом, номенклатура для движений регистра накопления будет выбираться из табличной части документа (рис. 6.18).

 

 

Нажмем кнопку ОК.

Конструктор создал обработчик события ОбработкаПроведения объекта конфигурации Документ ОказаниеУслуги и поместил его в модуль объекта (листинг 6.2).

Листинг 6.2. Процедура «ОбработкаПроведения()»

 

 

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

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

Для этого откроем форму документа ОказаниеУслуги.

В левом верхнем окне перейдем на закладку Командный интерфейс.

В разделе Панель навигации раскроем группу Перейти и установим видимость для команды открытия регистра накопления Остатки материалов.

В режиме 1С:Предприятие

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

Теперь выполним команду Остатки материалов и откроем список нашего регистра накопления (рис. 6.19).

 

 

 

Мы видим, что в регистре накопления Остатки материалов поя­вилась еще одна запись, что соответствует количеству строк в табличной части проведенного документа.

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

Пиктограмма со знаком «минус» слева от записи указывает на тип движения - Расход (см. рис. 6.19).

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

Для этого откроем еще раз документ Оказание услуги № 1.

В форме документа появилась панель навигации, в которой мы можем переходить к списку записей регистра Остатки материалов, связанному с документом, и обратно к содержимому документа (рис. 6.20).

 

Сформированные таким образом движения этого документа будут не совсем правильны.

Дело в том, что в документе Оказание услуги, в отличие от документа Приходная накладная, могут содержаться не только расходуемые материалы, но и услуги. Поэтому в регистр Остатки материалов будут попадать записи и о расходуемых услугах, что неправильно.

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

«Теория». Способы работы с коллекцией

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

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

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

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

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

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

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

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

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

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

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

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

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


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

 

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

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

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

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: