Любая учетная система получает исходные данные из документов. В классическом бухгалтерском учете основа всего – первичные документы, автоматизированные системы учета – не исключение.
Для описания документов в
Имя:
Имя: ОтветственныйСотрудник: Тип: СправочникСсылка.Сотрудники
Добавим в состав табличных частей нашего документа новую табличную часть с именем Материалы и следующими реквизитами:
Имя: Номенклатура, Тип: СправочникСсылка.Номенклатура
Имя: Цена, Тип: Число, длина 10, точность 2
Имя: Количество, Тип: Число, длина 10, точность 3
Имя: Сумма, Тип: Число, длина 10, точность 2
(рис 6.1) Настройка состава реквизитов документа
На закладке ., можно задать параметры нумерации документов.
(рис 6.2) Настройка параметров нумерации документа
В данном случае документы будут нумероваться автоматически с контролем уникальности номеров.
Нескольким различным видам документов можно назначить сквозную нумерацию с одинаковыми настройками благодаря использования нумератора.
Если в качестве типа номера использована строка – это позволит, при возникновении необходимости, добавлять к номеру различные символьные префиксы.
Настройка периодичности в данном случае установлена в значение Непериодический, то есть, независимо от срока работы с информационной базой, нумерация документов будет продолжаться, а при установке некоторой периодичности (в пределах дня, месяца, квартала, года) – уникальность номеров будет соблюдаться в течение указанного периода.
Закладка ., позволяет управлять проведением документа.
(рис 6.3) Настройка параметров проведения документа
Если документ планируется проводить, то есть – он будет формировать движения по регистрам, проведение следует разрешить. Оперативное проведение позволяет разработчику настроить различное реагирование кода, отвечающего за
Если мы не планируем реализацию подобной функциональности, мы можем отключить оперативное проведение.
Автоматическое удаление движений документа предусматривает, при отмене проведения, автоматически удалять движения, которые документ сформировал по регистрам. В данный момент в нашей конфигурации пока нет регистров, по которым будет проводиться документ. "Формирование движений по регистру", более простым языком, означает то, что документ при проведении делает записи в регистре. Регистры можно сравнить с таблицами, содержащими ключевые данные о документах, которые по ним проводятся. Работу с различными регистрами мы рассмотрим ниже.
Вкладка Журналы позволяет настраивать включение документа в так называемые журналы документов. Журнал позволяет организовать совместную работу с документами различных типов, которые включены в этот журнал. Такие документы отображаются в едином списке.
Если
Но то, что счет выписан, еще не гарантирует то, что счет будет оплачен, то, что товары, указанные в выписанном счете будут действительно отгружены покупателю. Если продолжить пример с выписанным счетом и перейти на вкладку ., то окажется, что эта вкладка позволяет настроить ввод одного документа на основании другого.
(рис 6.4) Настройка параметров ввода на основании
Если, например, мы имеем дело с документом наподобие "Отгрузка материалов", окажется, что такой документ вполне логично будет вводить на основании документа "Счет" - после оплаты этого счета и фактической отгрузки материалов. Документ отгрузки, в отличие от счета, фиксирует уже свершившийся факт хозяйственной жизни, который должен оказать воздействие на состояние информационной базы. Такой документ должен проводиться – то есть – делать записи в соответствующие регистры.
На данном этапе мы можем запустить систему, попытаться поработать с документом, используя автоматически сгенерированную форму, и посмотреть, все ли в данной форме нас устраивает.
Прежде чем продолжать работу с документом ПоступлениеМатериалов, приведите данные справочника Номенклатура в вашей
| Наименование | Единица измерения | Услуга | Группа |
|---|---|---|---|
| Парикмахерские услуги | Да | Да | |
| Завивка | Час | Да | |
| Стрижка | Час | Да | |
| Парфюмерия | Нет | Да | |
| Духи | Штука | Нет | |
| Одеколон | Штука | Нет | |
| Прочие материалы | Нет | Да | |
| УФ-гель | Упаковка | Нет | |
| Спецодежда | Нет | Да | |
| Одежда для парикмахера | Штука | Нет | |
| Уход за волосами | Нет | Да | |
| Бальзам для волос | Штука | Нет | |
| Лак для волос | Упаковка | Нет |
На . вы можете видеть форму документа после ввода в нее некоторых данных.
(рис 6.5) Заполнение документа Поступление товаров
Подобный документ, очевидно, заполняется в
Реализуем эту функциональность.
Для того, чтобы автоматически заполнить поле сумма по каждой из строк табличной части, редактируемой пользователем, очевидно, что рассчитывать сумму имеет смысл либо после заполнения поля Цена, либо – после заполнения поля Количество, перехватив какие-либо события, имеющие отношение к редактируемой табличной части.
В нашем случае это должны быть события, генерируемые при изменении полей .). Для начала, конечно же, нам нужно будет создать собственную форму документа, делается это на закладке Формы окна редактирования объекта. С параметрами, предложенными конструктором форм по умолчанию, можно согласиться.
(рис 6.6) Назначение обработчика полю табличной части
Назначим обработчики событий ПриИзменении для полей МатериалыЦена и МатериалыКоличество.
Теперь нам нужно реализовать следующее: при работе в определенной строке таблицы, при вводе в нее данных, получить эту строку, и, при изменении цены или количества номенклатуры рассчитать сумму.
У табличных полей есть свойство .
(рис 6.7) Просмотр свойства ТекущиеДанные в окне Выражение при отладке кода
Итак, наша задача может быть решена следующим образом:
НаКлиенте Процедура МатериалыЦенаПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры НаКлиенте Процедура МатериалыКоличествоПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры НаКлиенте Процедура РассчитатьСумму() ТекущаяСтрока=Элементы.Материалы.ТекущиеДанные; ТекущаяСтрока.Сумма=ТекущаяСтрока.Количество*ТекущаяСтрока.Цена; КонецПроцедуры
Из пары обработчиков событий ПриИзменении вызывается клиентская процедура РассчитатьСумму(). Здесь мы получаем данные текущей строки через свойство ТекущиеДанные и вычисляем поле Сумма, перемножая данные в полях Количество и Цена.
При необходимости, мы можем редактировать поле Сумма независимо от значений полей Цена и Количество.
Вторая задача из тех, которые мы поставили себе выше, заключается в выводе на форму итоговых сведений по табличному полю. Ее можно реализовать различными способами, но лучше всего воспользоваться стандартными итоговыми показателями табличного поля, которые можно найти в составе табличного поля на закладке .
(рис 6.8) Вывод итогового показателя для поля Сумма на форму
Этот
(рис 6.9) Форма после модификации
Документ ПоступлениеМатериалов мы разработали, настроили его форму. Документ, хотя его проведение и разрешено, пока, фактически, не проводится – мы не реализовали механизмы проведения, у нас нет регистров, по которым он будет проводиться.
Данную функциональность мы реализуем ниже, а сейчас займемся еще одним документом, который, являясь, по составу реквизитов и по особенностям устройства формы, очень похожим на документ .
(рис 6.10) Создание документа ОтпускМатериаловМастеру
Включим данный документ в состав подсистемы ОперативныйУчетМатериалов, вместо реквизита Контрагент у него будет
В табличной части документа мы используем лишь два реквизита – это Номенклатура и Количество. Показатели стоимости списываемой номенклатуры мы будем рассчитывать автоматически. При работе с этим документом нас вполне устроит форма, генерируемая автоматически.
Форма нашего нового документа будет выглядеть так, как показано на .
(рис 6.11) Документ ОтпускМатериаловМастеру в работе
Документы созданы, но сейчас они, во-первых, заполняются практически полностью вручную (за исключением поля Сумма в табличной части документа ПоступлениеМатериалов), а, во-вторых, нам сейчас довольно сложно будет понять, каков остаток материалов, числящихся за определенным сотрудником.
Единственный способ, которым можно сделать это сейчас – программно или "вручную" просмотреть все документы поступления материалов, выводя некоторые итоговые показатели. При заполнении документа отпуска материалов мы вынуждены заранее самостоятельно проверять остатки материалов по существующим документам, самостоятельно решать, какова цена этих материалов, контролировать остатки. Это не очень удобно, не производительно, и решением этих задач мы сейчас займемся.
Представим себе организацию, в которой все сведения о приходе материалов хранятся лишь в виде приходных документов. Для того, чтобы узнать количество и стоимость имеющихся в организации материалов, нам понадобится обращаться к документам, просматривать каждый из них, выписывая нужные данные, после чего суммировать их, получая нужные данные. Такой подход неудобен – он слишком медленный как для нашего воображаемого "ручного" случая, так и для автоматизированного учета.
Логичнее было бы, в дополнение к документам, вести специальные таблицы, в которые, при приеме материалов и при их списании, вносить краткие сведения об этом. Если, скажем, ежедневно, подводить итоги по этим таблицам и выводить остатки материалов, то, для того, чтобы сказать, сколько и каких материалов имеется в организации на определенную дату, достаточно обратиться к соответствующей графе таблицы. В системе 1С:Предприятие такими таблицами являются
В нашей организации ведется учет материалов в привязке к ответственным лицам, которые их получают и с которых эти материалы списывают при отпуске в производство. Нам нужно хранить информацию о количестве материалов и об их стоимости, а так же, при списании в производство, иметь сведения о том, какому именно мастеру эти материалы переданы. Эти соображения позволяют нам спроектировать структуру
При планировании состава
Итак, нам нужно хранить следующие данные:
Измерения регистра, или разрезы, в которых хранятся данные, позволяют нам ответить на вопросы о том, какие именно данные хранятся в регистре. В нашем случае нам нужно знать две основных характеристики – это, за каким ответственным лицом закреплена та или иная номенклатурная позиция. Очевидно, измерениями из нашего списка данных будут номенклатурная позиция и ответственный сотрудник.
Ресурсы регистра – это всегда числовые значения, характеризующие хранимые данные. Числовые значения – это количество и сумма, и именно они будут ресурсами нашего регистра.
Реквизиты регистра играют вспомогательную роль, и, в нашем случае, логично будет в
Еще один важный вопрос, который нужно решить, проектируя регистр, заключается в том, будет ли этот регистр регистром остатков или регистром оборотов. Нас интересуют и сведения об остатках материалов, и сведения об оборотах, поэтому при настройке регистра следует указать вид регистра – Остатки. Регистр с видом Остатки позволяет нам работать и с остатками и с оборотами
Предложенная здесь структура
Обсудив теоретическую часть вопроса, перейдем к практике. Создадим новый
(рис 6.12) Регистр накопления ОстаткиМатериалов
Включим
На вкладке Данные создадим следующие измерения, ресурсы и реквизиты:
Измерения:
Имя: Номенклатура, Тип: СправочникСсылка.Номенклатура, Запрет незаполненных значений – установлено.
Имя: ОтветственныйСотрудник, Тип: СправочникСсылка.Сотрудники, Запрет незаполненных значений – установлено.
Ресурсы
Имя: Количество, Тип: число, длина 10, точность 3
Имя: Сумма, Тип: число, длина 10, точность 2
Реквизиты:
Имя: ПолучательМатериалов, Тип: СправочникСсылка.Сотрудники
Обратите внимание на имена этих реквизитов, на их типы, а так же – на стандартные реквизиты регистра (.) – эти данные пригодятся нам при работе над процедурой
Исключим из состава реквизитов регистра общий
(рис 6.13) Регистр накопления ОстаткиМатериалов, состав данных
Перейдем на вкладку Регистраторы окна редактирования объекта и выберем в качестве документов-регистраторов документы – ПоступлениеМатериалов и ОтпускМатериаловМастеру.
На данном этапе настройка
Откроем окно редактирования объекта для этого документа, перейдем на вкладку .) и нажмем на кнопку Конструктор движений
(рис 6.14) Документ ПоступлениеМатериалов, вкладка Движения
В конструкторе, выберем тип движения регистра – .
(рис 6.15) Конструктор движений
После нажатия на кнопку ОК, в модуле объекта документа будет сформирована такая процедура обработки проведения (так она выглядит после удаления комментариев о том, что код построен конструктором движений):
Процедура ОбработкаПроведения(Отказ, Режим) // регистр ОстаткиМатериалов Приход Движения.ОстаткиМатериалов.Записывать = Истина; Для Каждого ТекСтрокаМатериалы Из Материалы Цикл Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаМатериалы.Номенклатура; Движение.ОтветственныйСотрудник = ОтветственныйСотрудник; Движение.Количество = ТекСтрокаМатериалы.Количество; Движение.Сумма = ТекСтрокаМатериалы.Сумма; КонецЦикла; КонецПроцедуры
Эта процедура объявлена в модуле объекта, она исполняется на
Так как мы проводим документ, отвечающий за приход товаров, параметр Движение.ВидДвижения устанавливается в значение ВидДвиженияНакопления.Приход. Период устанавливается равным дате документа (мы напрямую работаем с реквизитами документа). Остальные данные заполняются, опять же, либо из реквизитов документа, либо из реквизитов текущей строки табличной части.
Запустим конфигурацию в режиме 1С:Предприятие, проверим работу механизма на практике. Для этого перепроведем существующие документы .
(рис 6.16) Данные в регистре накопления
Обратите внимание на то, что
Для того, чтобы открыть окно регистра можно либо воспользоваться командой Главное меню > Все функции и в появившемся окне Все функции найти нужный регистр, либо открывать его с помощью команды в интерфейсе, предварительно самостоятельно добавив эту команду в нужный раздел интерфейса.
При записи данных о приходе материалов нам, в нашем случае, нет нужды в каких-либо дополнительных проверках вводимых данных, поэтому нас вполне устроит стандартная процедура проведения.
Следующим документом, проведение которого мы хотим организовать, является документ, списывающий материалы – ОтпускМатериаловМастеру. Им мы займемся в следующей лекции, а сейчас построим отчет ОстаткиМатериалов.
Ранее мы рассматривали построение простейшего отчета самостоятельно формируя макет отчета, код вывода данных. Такой подход имеет право на жизнь, им нужно владеть, по крайней мере, на тот случай, если вам придется редактировать отчет в какой-либо конфигурации, где применяется такой подход. Однако, наиболее правильным способом построения отчетов в системе 1С:Предприятие 8.2. является использование
Итак, прежде чем строить отчет, поймем, чего мы ждем от этого отчета.
Нам хотелось бы получать сведения о количественных и суммовых остатках номенклатуры по ответственным лицам на заданную дату. Эти данные мы можем найти в регистре накопления ОстаткиМатериалов.
Добавим в
На закладке .
(рис 6.17) Добавление нового набора данных - запроса
Когда набор данных, названный НаборДанных1, будет добавлен, мы можем нажать на кнопку КонструкторЗапроса, находящуюся над полем Запрос в нижней части окна. Это приведет к открытию окна конструктора запроса.
Из виртуальной таблицы
(рис 6.18) Создание запроса
На этом работа с конструктором запроса завершена – остальные настройки мы будем делать в конструкторе СКД. Благодаря установленному по умолчанию флагу . – с этими полями мы сможем работать при создании отчета.
(рис 6.19) Автозаполнение списка полей на закладке Наборы данных
Переместимся в окне редактора СКД на вкладку .
(рис 6.20) Настройка состава ресурсов отчета
Теперь займемся настройкой внешнего вида отчета.
Перейдем на закладку .):
(рис 6.21) Выбор полей, которые будут отображаться в отчете
Нажмем кнопку Далее, в следующем окне конструктора, служащим для настройки группировки таблиц, в группу Строки добавим поле Номенклатура, в поле Колонки – ОтветственныйСотрудник. Тип группировки оставим в состоянии Без иерархии.
В следующем окне конструктора, который позволяет задать упорядочение отчета, зададим упорядочивание по полю .
(рис 6.22) Настройка упорядочивания отчета
Нажмем . Это позволит нам вывести данный параметр в форму отчета, позволит пользователю выбирать нужный период перед построением отчета
(рис 6.23) Настройка вывода параметра
Запустим систему в режиме 1С:Предприятие и построим отчет, .
(рис 6.24) Готовый отчет по количественным и суммовым остаткам материалов
Перед построением отчета, если мы хотим задать параметр Период, установим флаг перед этим параметром и выберем нужную дату.
В этой лекции мы познакомились с объектом конфигурации Документ, создали и настроили несколько новых документов, создали
Для данной лекции подготовлен видеоурок.
Любая учетная система получает исходные данные из документов. В классическом бухгалтерском учете основа всего – первичные документы, автоматизированные системы учета – не исключение.
Для описания документов в
Имя:
Имя: ОтветственныйСотрудник: Тип: СправочникСсылка.Сотрудники
Добавим в состав табличных частей нашего документа новую табличную часть с именем Материалы и следующими реквизитами:
Имя: Номенклатура, Тип: СправочникСсылка.Номенклатура
Имя: Цена, Тип: Число, длина 10, точность 2
Имя: Количество, Тип: Число, длина 10, точность 3
Имя: Сумма, Тип: Число, длина 10, точность 2
(рис 6.1) Настройка состава реквизитов документа
На закладке ., можно задать параметры нумерации документов.
(рис 6.2) Настройка параметров нумерации документа
В данном случае документы будут нумероваться автоматически с контролем уникальности номеров.
Нескольким различным видам документов можно назначить сквозную нумерацию с одинаковыми настройками благодаря использования нумератора.
Если в качестве типа номера использована строка – это позволит, при возникновении необходимости, добавлять к номеру различные символьные префиксы.
Настройка периодичности в данном случае установлена в значение Непериодический, то есть, независимо от срока работы с информационной базой, нумерация документов будет продолжаться, а при установке некоторой периодичности (в пределах дня, месяца, квартала, года) – уникальность номеров будет соблюдаться в течение указанного периода.
Закладка ., позволяет управлять проведением документа.
(рис 6.3) Настройка параметров проведения документа
Если документ планируется проводить, то есть – он будет формировать движения по регистрам, проведение следует разрешить. Оперативное проведение позволяет разработчику настроить различное реагирование кода, отвечающего за
Если мы не планируем реализацию подобной функциональности, мы можем отключить оперативное проведение.
Автоматическое удаление движений документа предусматривает, при отмене проведения, автоматически удалять движения, которые документ сформировал по регистрам. В данный момент в нашей конфигурации пока нет регистров, по которым будет проводиться документ. "Формирование движений по регистру", более простым языком, означает то, что документ при проведении делает записи в регистре. Регистры можно сравнить с таблицами, содержащими ключевые данные о документах, которые по ним проводятся. Работу с различными регистрами мы рассмотрим ниже.
Вкладка Журналы позволяет настраивать включение документа в так называемые журналы документов. Журнал позволяет организовать совместную работу с документами различных типов, которые включены в этот журнал. Такие документы отображаются в едином списке.
Если
Но то, что счет выписан, еще не гарантирует то, что счет будет оплачен, то, что товары, указанные в выписанном счете будут действительно отгружены покупателю. Если продолжить пример с выписанным счетом и перейти на вкладку ., то окажется, что эта вкладка позволяет настроить ввод одного документа на основании другого.
(рис 6.4) Настройка параметров ввода на основании
Если, например, мы имеем дело с документом наподобие "Отгрузка материалов", окажется, что такой документ вполне логично будет вводить на основании документа "Счет" - после оплаты этого счета и фактической отгрузки материалов. Документ отгрузки, в отличие от счета, фиксирует уже свершившийся факт хозяйственной жизни, который должен оказать воздействие на состояние информационной базы. Такой документ должен проводиться – то есть – делать записи в соответствующие регистры.
На данном этапе мы можем запустить систему, попытаться поработать с документом, используя автоматически сгенерированную форму, и посмотреть, все ли в данной форме нас устраивает.
Прежде чем продолжать работу с документом ПоступлениеМатериалов, приведите данные справочника Номенклатура в вашей
| Наименование | Единица измерения | Услуга | Группа |
|---|---|---|---|
| Парикмахерские услуги | Да | Да | |
| Завивка | Час | Да | |
| Стрижка | Час | Да | |
| Парфюмерия | Нет | Да | |
| Духи | Штука | Нет | |
| Одеколон | Штука | Нет | |
| Прочие материалы | Нет | Да | |
| УФ-гель | Упаковка | Нет | |
| Спецодежда | Нет | Да | |
| Одежда для парикмахера | Штука | Нет | |
| Уход за волосами | Нет | Да | |
| Бальзам для волос | Штука | Нет | |
| Лак для волос | Упаковка | Нет |
На . вы можете видеть форму документа после ввода в нее некоторых данных.
(рис 6.5) Заполнение документа Поступление товаров
Подобный документ, очевидно, заполняется в
Реализуем эту функциональность.
Для того, чтобы автоматически заполнить поле сумма по каждой из строк табличной части, редактируемой пользователем, очевидно, что рассчитывать сумму имеет смысл либо после заполнения поля Цена, либо – после заполнения поля Количество, перехватив какие-либо события, имеющие отношение к редактируемой табличной части.
В нашем случае это должны быть события, генерируемые при изменении полей .). Для начала, конечно же, нам нужно будет создать собственную форму документа, делается это на закладке Формы окна редактирования объекта. С параметрами, предложенными конструктором форм по умолчанию, можно согласиться.
(рис 6.6) Назначение обработчика полю табличной части
Назначим обработчики событий ПриИзменении для полей МатериалыЦена и МатериалыКоличество.
Теперь нам нужно реализовать следующее: при работе в определенной строке таблицы, при вводе в нее данных, получить эту строку, и, при изменении цены или количества номенклатуры рассчитать сумму.
У табличных полей есть свойство .
(рис 6.7) Просмотр свойства ТекущиеДанные в окне Выражение при отладке кода
Итак, наша задача может быть решена следующим образом:
НаКлиенте Процедура МатериалыЦенаПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры НаКлиенте Процедура МатериалыКоличествоПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры НаКлиенте Процедура РассчитатьСумму() ТекущаяСтрока=Элементы.Материалы.ТекущиеДанные; ТекущаяСтрока.Сумма=ТекущаяСтрока.Количество*ТекущаяСтрока.Цена; КонецПроцедуры
Из пары обработчиков событий ПриИзменении вызывается клиентская процедура РассчитатьСумму(). Здесь мы получаем данные текущей строки через свойство ТекущиеДанные и вычисляем поле Сумма, перемножая данные в полях Количество и Цена.
При необходимости, мы можем редактировать поле Сумма независимо от значений полей Цена и Количество.
Вторая задача из тех, которые мы поставили себе выше, заключается в выводе на форму итоговых сведений по табличному полю. Ее можно реализовать различными способами, но лучше всего воспользоваться стандартными итоговыми показателями табличного поля, которые можно найти в составе табличного поля на закладке .
(рис 6.8) Вывод итогового показателя для поля Сумма на форму
Этот
(рис 6.9) Форма после модификации
Документ ПоступлениеМатериалов мы разработали, настроили его форму. Документ, хотя его проведение и разрешено, пока, фактически, не проводится – мы не реализовали механизмы проведения, у нас нет регистров, по которым он будет проводиться.
Данную функциональность мы реализуем ниже, а сейчас займемся еще одним документом, который, являясь, по составу реквизитов и по особенностям устройства формы, очень похожим на документ .
(рис 6.10) Создание документа ОтпускМатериаловМастеру
Включим данный документ в состав подсистемы ОперативныйУчетМатериалов, вместо реквизита Контрагент у него будет
В табличной части документа мы используем лишь два реквизита – это Номенклатура и Количество. Показатели стоимости списываемой номенклатуры мы будем рассчитывать автоматически. При работе с этим документом нас вполне устроит форма, генерируемая автоматически.
Форма нашего нового документа будет выглядеть так, как показано на .
(рис 6.11) Документ ОтпускМатериаловМастеру в работе
Документы созданы, но сейчас они, во-первых, заполняются практически полностью вручную (за исключением поля Сумма в табличной части документа ПоступлениеМатериалов), а, во-вторых, нам сейчас довольно сложно будет понять, каков остаток материалов, числящихся за определенным сотрудником.
Единственный способ, которым можно сделать это сейчас – программно или "вручную" просмотреть все документы поступления материалов, выводя некоторые итоговые показатели. При заполнении документа отпуска материалов мы вынуждены заранее самостоятельно проверять остатки материалов по существующим документам, самостоятельно решать, какова цена этих материалов, контролировать остатки. Это не очень удобно, не производительно, и решением этих задач мы сейчас займемся.
Представим себе организацию, в которой все сведения о приходе материалов хранятся лишь в виде приходных документов. Для того, чтобы узнать количество и стоимость имеющихся в организации материалов, нам понадобится обращаться к документам, просматривать каждый из них, выписывая нужные данные, после чего суммировать их, получая нужные данные. Такой подход неудобен – он слишком медленный как для нашего воображаемого "ручного" случая, так и для автоматизированного учета.
Логичнее было бы, в дополнение к документам, вести специальные таблицы, в которые, при приеме материалов и при их списании, вносить краткие сведения об этом. Если, скажем, ежедневно, подводить итоги по этим таблицам и выводить остатки материалов, то, для того, чтобы сказать, сколько и каких материалов имеется в организации на определенную дату, достаточно обратиться к соответствующей графе таблицы. В системе 1С:Предприятие такими таблицами являются
В нашей организации ведется учет материалов в привязке к ответственным лицам, которые их получают и с которых эти материалы списывают при отпуске в производство. Нам нужно хранить информацию о количестве материалов и об их стоимости, а так же, при списании в производство, иметь сведения о том, какому именно мастеру эти материалы переданы. Эти соображения позволяют нам спроектировать структуру
При планировании состава
Итак, нам нужно хранить следующие данные:
Измерения регистра, или разрезы, в которых хранятся данные, позволяют нам ответить на вопросы о том, какие именно данные хранятся в регистре. В нашем случае нам нужно знать две основных характеристики – это, за каким ответственным лицом закреплена та или иная номенклатурная позиция. Очевидно, измерениями из нашего списка данных будут номенклатурная позиция и ответственный сотрудник.
Ресурсы регистра – это всегда числовые значения, характеризующие хранимые данные. Числовые значения – это количество и сумма, и именно они будут ресурсами нашего регистра.
Реквизиты регистра играют вспомогательную роль, и, в нашем случае, логично будет в
Еще один важный вопрос, который нужно решить, проектируя регистр, заключается в том, будет ли этот регистр регистром остатков или регистром оборотов. Нас интересуют и сведения об остатках материалов, и сведения об оборотах, поэтому при настройке регистра следует указать вид регистра – Остатки. Регистр с видом Остатки позволяет нам работать и с остатками и с оборотами
Предложенная здесь структура
Обсудив теоретическую часть вопроса, перейдем к практике. Создадим новый
(рис 6.12) Регистр накопления ОстаткиМатериалов
Включим
На вкладке Данные создадим следующие измерения, ресурсы и реквизиты:
Измерения:
Имя: Номенклатура, Тип: СправочникСсылка.Номенклатура, Запрет незаполненных значений – установлено.
Имя: ОтветственныйСотрудник, Тип: СправочникСсылка.Сотрудники, Запрет незаполненных значений – установлено.
Ресурсы
Имя: Количество, Тип: число, длина 10, точность 3
Имя: Сумма, Тип: число, длина 10, точность 2
Реквизиты:
Имя: ПолучательМатериалов, Тип: СправочникСсылка.Сотрудники
Обратите внимание на имена этих реквизитов, на их типы, а так же – на стандартные реквизиты регистра (.) – эти данные пригодятся нам при работе над процедурой
Исключим из состава реквизитов регистра общий
(рис 6.13) Регистр накопления ОстаткиМатериалов, состав данных
Перейдем на вкладку Регистраторы окна редактирования объекта и выберем в качестве документов-регистраторов документы – ПоступлениеМатериалов и ОтпускМатериаловМастеру.
На данном этапе настройка
Откроем окно редактирования объекта для этого документа, перейдем на вкладку .) и нажмем на кнопку Конструктор движений
(рис 6.14) Документ ПоступлениеМатериалов, вкладка Движения
В конструкторе, выберем тип движения регистра – .
(рис 6.15) Конструктор движений
После нажатия на кнопку ОК, в модуле объекта документа будет сформирована такая процедура обработки проведения (так она выглядит после удаления комментариев о том, что код построен конструктором движений):
Процедура ОбработкаПроведения(Отказ, Режим) // регистр ОстаткиМатериалов Приход Движения.ОстаткиМатериалов.Записывать = Истина; Для Каждого ТекСтрокаМатериалы Из Материалы Цикл Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаМатериалы.Номенклатура; Движение.ОтветственныйСотрудник = ОтветственныйСотрудник; Движение.Количество = ТекСтрокаМатериалы.Количество; Движение.Сумма = ТекСтрокаМатериалы.Сумма; КонецЦикла; КонецПроцедуры
Эта процедура объявлена в модуле объекта, она исполняется на
Так как мы проводим документ, отвечающий за приход товаров, параметр Движение.ВидДвижения устанавливается в значение ВидДвиженияНакопления.Приход. Период устанавливается равным дате документа (мы напрямую работаем с реквизитами документа). Остальные данные заполняются, опять же, либо из реквизитов документа, либо из реквизитов текущей строки табличной части.
Запустим конфигурацию в режиме 1С:Предприятие, проверим работу механизма на практике. Для этого перепроведем существующие документы .
(рис 6.16) Данные в регистре накопления
Обратите внимание на то, что
Для того, чтобы открыть окно регистра можно либо воспользоваться командой Главное меню > Все функции и в появившемся окне Все функции найти нужный регистр, либо открывать его с помощью команды в интерфейсе, предварительно самостоятельно добавив эту команду в нужный раздел интерфейса.
При записи данных о приходе материалов нам, в нашем случае, нет нужды в каких-либо дополнительных проверках вводимых данных, поэтому нас вполне устроит стандартная процедура проведения.
Следующим документом, проведение которого мы хотим организовать, является документ, списывающий материалы – ОтпускМатериаловМастеру. Им мы займемся в следующей лекции, а сейчас построим отчет ОстаткиМатериалов.
Ранее мы рассматривали построение простейшего отчета самостоятельно формируя макет отчета, код вывода данных. Такой подход имеет право на жизнь, им нужно владеть, по крайней мере, на тот случай, если вам придется редактировать отчет в какой-либо конфигурации, где применяется такой подход. Однако, наиболее правильным способом построения отчетов в системе 1С:Предприятие 8.2. является использование
Итак, прежде чем строить отчет, поймем, чего мы ждем от этого отчета.
Нам хотелось бы получать сведения о количественных и суммовых остатках номенклатуры по ответственным лицам на заданную дату. Эти данные мы можем найти в регистре накопления ОстаткиМатериалов.
Добавим в
На закладке .
(рис 6.17) Добавление нового набора данных - запроса
Когда набор данных, названный НаборДанных1, будет добавлен, мы можем нажать на кнопку КонструкторЗапроса, находящуюся над полем Запрос в нижней части окна. Это приведет к открытию окна конструктора запроса.
Из виртуальной таблицы
(рис 6.18) Создание запроса
На этом работа с конструктором запроса завершена – остальные настройки мы будем делать в конструкторе СКД. Благодаря установленному по умолчанию флагу . – с этими полями мы сможем работать при создании отчета.
(рис 6.19) Автозаполнение списка полей на закладке Наборы данных
Переместимся в окне редактора СКД на вкладку .
(рис 6.20) Настройка состава ресурсов отчета
Теперь займемся настройкой внешнего вида отчета.
Перейдем на закладку .):
(рис 6.21) Выбор полей, которые будут отображаться в отчете
Нажмем кнопку Далее, в следующем окне конструктора, служащим для настройки группировки таблиц, в группу Строки добавим поле Номенклатура, в поле Колонки – ОтветственныйСотрудник. Тип группировки оставим в состоянии Без иерархии.
В следующем окне конструктора, который позволяет задать упорядочение отчета, зададим упорядочивание по полю .
(рис 6.22) Настройка упорядочивания отчета
Нажмем . Это позволит нам вывести данный параметр в форму отчета, позволит пользователю выбирать нужный период перед построением отчета
(рис 6.23) Настройка вывода параметра
Запустим систему в режиме 1С:Предприятие и построим отчет, .
(рис 6.24) Готовый отчет по количественным и суммовым остаткам материалов
Перед построением отчета, если мы хотим задать параметр Период, установим флаг перед этим параметром и выберем нужную дату.
В этой лекции мы познакомились с объектом конфигурации Документ, создали и настроили несколько новых документов, создали
Для данной лекции подготовлен видеоурок.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.