Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Диплом Меркулов М.А.rtf
Скачиваний:
59
Добавлен:
14.05.2015
Размер:
15.44 Mб
Скачать

3.3 Создание перечислений

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

Создадим сначала новый объект конфигурации Перечисление с именем "ВидыНоменклатуры". На закладке "Данные" добавим два значения перечисления: "Материал" и "Услуга" (Рисунок 22).

Рисунок 22. Создание перечисления.

Затем добавим в справочник "Номенклатура" новый реквизит "ВидНоменклатуры" с типом ПеречислениеСсылка.ВидыНоменклатуры. После этого запустим 1С:Предприятие в режиме отладки и зададим для каждого элемента справочника "Номенклатура" соответствующее значение реквизита "ВидНоменклатуры" (Рисунок 23).

Рисунок 23. Перечисление в режиме 1С:Предприятие.

3.4 Создание регистров накопления

Объект конфигурации "Регистр накопления" является прикладным объектом и предназначен для описания структуры накопления данных. На основе этого объекта платформа создает в базе данных информационную структуру, в которой будут накапливаться данные, "поставляемые" различными объектами базы данных. Эти данные будут храниться в регистре в виде отдельных записей, каждая из которых имеет одинаковую, заданную в конфигураторе структуру. Основным назначением регистра накопления является накопление числовой информации в разрезе нескольких измерений, которые описываются разработчиком в соответствующем объекте конфигурации "Регистр накопления" и являются подчиненными объектами конфигурации. Прежде всего, в нашем примере нас интересует информация о том, сколько и каких материалов есть у нас на складах. Для накопления такой информации создадим регистр накопления "ОстаткиМатериалов".

Создадим измерения регистра:

  • "Материал", тип "СправочникСсылка.Номенклатура";

  • "Склад", тип "СправочникСсылка.Склады".

Затем создадим ресурс "Количество", тип "Число" с длиной 15 и точностью 3. В результате этих действий регистр "ОстаткиМатериалов" должен иметь следующий вид (Рисунок 24).

Рисунок 24. РегистрНакопления "ОстаткиМатериалов".

Далее создадим движение документа ПриходнаяНакладная. Движения документа – это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом. Перейдем на закладку "Движения" и в списке регистров конфигурации отметим регистр накопления "ОстаткиМатериалов" (Рисунок 25).

Рисунок 25. Создание движения документа ПриходнаяНакладная.

Далее на закладке Макеты нажмем кнопку "КонструкторДвижений". В списке регистров выберем регистр "ОстаткиМатериалов". Так как документ "ПриходнаяНакладная" должен приходовать материалы, то укажем, что движение создается по приходу. В поле выбора "Табличная часть" выберем табличную часть нашего документа – "Материалы". Список реквизитов документа автоматически заполнится реквизитами нашей табличной части. Теперь нажмем "Заполнить выражения". В нижнем окне сформируется соответствие полей и выражений (рисунок 26).

Рисунок 26. Конструктор движения регистров.

Теперь аналогичным образом следует создать движение документа "ОказаниеУслуги". При использовании конструктора следует обратить внимание на то. Что документ должен расходовать материалы. Поэтому тип движения регистров должен быть выбран – "Расход".

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

Рисунок 27. Изменение модуля документа "ОказаниеУслуги".

Запустим 1С:Предприятие в режиме отладки и проверим работу процедуры проведения документа "ОказаниеУслуги". После проведения документа ОказаниеУслуги в движения по регистру "ОстаткиМатериалов" включаются только строки, содержащие материалы (Рисунок 28).

Рисунок 28. Регистр накопления "ОстаткиМатериалов".

Далее мы создадим регистр накопления "СтоимостьМатериалов". Он понадобится нам для хранения данных об общей стоимости тех или иных материалов. Этот регистр будет иметь всего одно измерение - "Материал" с типом "СправочникСсылка.Номенклатура" и один ресурс - "Стоимость" с длиной 15 и точностью 2.

После создания, регистр "СтоимостьМатериалов" должен выглядеть в дереве конфигурации следующим образом (Рисунок 29).

Рисунок 29. Регистр накопления "СтоимостьМатериалов".

После создания данного регистра накопления, изменим процедуру проведения документа "ПриходнаяНакладная". Для этого в окне редактирования объекта конфигурации Документ "ПриходнаяНакладная" на закладке "Движения" в списке регистров отметим, что документ будет создавать теперь движения и по регистру "СтоимостьМатериалов". В окне конструктора движений, которое будет содержать созданные нами ранее движения документа по регистру "ОстаткиМатериалов", добавим в список регистров, по которым формируются движения, еще один регистр - "СтоимостьМатериалов". Выберем для него ту же табличную часть "Материалы" и заполним выражения. Для ресурса "Стоимость" выберем значения реквизита табличной части "Сумма".Далее нажмем "ОК" и в тексте, который сформировал конструктор, объединим два цикла в один (Рисунок 30). Потому что документ может иметь несколько табличных частей, и информация, содержащаяся в каждой из них, может предназначаться для своего отдельного регистра. В нашем случае табличная часть всего одна.

Рисунок 30. Объединение двух циклов.

После этого запустим 1С:Предприятие в режиме отладки и убедимся, что документ создает желаемые записи в регистрах накопления (Рисунок 31).

Рисунок 31. Регистры накопления "ОстаткиМатериалов" и "СтоимостьМатериалов".