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

1.1 Вивчити принципи проведення документа по декількох регістрів

1.2 Познайомитися з принципами обліку послуг за допомогою оборотного регістра накопичення.

Короткі теоретичні відомості

Регістри накопичення можуть бути регістрами залишків і регістрами оборотів.

Існуючі в створеній навчальній конфігурації регістри «ОстаткіМатеріалов» і «СтоімостьМатеріалов» є регістрами залишків. Якщо ви пам'ятаєте, при створенні звіту «Матеріали» в конструкторі запиту видно, що для таких регістрів система створює три віртуальні таблиці: таблиця залишків, оборотів і сукупна таблиця залишків і оборотів.

Оборотний регістр накопичення дуже схожий на вже знайомий регістр залишків, для якого поняття «залишок» не має сенсу. Оборотний регістр накопичує тільки обороти, залишки йому байдужі. Тому єдиною віртуальною таблицею, яку створюватиме система для такого регістра, буде таблиця оборотів.

В іншому оборотний регістр нічим не відрізняється від регістра залишків.

Слід сказати про одну особливість конструювання регістрів накопичення, безпосередньо пов'язаної з можливістю отримання залишків. При створенні оборотного регістра накопичення немає особливої ​​складності у визначенні того, які саме параметри повинні бути вимірами регістра - можна призначити в якості його вимірів будь-які потрібні нам параметри.

Зовсім інша ситуація в разі регістра накопичення, що підтримує накопичення залишків. Для нього вибір вимірювань повинен виконуватися виходячи з того, що рухи регістра можуть бути здійснені в дві сторони: надходження та витрачання. Таким чином, в якості вимірювань потрібно вибирати ті параметри, за якими руху точно будуть здійснюватися як в одну, так і в іншу сторону.

Наприклад, якщо ведеться облік матеріалів в розрізах номенклатури і складу, очевидно, що і номенклатура, і склад можуть бути вимірами, оскільки як прихід, так і витрата матеріалів завжди будуть здійснюватися із зазначенням конкретної номенклатури і конкретного складу. Якщо ж в цій ситуації з'являється бажання відобразити облік матеріалів ще й в розрізі постачальника, то тут вже треба виходити з конкретної схеми обліку, прийнятої на підприємстві.

Швидше за все, під час вступу матеріалів постачальник буде вказано, а ось при витраті матеріалів, з великою часткою ймовірності, постачальник вказуватися не буде, так як в більшості випадків це абсолютно зайва інформація. Значить, постачальника слід додати як реквізит регістра накопичення.

Якщо ж при витраті матеріалів постачальник буде вказуватися напевно, має сенс додати постачальника в вимірювання регістра.

Іншими словами, по кожному з вимірів регістра накопичення залишків зміна ресурсів обов'язково повинно здійснюватися в обидві сторони: надходження та витрачання.

Для реквізитів регістра цей принцип не важлива. За реквізитами регістра ресурси можуть тільки приходоваться або тільки витрачатися.

Порушення цього принципу побудови регістрів накопичення буде вести до непродуктивної використанню ресурсів системи і як наслідок уповільнення роботи і падіння продуктивності.

За допомогою проведення документа по декількох регістрів вести облік матеріалів по середньої їх вартості. Створити оборотний регістр накопичення «Продажі» для обліку суми і кількості послуг, які були надані за певний проміжок часу.

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

Малюнок 1 - Створений регістр накопичення «СтоімостьМатеріалов»

4.1 Зміна процедури проведення документа «Прибуткова накладна»

Відкрити в конфігураторі вікно редагування об'єкта конфігурації Документ «ПриходнаяНакладная» і перейти на вкладку «Руху». У списку регістрів відзначити, що документ буде створювати тепер руху і по регістру «СтоімостьМатеріалов».

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

Малюнок 2 - Додаємо руху по регістру «СтоімостьМатеріалов»

Запустити конструктор рухів. Натиснути кнопку «Конструктор рухів» і погодитися з тим, що існуюча процедура ОбработкаПроведенія буде заміщена.

