Відеоролики з 1С

  1. Документи.
  2. регістри

У фірми 1С є мережа центрів сертифікованого навчання. Але для тих, хто хоче пройти навчання у зручний для себе час по порівняно невеликими цінами і при цьому гарантовано отримати відповіді на поставлені запитання, така можливість зараз теж є. Зіткнувся з системою дистанційного навчання. Дуже зручно. Матеріал подається у вигляді коротких відео-уроків тривалістю 5-12 хвилин. Є можливість повернутися до раніше пройденого матеріалу. За багатьма курсам в комплект навчальних матеріалів входить посібник в електронному вигляді.

Дистанційні курси "Курси по 1С РФ" пропонують дуже багато безкоштовних, але дуже цінних матеріалів, в тому числі книга (2098 сторінок) 1С: Бухгалтерія 8 (редакції 3.0) в форматі PDF. Рясно ілюстрована. Зручно завантажити в планшет або електронну книгу і вивчати в будь-який час, в будь-якому місці і в будь-якій обстановці.

Я вивчав базовий курс "Професійне програмування в 1С: Підприємстві". Курс дуже об'ємний, з масою додаткових матеріалів. Успішно виконали всі практичні завдання надсилається рекомендаційний лист від засновників курсів. Я коротко конспектував отримані знання. Можу уявити уривок з конспекту:

Документи.

Документи призначені для реєстрації подій господарської діяльності (надходження і реалізація товарів, надходження і витрату коштів). За своєю суттю, документи в базі даних - це аналоги відповідних паперових документів. Хоча, деякі документи управлінського обліку можуть створюватися незалежно (наприклад, оформлення в базі дрібних контактів з клієнтом).

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

Ідентифікація документів на тимчасової осі

Для точної ідентифікації документа на тимчасової осі крім дати використовується ще і посилання на документ, тому що в одну секунду можуть бути оформлені кілька документів. Так, при великому потоці документів, кожного наступного документу при оперативному проведенні (на поточний момент) для зручності автоматично присвоюється час на секунду більше, ніж попереднього, якщо документи проводилися майже одномоментно. Однак в результаті ціле скупчення документів може бути оформлено з відміткою останньої секунди доби. Комбінація даних «Дата + Посилання» називається «Моментом часу». Момент часу - це спеціальний тип даних. Дані цього типу можна порівнювати між собою за величиною. Для визначення моменту часу існує однойменний метод момент часу ().

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

Поведінка системи з присвоєння часу визначається у властивості форми документа «Автовремя» (див. Рис. 1), яке за замовчуванням виставлено в значення «Поточне або останнім». На практиці це значення є найбільш придатним. Якщо дата документа встановлюється інтерактивно і не дорівнює поточній даті (наприклад, з попереднього періоду), то в момент запису присвоюється найостанніша відмітка часу на зазначену дату. На час останнього документа будь-якого виду додається секунда. При цьому максимальний час -23.59.59. Якщо документів на дану дату не було, то присвоюється час 12.00.

00

Перевірка заповнення і значення заповнення

