КонецПроцедури - студопедія
Конструктор створив обробник події ОбработкаПроведенія об'єкта конфігурації Документ ПриходнаяНакладная, помістив його в модуль об'єкта і відкрив текст модуля.
Подія ОбработкаПроведенія є одним з найважливіших подій, пов'язаних з документом. Ця подія виникає при проведенні документа. Основне призначення обробника даної події - генерація рухів по документу. Виконання різних операцій з даними в процедурі обробника впливає на стан обліку. Таким чином, саме в цю процедуру розробник повинен помістити власні алгоритми перетворення даних, що виконуються в момент проведення документа.
Пояснимо текст процедури обробника:
Об'єкт вбудованої мови ДокументОб'ект має властивість Руху. Воно повертає об'єкт КоллекціяДвіженій, що містить колекцію наборів записів регістрів, за якими цей документ може формувати руху.
До конкретного набору записів цієї колекції можна звернутися, вказавши через точку ім'я регістра, якому належить цей набір записів. Наприклад, Двіженія.ОстаткіМатеріалов.
Потім через точку можна використовувати різні методи набору записів регістра, наприклад, Двіженія.ОстаткіМатеріалов.Добавіть (). Метод Додати () додає новий запис в набір записів.
У першому рядку процедури ми встановлюємо властивість Записувати набору записів регістра в значення Істина. Тобто в явному вигляді вказуємо, що після завершення обробки проведення платформа повинна буде записати цей набір записів в базу даних.
Усередині обробника розташований цикл Для Кожного. З. Цикл. Він призначений для перебору рядків табличної частини нашого документа.
У циклі звернення до табличній частині документа відбувається по імені (Матеріали). Мінлива ТекСтрокаМатеріали містить об'єкт з даними поточного рядка табличної частини документа. Ця змінна створюється на початку циклу і змінюється в міру його проходження.
У першому рядку тіла циклу, використовуючи метод Додати (), ми додаємо до набору записів, який створює наш документ в регістрі, новий запис. Тим самим ми створюємо об'єкт РегістрНакопленіяЗапісь і зберігаємо його в змінної Рух.
Використовуючи цей об'єкт, ми можемо звернутися до полів цього запису, вказавши ім'я поля через точку від цієї змінної (наприклад, Двіженіе.Колічество).
Причому Двіженіе.Матеріал. Двіженіе.Склад - це вимірювання регістра, Двіженіе.Колічество - це ресурс регістра, а Двіженіе.ВідДвіженія і Двіженіе.Період - стандартні реквізити регістру, які створюються автоматично.
Щоб привласнити полях нового запису регістра відповідні значення полів документа, ми звертаємося до полів табличній частині, вказавши ім'я поля через точку від змінної ТекСтрокаМатеріали (наприклад, ТекСтрокаМатеріали.Матеріал).
Зауважимо, що Склад - це реквізит шапки документа, а Дата - стандартний реквізит документа, який створюється автоматично. Причому в циклі змінюються тільки значення полів табличній частині документа - ТекСтрокаМатеріали.Матеріал і ТекСтрокаМатеріали.Колічество. Решта поля не змінюються, так як ставляться до документа в цілому і не залежать від поточного рядка табличної частини документа.
ВідДвіженіяНакопленія.Пріход - це значення системного перерахування, яке визначає вид руху регістра накопичення як Прихід.
Таким чином, ми присвоюємо потрібні значення всім полям нового запису. Після перебору всіх рядків документа (після завершення циклу) в цьому наборі записів (Двіженія.ОстаткіМатеріалов) буде міститися стільки записів, скільки рядків у табличній частині проведеного документа.
Якщо ми тепер відкриємо вікно редагування об'єкта конфігурації Регістр накопичення Залишки Матеріалів і перейдемо на закладку Реєстратори. то в списку документів, створених в конфігурації, ми побачимо зазначений документ ПриходнаяНакладная, так як ми задали в модулі цього документа формування рухів в регістрі ОстаткіМатеріалов (рисунок 3.4).

Малюнок 3.4 - Реєстратори регістра «ОстаткіМатеріалов»
Команди відкриття регістрів також додаються в панель навігації підсистем, але за замовчуванням вони невидимі, на відміну від команд відкриття довідників і документів.
У дереві об'єктів конфігурації виділимо гілку Підсистеми, викличемо її контекстне меню і виберемо пункт Усі підсистеми.
У вікні зліва в списку Підсистеми виділимо підсистему УчетМатеріалов.
Справа в списку Командний інтерфейс відіб'ються всі команди обраної підсистеми.
У групі Панель навігаціі.Обичное включимо видимість у команди Залишки матеріалів і мишею перетягнемо її в групу Панель навігації. Дивись (рисунок 3.5).

Малюнок 3.5 - Налаштування командного інтерфейсу підсистем
Дійсно, команди відкриття регістрів накопичення не так часто використовуються, і тому краще їх перенести в групу Дивись панелі навігації розділів інтерфейсу.
Аналогічно, виділивши підсистеми ОказаніеУслуг і Бухгалтерія, в панелі навігації в групі Звичайне включимо видимість у команди Залишки матеріалів і перенесемо її в групу Дивись.
Запустимо 1С: Підприємство в режимі налагодження і протестуємо внесені нами зміни.
У вікні, 1С: Підприємства бачимо, що в панелі навігації в групі Дивись розділів Бухгалтерія, Надання послуг та Облік матеріалів з'явилася команда, щоб відкрити список регістра Залишки матеріалів (рисунок 3.6).

