Довідковий матеріал

Практикум 2. Створення документів

Отже, фірма надає послуги з ремонту телевізорів і встановлення пральних машин. І в тому, і в іншому випадку потрібні деякі матеріали, які витрачаються у процесі надання цих послуг. Тому двома найважливішими подіями в господарському житті нашої організації будуть надходження матеріалів і надання послуг.Створення документа ПриходнаяНакладная. Створення форми документа. Створення процедури обробки події в модулі форми. Створення процедури обробки події в загальному модулі. Створення документа ОказаниеУслуги. Створення рухів документа ОказаниеУслуги

Практикум 2. Створення документів

Створення документа ПриходнаяНакладная

Створення форми документа

Створення процедури обробки події в модулі форми

Створення процедури обробки події в загальному модулі

Створення документа ОказаниеУслуги

Створення рухів документа ОказаниеУслуги

 

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

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

  • «Прибуткова накладна»;
  • «Надання послуги».

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

Створення документа ПриходнаяНакладная

  1. Створіть новий об'єкт конфігурації Документ1. Надайте документу ім'я «ПриходнаяНакладная».
  2. На вкладці «Дані» створимо реквізит документа з ім'ям «Склад» і типом СправочникСсылка.Склады. Для цього:
    1. над віконцем Реквізити клацніть по іконці ;
    2. у вікні «Властивості: Реквізит» задайте ім'я документа «Склад»;
    3. у полі «Тип» за стрілочкою (за трикутником) зі спадного списку виберіть потрібний нам тип СправочникСсылка.Склады.