Крім стандартних реквізитів, інші реквізити шапки документа, табличні частини і реквізити табличних частин розробник визначає самостійно. Кількість табличних частин і реквізитів може бути необмеженим. Розробник має можливість визначати також такі властивості реквізитів і табличних частин, як «Перевірка заповнення» і «Значення заповнення» (значення за замовчуванням для реквізитів шапки). Якщо потрібно здійснювати перевірку заповнення, то відповідному властивості слід встановити значення «Видавати помилку» (див. Рис. 2). Надалі в процедурі «ОбработкаПроверкіЗаполненія» видачу помилки можна скасувати, однак відповідне поле на формі все одно буде підкреслено червоним пунктиром (попередження про обов'язковість заповнення). Для табличних частин існує стандартний реквізит «Номер рядка».

нумерація документів

Номери документів можуть присвоюватися як автоматично, так і вручну. Для документів існує спеціальне властивість «Автонумерація» (тип значення Булево). Крім того можна привласнювати такі властивості для нумерації документів, як «Контроль унікальності», «Тип номера» (строковий або числовий) і довжина номера (див. Рис. 3). Строковий тип дозволяє вказувати для номерів префікс, за допомогою якого можна розмежувати документи різних юридичних осіб. Для установки префікса використовується процедура «ПріУстановкеНовогоНомера» в модулі об'єкта. Існує також властивість «Періодичність», яке приймає значення: неперіодична, в межах року (застосовується найбільш часто), місяця, дня. Після закінчення зазначеного періоду нумерація починається заново. Для забезпечення наскрізної нумерації документів різного виду створюється і використовується загальний нумератор, який вибирається в рядку «Той, що нумерує».

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

проведення документів

При проведенні документи можуть формувати руху по регістрах, які в свою чергу є підставою для звітів. Таким чином, проведений документ може впливати на фінансовий результат. Однак слід зазначити, що існують документи, які при проведенні не формують рухів ні в одному з регістрів. З іншого боку, бувають ситуації, коли не проведений (збережений) документ формує руху по регістрах. Найбільш універсальний спосіб переглянути руху по регістру - це вибрати його через Головне меню / «Все функції». Найзручніший - з панелі навігації самого документа (якщо розробник подбав про це).

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

Якщо документ проводиться поточним моментом часу (на сьогоднішню дату), то для будь-якого документа списання (реалізації) необхідно перевіряти: чи достатньо на складі списаного товару. Для документа, проведеного заднім числом, контроль залишків недоцільне, так як реєструється вже доконаний факт і товар вже відвантажено. Хоча додаткова перевірка залишків дозволила б вчасно виявляти помилки користувачів, але при цьому знизилася б продуктивність системи. Як варіант, можна використовувати періодичний контроль негативних залишків за допомогою звітів або обробок, що дозволяють коригувати негативні залишки.

Сама можливість проведення визначається у вікні редагування об'єкта (документа) на закладці «Руху». Документи, які не впливають на фінансовий стан компанії, не проводяться. Крім дозволу на проведення документа, окремо встановлюється дозвіл на можливість оперативного проведення (див. Рис.4).

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

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

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

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

У першому рядку коду всередині процедури «Обробка проведення» «Руху» - це властивість об'єкта документ, який містить колекцію наборів записів. Далі (через точку) вказується ім'я регістра. Після цього йде звернення до властивості «Записувати», якому присвоюється значення «Істина». Всередині циклу, звертаючись до методу «Додати», ми додаємо новий запис. Ця запис в даному випадку названа «Рух» (по суті, назва могла бути довільним). Далі заповнюються всі дані для регістра. Після чого примусовий запис не робиться (метод «Записати» не викликається). При завершенні транзакції (після завершення обробки проведення) для всіх регістрів, у яких властивість «Записувати» визначено як «Істина», система сама записує додані дані.

Запис може викликатися і явно, але тоді властивості «Записувати» встановлювати значення «Істина» не слід, і в момент завершення транзакції запис в базу здійснюватися не буде.

регістри

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

Збережені в регістрах показники можуть бути показниками залишків. Наприклад, залишки товарів, вони можуть, як збільшуватися, так і зменшаться. Це можуть бути показники оборотів. Наприклад, обсяги продажів, які накопичуються тільки в одному напрямку. Крім того, це можуть бути показники стану. Введене значення може мати будь-який тип даних і діяти до чергової зміни стану.

Відповідно до збереженими показниками в системі створені спеціальні регістри. А саме, регістри накопичення (регістри залишків, регістри оборотів) і регістри відомостей. Існують ще інші види регістрів (регістри бухгалтерії і регістри розрахунку), які відносяться до відповідних видів обліку.

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

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

Ключові властивості, характерні для запису регістра

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

- реєстратор (крім незалежного регістра відомостей);

- активність (неактивні записи виключаються з підсумків), дане властивість встановлюється відразу для всіх записів набору;

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

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

Ідентифікація записів в регістрі

Для ідентифікації запису в регістрі накопичення служить реєстратор і номер рядка (порядковий номер запису в наборі). Однак слід мати на увазі, що при повторному проведенні документа номер рядка може змінитися. У регістрі відомостей запис ідентифікується по періоду, реєстратору та всьому набору вимірювань.

Для регістрів накопичення розробник визначає вимірювання, ресурси і реквізити. Порядок вимірювань впливає на швидкодію отримання даних. Відмінною особливістю реквізитів від вимірювань є те, що в розрізі реквізитів не ведеться облік сумарних показників. Реквізит - це якась характеристика, яка може бути присутнім не у всіх рухах документа. Мінімально у регістру накопичення повинен бути хоча б один ресурс (має числовий тип даних) і повинен бути заданий хоча б один документ в якості реєстратора.

Подання регістрів в базі даних

У базі будь-який регістр накопичення містить таблицю рухів, яка містить всі записи і таблицю підсумків, яка містить підсумки в розрізі всіх вимірювань і в явному вигляді користувачеві не виводиться. Підсумки розраховані помісячно. Для отримання необхідного результату, значення через не розрахований період доповнюються з таблиці рухів. Записи з нульовими значеннями ресурсів в таблиці підсумків не зберігається. Це властивість перешкоджає необґрунтованого збільшення бази даних. Крім того для регістрів накопичення з видом залишки зберігаються поточні актуальні підсумки (на умовну дату 01.11.3999). У підсумкових таблицях оборотних регістрів зберігаються тільки підсумки по оборотам кожного місяця.

Налаштування підсумків регістрів

Слід зазначити, що існує можливість налаштовувати підсумки регістрів в призначеному для користувача режимі через Головне меню / Всі функції / Стандартні / Управління підсумками. Відкриється форма «Управління підсумками - часто використані можливості». У правому нижньому кутку форми існує гіперпосилання, для відкриття повних можливостей. Після натискання на гіперпосилання в формі «Управління підсумками - повні можливості» для регістрів можна ввімкнути або вимкнути підсумки (в загальному випадку підсумки повинні бути включені). Також можна ввімкнути або вимкнути «Поточні підсумки» для регістрів залишків (НЕ оборотів). Можна вручну встановлювати період розрахованих підсумків. І, що важливо, є можливість перерахунку. У деяких випадках перерахунок дозволяє виправити неузгоджені дані в регістрах, пов'язані, наприклад, зі збоями обладнання.

Режим «Поділ Підсумків» может використовуват при заповненні потокової Підсумків регістра залишків. Цей режим дозволяє делать записи Користувачів паралельно. При цьом загальна Кількість запісів збільшується, но взаємного Блокування Користувачів НЕ відбувається. Режим використовується в той час, коли читання даних не відбувається (наприклад, запис даних при надходженні товарів). У разі читання залишків блокування проводиться обов'язково. При отриманні поточних залишків додаткові записи має бути підсумувати. Слід зазначити, що при черговому перерахунку підсумків записи підсумовуються і зайві записи видаляються.

Існують і програмні методи роботи з підсумками (отримати або встановити використання підсумків, отримати або встановити використання поточних підсумків, отримати або встановити період розрахованих підсумків, отримати або встановити режим поділу підсумків, перерахувати підсумки).

Схема записів в регістри

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

- створення набору записів;

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

- створення усередині набору нових записів за допомогою методу Додати ();

- запис набору в базу даних.

Варіанти запису в регістр накопичення:

- при проведенні документа в обробці проведення (в модулі об'єкта);

- в іншій процедурі модуля об'єкта, виклик якої розташовується у відповідному місці;

- надання можливостей користувачеві по додаванню записів в призначеному для користувача режимі;

- запис поза модуля об'єкта (з використанням властивостей класу ДокументОб'ект або безпосередньо використовуючи набір записів регістру накопичення);

- в модулі набору записів.

Запис рухів при проведенні документа

З обробкою проведення в модулі об'єкта Документ ми з вами вже стикалися (див. Вище). При цьому ми безпосередньо звертаємося до властивостей і методів класу ДокументОб'ект. Ключовим моментом є використання властивості Руху. Представляє воно колекцію рухів (простіше кажучи, ті регістри, які відзначені галочками на закладці «Руху»). Ми вже говорили про те, що якщо властивість записувати встановлено в «Істина», то система сама записує додані дані при завершенні транзакції. Однак у колекції рухів є і спеціальний метод Записати () (наприклад, Двіженія.Запісать ()). Процес запису аналогічний тому, який автоматично проводиться в кінці транзакції. При цьому, щоб уникнути повторної записи, при використанні цього методу значення властивості «Записувати» буде автоматично визначено як «Брехня». Особливості такого варіанту записи в регістр накопичення: в обробці проведення набір записів вже існує, і в явному вигляді його створювати не потрібно, відбір по реєстратору теж уже встановлений автоматично.

Запис рухів при використанні іншої процедури модуля об'єкта

При використанні в модулі об'єкта експортної процедури, відмінною від обробки проведення, для створення нового запису також досить звернутися до колекції «Руху», вказати з якого регістра потрібно набір записів і викликати метод Додати ().

Наприклад: Рух = Двіженія.ТовариНаСладах.Добавіть ();

Особливості даного методу:

-Доступні колекція «Руху»;

-запис в цьому випадку потрібно здійснювати з використанням методу Записати () (наприклад: Двіженія.ТовариНаСкладах.Запісать ());

- можна викликати дану процедуру поза модуля об'єкта;

- за замовчуванням транзакції в цьому випадку немає (при необхідності транзакція повинна описуватися явно);

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

Запис рухів в призначеному для користувача режимі

Для надання користувачеві можливості по додаванню записів в регістр накопичення в режимі 1С: Підприємство розробниками створюється спеціальний документ. У конфігураторі на закладці «Руху» властивості «Проведення» даного документа присвоюється значення «Заборонити», галочкою відзначаються регістри, які будуть редагуватися. Створення реквізитів не потрібно. Створюється керована форма документа, на якій з закладки «Реквізити» на закладку «Елементи» слід перетягнути з колекції рухів набір записів за відповідним регістру. Такого роду документи вимагають обережного поводження з боку користувачів, а з боку розробників може знадобитися реалізація різноманітних перевірок (в модулі об'єкта в процедурі «ПередЗапісью» заповнювати поле період датою документа, у властивостях вимірювань самого регістру встановити галочку «Заборона незаповнених значень»).

Такого роду документи вимагають обережного поводження з боку користувачів, а з боку розробників може знадобитися реалізація різноманітних перевірок (в модулі об'єкта в процедурі «ПередЗапісью» заповнювати поле період датою документа, у властивостях вимірювань самого регістру встановити галочку «Заборона незаповнених значень»)

Запис рухів поза модуля об'єкта (з використанням властивостей класу ДокументОб'ект).

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

Документ = СсилкаНаДокумент.ПолучітьОб'ект ();

Далі визначається набір записів:

Набір = Документ.Двіженія.ТовариНаСкладах;

Щоб нові записи не змінювали раніше існуючі, використовується рядок коду: Набор.Прочітать ();

Далі в набір додаються нові руху:

Рух = Набор.Добавіть ();

Слідом визначаються всі властивості руху і проводиться запис набору:

Набор.Запісать ();

Запис рухів поза модуля об'єкта (з використанням набору записів регістра накопичення).

У цьому випадку набір записів (рухів) створюється самостійно, без звернення до документу:

Набір = Регістри накопленія.ТовариНаСкладах.СоздатьНаборЗапісей ();

Необхідно встановити відбір по реєстратору:

Набор.Отбор.Регістратор.Значеніе = Документ; // (де Документ - це посилання на об'єкт Документ).

Тепер можна додавати руху в набір і заповнювати їх властивості (визначати значення вимірювань, ресурсів і реквізитів). В результаті набір слід записати. Щоб не пропадали раніше створені записи по реєстратору, можна замість використання методу Прочитати () перед додаванням рухів, використовувати спеціальний параметр методу Записати (). Цей параметр називається «Заміщати», імееі тип даних Булево і за замовчуванням встановлено значення «Істина». Тому код запису може виглядати наступним чином:

Набор.Запісать (Брехня);

Запис рухів з модуля набору записів.

У модулі набору створюється експортна процедура, яка може викликатися із зовні. В даному модулі можна безпосередньо звертатися до властивостей і методів набору записів, в тому числі до методу Додати () і Записати ().

Рух = Додати ();

У проміжку між додаванням і записом встановлюються властивості руху. Чи не очевидні властивості повинні передаватися при виконанні функції через параметри. У підсумку робиться запис:

Записати (); або Записати (Брехня);

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

Обмеження зчитувальних даних по періоду

При отриманні необхідних даних з регістрів накопичення, можна обмежувати свій вибір по періоду. Період може визначатися трьома типами даних: Дата (документа), момент часу (Дата + Лінк) і Кордон. В одну секунду може бути введено чималу кількість документів. При цьому залишки необхідно отримувати саме на позицію даного документа (яка визначається моментом часу), а не на початок секунди.

Якщо необхідно отримати залишки на кінець місяця, то слід мати на увазі, що часом кінця місяця є 23.59.59. Документи, введені з таким часом, на період «кінець місяця» відібрані не будуть. Щоб отримати залишки на кінець місяця, необхідно або додати одну секунду, або використовувати спеціальний тип даних «Кордон», який дозволяє включати граничне значення (останню секунду) і отримувати правильні залишки.

Для об'єктного способу отримання даних код може виглядати приблизно так:

Кордон = Новий Кордон (КонецМесяца (Дата), ВідГраніци.Включая);

Відбір = Новий Структура ( «Номенклатура», Товар);

Отбор.Вставіть ( «Склад», Склад);

ТабліцаЗначеній = РегістриНакопленія.ТовариНаСкладах.Остаткі (Кордон, Відбір);

Залишок = ТабліцаЗначеній.Ітог ( «Кількість»);

При складанні звіту в системі компонування даних параметр «Період» буде обчислюватися так:

ДобавітьКДате (КонецПеріода (& Період, «Місяць»), «Секунда», 1)

ДобавітьКДате (КонецПеріода (& Період, «Місяць»), «Секунда», 1)