Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1C-DevGuide83

.pdf
Скачиваний:
362
Добавлен:
14.05.2015
Размер:
46.69 Mб
Скачать

Занятие 10 291

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

;; Для чего предназначен объект конфигурации «Перечисление»? ;; Как создать новое перечисление?

;; Как с помощью перечисления задать принадлежность элементов справочника к той или иной смысловой группе?

;; Как обратиться к значению перечисления средствами встроенного языка?

;; Как задать произвольное представление объекта конфигурации?

292 1С:Предприятие 8.3. Практическое пособие разработчика

Занятие 11

Проведение документа по нескольким регистрам

Продолжительность

 

Ориентировочная продолжительность занятия – 1 час 20 минут.

 

Зачем нужно проведение документа по  нескольким регистрам................................

294

Добавление еще одного регистра накопления.............................................................

295

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

295

Проведение приходной накладной по двум регистрам................................................

297

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

297

Изменение процедуры проведения.....................................................................

297

Команда перехода к записям регистра................................................................

301

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

301

Проведение документа «Оказание услуги» по двум регистрам..................................

303

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

303

Новый реквизит документа...................................................................................

303

Изменение процедуры проведения.....................................................................

305

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

307

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

310

294 1С:Предприятие 8.3. Практическое пособие разработчика

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

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

Также мы подготовим базу для изучения следующей главы.

Зачем нужно проведение документа понескольким регистрам

До сих пор мы с вами учитывали только количественное движение материалов в ООО «На все руки мастер». Для этих целей мы создали регистр накопления ОстаткиМатериалов.

Однако как вы, наверное, догадываетесь, одного только количественного учета совершенно недостаточно для нужд нашего предприятия. Очевидно, что необходимо также знать, какие денежные средства были затрачены на приобретение тех или иных материалов и каковы материальные запасы ООО «На все руки мастер» в денежном выражении.

После того как мы начали автоматизировать наше предприятие, руководство ООО «На все руки мастер» высказало пожелание, чтобы весь суммовой учет материалов велся бы теперь по средней стоимости.

То есть при закупке материалов они должны учитываться в ценах приобретения, а при расходе – по средней стоимости, которая рассчитывается исходя из общей суммы закупок данного материала и общего количества этого материала, находящегося в ООО «На все руки мастер».

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

Таким образом, документы ПриходнаяНакладная и ОказаниеУслуги

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

Занятие 11 295

Добавление еще одного регистра накопления

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

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

Создадим новый объект конфигурации Регистр накопления с именем

СтоимостьМатериалов.

Расширенное представление списка зададим как Движения по регистру Стоимость материалов. Этот заголовок будет отображаться в окне списка записей регистра.

На закладке Подсистемы отметим, что этот регистр будет отобра-

жаться в подсистемах Бухгалтерия, Учет материалов и Оказание услуг.

НазакладкеДанные создадимдлярегистраодноизмерение–Материал

типа СправочникСсылка.Номенклатура и один ресурс – Стоимость типа

Число длиной 15 и точностью 2.

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

(рис. 11.1).

Рис. 11.1. Регистр накопления «Стоимость материалов»

Теперь отредактируем командный интерфейс, чтобы в разделах

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

2961С:Предприятие 8.3. Практическое пособие разработчика

Вдереве объектов конфигурации выделим ветвь Подсистемы, вызовем ее контекстное меню и выберем пункт Все подсистемы.

Воткрывшемся окне слева в списке Подсистемы выделим подсистему

Бухгалтерия.

Справа в списке Командный интерфейс отразятся все команды выбранной подсистемы.

В группе Панель навигации.Обычное включим видимость у команды

Стоимость материалов и мышью перетащим ее в группу Панель навигации.См.также (рис. 11.2).

Рис. 11.2. Настройка командного интерфейса подсистем

Аналогично, выделив подсистемы ОказаниеУслуг и УчетМатериалов, в группе Панель навигации.Обычное включим видимость у команды

Стоимость материалов и перенесем ее в группу Панель навигации.См. также.

Теперь мы можем приступить к внесению изменений в процедуры проведения наших документов.

Начнем с самого простого – документа Приходная накладная.

Занятие 11 297

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

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

Изменение процедуры проведения

Откроем вконфигуратореокно редактированияобъектаконфигурации

Документ ПриходнаяНакладная и перейдем на закладку Движения.

В списке регистров отметим, что документ будет создавать теперь движения и по регистру СтоимостьМатериалов (рис. 11.3).

Рис. 11.3. Создание движений документа «ПриходнаяНакладная» в регистре «Стоимость материалов»

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

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

298 1С:Предприятие 8.3. Практическое пособие разработчика

движений для этого регистра (см. раздел «Движения документа» на  стр. 214). Над списком Регистры нажмем кнопку Добавить и  добавим еще один регистр СтоимостьМатериалов (рис. 11.4).

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

Тип движения регистра СтоимостьМатериалов по умолчанию будет установлен как Приход (пиктограмма со знаком + слева от имени регистра).

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

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

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

Чтобы задать нужное соответствие для поля регистра Стоимость, нужно его выделить и в окне Реквизиты документа дважды щелкнуть по строке ТекСтрокаМатериалы.Сумма (рис. 11.5).

Нажмем ОК. После этого откроется модуль объекта документа Приходная накладная. Откроем процедуру обработчика события

ОбработкаПроведения.

Занятие 11 299

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

Мы увидим, что конструктор сформировал новый текст обработчика, содержащий движения по двум регистрам (листинг 11.1).

Листинг 11.1. Движения документа «ПриходнаяНакладная»

Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

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

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

Движения.ОстаткиМатериалов.Записывать = Истина; Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Материал = ТекСтрокаМатериалы.Материал; Движение.Склад = Склад;

Движение.Количество = ТекСтрокаМатериалы.Количество; КонецЦикла;

// регистр СтоимостьМатериалов Приход Движения.СтоимостьМатериалов.Записывать = Истина; Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Материал = ТекСтрокаМатериалы.Материал;

300 1С:Предприятие 8.3. Практическое пособие разработчика

Движение.Стоимость = ТекСтрокаМатериалы.Сумма; КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры

Мы видим, что фрагмент, добавленный конструктором в процедуру обработки проведения документа для регистра СтоимостьМатериалов, аналогичен фрагменту для формирования движений по регистру

ОстаткиМатериалов.

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

Выполним эту небольшую оптимизацию. И еще удалим комментарии, внесенные конструктором.

В результате процедура ОбработкаПроведения будет выглядеть следующим образом (листинг 11.2).

Листинг 11.2. Движения документа «ПриходнаяНакладная»

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

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

Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

// Регистр ОстаткиМатериалов Приход Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Материал = ТекСтрокаМатериалы.Материал; Движение.Склад = Склад;

Движение.Количество = ТекСтрокаМатериалы.Количество;

// Регистр Стоимость Материалов Приход Движение = Движения.СтоимостьМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Материал = ТекСтрокаМатериалы.Материал;

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

КонецЦикла;

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