Малюнок 3.6 - Список регістра накопичення «ОстаткіMатеріалов»
Щоб простежити зв'язок між проведенням документа і накопиченням інформації в регістрі, відкриємо список прибуткових накладних, виконавши команду Прибуткові накладні розділі Бухгалтерія.
Відкриємо Приходную накладну № 1 і натиснемо Провести і закрити, тобто перепроведем її. Те ж саме зробимо для Приходний накладної № 2.
Перепровести документи можна і не відкриваючи документів. Для цього потрібно виділити потрібний документ в списку (або виділити мишею групу документів, утримуючи клавішу Ctrl), натиснути кнопку Все дії в командній панелі форми списку і вибрати пункт Провести (рисунок 3.7).

Малюнок 3.7 - Проведення документа
Далі виконаємо команду Залишки матеріалів і відкриємо список нашого регістра накопичення (рисунок 3.8).

Малюнок 3.8 - Список регістра накопичення «ОстаткіМатеріалов»
При проведенні прибуткових накладних з'являються відповідні записи в регістрі накопичення Залишки матеріалів. Додалося п'ять записів - перші три після проведення першого документа, що відповідає кількості рядків у його табличній частині, і останні дві після проведення другого документа.
Всі поля регістру заповнилися даними документів так, як задали в обробнику проведення документа ПриходнаяНакладная. Піктограма зі знаком + зліва від кожного запису вказує на тип руху - Прихід.
Тема форми списку записів регістра відповідає заданому нами у властивості Розширене подання списку для цього регістра.
Команда переходу до рухів у формі документа
При реальній роботі записів в регістрі ОстаткіМатеріалов буде багато, і буде важко зрозуміти, які записи відносяться до певного документу.
Тому поряд із загальним списком регістра хотілося б мати можливість викликати з форми документа список регістра, в якому показані руху, вироблені тільки цим документом. Для цього:
1. У конфігураторі відкриємо форму документа ПриходнаяНакладная.
2. У лівому верхньому вікні перейдемо на закладку Командний інтерфейс.
3. У розділі Панель навігації розкриємо групу Перейти і побачимо команду, щоб відкрити список регістра накопичення Залишки матеріалів. Ця команда була автоматично поміщена в панель навігації форми документа, так як він є реєстратором, тобто створює руху в нашому реєстрі.
4. Встановимо властивість Видимість для цієї команди (рисунок 3.9).

Малюнок 3.9 - Налаштування командного інтерфейсу форми документа
Запустимо 1С: Підприємство в режимі налагодження і відкриємо Приходную накладну № 2 (рисунок 3.10).

Малюнок 3.10 - Панель навігації документа «Прибуткова накладна»
У формі документа з'явилася панель навігації, в якій ми можемо переходити до списку записів регістра Залишки Матеріалів. пов'язаного з документом (рисунок 3.11), і назад до вмісту документа.

Малюнок 3.11 - Перехід до регістру накопичення з форми документа
Зверніть увагу, що до цього панель навігації в формі прибуткової накладної була, хоч я знаю, так як в ній не було відображено жодної команди.
Рухи документа «ОказаніеУслугі»
Аналогічним чином створимо руху документа ОказаніеУслугі. Для цього буде потрібно виконати вже знайомі нам дії:
1. У режимі Конфігуратор відкриємо вікно редагування об'єкта конфігурації Документ ОказаніеУслугі.
2. Перейдемо на закладку Руху і в списку регістрів конфігурації відзначимо регістр накопичення ОстаткіМатеріалов.
3. Натиснемо кнопку Конструктор рухів.
4. У вікні конструктора змінимо тип руху регістра на Витрата, так як документ ОказаніеУслугі повинен витрачати матеріали. Піктограма ліворуч від назви регістра зміниться на знак -.
5. У поле вибору Таблична частина виберемо табличну частину нашого документа - ПереченьНоменклатури. Список реквізитів документа, який вже заповнений реквізитами шапки документа, автоматично доповниться реквізитами нашої табличній частині.
6. Натиснемо кнопку Заповнити вираження. У нижньому вікні сформується відповідність полів (вимірювань і ресурсів) регістра і виразів для їх розрахунку. Однак при автоматичному заповненні поле Матеріал не заповниться.
Так відбувається тому, що ім'я поля табличній частині - Номенклатура не збігається з ім'ям вимірювання регістра - Матеріал. Якщо залишимо це так, як є, то в регістрі накопичення в рядках з типом Рух регістра - витрата номенклатура фіксуватися не буде.
7. Щоб уникнути цього, треба виділити поле регістра Матеріал і у вікні Реквізити документа двічі клацнути по рядку ТекСтрокаПереченьНомеклатури.Номенклатура.
Т.ч. номенклатура для рухів регістра накопичення буде вибиратися з табличній частині документа (рисунок 3.12).

Малюнок 3.12 - Вибір табличній частині документа і заповнення виразів для розрахунку рухів регістра
8. Натиснемо кнопку ОК. Конструктор створив обробник події ОбработкаПроведенія об'єкта конфігурації Документ ОказаніеУслугі і помістив його в модуль об'єкта.
Процедура ОбработкаПроведенія (Відмова, Режим)
// Даний фрагмент побудований конструктором.
// При повторному використанні конструктора, внесені вручну зміни будуть втрачені.
// регістр ОстаткіМатеріалов Витрата
Для Кожного ТекСтрокаПереченьНоменклатури З ПереченьНоменклатури Цикл