Малюнок 3 - Запит конфігуратора на підтвердження заміщення процедури

Відкриється вікно конструктора рухів, яке буде містити створені раніше руху документа за регістром «ОстаткіМатеріалов». Додати в список регістрів, за якими формуються руху, ще один - «СтоімостьМатеріалов». Вибрати для нього ту ж табличну частину «Матеріали» і заповнити вираження.

Для ресурсу «Вартість» вибрати значення реквізиту табличній частині «Сума».

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

Малюнок 4 - Руху за регістром «СтоімостьМатеріалов»

Натиснути OK і проаналізувати текст, який сформував конструктор.

Конструктор створив два циклу обходу табличній частині документа - окремо для кожного регістру. Так відбувається тому, що в загальному випадку документ може мати кілька табличних частин, і інформація, що міститься в кожній з них, може призначатися для свого окремого регістра.

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

Малюнок 5 - Обробка проведення за двома регістрів

// Для Кожного ТекСтрокаМатеріали З Матеріали Цикл

Запустити 1С: Підприємство в режимі налагодження і перепровести документи «ПриходнаяНакладная» №1 та №2.

Потім відкрити «ПріходнуюНакладную» №1 і переконатися, що документ створює бажані записи в регістрах накопичення.

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

Малюнок 6 - Проведення документа «ПриходнаяНакладная» №1

4.2 Зміна процедури проведення документа «Надання послуги»

Потрібно, щоб при списанні матеріалів, витрачених в процесі надання послуги, повинна бути можливість вказувати різну вартість для одного і того ж матеріалу, яка розрахована керівництвом виходячи з поточних кон'юнктурних міркувань.

Оскільки в документі «ОказаніеУслугі» відображена тільки ціна номенклатури, знадобиться додати в табличну частину документа ще одне поле, в якому зазначатиметься вартість номенклатури.

Відкрити в конфігураторі вікно редагування об'єкта конфігурації «Документ» - «ОказаніеУслугі», перейти на закладку «Дані» і створити новий реквізит табличної частини документа з ім'ям «Вартість», типом «Число», довжиною 15 і точністю 2, невід'ємне.

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

Малюнок 7 - Додавання реквізиту табличній частині

Після цього відкрити форму «ФормаДокумента» документа «ОказаніеУслугі» і додати в табличное поле колонку, яка буде показувати новий реквізит «Вартість» », розташувавши її після колонки« Номенклатура ». Для цього виділити табличний поле і виконати команду контекстного меню «Розміщення даних». У вікні «Розміщення даних» відзначити реквізит «Вартість» і натиснути «ОК». Після цього за допомогою миші перетягнути колонку «Вартість» після колонки «Номенклатура».

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

Малюнок 8 - Модифікована форма документа «ОказаніеУслугі»

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

Відкрити в конфігураторі вікно редагування об'єкта конфігурації «Документ» «ОказаніеУслугі» і вказати, що він буде створювати руху за регістром накопичення «СтоімостьМатеріалов».

Запустити конструктор рухів документа і додати в список регістрів регістр «СтоімостьМатеріалов». Відновити руху по регістру «ОстаткіМатеріалов». Описати руху документа за регістром «СтоімостьМатеріалов» наступним чином (важливо звернути увагу, що вартість обчислюється як добуток вартості та кількості, зазначених в табличній частині):

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

Малюнок 9 - Руху за регістром «СтоімостьМатеріалов» в документі «ОказаніеУслугі»

Натиснути «OK» і в тексті, сформованому конструктором, відновити зміни, внесені раніше (не писати руху, якщо номенклатура - не матеріал). Вставити після рядки «Для Кожного ТекСтрокаПереченьНоменклатури З ПереченьНоменклатури Цикл» наступний код:

якщо ТекСтрокаПереченьНоменклатури.Номенклатура.ВідНоменклатури <> Перечісленія.ВідиНоменклатури.Матеріал Тоді