Документ ПриходнаяНакладная Свойства: Реквизит Еха Основные Данные І Ў Основные: Нумерация Движения П оследовательност и Журналы Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее В-я Реквизиты Имя Склад Склад ЯШ! Синоним Склад

  1. Додайте табличну частину з ім'ям «Матеріали».
  2. У цій табличній частині створіть чотири реквізити:
  • «Матеріал» з типом СправочникСсылка.Номенклатура;
  • «Кількість» з типом Число (довжина → 15, точність → 3, невід'ємне);
  • «Ціна» з типом Число (довжина → 15, точність → 2, невід'ємне);
  • «Сума» з типом Число (довжина → 15, точність → 2, невід'ємне).

В-кЦ Tабличные части =:= Материалы і.....- Материал — Цена - Сумма Количество

  1. Запустіть 1С:Підприємство в режимі налагодження.
  2. Виконайте команду Операції в†’ Документи в†’ Прибуткова накладна. Система відкриє одну з основних форм документа → основну форму списку.
  3. Створіть новий документ. Система автоматично надасть номер новому документу та позначить дату створення документа. Як склад виберемо «Основний». Тепер нам залишається заповнити лише табличну частину прибуткової накладної. Заповніть її матеріалами так, як показано на рисунку:

Приходная накладная: Приходная накладная Новый ж Номер: 000000001 Дата: 27.03.2003 0:00:00 т Склад: Основной 2 Гй N Материал Количество Цена Сумма 1 Строчный трансформатор GoldStar 10,000 270,00 2 700,00 2 Строчный трансформатор Samsung 10,0001 600,00 6 00

  1. Аналогічним чином створіть другу накладну, яка оприбутковуватиме такі матеріали для встановлення пральних машин:

Склад: Основной . .. х з! •Ьг; 5 ц. І І N Материал Количество Ц єна Сумма 1 Кабель электрический 5,000 20,00 100,00 2 Шланг резиновый 5,000 100,00 500,00 О К Записать Закрыть

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

Для цього нам потрібно буде створити власну форму документа, а потім скористатися можливостями вбудованої мови.

Створення форми документа

Досі ми використовували наперед визначені форми об'єктів, які система 1С:Підприємство створювала для нас сама «за замовчуванням».

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

  1. Поверніться до конфігуратора та відкрийте вікно редагування об'єкта конфігурації «ПриходнаяНакладная»:
    • у конфігураторі двічі клацніть по документу «ПриходнаяНакладная». Відкриється вікно «Документ ПриходнаяНакладная».
  2. Перейдіть на вкладку «Форми».
  3. Щоб створити форму документа, натисніть на символ лупи в полі введення Документа:

Документ ПриходнаяНакладная Основные Данные Нумерация Движения П оследовательности Журналы Формы Основные Формы Списка Выбора Документа І аь'оті.і Ввод по строке в 4 Номер „.ха . .. х се . .. КН

  1. Система викличе ще один корисний інструмент розробника → конструктор форм. Цей інструмент також побудований за принципом «майстрів» — введення даних у певній послідовності та переміщення кнопками «Далі» і «Назад».

Відразу натиснемо кнопку «Готово», погоджуючись тим самим з усім, що запропонувала нам система.

Зверніть увагу, що в дереві об'єктів конфігурації в об'єкта конфігурації Документ «ПриходнаяНакладная» з'явилася форма «ФормаДокумента», а на екрані відкрилося вікно редактора форм, що містить цю форму.

Форма документа «ПриходнаяНакладная» містить велику кількість різноманітних полів. Ці поля називаються елементами керування. Вони мають різне призначення та різну поведінку, що відповідає їхньому призначенню. Проте всі вони призначені для відображення інформації, що зберігається в базі даних, і організації інтерактивної роботи з цією інформацією.

  1. У цьому випадку нас цікавлять три елементи керування → це три поля введення, розташовані в колонках «Кількість», «Ціна» і «Сума».

Створення процедури обробки події в модулі форми

1. Клацніть правою кнопкою миші на полі введення в колонці «Кількість» і відкрийте для нього палітру властивостей (пункт контекстного меню Властивості)

'////////////////////////////////////А Материал Цена Сумма [аы1 Поле ееода Иь Ul.ll /Пппа ввппаЧ .Ч _ Поле ееода Размещение данных... Свойства АИ+Е п1ег уууууууууууууууууууууууууууууууууууууууууууууууууууул ууууууууууууууууууууууууууууууууууууууууууууууууу

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

Ў События: ПриИзменении НачалоВыбора Н ачалоВ ыбораИ зСг Очистка Регулирование Открытие ОбработкаВыбора АвтоПодборТ екста ОкончаниеВводаТ 35 35 35 35 35 35 35 Ў о.

3. Серед подій знайдіть подію «ПриИзменении». Ця подія виникає після зміни значення поля введення.

Клацніть по кнопці з лупою наприкінці поля введення, і система створить заготовку процедури обробника цієї події в модулі нашої форми.

— Документ ПриходнаяНвкладная: ФормаДокумента _ п Е Процедура МатериалыКоличествоПриИзменении Элемент // Вставить содержимое обработчика. І- КонецПроцедуры Модуль

4. До модуля форми додамо такий текст:

C Процедура МатериалыКоличествоПриИзменении Элемент СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество СтрокаТабличнойЧасти.Цена; - КонецПроцедуры

Пояснимо значення цих рядків.

У першому рядку ми звертаємося до програмного об'єкта ЭлементыФормы. Цей об'єкт є колекцією значень, що містить усі елементи керування, розташовані на нашій формі. Кожен елемент керування форми можна отримати, вказавши його ім'я як властивість об'єкта ЭлементыФормы. У цьому випадку ми звертаємося до елемента керування з ім'ям «Матеріали» (ЭлементыФормы.Материалы).

Цей елемент керування відображає рядки табличної частини нашого документа. Отримати той рядок, у якому наразі здійснюється редагування, можна за допомогою властивості програмного об'єкта ТабличноеПолеТекущиеДанные. Таким чином, у результаті виконання першого рядка змінна СтрокаТабличнойЧасти міститиме об'єкт ДокументТабличнаяЧастьСтрока.ПриходнаяНакладная. Материалы, у якому містяться дані, що редагуються.

У другому рядку обчислюється сума як добуток кількості та ціни. Об'єкт ДокументТабличнаяЧастьСтрока.<имя> дає змогу звернутися до даних конкретної колонки, вказавши ім'я колонки як властивість об'єкта. Наприклад, СтрокаТабличнойЧасти.Количество.

5. Закриємо всі вікна та подивимося, як це працює, запустивши 1С:Підприємство в режимі налагодження.

6. У вікні програми відкрийте список документів «ПриходнаяНакладная» і відкрийте будь-який із двох створених вами документів. Якщо ви тепер зміните кількість у будь-якому рядку документа, то сума в рядку буде перерахована автоматично.

7.Поверніться до конфігуратора і для поля «Ціна» зробіть те саме.

Створення процедури обробки події в загальному модулі

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

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

Щоб алгоритм, який виконується під час обробки події, був доступний для різних документів, ми створимо загальний модуль і перенесемо до нього нашу процедуру розрахунку суми. А в документі просто залишимо виклики цієї процедури із загального модуля.

1. Створіть об'єкт конфігурації Загальний модуль у гілці Загальні в†’ Загальні модулі і назвіть його «РоботаСДокументами».

2. Він міститиме такий текст:

5 Процедура РассчитатьСумму СтрокаТабличнойЧасти Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличноЙЧасти.Количество СтрокаТабличнойЧасти.Цена; - КонецПроцедуры

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

3. Поверніться до нашої форми (у дереві конфігурації Документи → ПриходнаяНакладная → Форми → ФормаДокумента).

4. У вікні, що відкрилося, Документ ПриходнаяНакладная: ФормаДокумента на нижній панелі клацніть по клавіші Модуль.

5. У кожному модулі форми змініть текст обробника:

Е Процедура НатериалыЦенаПриИзменении Элемент СтрокаТабличнойЧасти = ЗлементыФормы.Материалы.ТекущиеДанные РаботаСДокументами.РассчитатьСумму СтрокаТабличнойЧасти ; - КонецПроцедуры

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

6. Запустіть 1С:Підприємство в режимі налагодження та переконайтеся, що все працює як слід.

Створення документа ОказаниеУслуги

1. Створіть новий об'єкт конфігурації Документ «ОказаниеУслуги».

2. На вкладці «Дані» створіть реквізити:

  • «Склад», тип СправочникСсылка.Склады;
  • «Клієнт», тип СправочникСсылка.Клиенты;
  • «Майстер», тип СправочникСсылка.Сотрудники.

3. Створіть табличну частину «ПерелікНоменклатури» з реквізитами:

  • «Номенклатура», тип СправочникСсылка.Номенклатура;
  • «Кількість», тип Число, довжина 15, точність 3, невід'ємне;
  • «Ціна», тип Число, довжина 15, точність 2, невід'ємне;
  • «Сума», тип Число, довжина 15, точність 2, невід'ємне.

4. Створіть основну форму документа.

5. Для полів введення колонок «Кількість» і «Ціна» створіть обробник події «ПриИзменении», у якому викличте процедуру «РассчитатьСумму» із загального модуля «РаботаСДокументами».

6. У результаті документ «ОказаниеУслуги» у дереві конфігурації матиме такий вигляд:

от ОказаниеУслуги 25 Реквизиты .....- Склад I.....— Клиент ;.....- Мастер В 5 Ц Таблимные части В-5551 ПереченьНоменклатуры .....— Номенклатура .....- Количество I.....— Цена =.....— Сумма Й” Формы :-Ш Форма Документа Макеты

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

Склад: Основной Клиент: И ванов М ихаил Ю рьевич М астер: Гусаков Н иколай Дмитриевич Ш 13 3Z N Номенклатура Количество Цена Сумма 1 Ремонт импортного телевизора 1,000 1 000,00 1 000,00 2 Строчный трансформатор GoldStar 1,000 270,00 270,00 3 Т ранзистор Ph

Склад: Основной Клиент: Синицын Роман Григорьевич Мастер: Деловой Иван Сергеевич і fi N Номенклатура Количество Цена Сумма 1 Ремонт отечественного телевизора 2,000 1 400,00 2 800,00 2 Строчный трансформатор Samsung 1,000 600,00 600,00 3 Т ранзистор Philips

Склад: Основной Клиент: Спиридонова Галина Вячеславовна М астер: Симонов В алерий М ихайлович € Ч Ч И І СІ =12 N Номенклатура Количество Цена Сумма Ц Подключение воды 1,000 850,00 850,00 2 Шланг резиновый 1,000 100,00 100,00

Тепер наш документ «ОказаниеУслуг» має мати такий вигляд:

Документы Оказание чслчги _ п Дата Номер Склад Клиент Мастер // й 23.03.2003... 000000001 Основной Иванов Михаил Юрьевич Гусаков Николай Дмитриевич 23.03.2003... 000000002 Основной Синицын Роман Григорьевич Деловой Иван Сергеевич п 23.03.2003... 000000003

Створення регістру накопичення ОстаткиМатериалов

Насамперед нас цікавить інформація про те, скільки і яких матеріалів є у нас на складі. Для накопичення такої інформації ми створимо регістр «ОстаткиМатериалов».

1. Створіть новий об'єкт конфігурації Регістр накопичення з ім'ям «ОстаткиМатериалов».

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

  • «Матеріал» з типом СправочникСсылка.Номенклатура;
  • «Склад» з типом СправочникСсылка.Склады.

3. Створимо ресурс «Кількість» з довжиною 15 і точністю 3.

4. У результаті цих дій регістр «ОстаткиМатериалов» має мати такий вигляд:

Ё 3 Регистры накопления В-Ц ОстаткиМатериалов Измерения . .... Материал . ....I Склад В Ресурсы . .... Количество ! 2 Реквизиты Формы Макеты

5. Якщо ви зараз спробуєте запустити 1С:Підприємство в режимі налагодження, то система видасть повідомлення про помилку:

!!! РегистрНакопления.ОстаткиМатериалов: Ни один из документов не является регистратором для регистра

Створення рухів документа ПриходнаяНакладная

Рухи документа → це записи в регістрах, які створюються в процесі проведення документа та відображають зміни, що здійснюються документом.

1. Відкрийте вікно редагування об'єкта конфігурації Документ «ПриходнаяНакладная».

2. На вкладці «Рухи» у списку регістрів конфігурації позначимо регістр накопичення «ОстаткиМатериалов»:

Документ ПриходнаяНакладная Основные Данные Нумерация Движения П оследовательност и Журналы Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Разрешить Проведение: Оперативное проведение: Разрешить Удаление движений: Удалять д

Зверніть увагу, що відразу після позначення вибраного регістру стає доступною кнопка «Конструктор рухів». Цим конструктором ми й скористаємося:

3. Конструктор влаштований просто. У списку «Регістри» перелічено регістри, у яких документ може створювати рухи. У нашому випадку там поки що один регістр «ОстаткиМатериалов».

У списку «Реквізити документа» мають міститися вихідні дані для створення рухів. А в таблиці «Поле → Вираз» мають бути задані формули, за якими обчислюватимуться значення вимірів і реквізитів регістру під час запису рухів.

Зверніть увагу, що за замовчуванням конструктор пропонує нам створювати рухи надходження (символ «+» поруч із назвою регістру) за регістром «ОстаткиМатериалов». Це нас цілком влаштовує, адже документ «ПриходнаяНакладная» і має оприбутковувати матеріали.

У полі вибору «Таблична частина» виберемо табличну частину нашого документа — «Матеріали». Список реквізитів документа автоматично заповниться реквізитами нашої табличної частини.

4. Натисніть кнопку «Заповнити вирази». У нижньому вікні сформується відповідність полів і виразів.

Конструктор движения регистров п •йЧЧ і Регистры РегистрН акопления. О стат киМ атериалов Тип движения регистра: • Приход Расход Т абличная часть: Материалы Реквизиты документа а Номер а Склад Т екСтрокаМ атериалы. М атериал мі Т екСтрокаМ атериалы. Количе

Як бачите, конструктор рухів установив відповідності належним чином:

  • як матеріал до регістру буде записано матеріал із табличної частини документа;
  • як склад → склад, зазначений у шапці документа;
  • як кількість → кількість із табличної частини документа.

5. Натисніть «ОК» і подивіться, який текст сформував конструктор у модулі об'єкта:

Процедура ОбработкаПроведения Отказ, Режим / / {{_КОНСТРУКТОР_ДВИЗКЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!! Для Каждого ТекСтрокаМатериалы Из Мат

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

Усередині обробника розташований цикл, призначений для перебору рядків табличної частини нашого документа. У циклі звернення до табличної частини документа відбувається за ім'ям (Материалы), а рядки табличної частини документа являють собою колекцію значень, для перебору якої можна використовувати конструкцію Для Каждого …¦ Из …¦ Цикл.

Об'єкт вбудованої мови ДокументОбъект має властивість Движения. Вона повертає колекцію наборів записів регістрів, що належать цьому документу. До набору записів документа, що належить конкретному регістру, можна звернутися, вказавши через крапку ім'я цього регістру.

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

Потім ми присвоюємо потрібні значення всім полям цього запису і після перебору всіх рядків документа (після завершення циклу) «одним махом» записуємо в регістр ОстаткиМатериалов увесь набір записів рухів документа.

6. Подивимося, як це працює. Запустимо 1С:Підприємство в режимі налагодження та відкриємо одночасно два вікна:

  • список документів ПриходнаяНакладная;
  • список регістру накопичення ОстаткиМатериалов.

7. Відкриємо Прибуткову накладну №– 1 і натиснемо ОК. Зверніть увагу, що під час проведення прибуткової накладної з'являються відповідні записи в регістрах накопичення.

8. Аналогічні дії виконайте і з документом Прибуткова накладна №– 2.

Створення рухів документа ОказаниеУслуги

1. Створіть рухи документа ОказаниеУслуги.

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

2. Під час автоматичного заповнення поле Матеріал не заповниться.

Якщо ми залишимо це так, як є, то в регістрі накопичення в рядках із типом Рух регістру → витрата назва номенклатури не фіксуватиметься. Щоб уникнути цього, треба вибрати поле Матеріал і в полі Реквізити документа двічі клацнути по рядку ТекСтрокаПереченьНоменклатуры.Номенклатура.

Тип движения регистра: О Приход 0 Расход Мастер Т екСтрокаП еременьН оменклатуры. Н оменклатура Щ Т екСтрокаП еременьН оменклатуры. Количество Т екСтрокаП еременьН оменклатуры. Ц ена Т екСтрокаП еременьН оменклатуры. Сумма Т абличная часть: П ереченьН омен

Таким чином, назва номенклатури для рядків регістру накопичення вибиратиметься з табличної частини документа.

3. Запустимо налагодження та проведемо документи надання послуг і переконаємося, що в регістрі накопичення він створив правильні рухи.

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

Поки що ми нічого не робитимемо з рухами, які сформував конструктор, але щойно познайомимося з переліками, ми внесемо до обробника проведення необхідні зміни.

Записатися телефоном