Додавання ще одного регістра накопичення
Проведення прибуткової накладної за двома регістрів
Зміна процедури проведення
Команда переходу до записів регістру
Проведення документа «Надання послуги» за двома регістрів
Новий реквізит документа
Зміна процедури проведення
Це заняття буде присвячено тому, як один і той же документ може «поставляти» інформацію в різні регістри конфігурації і для чого може знадобитися така можливість.
На цьому занятті ми створимо ще один регістр накопичення нашої конфігурації і змінимо процедуру проведення документів так, щоб вони записували необхідні дані як в один, так і в інший регістр.
Також ми підготуємо базу для вивчення наступного розділу.
Навіщо потрібно проведення документа по декількох регістрів
До сих пір ми з вами враховували тільки кількісний рух матеріалів в ТОВ «На всі руки майстер». Для цих цілей ми створили реєстр накопичення ОстаткіМатеріалов.
Однак як ви, напевно, здогадуєтеся, одного тільки количес-твенного обліку абсолютно недостатньо для потреб нашого підприємства. Очевидно, що необхідно також знати, які кошти були витрачені на придбання тих чи інших матеріалів і які матеріальні запаси ТОВ «На всі руки майстер» в грошовому вираженні.
Після того як ми почали автоматизувати наше підприємство, керівництво ТОВ «На всі руки майстер» висловило побажання, щоб весь сумовий облік матеріалів вівся б тепер за середньою вартістю.
Тобто при закупівлі матеріалів вони повинні враховуватися в цінах придбання, а при витраті - за середньою вартістю, що розраховується виходячи із загальної суми закупівель даного матеріалу і загальної кількості цього матеріалу, що знаходиться в ТОВ «На всі руки майстер».
Оскільки подібна інформація має зовсім іншу структуру, ніж кількісний облік, для зберігання даних про загальну вартість тих чи інших матеріалів ми будемо вико-ти ще один регістр накопичення СтоімостьМатеріалов.
Таким чином, документи ПриходнаяНакладная і ОказаніеУслугі повинні будуть створювати руху не тільки в регістрі ОстаткіМатеріалов. але одночасно і в регістрі СтоімостьМатеріалов. відображаючи зміни сумового обліку.
Додавання ще одного регістра накопичення
У режимі Конфігуратор
Регістр СтоімостьМатеріалов зовсім не складний, тому ми не будемо детально зупинятися на його створення.
Створимо новий об'єкт конфігурації Регістр накопичення з ім'ям СтоімостьМатеріалов.
Розширене подання списку задамо як Руху за регістром Вартість матеріалів. Цей заголовок буде відображатися у вікні списку записів регістру.
На закладці Підсистеми відзначимо, що цей реєстр буде що відображається тулитися в підсистемах Бухгалтерія. Облік матеріалів і Надання послуг.
Після створення регістр СтоімостьМатеріалов повинен виглядати в дереві конфігурації наступним чином (рис. 1).
Мал. 1 Регістр накопичення «Вартість матеріалів»
У дереві об'єктів конфігурації виділимо гілку Підсистеми, викличемо її контекстне меню і виберемо пункт Усі підсистеми.
У вікні зліва в списку Підсистеми виділимо підсистему Бухгалтерія.
Справа в списку Командний інтерфейс відіб'ються всі команди обраної підсистеми.
У групі Панельнавігаціі.Обичное включимо видимість у команди Вартість матеріалів і мишею перетягнемо її в групу Панель навігації. Дивись (рис. 2).
Рис.2 Налаштування командного інтерфейсу підсистем
Аналогічно, виділивши підсистеми ОказаніеУслуг і УчетМатеріалов. в панелі навігації в групі Звичайне включимо видимість у команди Вартість матеріалів і перенесемо її в групу Дивись.
Тепер ми можемо приступити до внесення змін до процедури проведення наших документів.
Почнемо з найпростішого - документа ПриходнаяНакладная.
Проведення прибуткової накладної за двома регістрів
У режимі Конфігуратор Зміна процедури проведення
Відкриємо в конфігураторі вікно редагування об'єкта конфі-гураціі Документ ПриходнаяНакладная і перейдемо на закладку Руху.
У списку регістрів відзначимо, що документ буде створювати тепер руху і по регістру СтоімостьМатеріалов (рис. 3).
Мал. 3 Створення рухів документа «Прибуткова накладна» в регістрі «Вартість товарів»
На цей раз ми не будемо використовувати конструктор рухів документа, а внесемо необхідні доповнення прямо в обробник події ОбработкаПроведенія документа ПриходнаяНакладная.
Справа в тому, що за допомогою конструктора можна створювати руху одночасно і в декількох регістрах (в конструкторі рухів можна додавати регістри). Але коли процедура проведення документа вже написана, використання конструктора призведе до того, що наявна процедура збережена не буде. Тобто зараз при використанні конструктора довелося б заново описувати руху як для одного, так і для іншого регістра. Тому простіше внести зміни в існуючу процедуру «вручну».
Перейдемо на закладку Інше та відкриємо модуль об'єкта.
Для цього натиснемо кнопку Модуль об'єкта (рис. 4).
Мал. 4 Відкриття модуля об'єкта
Відкриємо процедуру обробника події ОбработкаПроведенія.
В самому кінці циклу перед рядком КонецЦікла додамо рядки коду, що створюють руху в регістрі СтоімостьМатеріалов (лістинг 1).
Лістинг 1. Руху документа «ПриходнаяНакладная» (фрагмент)
// регістр СтоімостьМатеріалов Прихід
Перед початком циклу встановимо для набору записів рухів з цього регістру властивість Записувати в значення Істина. щоб платформа автоматично записала створені нами руху після виходу з процедури проведення документа. І ще видалимо Ком-таріі, внесені конструктором.
В результаті процедура ОбработкаПроведенія буде виглядати наступним чином (лістинг 2).
Лістинг 2. Руху документа «ПриходнаяНакладная»
Процедура ОбработкаПроведенія (Відмова, Режим)
Для Кожного ТекСтрокаМатеріали З Матеріали Цикл
// регістр СтоімостьМатеріалов Прихід
Команда переходу до записів регістру
На закінчення відредагуємо командний інтерфейс форми документа, щоб в панелі навігації форми мати можливість переходити до списку записів регістра СтоімостьМатеріалов. пов'язаний-ному з документом.
Для цього відкриємо форму документа ПриходнаяНакладная.
У лівому верхньому вікні перейдемо на закладку Командний інтерфейс.
У розділі Панель навігації розкриємо групу Перейти і побачимо команду для відкриття регістра накопичення Вартість мате-ріалів. Встановимо властивість Видимість для цієї команди (рис. 5).
Мал. 5 Налаштування командного інтерфейсу форми документа «ПриходнаяНакладная»
У режимі 1С: Підприємство
У режимі 1С: Підприємство наше завдання полягатиме в тому, щоб провести ще раз (перепровести) всі прибуткові накладні. Це необхідно для того, щоб ці документи створили нові записи в регістрах, відповідно до алгоритму проведення, який ми тільки що змінили.
Запустимо 1С: Підприємство в режимі налагодження. Відкриємо список документів, виконавши команду Прибуткові накладні в панелі навігації розділу Облік матеріалів.
Виділимо одночасно, використовуючи клавішу Ctrl. всі прибуткові накладні та перепроведем їх, виконавши команду Всі дії ► Провести.
Потім відкриємо перший документ (рис. 6) і, виконавши команди переходу до регістрів Залишки матеріалів і Вартість матеріалів, переконаємося, що документ створює бажані записи як в одному (рис. 7), так і в іншому регістрі накопичення (рис. 8).
Мал. 6 Прибуткова накладна №1
Мал. 7 Записи регістра «Залишки матеріалів»
Мал. 8 Записи регістра «Вартість матеріалів»
Проведення документа «Надання послуги» за двома регістрів
На закінчення ми внесемо зміни в процедуру обробки прове-дення документа ОказаніеУслугі.
При цьому ми будемо виходити з побажання, висловленого руководс-твом ТОВ «На всі руки майстер». Суть його полягає в тому, що на першому етапі, при списанні матеріалів, витрачених в процесі надання послуги, повинна бути можливість вказувати різну вартість для одного і того ж матеріалу, яка розрахована руко-ництвом виходячи з поточних кон'юнктурних міркувань.
Оскільки в документі ОказаніеУслугі у нас відображена тільки ціна номенклатури, нам знадобиться:
1. Додати в табличну частину документа ще один реквізит, в якому зазначатиметься вартість номенклатури.
2. Після цього змінити процедуру проведення документа Ока-заніеУслугі.
3. І на закінчення в режимі 1С: Підприємство перепровести всі ці документи, щоб відпрацював новий, змінений нами алгоритм проведення документів Надання послуги.
У режимі Конфігуратор Новий реквізит документа
Відкриємо в конфігураторі вікно редагування об'єкта конфігу-рації Документ ОказаніеУслугі і перейдемо на закладку Дані.
Створимо новий реквізит табличної частини документа з ім'ям Вартість, типом Число, довжиною 15 і точністю 2, невід'ємне (рис. 9).
Мал. 9 Зміна документа «Надання послуги»
Після цього відкриємо форму ФормаДокумента документа ОказаніеУслугі і додамо в табличну частину ПереченьНоменклатури поле, яке відображає новий реквізит Вартість.
Мал. 10 Зміна форми документа «Надання послуги»
Ми бачимо, що він містить всі реквізити документа ОказаніеУспугі.
Новий елемент розташуємо в структурі елементів форми після поля Номенклатура. Залишимо властивості елемента форми, запропонованого-женние за замовчуванням.
Мал. 11 Зміна форми документа «Надання послуги»
Зміна процедури проведення
Тепер створимо руху документа ОказаніеУслугі таким же чином, як ми робили це для документа ПриходнаяНакладная.
У вікні редагування об'єкта конфігурації Документ оказії-ніеУслугі перейдемо на закладку Руху.
У списку регістрів відзначимо, що документ буде створювати тепер руху і по регістру СтоімостьМатеріалов.
Перейдемо на закладку Інше та відкриємо модуль об'єкта. Для цього натиснемо кнопку Модуль об'єкта.
Відкриємо процедуру обробника події ОбработкаПроведенія.
В самому кінці циклу перед рядком КонецЕсли додамо рядки коду, що створюють руху регістра СтоімостьМатеріалов. вироблені документом ОказаніеУслугі (лістинг 3).
Лістинг 3. Руху документа «ОказаніеУслугі» (фрагмент)
// регістр СтоімостьМатеріалов Витрата
Перед початком циклу встановимо властивість Записувати набору записів рухів з цього регістру в значення Істина. Видалимо Ком-таріі, внесені конструктором.
В результаті процедура ОбработкаПроведенія буде виглядати наступним чином (лістинг 4).
Лістинг 4. Руху документа «ОказаніеУслугі»
Процедура ОбработкаПроведенія (Відмова, Режим)
Для Кожного ТекСтрокаПереченьНоменклатури З ПереченьНоменклатури Цикл
Якщо ТекСтрокаПереченьНоменклатури.Номенклатура.ВідНоменклатури = Перечісленія.ВідиНоменклатури.Матеріал Тоді
// регістр ОстаткіМатеріалов Витрата
Зверніть увагу, що вимір регістра Вартість обчислюється як добуток вартості та кількості, зазначених в табличній частині документа.
На закінчення відредагуємо командний інтерфейс форми документа, щоб в панелі навігації форми мати можливість переходити до списку записів регістра Вартість Матеріалів. пов'язаного з документом.
Для цього відкриємо форму документа ОказаніеУслугі.
У лівому верхньому вікні перейдемо на закладку Командний інтерфейс.
У розділі Панель навігації розкриємо групу Перейти і побачимо команду для відкриття регістра накопичення Вартість матеріалів.
Встановимо властивість Видимість для цієї команди.
У режимі 1С: Підприємство
У режимі 1С: Підприємство наше завдання полягатиме в тому, щоб провести ще раз (перепровести) наш документ надання послуги. Це необхідно для того, щоб цей документ створив нові записи в регістрах відповідно до алгоритму проведення, який ми тільки що змінили.
Запустимо 1С: Підприємство в режимі налагодження і відкриємо список документів, виконавши команду Надання послуг в панелі навігації розділу Надання послуг.
Відкриємо документ Надання послуги № 1 і вкажемо в ньому вартість гумового шланга - 100 (рис. 12).
Мал. 12 Документ «Надання послуги №1»
Проведемо документ Надання послуги № 1 і подивимося нa руху цього документа за регістром Вартість матеріалів.
Для цього натиснемо кнопку Провести і виконаємо команду переходу до регістру Вартість матеріалів (рис.13).
Мал. 13 Записи регістра «Вартість матеріалів»
Тепер створимо і проведемо ще два документа Надання послуги.
Для цього в формі списку документів натиснемо кнопку Створити або в панелі дій розділу Надання послуг виконаємо команду Надання Послуги.
Ці документи знадобляться нам надалі, тому будьте уважні і зверніть увагу на те, що ці документи створені іншими датами (рис. 14, 15).
Мал. 14 Документ «Надання послуги №2»
Мал. 15 Документ «Надання послуги №3»
Рухи документів Надання послуги № 2 і № 3 по регістру Вартість матеріалів повинні виглядати відповідно наступним чином (рис. 16, 17).
Мал. 16 Руху документа «Надання послуги №2»
Мал. 17 Руху документа «Надання послуги №3»
1. Для чого може знадобитися проведення документа по декількох регістрів.
2. Як створити руху документа по декількох регістрів в обробнику проведення документа.
3. Як створити руху документа без використання конструктора рухів.
4. Як засобами вбудованої мови сформувати і записати руху документа в регістр накопичення.
5. Як додати в форму документа новий реквізит.