Запустити 1С: Підприємство в режимі налагодження. Тепер створити і провести ще два документа «ОказаніеУслугі». Важливо зауважити, що ці документи створені іншими датами.

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

Малюнок 10 - Два нових документа «ОкзаніеУслугі»

Перевірити руху по регістрах:

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

Малюнок 11 - Руху регістрів обох документів

Раніше створювалися в регістрах накопичення руху тільки для рядків документа, які містять матеріали. Послуги, що містяться в документі, не враховувалися.

Справа в тому, що при обліку послуг важливі зовсім інші критерії, ніж при обліку матеріалів. Перш за все, безглуздо говорити про те, скільки послуг було і скільки їх залишилося, важлива тільки сума і кількість послуг, які були надані за певний проміжок часу. Крім цього цікаві такі моменти:

- які саме послуги були надані (щоб скласти рейтинг послуг);

- якого саме клієнту надавалися послуги (щоб надати йому знижку від обсягу сплачених раніше послуг, наприклад);

- який майстер надавав послуги (щоб нарахувати йому заробітну плату).

Очевидно, що існуючі регістри накопичення абсолютно не підходять для вирішення таких завдань. Тому створимо ще одне «сховище» даних, яке буде використовуватися в нашій програмі, - оборотний регістр накопичення «Продажі».

Відкрити конфігуратор і створити новий об'єкт конфігурації «Регістр накопичення». Назвати його «Продажі» і визначити вид регістра - «Обороти».

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

Малюнок 12 - Установка імені та виду регістра

На вкладці «Дані» створити вимірювання регістра:

У регістра буде три ресурсу:

- «Кількість», тип Число, довжина 15, точність 3 (невід'ємне),

- "Дохід", тип Число, довжина 15, точність 2,

- «Вартість», тип Число, довжина 15, точність 2 (невід'ємне).

Відкрити вікно редагування об'єкта конфігурації «Документ» - «ОказаніеУслугі» і на закладці «Руху» вказати, що цей документ буде створювати руху по регістру «Продажі».

В цей раз не обов'язково використовувати конструктор рухів документа, а можна внести необхідні доповнення прямо в обробник події «ОбработкаПроведенія» документа «ОказаніеУслугі».

Відкрити в конфігураторі модуль об'єкта конфігурації «Документ» - «ОказаніеУслугі» і знайти в ньому процедуру обробника події «ОбработкаПроведенія».

Відразу після закінчення першого циклу створити ще один цикл обходу табличній частині і команду записи рухів регістра «Продажі». Цикл повинен містити наступний код:

Для Кожного ТекСтрокаПереченьНоменклатури З ПереченьНоменклатури Цикл

Двіженіе.Стоімость = ТекСтрокаПереченьНоменклатури.Стоімость * ТекСтрокаПереченьНоменклатури.Колічество;

Всі додані конструкції вже добре відомі. Важливо зауважити, що у оборотного регістра відсутня властивість «ВідДвіженія», оскільки відображення виду руху (надходження або видаток) має сенс лише при обліку залишків. У разі регістра оборотів цікавить тільки значення, яке має бути записано в ресурс регістра.

Запустити 1С: Підприємство в режимі налагодження і перепровести два раніше створених документа «ОказаніеУслугі». Рухи цих документів по регістру «Продажі» повинні мати наступний вигляд:

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

Малюнок 13 - Руху документів по регістру «Продажі»

5.1 Для чого може знадобитися проведення документа по декількох регістрів?

5.2 Як за допомогою конструктора створити руху документа по декількох регістрів?

5.3 Що таке оборотний регістр накопичення?

5.4 У чому відмінність між регістром накопичення залишків і оборотним регістром накопичення?

5.5 Як створити руху документа без використання конструктора рухів

6.1 Назва роботи

6.3 Опис ходу роботи зі знімками екрана

6.4 Відповіді на контрольні питання

6.5 Висновки до роботи

Практична робота №10

Схожі статті