/
Text
«1С : Бухгалтерия 8.» Конфигурирование и программирование от ”А” до ’’Я”. Часть 1
/С Бухгалтерия 8". Конфигурирование и программирование от “А" до “Я” ПРАВО ТИРАЖИРОВАНИЯ ДОКУМЕНТАЦИИ ПРИНАДЛЕЖИТ ФИРМЕ «1С-Учебный центр №3» Получив настоящие материалы для обучения, Вы тем самым даете согласие не допускать их копирования без письменного разрешения фирмы «1С-Учебный центр №3» © ООО «1С-Учебный центр №3», Июнь 2007 г., ред. 4 Тел.: (495) 253-58-38, 542-19-94 Конфигурация Бухгалтерия предприятия, редакция 1.5 (1.5.14.4) Автор методических материалов - Козырев Д.В. По вопросам совершенствования методических материалов просьба обращаться в фирму «1С-Учебный центр №3» uc3@1c.ru www.1c-uc3.ru ООО " lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail ue3@ lc.ru. 2
Содержание материалов : Методика эффективного прохождения курса Содержание материалов СОДЕРЖАНИЕ МАТЕРИАЛОВ.........................................................................3 ВВЕДЕНИЕ......................................................................................7 Методика эффективного прохождения курса....................................................8 Постановка задачи курса....................................................................8 ОСНОВЫ КОНФИГУРИРОВАНИЯ................................................................... 9 Постановка первой задачи..................................................................10 Создание новой информационной базы........................................................11 Перечисления..............................................................................13 Справочники...............................................................................15 Линейные...............................................................................15 Иерархические..........................................................................17 Иерархия элементов...............................................:.................................. 18 Подчиненные справочники................................................................19 Дополнительные реквизиты и табличные час ти............................................22 Ссылочные и примитивные типы данных....................................................25 Отборы в справочнике...................................................................26 Константы.................................................................................29 Документы.................................................................................30 Поступление и реализация товаров и услуг...............................................30 Журнал документов......................................................................33 Форма.....................................................................................35 Справочная информация для пользователя....................................................43 Использование ссылок.........................................................................................................43 ОСНОВЫ АДМИНИСТРИРОВАНИЯ.....................................................................45 Интерфейсы................................................................................45 Роли......................................................................................49 Пользователи..............................................................................50 Активные пользователи.....................................................................51 Журнал рег истрации.......................................................................52 Выгрузка и загрузка базы данных...........................................................53 ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ПЛАТФОРМЕ V8......................................................54 Объектная модель..........................................................................54 Обращение с использованием «{ ]».......................................................55 Сервисные функции для написания кода......................................................57 Шаблоны................................................................................57 Контекстная подсказка..................................................................58 Синтаксический контроль................................................................60 Форматирование модуля и другие полезные свойства ...................................................61 Перейти к определению......................................................................................................61 События и оьработ чики событий............................................................63 Обработка события ПриОткрытии..........................................................63 Обработчик события формы - обработчик события объекта..................................64 Подмена стандартного действия.....................................................................................66 Ввод на основании и событие ОбработкаЗаполнения........................................67 Другие события.........................................................................69 Процедуры и функции.......................................................................71 Табличный документ и печатные формы.......................................................73 Глобальный и локальный контекст...........................................................78 Экспортные процедуры, функции, переменные..............................................78 Общие модули...........................................................................79 Общие макеты...........................................................................80 Метаданные.............................................................................82 Параметры сеанса..............................................................................................................83 ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3(e lc.ru. 3
“1 С.Бухгалтерия 8”. Конфигурирование и программирование от ‘"А” до "Я" Универсальные коллекции значений................................................87 Массив........................................................................87 Структура.....................................................................87 Соответствие..................................................................88 Список значений...............................................................88 Таблица значений..............................................................88 Дерево значений...............................................................89 Отладчик........................................................................90 ТАБЛИЧНАЯ МОДЕЛЬ ДАННЫХ, ЯЗЫК ЗАПРОСОВ.............................................93 Конструктор занр( >сл...........................................................95 Таблицы.........................................................................96 Детальная выборка...............................................................97 Псевдонимы....................................................................98 Упорядочивание................................................................99 Уточняющие слова.............................................................100 Вычисляемые поля запроса.....................................................101 Вложенные таблицы............................................................102 Условия.........................................................................ЮЗ Параметры запроса............................................................103 Сложение условий.............................................................105 Группировка и агрегатные функции...............................................106 Условие ИМЕЮЩИЕ на результат выполнения функции........................................... 107 Итоги..........................................................................109 Соединения источников..........................................................111 Источники данных запроса................................<....................111 Исходные данные для соединения...............................................111 Полное (внешнее) соединение..................................................112 Внутреннее соединение........................................................114 Левое, правое соединение.....................................................114 Объединение запросов...........................................................116 Вложенные запрсх ы.............................................................119 ОТЧЕТЫ, ОБРАБОТКИ. ОБЪЕКТ ЗАПРОС..................................................122 Отчеты и обработки.............................................................122 Конструктор выходной формы.....................................................123 Объект запрос: свойства и методы...............................................127 АДМИНИСТРИРОВАНИЕ: ПРОДОЛЖЕНИЕ....................................................130 Администрирование конфигураций.................................................130 Текущая конфигурация.........................................................130 Конфигурация базы данных............................................................................................. 130 Конфигурация поставщика......................................................131 Тестирование и исправление ИБ..................................................134 Доступ на уров! ii 3ai ihct й..................................................135 РЕГИСТРЫ СВЕДЕНИЙ.................................................................137 Регистры - первое знакомство...................................................137 Место учетного регистра в задаче автоматизации...............................137 Виды учетных регистров.......................................................137 Непериодический pei истр.......................................................138 Периодический pei истр.........................................................141 Реальные и виртуазызые таблицы...............................................142 Подчинение регистратору, проведение документа..................................146 Учет свойств ос новных средств...............................................146 Регистр «Местонахождение ОС».................................................147 Документ «Перемещение ОС»....................................................147 Проведение документа.........................................................148 Проектирование регистра и запись в регистр...................................151 Запрос к актуальным значениям..................................................................................... 151 ООО "1С-Учебный центр N 3", телефон (495) 253-58-38, e-mail uc3@ lc.ru. 4
Содержание материалов : Методика эффективного прохождения курса Механизм характеристик...................................................................154 Планы видов характеристик.............................................................154 Составной тип данных..................................................................155 Регистр сведений......................................................................157 Получение значений ресурса регистра...................................................161 РЕГИСТРЫ НАКОПЛЕНИЯ.........................................................................163 Регистр остатков.........................................................................165 Проектирование регистра...............................................................166 Заполнение регистра...................................................................167 Физические таблицы регистра........................................................................................175 Запрос к регистру накопления остатков.................................................178 Регистр оборотов.........................................................................185 Физические таблицы регистра...........................................................186 Запрос к регистру накопления оборотов.................................................187 ОСНОВЫ ТЕОРИИ БУХГАЛТЕРСКОГО УЧЕТА..........................................................190 Классификация видов учета................................................................190 Предмет и метод бухгалтерского учета.....................................................192 Счет и план счетов....................................................................192 Операция и проводка.........................................................................................................194 Синтетика и аналитика: детализация учета..............................................197 Отчетность............................................................................197 Техника и формы бухгалтерского учета.....................................................199 Виды движений денежных средств в учете...................................................200 План счетов бухгалз epckoi о учел а......................................................207 БУХГАЛТЕРСКИЙ УЧЕТ НА ПЛАТФОРМЕ В V8........................................................210 План счетов..............................................................................210 Аналитический учет.......................................................................215 План видов характеристик и виды субконто..............................................215 Настройка плана счетов для ведения аналитического учета...............................219 Проектирована регистра бухгалтерии.......................................................220 «Предопределенные» и дополнительные измерения.........................................221 Балансовый ресурс.....................................................................221 Нсбалансовый ресурс...................................................................222 Признаки учета........................................................................223 Балансовые измерения..................................................................224 Небалансовые измерения................................................................226 Признаки учета субконто...............................................................228 Реквизиты регистра бухгалтерии........................................................231 Заполнение регистра......................................................................233 Проведен ие документа.................................................................233 Ручная операция...............................................................................................................236 Универсальные документы...............................................................240 Физическое устройство регистра бухгалтерии...............................................245 Физические таблицы регистра бухгалтерии........................................... 245 Таблицы регистра бухгалтерии д ля запросов............................................248 Индексирование таблиц регистра бухгалтерии..........................................................250 Управление итогами регистра бухгалтерии...............................................252 Запросы к регистру бухгалтерии...........................................................258 Синтетические отчеты..................................................................258 Аналитические отчеты..................................................................262 Запросы в проведении документа....................................................................................267 Сложная бухгалтерская отчетность.........................................................269 Построение шахматного (кросс-) отчета «вручную».......................................269 Группировки ..........................................................................274 Построитель отчета....................................................................278 Как работает построитель..............................................................281 Расширение языка запросов для построителя ............................................286 Конструктор выходных форм с построителем..............................................288 ООО 'ТС-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 5
“ 1С: Бухгалтерия 8 . Конфигурирование и програм мирование от "А ” до "Я Расшифровка..........................................................................293 Расшифровка отчета «Оборотка» отчетом «Анализ счета».................................294 ОСНОВНЫЕ МЕХАНИЗМЫ ТИПОВОГО РЕШЕНИЯ........................................................300 Универсальные mi xai 1измы документов..................................................300 Заполнение реквизитов шапки..........................................................300 Операции документов..................................................................301 Автоподстановка счетов учета.........................................................303 Схема вызова процедур и функций.................................................................................. 306 Печать............................................................................................................................... 307 Автозаполнение табличных частей......................................................315 Партионный уче г МПЗ и проведение документов...........................................323 Проведение типового документа - поступление.......................................................... 324 Проведение документа — списание......................................................330 Учет по ТМЦ по нормативной стоимости.................................................333 Подсистема учета НДС...................................................................338 Книга покупок........................................................................338 Книга продаж.........................................................................339 Учет внеоборотных активов..............................................................342 Задача учета амортизации основных средств............................................342 Универсальные отчеты...................................................................347 Отчет «Список / кросс-таблица».......................................................347 Экспресс-проверка ведения учета........................................................353 Проверка НДС предъявленного..........................................................354 Регламентированные отчеты..............................................................358 Бухгалтерские итоги..................................................................358 Отчеты и связанные объекты...........................................................360 Расшифровка регламентированных отчетов...............................................366 Соотношение показателей отчетности ..................................................368 Изменение регламентированного отчета «Баланс»........................................371 Налоговый учет.........................................................................376 Общая схема налогообложения..........................................................376 Упрощенная схема налогообложения (УС Н)..............................................380 Единый налог на вмененный доход (ЕНВД)...............................................383 ЗАКЛЮЧЕНИЕ.................................................................................386 ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 6
Введение : Методика эффективного прохождения курса Введение Курс представляет собой полностью законченную методику обучения решению задач бухгалтерского учета в системе программ 1С:Предприятие 8. Курс предполагает наличие у слушателя • базовых навыков программирования в любой объектно- ориентированной среде, • знакомство с типовыми решениями автоматизации бухгалтерского учета, разработанными на базе технологической платформы V8 на уровне квалифицированного пользователя, • времени, как на прослушивание лекционного материала курса, так и на решение домашних заданий При написании курса мы старались по возможности излагать материал в контексте существующих на момент написания курса типовых решений. Курс условно может быть разделен на три части: • изучение базовых возможностей платформы, используемых при решении задач автоматизации бухгалтерского учета • изучение возможностей платформы для автоматизации бухгалтерского учета • изучение типового решения «Бухгалтерия предприятия» с точки зрения ее адаптации под особенности учета объекта автоматизации. Курс не ставит перед собой задачи изучения всех возможностей платформы, для этого предназначены другие курсы. Задача курса - изучить те объекты и механизмы платформы, которые наиболее часто использую гея для решения бухгалтерских задач и задействованы для решения этой задачи в типовом решении «Бухгалтерия предприятия 8». В курсе не рассматриваются объекты и механизмы платформы, не использующиеся для автоматизации бухгалтерского учета в типовом решении. Курс предназначен для подготовки к сдаче экзамена «Специалист по типовому решению «Бухгалтерия предприятия». Курс не предназначен для подготовки к сдаче экзамена «Специалист по платформе», хотя и содержит материал, который, несомненно, будет полезен на этом экзамене. Курс не содержит материалов для изучения механизмов автоматизации оперативного (управленческого) учета и сложного расчета заработной платы. ООО lC-Учебный центр N 3", телефон (495) 253-58-38 е mail uc3@lc.ru. 7
С:Бухгалтерия 8”. Конфигурирование и программирование от “А ” до “Я" Методика эффективного прохождения курса Курс содержит в себе следующие виды разделов и тем: • теоретический материал, посвященный предметной области • теоретический материал, посвященный изучаемым механизмам • задачи и решения этих задач, подробно расписанные в методике • ссылка на разделы документации, поставляемой с программным продуктом, для самостоятельного изучения • задачи для самостоятельного решения Значительная часть курса построена на примерах, которые описаны в методике и выполняются преподавателем на компьютере. При выполнении этих примеров слушателям настоятельно не рекомендуется повторять решение на своем компьютере параллельно с рассказом преподавателя. Самостоятельно слушателю рекомендуется выполнять только практикумы и изучать материал документации, поставляемой с программным продуктом. Значительная часть этих практикумов и теоретического материала должны быть выполнены и изучены слушателем во внеучебнос время («домашнее задание»). Постановка задачи курса Задача, решаемая в курсе, включает в себя автоматизацию бухгалтерского учета и учета налогов хозрасчетного предприятия, ведущего свой учет в соответствии со стандартами бухгалтерского учета РФ (РСБУ). В первой части курса, посвященных изучению базовых и бухгалтерских объектов платформы выполняется разработка сильно упрощенной конфигурации для решения задач реального бухгалтерского и налогового учета, но не всех, а лишь тех, которые позволяют хорошо раскрыть (и изучить) механизмы платформы. При выборе методик решения, объектов и механизмов, через которые решалась задача, мы осознанно приблизились к типовому решению «Бухгалтерия предприятия». Такой «плагиат» с нашей точки зрения оправдан тем. что даже изучение платформы приближает слушателя к типовому решению, которое мы будем изучать во второй части курса. Вторая часть курса решает гипотетическую задачу. Задача не имеет сама по себе никакой практической ценности с точки зрения использования ее на практике, однако позволяет на простых примерах раскрыть работу основных подсистем и механизмов прикладного решения «Бухгалтерия предприятия» ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 8
Основы конфигурирования : Постановка задачи курса Основы конфигурирования Система «1С:Предприятие 8» (синонимы, используемые в курсе: платформа, технологическая платформа V8) может функционировать в двух основных режимах: • конфигурирование • 1С: Предприятие Режим «Конфигурирование» предназначен для разработки прикладного решения задачи, режим «1С:Предприятис» для исполнения написанного в конфигураторе программного кода и работы пользователя. Большую часть курса мы будем работать в конфигураторе, создавая и/или адаптируя прикладное решение (синоним: конфигурацию) для автоматизации задачи бухгалтерского учета. Конфигуратор системы «1С:Предприятие» имеет развитые средства визуального программирования и позволяет пользователю, даже не знакомому с программированием на встроенном языке решить многие задачи. Мы начнем изучение именно с визуального программирования. Любая учетная программа должна иметь механизмы для хранения списков условно-постоянной информации, электронные аналоги классификаторов. Эти списки будут исключать неоднократный и неоднозначный ввод, использоваться для заполнения полей документов и группировки колонок и строк отчетов. Начнем изучение объектов конфигурации, предназначенных именно для решения таких задач. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 9
“7СБухгалтерия 8”. Конфигурирование и программирование от “А " до “Я" Постановка первой задачи Учет - специфическая деятельность по регистрации свершившихся хозяйственных операций с целью хранения факта операции, группировки, анализа и подготовки отчетности для управления отдельными участками и предприятием в целом. О том, что операция свершилась, свидетельствует первичный документ, оформленный в соответствии со стандартами, утвержденными как на государственном, так и на внутрифирменном уровне. Есть подтверждающий документ - есть запись в учете (в учетном регистре), нет документа - нет записи. Для регистрации документов по мере из создания существуют хронологические учетные регистры. Для хранения сводных (сгруппированных по аналитическим признакам) учетных данных предназначены систематические учетные регистры. Регистры являются промежуточным звеном хранения данных документов, необходимым для более быстрого формирования отчетности. С целью избежания неоднократного и ошибочного заполнения первичных документов, а также для правильной группировки данных в систематических регистрах, существует система классификаторов, в задачу которой входит хранение условно-постоянной информации, ее кодирование. В целях анализа деятельности предприятия существует система отчетности, которая, собирая данные из учетных регистров, предоставляет данные ответственному сотруднику в удобном для просмотра виде. Теперь, когда мы разобрались с задачей, которую нам предстоит решить, приступим к ее решению. ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 10
Основы конфигурирования Создание новой информационной базы Создание новой информационной базы Создадим новую информационную базу «без конфшурации, для разработки новой конфигурации» и войдем в нее в режиме конфигуратора. В диалоге выбора информационных баз добавим новую информационную базу. Добавление информационной базы в список Создание информационной базы из поставляемой конфигурации. ; поставляемой оемонстрацис и юй базы или создание пустой информационной базы без конфигурации i Добавление в список существующей информационной базы Включение в список ранее созданной информационной базы расположенной на данном компьютере в локальной сети или на сервере 1 С: Предприятия Далее) J Отмена Эта новая база создается без использования шаблона типового решения МН Создание информационной базы из шаблона Выберите поставляемую конфигурацию для начала работы или демонстрационный пример для ознакомления Создание информационной базы без конфигурации для разработки ноеой конфигурации и/ы загрузки выгруженной ранее нформациомн* н базы < Назад Далее > Отмена Указываем название информационной базы и то. в каком режиме мы будем ее создавать. В нашем случае мы будем работать в файл- серверном режиме, у нас не будет сервера предприятия. Наличие сервера предприятия и выделенного сервера базы данных позволит существенно повысить производительность работы системы в крупных компаниях. ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail исЗ© lc.ru. 11
“ 1СБухгалтерия 8 ". Конфигурирование и программирование от “А ” до “Я” :: Укажите наименование инФсрмациогеюй базы i Бухгалтерия 8 от А до Я f Выберите тип расположения информационной базы • На данном компьютере или на компьютере в локальной сети s На сервере 1 (/Предприятия I Далее > Отмена ! Укажем путь к информационной базе на локальном диске Войдем в созданную информационную базу в режиме конфигуратора. Используя пункт главного меню Конфигурация / Открыть конфигурацию откроем окно дерева объектов конфигурации. Каждая ветка дерева представляет собой класс (вид) объектов, которые доступны нам для визуального программирования. Кроме объектов, представленных в дереве, есть и тс, что могут быть использованы нами только из языка. Приступим к изучению первых и самых простых объектов. ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 12
Основы конфигурирования: Перечисления Перечисления Начнем изучение классификаторов с самого простого объекта «Перечисления». Объект предназначен для хранения списка значений, который нужен пользователю для заполнения какого либо свойства, например, в документе, но не должен им изменяться. Как правило, объекты устроены таким образом: программист в конфигураторе разрабатывает их, описывая свойства, а пользователь в режиме «1С:Предприятие» наполняет таблицу данных значениями. Перечисление является исключением: программист «придумывает» объект, и он же наполняет его значениями. Пользователь сможет лишь увидеть и выбрать одно из предложенных ему значений. Примером использования объекта может служить хранение в программе ставок НДС. Ставки НДС утверждаются законодательно и не могут «придумываться» пользователем произвольно. При этом при оформлении значительного числа документов потребуется выбор ставки налога для выполнения расчетов и оформления печатной формы. Создадим наше первое перечисление «СтавкиНДС». Все имена объектов пишутся по правилам идентификаторов: не могут содержать пробелов, не могут начинаться с цифры, не могут содержать ряд символов. Данные Формы Макеты Подсистемы Имя СтавкиНДС Синоним: Ставки НДС Комментарий Действия - Далее> Закрыть Справка и -______,___________________________ ..... - .а введем значения перечисления Основные J ► Данные i Формы Ма-еты Подсистемы *• Основные Имя Синоним 18Х К омментарий Действия - Значения перечисления: t I 1 □ Значения НДС10 БезНДС <Назад Далее> Закрыть Справка Имя значения предназначено для полу чения ссылки на значение перечисления при программировании, синоним будем виден пользователю. Теперь при оформлении документов пользователь сможет выбирать значение ставки НДС из предложенного ему списка, а мы сможем ООО TC-Учебный центр N 3”. телефон (495) 253-58-38. е mail uc3@ lc.ru. 13
“ 1С-.Бухгалтерия 8”. Конфигурирование и программирование от “А ” до “Я” описать алгоритмы поведения программы, в зависимости от выбранной ставки НДС. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ Ic.ru. 14
Основы конфигурирования : Справочники Справочники Справочник предназначен для хранения списка элементов, который может изменяться и пополняться пользователем. Примером традиционного использования справочником можно считать хранение в базе данных списка контрагентов, номенклатуры товаров, сотрудников и другое подобное. При этом, как правило, пользователь должен иметь возможность создавать, удалять, изменять элементы справочника. Каждый элемент справочник может кроме названия иметь дополнительные свойства (для каждого справочника свои: для контрагента - адрес, для товара - ставка ПДС). Справочник может быть линейным или иерархическим, когда каждый элемент подчинен другому элементу или группе. Начнем изучение с линейного справочника Как правило, определяет структура данных справочника программист в конфигураторе, а заполняет справочник данными пользователь. При необходимости ввести «жесткие» элементы справочника (те, которые пользователь не сможет удалить) используется возможность создания предопределенных элементов (закладка справочника «Прочие»). Линейные Наше предприятие может содержать из нескольких самостоятельных юридических лиц и/или обособленных подразделений. Список этих самостоятельных бизнес-единиц нужно где-то хранить. Создадим справочник «Организации». 12,"; л ’• й ' -si- ► Основные Иерархия Владельцы Данные Синоним Организации Организации Нумерация Формы Комментарий Макеты Подсистемы Веса на основании Права Интерфейсы Обмен данными Прочее Действия Закрыть на закладке «Данные» оставим все без изменений ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 15
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от “А ’’ до "Я” Основные Длина кода Строка В виде наименования Действия Дале» Закрыть Справка сНазад Реквизиты Табличные части Иерархия Владельцы ► Данные Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы О бмен данными Прочее Длина наименования Т ип кода Число 25 Основное представлен В виде кода Можно представить наш справочник в виде таблицы базы данных Внутренний идентификатор Код Наименование ID Строка 9 символов Строка 25 символов При желании количество колонок для хранения данных можно было бы увеличить, добавив реквизиты добавить дополнительные таблицы для хранения табличных полей. Но код и наименование будут всегда. Внутренний идентификатор мы не видим, он используется платформой, когда требуется создать уникальную ссылку на значение элемента справочника (на запись в таблице справочника). И код и наименование могут быть изменены пользователем, идентификатор никогда. Основное предназначение справочника с точки зрения учета - заполнение документов. При выборе элемента справочника пользователь может видеть в поле ввода или его код или его наименование. В нашем случае будет видеть наименование (основное представл ei i ие). Редактирование • В списке В диалоге Обоими способ. Выбор Из Формы * выбору Обоими способ. Наименование, Код ... х Основные Иерархия Владельцы Данные Нумерация ► Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Ввод по строке Основные Формы Списка Выбора Действия - <Назад Далее> Закрыть Справка То, как пользователь будет заполнять справочник, зависит от настройки форм. Если редактирование «в списке», то ввод и изменение элемента справочника будет производиться прямо в основном списке справочника, если же «в диалоге» - для редактирования будет открываться отдельное окно. Вариант ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru.
Основы конфигурирования Справочники редактирования «в форме» имеет смысл, если справочник содержит значительное число дополнительных реквизитов, а не только код и наименование, как в нашем случае. При выборе элемента справочника можно открыть специальное окно, где пользователь увидит список элементов (из формы), или же открыть маленький список значений, который пользователь в процессе выбора лаже не сможет отредактировать. Если справочник редко пополняется в процессе работы (ну, например, маловероятно, что пользователю захочется создать новое юридическое лицо компании прямо при выписке документа), то обычно устанавливают «Быстрый выбор». О реализация Т орговый дом ... х Торговый дом Фабрика Остальные свойства справочника мы пока опустим и расскажем и они позднее. Увидеть наш справочник в пользовательском режиме можно используя меню Операции / Справочники. А попасть в пользовательский режим из конфигуратора можно по , кнопке Начать отладку (F5) Собственно про отладчик мы будем говорить позднее, пока просто можно войти в систему и посмотреть на результаты. Если база уже отрыта для отладки - кнопка будет белой и предложить перезапустить систему. Иерархические При необходимости хранения списка справочника, разбитого на группы, может быть создан иерархический справочник. Например, номенклату ра наших товарно-материальных ценностей значительна по числу и видам этих ценностей. Удобно разбить справочник на группы по видам ценностей: товары, материалы, продукция и др. Количество уровней вложенности может быть ограничено, а может быть и практически безграничным (сколько уместится на экран). Создадим справочник «Номенклатура». На закладке «Иерархия» установим флаг «Иерархический справочник». ООО "lC-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 17
" 1С:Бухгалтерия 8". Конфигурирование и программирование от "А ” до “Я" Основные к Иерархия Владельцы Данные Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее справочник Вод иерархии Иерархия групп и элементов Размещать группы сверху Справка g Ограничение количества уровней иерархии Действия < Назад Далее> Закрыть Вид иерархии «Иерархия групп и элементов» означает, что элементы будут подчинены группам справочника, которые, как правило, сами в учете не участвуют, а служат лишь для группировки элементов. Таблицу иерархического справочника можно представить ID Это группа Код Наименование Родитель Истина 01 Группа <Пусто> Ложь 02 Элемент ID родительской группы В новом поле «Родитель» будет храниться ссылка на родительскую группу, которой принадлежит этот элемент. На закладке формы выберем свойство «редактировать в диалоге» [ Основные Редактирование Выбор Иерархия В списке Из Формы Владельцы • В диалоге Быстрый выбор 1 Данные Обоими способами * Обоими способами ? Нумерация Ввод по строке Наименование. Код ... х * ► Фоомы Справочник готов. Номенклатура Код Наименование 000000002 Материалы 000000004 Доска □ Материалы В Продукция Й Т овары Ткань Иерархия элементов Можно себе представить ситуации, когда иерархия присутствует, но группы также являются значимыми и используемыми в учете объектами. Так же как, например, не может быть «половины доски» ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 18
Основы конфигурирования: Справочники (полдоски - это тоже доска), так же не может быть группы подразделений (группа подразделений - это тоже подразделение). Если в подразделение «Администрация» входит «Бухгалтерия», «Дирекция» и «Фин.от дел», то могут быть расходы, которые понесла бухгалтерия, а могут быть и те, которые ложатся на администрацию в целом. В этом случае создают справочник с иерархией элементов. Создадим справочник «ПодразделенияОрганизаций» Основные ....................... Иерархический справочник; * ► Иерархия Виа иерархии ' Владельцы Да । ыс Иерархия элементов ▼ Нумерация м | Формы Ограничение количества уровней иерархии Макеты Подсистемы ? Ввод на основании » Права I Интерфейсы i | Обмен данными | Прочее Действия - <Назад Далее? Закрыть Справка в этом случае справочник не будет делиться на группы и элементы. Весь справочник будет состоять из элементов, просто часть элементов будет подчинена другим. Таблицу справочника можно представить так: ID Код Наименование Родитель 01 Элемент 1 <Пусто> 02 Элемент 2 ID элемента 1 В данном случае, элемент 2 подчинен элементу 1. Подчиненные справочники Все элементы иерархического справочника хранятся в базе данных в одной таблице и имеют одинаковые свойства. Если же нам нужно связать междх собой различные сущности, имеющие разные свойства используют связку «владелец - подчиненный». Так, например, наш справочник «Организации» хранит список бизнес-единиц, а справочник «Подразделения организаций» список административных единиц для деления каждой организации. Причем, что естественно, у каждой организации наверняка будут свои подразделения. Чтобы организовать подобное хранение данных используют подчиненные справочники. В нашем примере, справочник «Подразделения организаций» будет подчинен справочнику «Организации». Для этого необходимо изменить справочник «Подразделения организаций». На закладке «Владельцы» выберем для него владельца «Справочник Организации». ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 19
“/С?Бухгалтерия 8". Конфигурирование и программирование от “J " до “Я” * <» е 'if '-- ^йаза^ёж2й1^Д| | Основные Список владельцев с травочника | Иерархия I > Владельцы Справочник Организации | Данные Нумерация 5 гк I ; Формы ? и I макеты | Подсистемы 1 Ввод на основании | Права Использование подчинения: Интерфейсы 1 г-,. Элементам | Обмен данными Прочее Действия - сНазад Далее> Закрыть Справка I Теперь каждый элемент справочника «Подразделения организаций» будет хранить дополнительно ссылку на элемент справочника владельца (на запись из таблицы справочника «Организации»). Управляя свойством «Использовать подчинение» можно было бы добиться, чтобы и у групп справочника-владельца также были подчиненные подразделения. В нашем слу чае справочник организаций не содержит групп (линейный) и это нам не нужно. Таблица справочника «Подразделения организаций» изменилась ID Код Наименование Родитель Владелец 01 Элемент 1 <Пусто> ID организации 02 Элемент 2 ID элемента 1 ID организации Справочник может быть подчинен нескольким владельцам. Так, например, если мы хотели хранить информацию не только о подразделениях организаций, но и о подразделениях наших контрагентов, то мы могли бы выбрать второго владельца на закладке «Владельцы» справочника «Подразделения организаций». В нашем примере это лишнее, а вот в случае с расчетными счетами, которые есть и у наших организаций и контрагентов, возможность подчинить справочник расчетных счетов сразу двум владельцам очень бы пригодилось. Однако, внимание, каждый элемент справочника может быть подчинен только одному владельцу (в нашем примере, один расчетный счет подчинен или одной организации или одному из контрагентов). Если мы хотим, чтобы нумерация подразделений для каждой организации была своя, можно изменить положение переключателя на закладке «Нумерация». ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 20
Основы конфигурирования: Справочники Основные Иерархия Владельцы Данные ► Нумерация Формы Макеты Подсистемы Ввон на основании Права Интерфейсы Обмен данными Прочее Автонумерация Контроль уникальности Серии кодов Во всем справочнике В пределах подчинения * В пределах подчинения владельцу Действия - <Назад Далее> Закрыть Справка Г отово 7 Действия ’ | = С Перейти’- ? Код - 000000002 000000001 Наименование Т ОрГОВЫи дом Фабрика Действия’ V >1 ? Код Наименование ’ л м * 0000СЮ001 Администрация * 000000002 Бухгалтерия * 000000003 Дирекция Действия» -ч» ? ; Код 000000004 ; Наименование Фин отдел s В ладелец Торговый дом ... х Родитель Администрация ... х ОК Записать Закрыть На картинке изображено: справочник «Организации». По кнопке «Перейти» мы перешли к связанной с «Торговым домом» информации - подразделениям организации. На верхнем уровне подразделений создано подразделение «Администрация». Ему подчинены «Бухгалтерия», «Дирекция» и «Фин.отдсл». Как мы видим для «Фин.отдела» родителем является «Администрация», а владельцем «Торговый дом». ООО "lC-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 21
"1 С: Бухгалтерия 8". Конфигурирование и программирование от "А" до “Я" 1. Практикум Создайте справочник «Валюты» для хранения списка валют. Длина кода должна быть 3 символа, длина наименования 10 символов. Редактируется справочник в списке. Все остальные свойства оставить по умолчанию. 2. Практикум Создайте справочник «Контрагенты», иерархический, иерархия группы и элементов для хранения списка контрагентов наших организаций. 3. Практикум Создайте справочник «Договоры контрагентов», иерархический, иерархия групп и элементов. Справочник должен быть подчинен элементам справочника «Контрагенты» .. Действия» * I | ’ Перейти» ? в 1ИИМ1 S Покупатели S Поставщики 0 Прочие Действия - Код Наииенова^ше 000000002 Покупатели 000000004 Г ленный покупатель Дог. -эры контр а гемтов Б Код Наименование Основной дет е у i Код. 000000001 * Наименование: Основной договор Владелец Главный покупатель х Родитель. .. х ОК Записать Закрыть F Дополнительные реквизиты и табличные части Кроме встроенных реквизитов (свойств) справочника Код и Наименование и встроенных же служебных свойств Родитель и ООО "JC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 22
Основы конфигурирования: Справочники Владелец. каждый элемент справочника может хранить дополнительные реквизиты и таблицы. Состав дополнительной информации будет отличаться для каждого справочника. Так, например, для элемента справочника номенклатуры хорошо было хранить ставку НДС. Для элемента справочника контрагентов, как минимум, ИНН и адрес. Для договоров - организацию, от лица которой заключен договор. Реквизиты Начнем со справочника контрагентов. Добавим на закладке данные два новых реквизита. Реквизит «Адрес» будет строкой неограниченной длины. Такие реквизиты хранятся не в основной таблице справочника, а в дополнительной таблице. Они не доступны для выполнения группировки в запросе. Также недоступны они для индексирования, однако в полнотекстовом поиске1 участвовать могут. Полнотекстовый поиск работает по принципу поисковых машин Интернета. Полнотекстовый поиск позволит найти произвольный «кусок» текста (или текста, измененного специальными символами для уточнения поиска) во всех поля базы, включенных в полнотекстовый индекс, в том числе и в нашем адресе. И элементы и группы справочника хранятся в одной физической таблице, но часть свойств элементов может быть бесполезна для гру пп (например, какой смысл от свойства Адрес для группы Покупатели?), Поэтому мы О1раничиваем возможность ввода значений в это ноля только элементами справочника (свойство Использование: для элемента). Основные Длина кода 25 Синоним Строка В виде наименования Использование Для элемента Подсистемы Полнотекстовый поиск Использовать О Действия - Далее) Справка < Назад Закрыть IТ абличные части Т ип данных Тип Строка Ив! эр кия Владельцы ► Данные Нумерация Формы Макеты Основные: Имя Ввод на основании Права Интерфейсы Обмен данными Прочее Основное представление Б виде кода Длина наименования Тип кода 1 ислэ Адрес Адрес Комментарий Длина Допустимая длина Переменная □ s Реквизиты - SSS9 инн Неогра* ученная длина Второй реквизит «ИНН» будет хранить строку длиною 10 символов, по которой потребуется осуществлять быстрый поиск и отбор. 1 1 Доступно начиная с версии 8.1 ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 23
“1СБухгалтерия 8". Конфигурирование и программирование от "А” до "Я” Длина кода Длина наименования Тип кода Число • Строка t * B-s Реквизиты .. - Адрес - пш 9 25 Основное представление В виде кода • В виде наименования Основные Иерархия Владельцы ► Данные Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Т аб.' иные части £ Действия ’ <Назад Далее> Закрыть Справка Использование ю: Индексировать Длина Допустимая д лина Неограниченная длина Полнотекстовый поиск Использовать Т ип данных Тип Строка ИНН Комментарий Основные: Имя ИНН Синоним Для элемента Переменная Свойство «Индексировать» позволит добавить дополнительный индекс базу данных, по которому потом можно будет устанавливать отбор и быстрый поиск элементов справочника по значению этого реквизита. Перейти Действия Адрес ИНН Контрагенты Г лаеный поь упаталь 7710000000 7720000000 Москва Тоже Москва Код Наименование * 000000002 Покупатели •" 000000004 - 000000005 Еще один покупатель Й __ Покупатели Й .. Поставщики Й ... Прочие Табличные части Если требуется хранить одно значение для каждого элемента справочника, можно добавить реквизит, как мы и сделали, например с ИНН. А если требуется хранить много (заранее не известно сколько) значений одного и того же реквизита для одного элемента справочника? Если есть вероятность, что на эти значения потребуется ссылаться (например, выбирать в документах), то это подчиненный справочник. А если есть уверенность, что это лишь дополнительная информация, которую надо сохранить, но ссылок на нее не будет, то можно сделать табличную часть. Например, если нам необходимо для каждого контрагента хранить информацию о контактных лицах и их телефонах, и мы уверены, что никогда и нигде не потребуется ссылаться на контактное лицо, можно сделать табличную часть2. Табличная часть будет содержать два реквизита табличной части «ФИО» и «Телефон» типа «Строка». 2 Внимание! Типовое решение «Бухгалтерия предприятия» использует для хранения контактной информации контрагентов другой объект метаданных. ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 24
Основы конфигурирования: Справочники Основные Длина кода Иерархия Владельцы ► Данные Нумерация Формы Макеты Строка Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее EJ-s t i Контактные Л ица i - ФИО Т елеФон • Т абличные части В Реквизиты • Адрес . |ШП Длина наименования Т ип кода Число В виде наименования Закрыть Справка 25 Основное представление В виде кода Действия <Назад Далее> Б Готово. Можно посмотреть на результат и заполнить контактные лица контрагента. Действия » *> s, Перейти - Код: 000000004 Н аименование: Главный покупатель Родитель. Покупатели Адрес Москва ИНН. 7710000000 ^-ч. t PH N ФИО 1 Иванов И И. 2 Петров П.П Телефон 111-11-11 222-22-22 ОК Записать Закрыть Ссылочные и примитивные типы данных До того, как мы продолжим изучать свойства справочников, сделаем небольшое отступление. Вы уже должны были заметить, что, создавая объекты в конфигураторе, мы тем самым изменяем базу данных, создавая в ней новые таблицы, изменяя таблицы существующие. Изначально, создавая поля (реквизиты) в базе данных мы можем назначать им только четыре примитивных типа данных: число, дата, строка, булево (истина/ложь). По мере того, как мы создаем новые объекты, в базу данных добавляются новые типы данных: ссылочные (ссылка на справочник, ссылка на перечисление). Все объекты в системе делятся на типизированные и типообразующие. Типизированные, это те, которым мы назначаем типы (ну. например, реквизит справочника). А типообразуюшие - те. которые добавляют в нашу конфигурацию новые типы данных (например. Перечисления, Справочники). Создавая в справочнике реквизит типа «Ссылка» на другой справочник или на перечисление, мы. таким образом, связываем таблицы базы данных между собой. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 25
“ 1СБухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" Примером этого может служить хранение значения ставки НДС в каждом элементе справочника Номенклатура. Для решения этой задачи необходимо добавить в справочник реквизит типа «ПеречислениеСсылка.СтавкиНДС»3 Основные Иерархия Владельцы ► Данные Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Длина кода Длина наименования Тип кода Число • Строка В- « Реквизиты Обмен данными Прочее 9 25 Основное представление В виде кода • В виде наименования Т абличные части 5! ! ^Основные: Имя СтавкаНДС Синоним Ставка НДС Комментарий И спользование Для э лемента Индексировать Не индексировать Полнотекстовый поиск Использовать ’Тип данных: ПеречислениеСсылка СтавкиНДС х: Действия - <Назад Далее> Закрыть Справка Ста„киНДС Составной тип данных I J Число с Строка Дата Булево у ХранилищеЗначения .ч. СправочникСсылка ,г ДокуменгСсылка 1...’ ПеречислениеСсылка ОК Отмена t Г отово. J_____________________________________________________ •. Действия ’ *• v нт *1 1 С ? Ставка НДС Номенклатура Код Наименование * __ 00000... Материалы Отборы в справочнике Отбор в форме списка справочника возможен по любому его реквизиту. В нашей конфигурации есть справочник «Договоры контрагентов», подчиненный справочнику «Контрагенты». Отбор по владельцу включается автоматически, когда мы переходим в справочник «Договоры...» по кнопке «Перейти» с панели справочника «Контрагенты». Посмотреть отбор в текущем табличном поле можно с 3 На самом деле для работы с Перечислением существует целый «каскад» объектов, а не только «ПеречислениеСсылка». но о них мы поговорим позднее. ООО " 1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 26
Ос новы конфигурирования : ('правочники помощью кнопки Отбор и сортировка на командной панели (в нашем примере командной панели табличного поля справочника Договоры контрагентов). Действия - Контрагенты < Т) ’• С Перейти’ ? Код Наименование ’ Адрес 00000. Покупатели Г лавный покупатель — 00000 Еще один покупатель ТожеМоскв Но если мы ведем учет в одной информационной базе по нескольким организациям (а мы ведем - справочник «Организации»), разумно предположить, что для каждой организации нужно будет заключать свой договор с контрагентом. Даже если мы включим в состав владельцев справочника «Договоры контрагентов» справочник «Организации», все равно владелец у одного элемента (договора) может быть только один (или контрагент или организация). Значит, мы должны добавить в справочник договоры дополнительный реквизит «Организация» (СправочникСсылка.Организации) и использовать его для отбора, если хотим просмотреть договора только по одной организации. ООО "1С Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗ© lc.ru. 27
“ 1С:Бухгалтерия 8”. Конфигурирование и программирование от “А " до “Я" Основные Иерархия Владельцы ► Данные Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Длина кода Длина наименования Тип кода Число • Строка Е}£ Реквизиты Действия - <Назад Готово. э: 25: Основное представление В вице кода • В виде наименования Организация) Т абличные части! Далее» Закрыть Справка "1 ” Основные: Имя Организация Синоним Организация Комментарий Использование Для э лемеига Индексировать Не индексировать Полнотекстовый поиск Использовать ” Т ио данных: пл СправочникСсылка Организации ;£2£гавнойтипван* *^?|*5 i 13 Число йI а с Строка i Дата ц i ; R | Н * Булево ф ХранилищеЗначения » Й- СправочникСсылка Организ' дни ___, ] Действия •» —• -• I Контрагенты ________________________________________________. . i ^Cj Т v 1 U Перейти^ ? | л Код Нан нг кование ” Адрес л * ______U000Q Пог улетели Г лавный покупатель -» GOOOO Еще один покупатель Тоже Моск ] Действия ” аЯЧ Д огсгоры КОНТ р-3’ нтсв Код - 00000 Наименование Оснданой договор Организация Г орговый дом В дальнейшем мы научимся включать отбор программно. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 28
Основы конфигурирования Константы Константы Константы это объект, предназначенный для хранения отдельных значений условно-постоянной информации, относящихся к работе информационной базы в целом. Константы можно сравнить в системным справочником, элементы которого мы вводим, присваивая им имена и назначая типы, а пользователь вводит значения. Константы, как правило, используются для хранения той информации, которая изменяется редко (или, чтобы уж быть более точным, вообще никогда, потому что историю изменений константа не сохраняет), но имеет значение для работы всей информационной базы. Такой информацией может быть, например, валюта учета. При организации много валютного учета и учета договоров в различных валютах наверняка потребуется значение «валюты учета» (основной валюты, в которой ведется весь учет, для РФ это «рубль»). Добавим в ветке Константы новую константу «ВалютаУчета» "^Основные: ВалютаУчет^ Синоним Валюта учета Комментарий Подсистемы Бухгалтерия_8_от_А_до_Я Модуль менеджера значения Открыть 'Тип данных: : Тип СправочникСсылк а Валюты ' Данные Режим управления блокировкой данных Автоматический Таким образом, мы создали в базе данных новую ячейку, в которой пользователь сможет сохранить нужное ему для работы значение, в нашем случае - ссылку на элемент справочника валют. Готово. f-- Лк •• Действия' ? ’ Валюта учета: руб ОК Записать Закрьть ООО ”1С Учебный центр N 3”. тедефон (495) 253-58-38. е mail uc3@ lc.ru. 29
“7СБухгалтерия 8”. Конфигурирование и программирование от "А ” до "Я" Документы Документы в системе предназначены для ввода, регистрации и хранения информации о хозяйственных операциях, событиях в хозяйственной жизни организации. Такие события, как «купили», «продали», «оплатили» будут, скорее всего, регистрироваться в системе с помощью документов. Документы это действия, которые мы производим, это «глаголы языка учета». Начнем изучение этого класса объектов на примере приходной накладной. Создадим документ «ПоступлениеТоваровУслуг», предназначенный для регистрации события покупки материальных ценностей и отражении операции полученных нами затрат (расходов). Поступление и реализация товаров и услуг Документ будет иметь две табличные части, одну для ввода информации о товарах, другую для услуг. Табличные части будут почти одинаковые (в услугах дополнительный реквизит Содержание), но с точки зрения учета для нас это разные сущности (имущество и затраты) и поэтому отражать их в дальнейшем тоже нужно по- разному. ЕЕЗЕШ Основные ► Данные Нумерация Движения s Последовательности I Журналы | Формы i Макеты | Подсистемы ] Ввод на основании I Права ? Интерфейсы Обмен данными г Прочее i Реквизиты I- |~| "2J ~ - Организация » Контрагент - ДоговорКонтрагенга - t 1 I- □ • Табличные части Е) Т овары Номенклатура - Цена . • Количество - - Сумма □ Услуги <- Номенклатура Содержание] ..- Цена :« Количество - Сумма <Назад Далее> г i Действия Закрыть Справка Перечислим реквизиты документа: Реквизит Тип (длина, точность) Организация СправочникСсылка.Организации Контрагент СправочникСсылка.Контрагенты ДоговорКонтрагента СправочникСсылка.ДоговорыКонтрагентов В каждой табличной части добавлены реквизиты: Реквизит Тип (длина, точность) Номенклатура СправочникСсылка.Номенклатура ООО "JC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 30
Основы конфигурирования: Документы Цена Число (10,2) Количество Число (10,0) Сумма Число (10,2) Содержание Строка (неорганичная) Закладку «Нумерация» оставим без изменений | Формы Тип номера Макеты Число Подсистемы • Строка Ввод на основании Права Периодичность Непериодический ’ Интерфейсы J Обмен данными Прочее I Действия » (Назад Далее> Закрыть Справка 1-—....-....-..-................. ............................................. При желании мы могли бы ограничить нумерацию периодом (например, год - каждый год нумерация начинается с единицы) или назначить двум или более документам один нумератор, организовав сквозную нумерацию для разных видов документов. На закладке «Движения» установим для свойства «Проведение» значение «Запретить», о том, что такое проведение мы узнаем позднее. И можно считать, что документ готов. Чтобы ввести документ в базу данных нужно вызвать пункт «Документы» из меню «Операции» пользовательского режима и добавить новый документ. Действия Номер Организация Т орговый дом Договор кон Договор с гм Контрагент Г лавный поставщик Дата ” 06.02 200713 27.58 00000 Действия Номер 000000001 Дата 06.02 2007 1 3 27 58 i; Организация Т орговый дом а Контрагент: Г лавный поставщик Договор контрагента Договор с поставщиком § N Номенклатура Иена 2 Т кань 10.00 15.00 Количество Сумма 50.00 30.00 I Номенклатура Содержание 1 Доставка до офиса Цена 2000 Количество Сумма 20.00 5 2 N I ОК Записать Закрыть ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. е mail uc3@ lc.ru. 31
“ 1С: Бухгалтерия 8". Конфигурирование и программирование от “А " до “Я" Интерфейс пока оставляет желать лучшего (и удобство заполнения формы и доступ к объектам в главном окне программы), но это отдельные темы которые мы рассмотрим ниже. Чем отличается документ поступления от документа реализации структурно? Фактически ничем. То есть события разные, в учете по- разному отражаются, а данные, которые надо хранить - те же. И в рамках конфигурации и между конфигурации (с ограничениями) объекты можно копировать. Воспользуемся этой замечательной возможностью, чтобы сделать документ «РеализацияТоваровУслуг». Скопируем в буфер обмена целиком весь объект (ветку дерева конфигурации), вставим из буфера и переименуем. Документ готов. | Действия’ —> " (**) 1 ** < Дата ’ Номер Организация \ v 06.02.2007 13:5211 Торговый дом с ? Контрагент Доп Г павный покупатель Осн. Действия ’ •- Номер: Дата: 000000001 0602.200713:52:11 и Редегэди» товаре» *'.:1 Организация Контрагент: Договор контрагента Т орговый дом Г лавный покупатель Основной договор 100Д0 N Номенклатура ЦЦ Т абуретка Цена Количество БОДО Сумма 2 N Номенклатура Содержание Цена Количество Сумма Доставка к покупателю 10.00 1 10.00 ОК Записать Закрыть Ввод по подстроке Как уже было сказано выше, основное предназначение справочников - заполнение документов. А заполнять документы документа (особенно если их много) намного удобнее с клавиатуры, чем. используя мышь и выбор из предлагаемого списка справочника. Для всех полей ввода типа ссылка предусмотрена возможность заполнять их как из предложенного для выбора списка, так и с клавиатуры. При этом пользователь может набрать с клавиатуры первые символы или все символы код, наименования (эти поля индексируются автоматически) или дополнительного реквизита, имеющего индексирование и включенного в свойство справочника «Ввод по подстроке». Если по подстроке будет найдено несколько элементов, программа покажет их маленьким выпадающим списком и пользователь сможет выбрать нужный мышью или стрелками вверх-вниз и нажать Enter. Если будет найдено более 50 подходящих элементов, предложит уточнить строку поиска. ООО "1С-Учебный центр N 3 ". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 32
Основы конфигурирования: Документы Чтобы программа разрешила выполнять ввод по подстроке ИНН, необходимо изменить свойство на закладке «Формы» справочника. Основные Иерархия Владельцы Данные Нумерация ► Формы Макеты Редактирование В списке • В диалоге Обоими способами t < Поля, доступные для вводе п Выбор Из Формы Быстрый выбор • Обоими способами Ввод по строке Наименование. Код. ИНН — х Основные фоом— Подсистемьь Вводнаоснг Выбранные поля Пр»». । Наименование ; Код Интерфейсы- Обмен даннн Прочее "НН ОК Отмена Справка Действия ’ <Назад Далее) Закрыть Сорока I............................ г...................................... .. . н Готово. При вводе первых букв наименования Контрагент глав ... х Г лавный покупатель (000000004) I лавный поставщик (0№00(№8] При вводе первых символов ИНН Контрагент 77 ... х 7710000000 (Г лаень и покупатель) 7720000000 [Еще один покупатель) 7730000000 (Главный поставщик) список появляется при попытке выйти из поля, если было найдено несколько подходящих элементов. Журнал документов Журналы документов позволяет в одной форме списка работать с документами различных видов. При создании журнала всегда нужно иметь в виду, что, объединяя в одну таблицу разные документы, мы тем самым уменьшаем производительность системы в части одновременной работы пользователей. Если мы объединим в один журнал все наши документы, значит, при записи документов, все наши пользователи будут пытаться записать данные в одну и туже таблицу. Однако, в методических целях, мы создадим один журнал, объединяющий поступление и реализацию «ДокументыДвиженияТМ! I» Основные Данные Формы Макеты Подсистемы Права Интерфейсы Прочее Регистрируемые документы: t 1 ! Поступление! оваровУслуг Реализация!оваровУслуг Л' .. S' Г раФы Контрагент Догсп орКонграгснта ] Закрыть Справка ......... Действия - < Назад Далее) ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(p lc.ru. 33
“1С: Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" Включим в состав журнала оба документа и создадим дополнительные графы журнала: Контрагент (ссылки на контрагента из обоих документов) и ДоговорКонтрагента (ссылка на договора контрагентов из обоих документов). Осталось нарисовать форму списка и журнал готов. Действия - [*>] Контрагент аь <Поле ввша> Дата аЬ <Полеввода> Номер Виа документа ;аь <Поле в... Договор контрагента аЬ <Полеввода> ООО ” 1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 34
Основы конфигурирования: Форма Форма Все диалоговые окна, которые позволяли нам до этого момента заполнять справочники и вводить документы были созданы платформой «на лету». Если мы не нарисовали никакой формы, платформа создает ее сама по своему усмотрению. И, в большинстве случаев, такой формой пользоваться можно, но не удобно. А чтобы было удобно, форму нужно рисовать самостоятельно и пользоваться для этого редактором форм. Форма это объект конфигурации, для визуального редактирования которой используют редактор форм. Существуют и методы встроенного языка, предназначенные для управления формой. Форма констант Форма может быть как «сама по себе» (произвольная форма), так и формой какого либо объекта, например, формой элемента справочника или формой списка документа. Определяется предназначение формы ее основным реквизитом. Начнем изучение редактора форм с формы констант. Для этого вызываем контекстное меню по правой кнопке мыши на ветке конфигурации «Константы» и выберем пункт «Создать форму констант». Действия | Бухгалгерия_8_от_А_до_Я Е i Общие й язеяг* L . Валю Добавить Е Справочк Создать Форму констант Е Док умен Журналь Й-!- ’ Перечисления В открывшемся диалоге конструктора форм оставим все значения по умолчанию ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 35
“ 1СБухгалтерия 8”. Конфигурирование и программирование от “Л ” до "Я" Выберите тип формы Произвольная Форма • ^рнстанп : * Назначить Форму основной Имя Форма J Синоним: Форма Комментарий : I \ Командная панель Формы сверху * Командная панель Формы снизу i I i - I На? ад Далее > Готово Отмена Справка I И на следующей страницы поступим также. Располагать элементы управления в 1 Z колонкой) i Реквизиты ДалютаУчета Элементы Формы sb Поле ввода < Назад Готово Отмена Справка Результат - форма констант. Созданная нами форма появилась в ветке «Общие» / Общие формы. О том, что ^то форма констант, свидетельствует основной реквизит формы, который можно увидеть на закладке реквизиты. Реквизитов у формы может быть много, основной из них (определяющий предназначение формы) выделен жирным шрифтом. ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38, e-mail uc3@lc.ru. 36
Основы конфигурирования: Форма i Действия» - Реквизит КонстантыН абор Тил Константин абор Z. Диалог Модуль S Реквизиты '«’Основные: Имя КонстантыНабор КонстантыНабор < > Произвольный КонстантыН абор | Е СправочникОбьект i 0- СправочникСписок Ё ДокументОбьект Ё ДокументСписок > Ё .. ПеречислениеСписок ОК Отмена С этого момента, мы должны сами заботиться, чтобы добавленные нами новые константы отображались бы в диалоге формы. Теперь, когда пользователь вызывает константы, он будет видеть нашу форму и только те поля и надписи, которые мы там сделали. Работу формы можно представить в виде схемы: В диалоге формы может быть размещено несколько элементов управления (например, в нашем диалоге размещено поле ввода и надпись к нему). Часть из них может быть вообще не связано с данными (надпись, в нашем случае). ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 37
“ 1СБухгалтерия 8". Конфигурирование и программирование от “А " до “Я" Это можно увидеть, вызвав окошко свойств и обратив внимание на свойство «Данные». Другая часть может быть связана с реквизитами формы (имеются в виду все остальные реквизиты, кроме основного реквизита формы). В нашей форме таких нет, но мы могли бы их создать. Реквизиты формы хранятся в оперативной памяти и поэтому помнят свои значения, пока форма не закрылась. Другая часть полей ввода может быть связана с данными, хранимыми в базе данных в объектах конфигурации. Связь эта осуществляется через основной реквизит формы (в нашем случае КонстантыНаборЗаписей). I ’Основные: Имя ВалютаУчета Данные Изменяет Данн ПропускатьПрк’ ПервыйВГ pynnt ВалютаУчета Е) - КонстантыНабор ВалютаУчета; t - . . - — ок Отмена Справка : Данные, которые введет пользователь в такие элементы диалога, будут сохранены в базе данных. При необходимости, с одним реквизитом объекта (полем в базе данных) может быть связано несколько элементов управления формы. Если мы добавим еще одну константу в нашу конфигурацию и захотим, чтобы пользователь ее мог видеть и изменять в форме ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 38
Основы конфигурирования: Форма констант, нам придется разместить ее в диалоге формы констант. Для этого можно или добавить поле ввода в диалог формы : Т ДЗ ’ L : г* J Г GF LJ 4 А Поле ввода а потом связать это поле ввода с данными используя окно свойств поля ввода, или воспользоваться КНОПКОЙ размещения данных Размещение данных Добавим новую константу «ОсновнаяСтавкаНДС» типа «ПеречислениеСсылка.СтавкиНДС». Откроем основную форму констант (правая кнопка мыши на ветке константы) и добавим поле ввода с надписью в эту форму. ' ЯНЬ - г • Действия * ? Валюта учета: ... х ОК Записать Закрыть О сновнаяСтавкаН ДС Элементы Формы »ь Поле ввода »ь Поле ввода i с г ,„ить надписи Разместить в диалоге автоматически Данные ✓ ВалютаУчета ОК Отмена Справка ------ ------------- - ----------------------------- Готово. Осталось навести порядок с размерами и заполнить константу в пользовательском режиме. Действия ’ ? -„.J Валюта учета: Основная ставка НДС. -....J ОК Записать Закрыть р ....... ............kSJEKL > Действия • ? j Валютаучета руб. — х j ! Основная ставка НДС 18% ... х । ОК Записать Закрыть ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗФ lc.ru. 39
“ 1СБухгалтерия 5”. Конфигурирование и программирование от "А ” до "Я" Форма документа Более сложную форму придется нарисовать для документа «Поступление товаров и услуг». Объект конфигурации «Документ» может содержать в себе много форм. Часть из них могут быть формами документа (основной реквизит), часть произвольными формами. Как минимум, у документа может быть три формы: форма документа, форма выбора и форма списка. Нарисуем форму выбора документа. I I Основные Основные Формы Данные Списка Нумерация _ Выбора Движения Последовательности Документа МММ Журналы ► Формы Ввод по строке Номер Макеты Подсистемы ИМ ' Ввод на основании Права Интерфейсы Обмен данными Прочее Далее> Закрыть Справка Действия ’ <Назад Проще всего это сделать, нажав «кнопку с лупой» справа от свойства Основная форма «Документа». Конструктор предлагает разместить в форме элементы управления для всех реквизитов и табличных частей документа. Располагать элементы управления в 1 С колонкой) Реквизиты :** Номер i ч/ Дата Проведен ПометкаУдаления i ч/ Организация Ь- ✓ Контрагент Ь-</ ДоговорКонтрагента В-ч/ Товары * F- v НомерСтроки Г- Номенклатура i - v Цена f- •s Количество j s Сумма В- V Услуги : ✓ НомерСтроки h ** Номенклатура ! ** Содержание ч/ Пена Элементы Формы аЬ Поле ввода *ь Поле ввода ч/ Флажок ч/ Флажок Поле ввода аь Поле ввода ,аЬ Поле ввода Т абличное поле аь Поле ввода < ь Поле ввода аь Поле ввода аЬ Поле ввода Т абличное поле аЬ Поле ввода аь Поле ввода ак Пппе пгатпа < Назад Г отово Отмена Справка ________ Мы можем согласиться с этим, а можем отказаться и разместить поля, используя помощник размещения данных. Полученная с помощью конструктора форма может быть измена: можно изменить размеры и местонахождение полей, и многое другое. Более подробно о возможностях редактора форм можно прочитать в книге ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc.3@ lc.ru. 40
Основы конфигурирования: Форма «Конфигурирование и администрирование», входящий в комплект поставки программы. В результате была получена форма документа: —-—- ~------------------------------------- Действия Номер- Дата □ Организация х Контрагент ... х Договор контрагента ... х Товары Услуги 1 I ИНСЭ N Номенклатура Содержание Цена Количество Сумме кь <Полевво. *ь <Полевь . <Г1о *ь <Поле ,*ь <Г ^..J ОК Записать Закрыть Кстати, увидеть, что эта форма является формой документа можно на закладке реквизиты формы * Д(>кумент Поступ и-тлн'Т хв/л'Услуг. ФиФй&О» ИТЗ - “ X Действия - -=> Реквизит............ Тип_ ___ _ ЩокумеигОбъект ДокументО&ъектП вступление Т оваровУслуг Диалог Модуль « Реквизиты При необходимости изменить основной реквизит формы (сделать форму произвольной или, наоборот, из произвольной сделать формой объекта), можно воспользоваться окном свойств формы. В свойстве формы «Данные» выбран объект, которому принадлежит эта форма. й» г* i Заголовок Поступление тоеаров и услуг Ширина 400 ПоведениеКлавишиЕ nter АвтоПравила АвтоПорядокО бхода РежимП рок ручиваемыхСт ранни Данные Тип значения АетоЗаголовок Доступность Авт оК онтекст ноеМ еню Контекстное^ еню ► Редактирование ► Использование. [ДокумйнтОбьект] Е Элемент ыЧ^ормы Е- Т овары Е Услуги Высота 395 Переход по элементам Формы ДокументО бъект Документ Объект Поступление? оеаровУ с луг Отсутствует ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail исЗ© lc.ru. 41
“ 1СБухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" Связь по типу Когда мы создали форму, мы получили не только возможность описать более красивый (и удобный) ее вид, но и описать логику ее работы. Часть такой логики можно описать, не используя язык программирования. Например, в диалоге формы нашего документа существует поле ввода «Договор контрагента», которое отображает в диалоге значение реквизита «Договор контрагента» документа. Справочник «Договоры контрагентов» подчинен справочнику «Контрагенты». И было бы удобно, чтобы при выборе договора пользователю показывались бы только договора выбранного им ранее контрагента. Чтобы решить эту задачу, поля надо связать. С свойствах поля ввода «Договор контрагента» выбираем свойство «Связь по владельцу» и выбираем там ДокументОбъект / Контрагент. Теперь, при выборе договора, отбор в форме списка справочника договоров будет включаться без нашего участия. И 1 »Основные: +* Имя ДоговорКонтрагента Данные ДоговорКонтрагента И зменяет Данные Пропуск атьПриВ воде ПервыйВ Группе Видимость Доступность АвтоКонтекстноеМеню КонтекстноеМеню Отсутствует ▼ Использование: КнопкаСпискаВыбора КнопкаВыбора w’ КнопкаОчистки КнопкаРегулирования КнопкаОткрыгия АвтоОтметкаНезаполненного АвтоВыборНезаполненного РежимВыбораИзСписка СочетаниеКлавиш БыстрыйВыбор ВыборГ руппИЭ лементов Форма выбора Связь по типу Свя1Ь по владельцу Элементы * < Основная) ▼ ... х 4. Практикум Создайте форму документа для документа «Реализация товаров и услуг», аналогичную форме документа «Поступление товаров и услуг». ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 42
Основы конфигурирования : Справочная информация для пользователя Справочная информация для пользователя Наша конфигурация уже содержит достаточное количество объектов, чтобы оставить пользователю описание того, как с ними работать. В программе существует возможность дополнять справочную информацию собственными статьями, которые могут содержать таблицы и ссылки на другие статьи. Давайте оставим информацию о справочнике контрагентов (его роли) и справочнике договоров. Начнем с последнего. Для этого открываем свойства справочника «Договоры контрагентов», закладка «Прочие», устанавливаем флаг «включать в содержимое справки» и открываем HTML редактор по кнопке «Справочника информация». Редактор состоит из трех закладок: редактирование, текст и просмотр. На закладке «Редактирование» оставляем информацию для пользователя. Для начала, что-то простенькое, ну. например: Справочник «Договоры контрагентов» предназначен для хранения списка договоров с контрагентами Теперь при вызове справки (F1) при активном окне справочника договора, откроется на выбор два пункта: • Общая информация о формах (это справка платформы) • Договора (это справка, которую написали мы) А наличие флажка «включать в содержимое справки» добавить новую ветку (Конфигурация) в содержимое общей справки по системе: Главное меню «Справка» / Содержание справки (ветка Конфигурация). Использование ссылок Справка может содержать не только текст, но ряд объектов: таблицы, надписи, линии, картинки и ссылки. Давайте напишем справочную информацию для справочника контрагенты и вставим в нее ссылку на справочник договора. Для этого добавляем в справочник Контрагенты какое-то описание (закладка «Прочие», «Справочная информация»), например. Справочние Контрагенты - нужен, и кроме того есть еще Справочник договора Далее выделяем слова «Справочник договора», заходим в Главное меню конфигуратора «Элементы» / Ссылка и выбираем в открывшемся диалоге Справочник. Договоры Контрагентов. Адрес. Справочник Договоры контрагентов ... х ОК Отмена Справка ООО " 1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 43
” 1СБухгалтерия 8". Конфигурирование и программирование от "А ” до "Я” После чего можно перейти на закладку просмотра и проверить, как это будет работать: по нажатию на ссылку будет открываться описание справочника договора. С. ф И Содержание Индекс Поиск | Бухг а л i ррич Я oi А до я • v.j- Справочник Контрагенты . Справочние Контрагенты - нужен, и кроме того есть еще i g Jv See яоава защищены. ООО "IC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 44
Основы иОминистрирования : Интерфейсы Основы администрирования Под администрированием будем понимать ведение списка пользователей, назначением им паролей, раздачу прав и интерфейсов. Интерфейсы В нашей конфигурации уже есть несколько справочников и документов, но работать с ними крайне не удобно. Единственный вариант доступа к ним пользователя - через меню «Операции». А вполне можно было разбить главное меню по классам объектов (справочники, документы и т.д.) или по участкам учета (основная деятельность, учет денежных средств, и т.д.). Для решения этой задачи предназначены интерфейсы. Интерфейсов может быть столько, сколько у нас пользователей - каждому свой вид программы, но, как правило, количество интерфейсов соответствует группам пользователей. Интерфейс включает в себя главное меню и панели инструментов. Создадим новый интерфейс. В дереве объектов конфигурации откроем ветку Общие / Интерфейсы и добавим новый элемент. Запустится конструктор создания главного меню интерфейса, который предложит добавить пункты главного меню, соответствующие классам объектов: Справочники, Документы и др. Согласимся с конструктором. i Подменю -В Команда: 1 -I Построить Документы Отчеты Обработки Открыть список справочников Открыть список регистров сведений •/ Справочник Организации Открыть справочник Отмена Прочие Сервис ✓ Справочник Контрагенты: Открыть справочник Справочник. ДоговорыКонтрагентов Открыть справочник Справочник.Номенклатура: Открыть справочник ✓ Справочник Валюты Открыть справочник По подсистемам.. Справочник Номенклатура' Ввести элемент справочника Справочник.Номенклатура: Ввести группу справочника Справочник ПодразделенияОрганизаций Ввести элемент справочни Справочник Контрагенты: Ввести элемент справочника Справочник Контрагенты: Ввести группу справочника Справочник ДоговорыКонтрагентов: Ввести элемент справочника Справочник ДоговорыКонтрагентов Ввести группу справочника Можно подвигать пункты, отключить лишние флажки. По кнопке построить, система создаст новый интерфейс, нам останется лишь назначить ему имя (например, Бухгалтер) и установить свойства. ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 45
“ 1СБухгалтерия 8". Конфигурирование и программирование от “А" до “Я" Имя Синоним Бухгалтер I Комментарий I Интерфейс Открыть > Переключаемый Свойство «Переключаемый» означает, что мы сможем добавить в какой-нибудь другой интерфейс пункт, при нажатии на который, интерфейс будет переключен на этот. Таким образом, пользователь, не выходя из программы, может переключаться между интерфейсами. В самом редакторе интерфейсов мы можем внести в построенный конструктором интерфейс необходимые изменения Список панелей интерфейса: Валюты <Новая> Интерфейс Бугадгеу, Т ипКнопки [Действие Подразделения организаций Контрагенты Основные: Договоры контрагентов Номенклатура Действие! Действие! Действие Представление: Текст Подсказка Пояснение Картинка Отображение СочетаниеКлавиш Добавить панель Удалить панель Г давнее меню Файл Операции Справочники Документы <Новая> Организации Сервис Окна Справка например, добавить «разделители» или создать подменю. Этим же редактором придется воспользоваться, когда мы добавим в нашу конфигурацию новые объекты и захотим включить их интерфейсы пользователей. Кроме главного меню интерфейс может содержать панели инструментов для быстрого доступа к основным функциям. Можно добавить такую панель с помощью кнопки «Добавить панель». Создадим панель и выведем в нее кнопки для быстрого доступа к справочникам Кошрагенты и Номенклатура и документам. ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3(a' lc.ru. 46
Основы администрирования : Интерфейсы Добавил ь панель Удалить панель f' Список панелей интерфейса i I лавное меню Инструменты ’’Осноьные Т ипКнопки Действие ▼ Справочник Контрагенты Открыть сгц ... х Форма <Основная> Действие Контрагенте (.J П редст явление: Текст Подсказка Пояснение картинка Отображение Сечет аниеКлавмш Контрагенты Контрагенты Открыть справочник Контрагенты Авто т... К онфигурация Модули Общие Объек метаданных Бухгалтерия_8_о1_А_до_Я ’ Общие Справочники Организации Валюты Н оменк лагтура ПодразделенияО рг анизациС Действие: Открыть справочник Контра... В В- Ввести элемент справочника Конт Ввести группу справочника Контр Контрагенты] । Дот оворыКонтрагентов ОК Отмена Справка Кнопки на панели могут быть представлены или надписями («Контрагенты») или картинками, или и тем и другим (свойство отображение). Если мы хотим, использовать в представлении картинки, их можно или взять из внешнего файла, или воспользоваться редактором Если мы хотим, чтобы этот интерфейс открывался, даже если в программе нет ни одного пользователю и этот интерфейс, как результат, никому не назначен, надо установить его основным интерфейсом. Делается это в свойствах корня дерева объектов конфигурации. ООО "lC-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 47
“7СБухгалтерия 8”. Конфигурирование и программирование от "А ” до "Я"' ’Основные: S | Имя ' Синоним I Комментарий Бухгалтерия_8_от_А_до_Я Бухгалтерия 8 от А до Я 5 Вариант встроенного языка \ Основная роль Модуль приложения ! Модуль внешнего соединения ; Модуль сеанса Режим управления блокировкой данных ; Дополнительные словари полнотекстового п> ’ Представление: < Основной стиль | Основной язык Русский Русский Открыть Открыть Открыть Автоматический 1 |Основной интерфейс |Бцхгалп Краткая информация Можно запустить пользовательский режим и посмотреть на результат 1 (^Предприятие - бухг ’s- файл Правка Операции Справочники Документы Сервис Цкна Справка ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 48
Основы иоминистрирования Рат Роли Пользователю надо не только помогать (делать наиболее удобный интерфейс), но и мешать иногда. Особенно если их. пользователей, много и у каждого свои обязанности, и как результат свои права. Для раздачи прав пользователям можно создать несколько ролей и назначать конкретному пользователю одни или несколько ролей, определяющих его полномочия в программе. Роли создаются и редактируются в ветке «Общие» / Роли. В конфигурации должна быть хотя бы одна роль с полными правами на все объекты. Назовем ее «Администратор» Дейстьия- '7 Права Шаблоны ограничений Объекты Бухгалтерия, 8_от_А_до_Я Й Общие Й Константы ! j—** ВалитаМчета I ОсмосчвяСтавкаНДС Й Справочники Й . Документы Hlft Журналы документов Отчеты 1 Обработки Планы видов характеристик -Т Планы счетов | Планы видов расчета Регистры сведекый Регистры накопления j— > Регистры бухгалтерии . Регистры расчета Бизнес-процессы Задачи Описание Право на чтение (Чтение) Чтение Права И «е Изменение и Просмотр ✓ Редактирование jrpанич»и; доступа Окно редактора прав позволяет задавать права на доступ как на уровне объектов (событий объектов: например, на изменение константы ОсновнаяСтавкаНДС), так и на уровне записей объектов (например, запретить изменение документов сделанных других пользователем, даже если у него такие же права). Управление доступом на уровне объектов осуществляется расстановкой флажков для соответствующих событий. Управление доступом на уровне записей требует использования запросов (глава «Табличная модель данных, язык запросов») и параметров сеанса (раздел «Параметры сеанса»). ООО lC-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@Jc.ru. 49
" 1С:Бухгалтерия 8". Конфигурирование и программирование от "А " до “Я" Пользователи Список пользователей ведется в меню «Администрирование» / Пользователи. Для каждого пользователя задаются Имя (по правилам имен объектов метаданных), метод аутентификации (пароль предприятия или Windows), пароль. На закладке «11рочие» выбираются доступные роли (можно несколько, тогда права складываются), основной интерфейс (если в нем предусмотрена возможность переключения, в процессе работы пользователь сможет его сменить) и язык (на каком языке будут отображаться синонимы объектов конфигурации). Теперь конфигуратор придется покинуть и войти заново уже под своим именем. Под ним же будем входить в режим отладки (пользовательский). ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 50
Осноггы администрирования : Активные пользователи Активные пользователи Там же в меню «Администрирование» / Активные пользователи есть возможность просмотреть работающих сейчас пользователей информационной базы. Действия- **.. Пользователь Приложение Начало работы - Компьютер Администратор Конфигуратор 08.02.200718 20 56 DK Соединение Количество 2 * * Причем, попросить их выйти из базы с помощью этой функции конфигуратора нельзя. Для этого нужно или воспользоваться механизмом конфигурации (в типовых решения такие предусмотрены) или службой серверов, которая входит в комплект поставки и инсталлируется в каталог программных файлов (1CV8 Servers.msc) *Й Консоль Действие Вид Избранное Окно Справка 0= 03 - х Console Root Центральные серверы 1С:Предприятия8.1 Центральные серверы ЮПредприятия 8.1 ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 51
“ 1С бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" Журнал регистрации Журнал регистрации позволяет хранить и анализировать действия пользователей с базой данных. Будет ли этот журнал вестись и, если - да, то какие события будут регистрироваться в нем, настраивается в конфигураторе «Администрирование» / Настройка журнала регистрации. Регистрировать в журнале события дц Не регистрировать Отмена Регистрировать ошибки Регистрировать ошибки, предупреждения Справка Регистрировать ошибки, предупреждения, информацию * Е^ллтрдювать ошибки, предупреждения информацию примрчания Разделять хранение журнала по периодам День » Сократить Если журнал регистрации ведется, то можно просмотреть события пользователя через меню «Администрирование» / Журнал регистрации । Действия’ - •! В it У' > ] Дата, время I I $ 10.02.2007 ! 14:16:37 1 $ i 10 02.2007 т 14 29:04 • , 10.02.2007 14 2905 \ t 10.02.2007 14 29:06 Пользователь Событие Компьютер Комментарий Приложение Соединение Администратор Сеанс.Начало DK Конфигуратор 1 Администратор ИнФормационнаяБ DK Конфигуратор 1 Администратор ИнФормационнаяБ DK Конфигуратор 1 Администратор Сеанс.Начало DK 1С Пред при 2 Статус транз... Метаданные л Транзакция Данне, j Представление данных » . 10.02.2007 i 14:29.35 Администратор DK Данные Изменение ЗаФиксиров Документ Реализация тов .. 10 022007 j Отбор: 1С Предпри 2 14:29 35 (1286J реализация товаров и ус л . Кнопки панели журнала позволяют устанавливать фильтры просмотра записей журнала. ООО ”1С-Учебный центр N 3", телефон (495) 253-58-38, e-mail uc3@ lc.ru. 52
Основы администрирования : Выгрузка и загрузка базы данных Выгрузка и загрузка базы данных Для целей архивирования и переноса информационной базы и конфигурации предусмотрены механизмы выгрузки и загрузки базы данных. Запускается выгрузка из конфигуратора меню «Администрирование» / Выгрузить информационную базу. Данные конфигурации и информационной базы сохраняются в файл с расширением *.dt. На момент выгрузки в информационной базе не должны работать пользователи. Загрузка осуществляется из следующего пункта меггю. Внимание, база, в которую загружается конфигурация, будет очищена и заменена базой из файла. Эти же механизмы позволят перенести данных с файл- на клиент- серверную версию и обратно. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 53
'ЧС:Бухгалтерия 8". Конфигурирование и программирование от "/Г до "Я” Основы программирования на платформе V8 Все наши предыдущие шаги были сделаны нами «мышкой». Единственное, зачем нам была нужна клавиатура - так это, чтобы писать имена объектов. Мы получили очень простую, но уже рабочую конфигурацию. Эта конфигурацию позволяет хранить справочную информацию и фиксировать события. Но позволяет делать это не очень удобно. Для того, чтобы описывать логику работы программы недостаточно возможностей только визуального программирования. Необходим язык описания алгоритмов работы. Такой язык в системе есть, и мы приступаем к его изучению. Объектная модель Система предлагает для описания алгоритмов объектный язык, манипулирующий объектами, значительная часть которых соответствует понятиям предметной области. Каждый объект имеет свои свойства и методы. Для изучения объектной модели нам пригодится синтакс-помощник (главное меню конфигуратора / справка / синтакс-помощник). Начнем изучение на примере справочника. Для работы со справочниками предусмотрен целый каскад объектов. Поставим себе задачу: нужно найти элемент справочника с известным нам названием и удалить его. Для этого нам потребуется задействовать сразу несколько объектов, созданных для управления справочником. Свойство глобального контекста «Справочники» вернет нам объект «СправочникиМенеджер», предназначенный для доступа ко всем справочникам конфигурации. Зная имя справочника, мы сможем получить объект «СправочникМенеджер», предназначенный для работы именно с этим справочником. Используя метод этого объекта «НайтиПоНаименованию» мы сможем спозиционироваться на элементе справочника (если, конечно, есть элемент с таким наименованием) и получить на него ссылку (объект «СправочникСсылка»), Если мы хотим не только «посмотреть» на этот элемент справочника, но и что-то с ним сделать (удалить, изменить), необходимо получить объект этою справочника, используя метод «ПолучитьОбъект». Теперь нам доступны всего методы объекта - в том числи и удаление. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗ© lc.ru. 54
Основы программирования на платформе \'8: Объектная модель ♦ Г лобальный контекст Ё) -4£ Свойства <Имя общего модуля) WSCcwokh Б иблиотекаКаргинок h- БиблиотекаМакетовОформленияКомпоновкиДанных БиблиотекаСтилей Б изнесП родессы Ь~ ВнешниеОбработки ВнешниеОтчеты Г лавныйИнтерФейс Г лавныйСтиль Ь~ Документы ЖурналыДокументов Задачи ИспользованиеРабочейДаты Константы КритерииДтбора Метаданные Обработки Отчеты ПараметрЗапуска i-~ ПараметрыСеанса f— Перечисления ПланыВиаовРасчета ПланыВидовХарактеристик ПланыОбмена ПланыСчетов ПолнотекстовыйПоиск !— ПользователиИнФормационнойБазы Последовательности РабочаяДата РегистрыБухгалтерии РегистрыНакопления РегистрыРасчета г- РегистрыСведений !•— РегламентныеЗадания !-•- СериализэторХОТО В СправочникСсылка <Имя справочника) □ Свойства гИмя реквизита) <Имя табличной части) Владелец Код Наименование П ометкаУдаления П редопределенный Родитель Ссылка ЭтрГ руппа В Методы Метаданные ПолноеНаименование ПолныйКод Получит ьОбъект ПолучитьФорму ПринадлежитЗлементу Пустая Скопировать УникальныйИдентификатор •Уровень ; Справочники! Фабрика)® ТО Ф оновыеЗадания 4^ Прикладные объекты Е Константы □ Критерии отбора Ё1-4^ Справочники □ СправочникиМенеджер Свойства Е- ^т Методы <Имя спра очника) СправочникМеноджерхИмя справочника) Свойства Методы Выбрать ВыбратьИерархически НайтиПоКоду Н гйтмП оН ^именованию] В Лр. СправочникОбъект <Имя справочника) Е Свойства В -ЛЛ- Методы Заблокирован Заблокировать Записать Заполнить Метаданные М одифицированность ПолноеНаименование ПолныйКод ПолучитьМакет П олучитьСсылкуН ового П олучитьФ орму П ринадлежитЭ лементу Прочитать Разблокировать Скопировать Уровень УстановитьНовыйКод УстановитьПометкуУ деления УстановитьСсылкуН ового ЭтоНовый Если записать это в модуль, мы получим строку': Справочники.Организации.НайтиПоНаименованию("Фабрика").ПолучитьОбъ ект().Удалить(); Обращение с использованием «[ ]» Если мы на знаем заранее имя объекта метаданных, например, не знаем, в каком справочнике искать (в организациях, контрагентах или валюте), можно воспользоваться другим обращением к объекту - через квадратные скобки, в которые можно передать ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 55
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" ИмяСправочника = "Организации"; Справочники[ИмяСправочника].НайтиПоНаименованию("Фабрика").Получит ьОбъект().Удалить(); ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 56
Основы программирования на платформе V8: Сервисные функции для написания кода Сервисные функции для написания кода В процессе разработки конфигурации нам придется писать зачастую довольно большие куски кода. Нам будет полезно знать следующие свойства конфигуратора. Шаблоны Шаблоны текста позволяют описать основные конструкции языка и вызывать их при наборе нескольких, как правило, первых символов конструкции. В шаблоны имеет смысл вынести условные операторы, объявления процедур и функций. Некоторые шаблоны уже написаны, и ими можно пользоваться. Сами шаблоны можно увидеть в конфигураторе Меню Сервис / Шаблоны текста. Хранятся шаблоны во внешнем файле. Файлов шаблоном может быть несколько, какие из них программа подключит можно настроить в окне шаблонов тонов] тлмм У' . , X Используемые Файлы шаблонов: I C:\Program FilesM cv81 \bin\genterr<pUu.st \ Действия ’ Изменить F2 р- Колировать Ctd*C i Показывать строку автозамены Новый Файл шаблонов Файлы шаблонов.. ОК Отмена Справка Стандартный файл шаблонов имеет атрибут «Только чтение». При желании можно снять его (если мы хотим изменить стандартные шаблоны) или создать еще один файл и подключить его в том же диалоге. ’ Действия » I В- Стандартные [ ] Управляющие Если (Если) ЕслиИначе (Если) Пока (Пока) Для (Для) Для каждого (Для[ Каждого]) ;..Процедура (Процедура]) : Процедура (с заголовком) (Процедура]) :--.функция (с заголовком) (Функ]ция]) Возврат I V Попытка (Попытка]) В Прикладные □ Прочие Так, например, описание шаблона «Если», которое приведено на картинке говорит о том, что если мы наберем слово «Если» (Автоматические заменять строку) в тексте модуля, и нажмем Enter ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 57
“ 1СБухгалтерия 8”. Конфигурирование и программирование от “А ” до "Я" или пробел, то шаблон задаст нам вопрос с текстом «Условие» и допишет остальную часть кода сам. Чтобы шаблоны заработали, необходимо установить в параметрах конфигуратора (Главное меню / Сервис / Параметры) свойство «Автозамена» в положение «Включить» Тексты Тексты модулей Форма Запуск 1 С:Предприятия Справка Редактирование Проверка Группировка Контекстная подсказка 1< лючевг ie слова Выделение цветом синтаксических конструкций 255. 0.0 Константы типа "Число" Константы типа "Строка" Константы типа "Дата" Идентификаторы Операторы Комментарии v Запретить выделение цветом [Включить Ширина табуляции Автоотступ: | Шрифт г Е \ Использовать автозамену в комментариях Заменять табуляцию при вводе 4 , (симе.) Синтаксический ▼ Courier New. 10 ОК Отмена Справка Контекстная подсказка Конфигуратор позволяет не держать в голове все тома встроенного языка с описанием свойств и методов объектов. И так строка, которую мы «собирали» используя синтаксический помощник в разделе Объектная модель, может быть написана почти без помощи клавиатуры. Достаточно включить в параметрах конфигуратора контекстную подсказку’. ООО "1С-Учебный центр N 3", телефон (495) 253-58-38, e-mail uc3@ lc.ru. 58
Основы программирования на платформе V8: Сервисные функции дчя написания кода Тексты Т ексты модулей Форма Запуск 1С Предприятия Справка Редактирование Проверка Группировка Контекстная подсказка ✓ ^519УЗГИческая подсказка при наборе ' Автоматическая подсказка при наборе Включать шаблоны в список подсказок и Включать ключевые слова в список подсказок ОК Отмена Справка Справочники.Организации.НайтиПоНаименованию("Фабрика").ПолучитьОбъ ект().Удалить(); ВыбратьИерархически НайтиПоКоду НайтиПоНаимен. занию НайтиПоРеквизиту П олучитьИ мяПредопреде ленного ПолучитьМакет ПолучитьСсылку П олучитьФ орму П олучитьФ ормуВыбора Диалог Модуль S Реквизиты ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 59
“ 1С:Бухгалтерия 8”. Конфигурирование и программирование от "А” до “Я” •» Наименование ПолноеНаименование ПолныйКрд ПплучитьОбьект П олучитьФ орму ПометкаУдаления Предопределенный вправе ии наитиПоНаимен&в&нию "Фабрика Удалить 'Фабрика' Удалить Скопировать Ссылка Уровень УстановитьНовы УстановигьПоме УстановигьСсыл ЭтоГруппа ЭтоНовый ЭтотОбъект Диалог Модуль Реквизиты Подсказка может вызываться при наборе точки, при наборе «=», когда значение свойства объекта или имеет тип булево или системное перечисление и при нажатии сочетания клавиш «Ctrl + Пробел». Последний вариант позволяет, набрав только часть имени, дописать остальное одним нажатием сочетания клавиш. Синтаксический контроль Для проверки модуля на наличие синтаксических ошибок целесообразно использовать синтаксический контроль модулей, , да V FESC который вызывается ПО кнопке Синтаксический контроль (Ctrl+F7) с панели инструментов, или меню Текст. Можно установить свойство «Проверять автоматически» в параметрах конфигурации. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 60
Основы программирования на платформе V8 Сервисные функции для написания кода Тексты Тексты моаупей Форма Запуск 1 (/Предприятия Справка Редактирование Проверка Группировка Контекстная подсказка Режимы проверки кк Работа клиентского приложения Работа внешнего соединения Работа сервера ТС Предгриягия »z Проверять автоматически ОК Отмена Применить Справка При установленном флаге программа сама будет запускать синтаксический контроль при закрытии каждого модуля. В большой конфигурации первый запуск синтаксического контроля модуля может занять несколько секунд, все последующие в том же сеансе работы в конфигураторе будут выполняться моментально. Форматирование модуля и другие полезные свойства Обратите внимание на панель инструментов, расположенную по умолчанию внизу слева под текстом модуля. /, «- Форматировать (Alt+Shift+F) КНОПКИ ЭТОЙ Панели ПОЗВОЛЯТ запомнить то место в модуле, над которым идет работа (управление закладками). Кнопка форматирования позволит придать модулю опрятный и, главное, «читабельный» вид - выровняет модуль «лесенкой». Кнопка перехода к строке позволит найти нужную строку по ее номеру. Перейти к определению Отдельно следует обратить внимание на функцию перехода к определению функции/процедуры. В процессе работы код конфигурации будет становиться все больше и начнет изобиловать вызовами процедур функций. Если процедура предопределенная или функция системная (глобального контекста), узнать про нее побольше поможет синтакс- помощник. Для этого достаточно установить курсор на имя ООО "JC-Учебный центр N 3". телефон (495) 253-58-38. е mail uc3@ lc.ru. 61
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от “Л ” до “Я" процедуры/функции и нажать ф ПриЗаписи Отказ Став р Копировать Сообщ иС ЗЬ< г Поиск в Синтакс-Помощнике I’imv •=» «Ctrl + I Ctrl+C 1 I Ctrl+FI ll Fl» Если же вызываемая процедура/функция написана в другом (общем) модуле конфигурации или в этом же, но где-то далеко и сразу не видна, поможет клавиша «F12». Кстати, чтобы перейти обратно, нужно нажать сочетание клавиш «Ctrl + Минус в левой части клавиатуры». ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 62
Основы програм мирования на платформе V8: События и обработчики событии События и обработчики событий В процессе своей работы в программе пользователь все время совершает какие-то действия - вводит новые элементы, удаляет старые, открывает, чтобы просмотреть и многое другое. И мы иногда хотим ему помочь, иногда помешать. Все действия пользователя можно контролировать специальными процедурами обработчиками событий. События есть у формы (и в зависимости от того, чья это форма состав их будет меняться), у справочника. у документа и т.д. Обработка события ПриОткрытии Действия- Код: Наименование: Родитель: Ставка НДС: ОК Записать Закрыть ?! 1 ► Основные: ► Редактирование: ► Использование: > Оформление ► Т екушая страница: I ► Окно: -События ; ПередОткрьгтием ПриОткрытии ПриОткрытии ПриПовторномОткрытии Давайте поможем пользователю заполнять справочник номенклатуры. В состав этого справочника входит реквизит СтавкаНДС, который должен по умолчанию заполняться ставкой «ОсновнаяСтавкаНДС». заполняться из константы Если мы хотим описывать правила работы формы, форма эта как минимум должна быть. Создадим форму элемента справочника Номенклатура. Вызовем окно свойств для всей формы (двойной щелчок по заголовку форму) и использую кнопку' открытия (лупа) справа от события «ПриОткрытии» создадим обработчик. Система добавит процедуру в модуль формы и пропишет ее название в событие формы. Текст процедуры должны описать мы. Процедура ПриОткрытии() Если ЭтоНовый() Тогда СтавкаНДС = Константы.ОсновнаяСтавкаНДС.Получить(); КонецЕсли; КонецПроцедуры Мы проверяем в условном операторе, является ли этот элемент справочника новыми (или пользователь открыл уже существующий, записанный в базу данных), если он новый, заполняем реквизит СтавкаНДС значением перечисления, которое получаем из константы. Если метод возвращает гип булево (истина/ложь) или свойство проверяется на равенство этому значению типа булево, то писать ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 63
“ 1С бухгалтерия 8". Конфигурирование и программирование от “Л " Оо “//" условие полностью не обязательно. Приведенные ниже варианты написания будут работать идентично. ЭтоНовый() = Истина ЭтоНовый() Свои события есть почти у каждого элемента управления и самого объекта. События формы и элементов управления можно увидеть в разделе «События» окошка свойств. События объекта описываются в модуле объекта (свойства справочника, закладка «Прочее»). Часть из них «дублируют» события формы, но в отношении объекта. Например, события «ПриЗаписи» и «ПередЗаписью» есть и у формы и у объекта. Но события формы будут выполняться только при интерактивной (пользователь нажал на кнопку Записать) записи элемента справочника, а события объекта - при любой (например, мы программно хотим создать элемент справочника). Обработчик события формы - обработчик события объекта Как можно использовать и те и другие? Пример: ставка НДС является для нас очень важным реквизитом, который обязательно должен быть заполнен. Что для этого можно предпринять? Во-первых, для поля ввода «Ставка НДС» в диалоге формы установить свойства «АвтоОтметкаНезаполненного» и «АвтоВыборНезаполенного». АвтоОтметкаНезаполненного ► Основные: j ’ Использование: КнолкаСпискаВыбора , КнопкаВыбора КнопкаОчистки I КнопкаРегулирования КнопкаОткрыгия IS АвтоВ ыборН езаполненного Это позволит подчеркнуть красным и обратить внимание пользователя на пустое поле, а в случае, если при обходе полей по Tab или Enter пользователь таки пройдет мимо, вернуть его назад и предложить выбрать значение. Если же все-таки он прошел мимо и нажал «ОК» следует отказаться от выполнения записи и сказать пользователю почему. Для этого создадим обработчик события формы «ПередЗаписью» Процедура ПередЗаписью(Отказ) Если СтавкаНДС.Пустая() Тогда Предупреждение("Заполните ставку НДС 1"); Отказ = Истина; Возврат; ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 64
Основы программирования на платформе V8 : События и обработчики событии КснецЕсли; КонецПроцедуры Событие «Перед записью» формы позволит «поймать» запись объекта из формы еще до того, как 6} дет выполнены события формы и объекта «При записи». А событие «При записи» мы опишем в модуле объекта (закладка «Прочее» свойств объекта справочник). Основные Иерархия Владельцы Данные Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными ► Прочее При Записи ПриЗаписи < ПриУстановкеНовогоКода; < ПриКопировании) Модуль объект < ОбработкаЗаполн* ния' Предопределень ' Перед Записью Действия * Содержимое обработчика Процедура ПриЗаписи(Отказ) Если СтавкаНДС.Пустая() Тогда Сообщить("Заполните ставку НДС!"); Отказ = Истина; Возврат; КонецЕсли; КонецПроцедуры Мы выбрали именно событие «При записи», чтобы в случае записи из формы обработчик события формы «Перед записью» не позволил бы вызвать проверку записи объекта. Если же будет запись элемента справочника программная, ну. например, с использованием кода: Товар = Справочники.Номенклатура.СоздатьЭлемент(); Товар.Наименование = "Новый"; Товар.Записать(); Сработает именно обработчик записи объекта и элемент записан в справочник не будет. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 65
"1С: Бухгалтерия 8 ". Конфигурирование и программирование от “А " до “Я" Подмена стандартного действия В наших накладных выбирается договор контрагента, по которому эта накладная проходит. Справочник ДоговорыКонтрагентов подчинен справочнику Контрагенты, и, кроме того, содержит реквизит «Организация». Сейчас поле ввода ДоговорКонтрагента в форме документа связано по владельцу с реквизитом документа Контрагент, что не дает пользователю выбрать договор другого контрагента. Но нам необходимо также запретить ему выбирать договор, заключенный с контрагентом от лица другой нашей организации (у нас их несколько, и организация тоже выбирается в документе). Для этого создаем обработчик события НачалоВыбора для поля ввода ДоговорКонтрагента. Процедура ДоговорКонтрагентаНачалоВыбора(Элемент, СтандартнаяОбработка) //1 СтандартнаяОбработка = Ложь ; //2 ФормаВыбора = Справочники.ДоговорыКонтрагентов.ПолучитьФормуВыбора(,Элемент,); //3 ФормаВыбора.ПараметрОтборПоВладельцу = Контрагент; //4 ФормаВыбора.СправочникСписок.Отбор.Организация.Значение = Организация; ФормаВыбора.СправочникСписок.Отбор.Организация.Использование = Истина; ФормаВыбора.СправочникСписок.Отбор.Организация.ВидСравнения = ВидСравнения.Равно; //5 ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Организ ация.Доступность = Ложь; //6 ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ДоговорКонтрагента; //7 ФормаВыбора.Открыть(); КонецПронедуры Прокомментируем процедуру: //1 отменяем стандартное исполнение событие (форма выбора справочника не откроется) //2 получаем из справочника форму выбора, причем владельцем этой формы назначаем Элемент - поле ввода. Владелец формы позволит нам получить выбранное в форме значение. Нам не нужно прописывать как «взять» из формы выбранное пользователем значение, достаточно ее просто открыть (//7) //3 Включаю в справочнике отбор по владельцу-контрагенту //4 Устанавливаю для табличного поля списка справочника отбор по организации. Каждый элемент отбора включает в себя «Имя отбора» ООО " IC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 66
Основы программирования ни платформе V8 События и обработчики событий (организация), значение отбора (передаю туда значение из реквизита Организация), Использование (Истина/Ложь) и Вид сравнения (равно). //5 Отменяю для пользователю возможность отключить отбор //6 Позиционируюсь в открывшемся списке на том договоре, который выбран в реквизите ДоговорКонтрагента сейчас //7 открываю форму для выбора. Результат - откроется форма для выбора договора (с отбором по контрагенту и организации). Если заглянуть в свойство Отбор этой формы, то увидим следующее. {Действия - 000000001 Дета 06.02.200713:27 П Т ерговый дом Контрагент I лавный поставщик Договор контрагента: Договор с поставщиком Номер: ® Организация Ввод на основании и событие ОбработкаЗаполнения Документы предназначены для оформления в программе событий хозяйственной жизни, но события эти, как правило, не происходят в одиночку, а иногда для оформления одного события требуется выписать несколько доку ментов. В таких ситуациях схожая по своему составу и содержанию информация должна бьпь последовательно введена в разные документы. Например, при оформлении продажи, мотут бьпь введены следующие документы: счет на оплату, накладная на отгрузку, счет фактура, платежное пор) чение от покупателя. Всех их объединяет, во- первых. последовательность (как правило, одна и та же при оформлении большинства операций) и значения нескольких реквизитов (организация, покупатель, договор и др.). Для решения задачи хранения возможной последовательности ввода документов, предусмотрен механизм ввода на основании. Л для ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(p lc.ru. 67
“IC:Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" описания алгоритма заполнения реквизитов, создаваемого на основании документа, существует событие документа и ею обработчик ОбработкаЗаполнения. Возврат товаров Решим задачу: необходимо помочь пользователю заполнить документ «Поступление товаров и услуг» для операции возврата товаров от покупателя. Покупатель не может вернуть нам услуги, а вот товары - запросто. Для этого в документе «Поступление товаров и услуг» указываем, что он может вводиться на основании документа «Реализация товаров и услуг». Журналы Формы I Макеты I Подсистемы I ► Ввод на основании Права I Интерфейсы Обмен данными I Прочее ____________________ Является основанием для: В.. Конструктор ввода на_основании | Действия » <Назод Далее> Закрыть Справка Для написания обработчика события документа воспользуемся конструктором РеализацияТ оваровУслуг Объект являющийся ^снованием: Реквизиты объекта основания: Ссылка Организация Контрагент ДоговорКонтрагента 5 Поле ? Организация I Контрагент j ДоговорКонтрагента I « Ответственный j Т овары Номенклатура { Товары Пена ; Т овары Количество i Товары Сумма ' . Услуги Номенклатура | Услуги Содержание * . Услуги Цена Услуги Количество Услуги Сумма РеализацияТ оваровУслуг О снование. Организация Основание Контрагент О снование. ДоговорКонтрагента Т екСтрокаТ оварыНоменклатура Т екСтрокаТ овары. Цена Т екСтрокаТовары Количество Т екСтрокаТ овары.Сумма Дале» Заполнить выражения Очистить выражения ОК Отмена Справка > д Результат работы конструктора - процедура в модуле объекта документ «Поступление товаров и услуг». ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 68
Основы программирования на платформе V8 : События и обработчики событий Процедура ОбработкаЗаполнения(Основание) Если ТипЗнч(Основание) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда ДоговорКонтрагента = Основание.ДоговорКонтрагента; Контрагент = Основание.Контрагент; Организация = Основание.Организация; Для Каждого ТекСтрокаТовары Из Основание.Товары Цикл НоваяСтрока = Товары.Добавить(); НоваяСтрока.Количество = ТекСтрокаТовары.Количество; НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура; НоваяСтрока.Сумма = ТекСтрокаТовары.Сумма; НоваяСтрока.Цена = ТекСтрокаТовары.Цена; КонецЦикла; КонецЕсли; КонецПроцедуры Прокомментируем процедуру. На параметр Основание будет получена ссылка документа-основания. Далее, зная имена реквизитов документа основания несложно заполнить реквизита документа, в котором мы находимся. Готово. - .г.< уу’-С?,./ • т' • ’ ... Л--.-А -'sb 1 Действия хо И % 1 S» - Г, ? Печать 1 Дата Номер Организация Поступление товаров и услуг | л I v 07.02 200716:38:41 00000.. Фабрика . I1''1.11''’- ИЯИ 0сновной договор Кроме интерактивного вызова события (через ввод на основании) предусмотрена возможность и программного его вызова. Процедура СоздатьИЗаполнитьПоступление(Кнопка) Поступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); Поступление.Заполнить(Реализация); ФормаПоступления = Поступление.ПолучитьФорму(); ФормаПоступления.Открыть(); КонецПроцедуры Процедура создает новый документ «Поступление товаров и услуг» и с помощью метода Заполнить() вызывает обработчик ОбработкаЗаполнения. В качестве параметра (в примере - Реализация) в метод передается ссылка на документ «Реализация товаров и услуг». Другие события Кроме событий объектов, существуют события, относящиеся к работе программы в целом. Это события начала работы в программе или завершения. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 69
” 1СБухгалтерия 8”. Конфигурирование и программирование от “А" до "Я" * Основные Имя Вариант встроенного языка Русский Основная роль Модуль приложения Открыть Модуль внешнего соединения Открыть Модуль сеанса шкрьпс Ьуигалтерия_8_огг_А_до_Я Синоним Б ухгалтерия 8 от А до Я Комментарий Эти события можно «отловить» в модуле приложения (интерактивный запуск) или в модуле сеанса (программное открытие приложения). Более подробно события приложения будут рассмотрены позднее. 5. Практикум Обеспечьте в документах при смене контрагента и/или организации проверку и при необходимости очистку поля ДоговорКонтрагента. Если договор контрагента выбран, то при изменении контрагента надо проверить, является ли вновь выбранный контрагент владельцем выбранного договора (выбрали его же), если да — договор оставить тот же. Если нет — необходимо очистить поле «Договор контрагента». При изменении организации надо проверить, организацию договора, и если договор заключен от лица другой организации, очистите поле «Договор контрагента». 6. Практикум Обеспечьте ввод документа «Поступление товаров и услуг» на основании элемента справочника «Договоры контрагента». При этом в документе должны заполняться поля «Договор контрагента», «Контрагент», «Организация». ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 70
Основы программирования на платформе V8 : Процедуры и функции Процедуры и функции Кроме процедур, являющихся обработчиками событий модули могут содержать процедуры и функции, созданные разработчиком конфигурации, и вызываемые им по необходимости. В нашей конфигурации есть документ «Поступление товаров и услуг», работа с которым представляется затруднительной из-за отсутствия в нем элементарной арифметики - при вводе цены и количества сумма не рассчитывается. В документе две табличные части, почти одинаковые. И заполнение суммы в них тоже должно происходить одинаково. Расчет должен происходить в момент изменения цены и количества. Если бы расчет выполнялся только при изменении одного поля, например, количества табличной части Товары, то сам расчет можно было бы поместить в процедуру обработчик события «ПриИзменении» Процедура ТоварыКоличествоПриИзменении(Элемент) Тд = ЭлементыФормы.Товары.ТекущиеДанные; Тд.Сумма = Тд.Цена * Тд.Количество; КонецПроцедуры ЭлементыФормы - коллекций всех элементов управления формы. На переменную Тд мы получаем данные из текущей строки табличного поля, с которыми и выполняем арифметические действия. Но в нашем случае, когда один и тот же расчет должен происходить не только при изменении разных полей, но и при изменении в разных табличных полях (товары, услуги), имеет смысл вынести его в отдельную процедуру. Процедура эта будет вызываться из обработчиков событий ПриИзменении полей ввода Цена и Количество обоих табличных частей. Процедура РасчетСтроки(Тд) Тд.Сумма = Тд.Цена * Тд.Количество; КонецПроцедуры //обработчики событий полей ввода табличных частей Процедура ТоварыКоличествоПриИзменении(Элемент) Тд = ЭлементыФормы.Товары.ТекущиеДанные; РасчетСтроки(Тд); КонецПроцедуры Процедура ТоварыЦенаПриИзменении(Элемент) Тд = ЭлементыФормы.Товары.ТекущиеДанные; РасчетСтроки(Тд); КонецПроцедуры Процедура УслугиКоличествоПриИзменении(Элемент) Тд = ЭлементыФормы.Услуги.ТекущиеДанные; РасчетСтроки(Тд); КонецПроцедуры Процедура УслугиЦенаПриИзменении(Элемент) Тд = ЭлементыФормы.Услуги.ТекущиеДанные; РасчетСтроки(Тд); ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 71
“ ] С: Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" КонецПроцедуры Процедура РасчетСтроки() получает в качестве параметра данные текущей строки табличного поля. Т.к. все параметры по умолчанию передаются по ссылке (чтобы передать параметр по значению, необходимо ключевое слово «Знач» РасчетСтроки(Знач Тд)), то при изменении параметра в процедуре, изменяются и данные строки. 7. Практикум Внесите необходимые для автоматического расчета суммы в табличных частях изменения в документ «Реализация товаров и услуг». 8. Практикум Документ «Поступление товаров и услуг» имеет две табличные части. Обеспечьте возможность пользователю просмотра в диалоге формы итога по обеим табличным частям. Кроме того, пользователь должен иметь возможность видеть итоги по всему документу и в форме списке документа
Основы программирования на платформе V8 : Табличный документ и печатные формы Табличный документ и печатные формы Объект «Табличный документ» предназначен для вывода информации на экран и принтер. Основное его использование это подготовка печатных форм первичных документов и отчетов. Табличные документы могут являться объектом конфигурации (например, макеты объектов) и создаваться временно для демонстрации пользователю печатной формы. Познакомимся с табличным документом на примере подготовки печатной формы для документа «Реализация товаров и услуг4». Запустим с закладки «Макеты» документа конструктор печати. Процедуру располагаем в модуле объекта. Включаем в печатную форму обе табличные части . Количество Реквизит» табличной части Услуги Номенклатура ... Нема 'Назао Долее? Подвал таблицы оставим пустым, включаем защиту таблицы и только просмотр. 4 Внимание’ Типовое решение «Бухгалтерия предприятия» использует для подготовки печатных форм запрос и этот подход можно считать более оптимальным Мы используем методы объекта только в методических целях. ООО "IC-Учебный центр N 3”. телефон (495) 253-58-38. е mail uc3@ lc.ru. 73
“ 1СБухгалтерия 8". Конфигурирование и программирование от “А ” до "Я” псимла Реишчигы до-меита ESEmSESS Организация контрагент ~ Лг оесрКонграг ентс v/^-- А* А«- ’ -t~*i 'Й«?%£й£«й Еызое пооиеаур» • Неилеелятю еызое лроиаоуры Печатать оез пмдмоитвлькзго просмотра «г ТаблииА*|тольь в просмотр" * -Зашита таблицы - 5™®“.J Долее Отмене Сгрееео <Неем ОК Отмена (jp»s Т.к. процедура будет расположена в модуле объекта, то кнопку печати конструктор не добавит, это мы должны будем сделать сами. Конструктор подготовил макет и написал процедуру работы с ним. Макет, это, по сути, «свалка кирпичей» из которых будет построена печатная форма. Каждый «кирпичик» прямоугольной формы называется областью. Те области, из которых мы будем строить печатную форму, имеют свои имена (имя можно назначить или для одной/группы ячеек или для строки или для столбца, в нашем случае имена назначены для строк). Имена строк отображаются в самой левой части таблицы. Каждая именованная область содержит одну или несколько ячеек. Каждая ячейка имеет свои уникальные свойства, основное из которых для нас сейчас - это «Заполнение». Те ячейки, которые должны быть выведены в результирующий табличный документ «как есть» имеют значение «Текст». Например, ячейка, в которой написано название документа ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. е-mail uc3@ lc.ru. 74
Основы программирования на платформе V8: Табличный документ и печатные формы Текст Зашита ГиперСсылка » Макет Заполнение Реализация товаров и услуг ?! I Ячейки ▼ Основные: Размещение? екст а Авто Имя R2C2 Другие, которые должны выводить вычисляемые значения, имеют свойство «Параметр» или «Шаблон». Например, ячейка, где будет выводиться значение номера (не заголовок Номер, а та, что справа) документа. I Имя R5C3 I । Защита I Г иперСсылка ’•Макет; | Заполнение Параметр | Параметр Номер | ПараметрРасшиФровки ИспользованиеРасшифровки Ячейка »» а Все параметры ячеек одной области образуют коллекцию, которую можно заполнить (обращаясь к параметрам по именам). Свойства ячейки таблицы позволят также управлять форматированием и оформлением ячеек. Более подробно об этом можно прочитать в книге «Конфигурирование и администрирование» в разделе, посвященному табличному редактору. В модуле объекта конструктором была написана процедура работы с этим макетом. Процедура Печать() Экспорт ТабДок = Новый ТабличныйДокумент; //1 Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("Печать"); //2 // Заголовок Область = Макет.ПолучитьОбласть("Заголовок"); //3 ТабДок.Вывести(Область); //4 // Шапка Шапка = Макет.ПолучитьОбласть("Шапка"); //3 Шапка.Параметры.Заполнить(ЭтотОбъект); //5 ТабДок.Вывести(Шапка); //4 // Товары Область - Макет.ПолучитьОбласть{"ТоварыШапка"); //3 ТабДок.Вывести(Область); //4 ОбластьТовары = Макет.ПолучитьОбласть("Товары"); //3 Для Каждого ТекСтрокаТовары Из Товары Цикл //6 ОбластьТовары.Параметры.Заполнить(ТекСтрокаТсвары); //5 ТабДок.Вывести(ОбластьТовары); //4 ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 75
С:Бухгалтерия 8 ". Конфигурирование и программирование от “А” до "Я" КонецЦикла; // Услуги Область = Макет.ПолучитьОбласть("УслугиШапка"); //3 ТабДок.Вывести(Область); //4 ОбластьУслуги - Макет.ПолучитьОбласть("Услуги"); //3 Для Каждого ТекСтрокаУслуги Из Услуги Цикл //6 ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги); //5 ТабДок.Вывести(ОбластьУслуги); //4 КонецЦикла; ТабДок.ОтображатьСетку = Ложь; //7 ТабДок.Защита = Истина; ТабДок.ТолькоПросмотр = Истина; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); //8 КонецПроцедуры Попробуем вычленить из этой процедуры самое главное ТабДок = Новый ТабличныйДокумент; //1 Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("ИмяМакета"); //2 Область = Макет.ПолучитьОбласть("ИмяОбласти"); //3 Область.Параметры.Заполнить(Данные); //5 / /или Область.Параметры.ИмяПараметра1 = Значение!; Область.Параметры.ИмяПараметра2 = Значение2; Область .Параметры.ИмяПараметраИ = Значением,- ТабДок.Вывести(Область) ; //4 ТабДок.Показать(); //8 Разберем сначала второй, упрощенный вариант. //1 Начинается все с того, что мы создаем новый табличный документ, в который будем выводить результат, и который покажем пользователю. //2 Получаем из объекта макет, тот самый, где определены именованные области и в их ячейках заданы параметры. //3 Из макета получаем область, содержащую параметры и оформление ячеек. //4 эта область может или сразу быть выведенной в табличный документ (если там нет ячеек типа параметр, а только заголовки) //5 или сначала параметры этой области должны быть заполнены. Для этого может использоваться метод Заполнить(), в качестве параметра которого передается объект, свойства которого заполнены, а имена этих свойств совпадают с именами параметров. //или можно заполнить каждый параметр отдельно, обращаясь по его имени. //8 показываем пользователю готовый табличный документ. В случае с нашим документом, мы заполняем параметры ячеек в каждой области или значениями реквизитов документа ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail ue3@ lc.ru. 76
Основы программирования на платформе V8 Табличный оокумент и печатные формы (ДокументОбъект) или значениями реквизитов строки табличной части документа, которую обходим циклом (//6). Чтобы увидеть работу конструктора мы должны создать в диалоге формы документа кнопку (например, на командной панели), привязать к ней обработчик события «нажатие» и вызвать из нее процедуру 11ечать. Й ! ▼ Основные: П ечатьИ зФ ормы Действие П ечатьИ зФ ормы Имя > \ ...J Печать ОК Записать Закрыть Т ипКнопки Доступность Действие Процедура ПечатьИэФсрмы(Кнопка) Печать(); КонецПроцедуры Г отово Реализация товаров и услуг । Номер 000000001 ; Дата 06.02 200713:52.11 ; Организация Торговый дом Контрагент Главный покупатель Номенклатура Цена Количество Cyi.ii.ia Табуретка 50 2 100 Номенклатура Цена Количество Сумма Содержание Доставка Г ю 1 10 к покупателю 9. Практикум Добавьте в печатную форму в самый низ еще одну строку, в которой будет выводиться подпись директора. ФИО директора должны храниться в реквизите справочника «Организации» (строка 50 символов). Под последней строкой накладной должна выводиться новая строка «Директор/Иванов И. И./» 10. Практикум Разработайте печатную форму справочника «Контрагенты», в которой должны выводиться все реквизиты справочника, реквизиты табличной части «Контактные лица» и все договоры каждого контрагента. .... -..-.......... ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 77
" 1С:Бухгалтерия 8". Конфигурирование и программирование от “А " до "Я” Глобальный и локальный контекст Все процедуры, которые мы до этого момента писали, могли исполняться только в локальном контексте того модуля, где находились. Ну, или почти все. Например, процедура Печать(), расположенная в модуле объекта документа «Реализация товаров и услуг» имеет ключевое слово Экспорт. Экспортные процедуры, функции, переменные Процедура, функция, переменная, отмеченная ключевым словом Экспорт, расширяют возможности того объекта, в котором находятся. Экспортная процедура может быть расположена в модуле объекта (как процедура Печать документа «Реализация товаров и услуг»), или в модуле формы (и тогда расширяются возможности формы объекта). Мы смогли обратиться к процедуре Печать(), расположенной в модуле объекта документ из модуля его формы только благодаря тому, что процедура эта экспортная. Благодаря тому же мы можем вызвать ее из любого другого модуля, главное получить объект документа. Предоставим пользователю возможность печати документа из формы списка документа. Создадим форму списка документа и разместим на панели инструментов новую кнопку, связанную с процедурой, обработчиком события «Нажатие» Процедура ПечатьИзСписка(Кнопка) Тд = ЭлементыФормы.ДокументСписок.ТекущиеДанные; Если Тд - Неопределено Тогда Возврат; КонецЕсли; РеализацияСсылка - Тд.Ссылка; РеализацияОбъект = РеализацияСсылка.ПолучитьОбъект(); РеализацияОбъект.Печать(); КонецПроцедуры Мы получаем из коллекции элементов формы текущие данные табличного поля «ДокументСписок». Если в списке есть хотя бы один документ и на нем спозиционирован курсор, то, используя эти текущие данные, мы получим ссылку на документ. Используя метод объекта ДокументСсылка мы поточим объект документа и сможем выполнить экспортную процедуру Печать(), которая, таким образом, становиться, как бы новым методом объекта «Реализация товаров и услуг». Если бы процедура печать была расположена в форме документа, мы бы тоже смогли ей воспользоваться. Для этого процедура должна быть ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 78
Основы программирования на платформе V8 : Глобачьный и локальный контекст объявлена экспортной, потом мы бы получили форму документа и обратились к процедуре. Кроме экспортный процедур в модулях могут объявляться экспортные функции и экспортный переменные. Общие модули Экспортные процедуры и функции могут расширять не только методы отдельных объектов, но и глобальный контекст всей программы. Такие экспортные процедуры и функции могут быть доступны из любого модуля системы. Таким образом, мы можем создать свою библиотеку процедур и функций. В нашей конфигурации есть два документа - Поступление товаров и услуг и Реализация товаров и услуг. Оба документа очень похожи (мы их делали копированием). И арифметические действия в табличной части надо производить тоже одинаковые: процедура РасчетСтроки() делает одно и тоже. Можно вынести ее в общий модуль. Создадим новый общий модуль (Конфигурация / ветка Общие / Общие модули). » Основные: Имя ПроцедурыЛокументов Синоним Процедуры документов Комментарий Подсистемы Бухгалтерия_8_от_А_до_Я ; Модуль Открыть s Г лобальный ’ Клиент ч/ ; Сервер s Внешнее соединение i Привилегированный 1___________— _______________-_____. .______-______________ Общий модуль не может содержать раздела объявления переменных и тела модуля. В нем есть только раздел процедур и функций. Подгружается он системой или сразу при старте (флаг Глобальный), или при первом обращении5. Если модуль отмечен как глобальный, то можно обращаться к экспортным процедурам и функциям модуля непосредственно по имени процедуры или функции. Если модуль не глобальный, обращение к процедуре или функции осуществляется через имя модуля. Удалим процедуру из модуля формы документы и перенесем ее в общий модуль с ключевым словом экспорт. Процедура РасчетСтроки(Тд) Экспорт Тд.Сумма = Тд.Цена * Тд.Количество; 5 Деление модулей на глобальные и не глобальные доступно с версии 8.1. В версии 8.0 все общие модули глобальные. ООО " lC-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 79
“ 1СБухгалтерия 8". Конфигурирование и программирование от "А" до "Я” КонецПроцедуры Если сделать модуль глобальным, то переписывать вызов процедуры не придется вообще, если же мы хотим, чтобы модуль подгружался, только если обратились к его процедурам и функциям, то модуль остается не глобальным, а обращение в форме документа изменится6: ПроцедурыДокументов.РасчетСтроки(Тд); Готово. Теперь оба документа могут использовать одну и туже процедуру. 11. Практикум Вынести в общий глобальный модуль процедуру НачалоВыбора для поля ДоговорКонтрагента документов Поступление товаров и услуг и Реализация товаров и услуг. Общие макеты Продолжая разговор про исключение из конфигурации дублей объектов и механизмов, начатый в разделе Общие модули рассмотрим возможность создавать и использовать общие макеты. Сделаем механизм печати документов Поступление товаров и услуг и Реализация товаров и услуг. Сейчас процедура печати расположена в модуле объекта «Реализация товаров и услуг», макет расположен в этом же документе. Создаем новый общий макет (Общие / Общие макеты), называем его «МакетПакладной». Вносим незначительные изменения. В той ячейке, где раньше было написано название документа «Реализация товаров и услуг» пишем «Накладная» и делаем у ячейки тип заполнения параметр. В этот параметр мы выведем имя документа, который сейчас печатается (поступление... или реализация...). 6 Обращение к процедуре не глобального модуля через имя модуля, используется, начиная с версии платформы 8.1. Для версии 8.0. где все общие модуль глобальные, имя модуля писать не надо. ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 80
Основы программирования на платформе V8: Глобальный илокатьный контекст Теперь дело за процедурой Печать, расположенной в модуле объекта документа «Реализация товаров и услуг». Переносим ее в общий глобальный модуль. Процедуру придется изменить. Процедура ПечатьНакладной(Накладная) Экспорт //1 ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьОбщийМакет("МакетНакладной"); //2 // Заголовок Область = Макет.ПолучитьОбласть("Заголовок"); Область.Параметры.Накладная = Накладная.Метаданные().Синоним; //3 ТабДок.Вывести(Область); // Шапка Шапка - Макет.ПолучитьОбласть("Шапка"); ШапКа . Параметры.Заполнить (Накладная) ; //4 ТабДок.Вывести(Шапка); // Товары Область = Макет.ПолучитьОбласть("ТоварыШапка"); ТабДок.Вывести(Область); ОбластьТовары = Макет.ПолучитьОбласть("Товары"); Для Каждого ТекСтрокаТовары Из Накладная.Товары Цикл //5 ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары); ТабДок.Вывести(ОбластьТовары); КонецЦикла; // Услуги Область = Макет.ПолучитьОбласть("УслугиШапка"); ТабДок.Вывести(Область); ОбластьУслуги = Макет.ПолучитьОбласть("Услуги"); Для Каждого ТекСтрокаУслуги Из Накладная.Услуги Цикл //5 ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги); ТабДок.Вывести(ОбластьУслуги); КонецЦикла; ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Истина; ТабДок.ТолькоПросмотр - Истина; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); КонецПроцедуры Прокомментируем изменения в модуле. //1 11роцедура в качестве параметра будет получать объект документа. //2 Г 1олучаем вместо макета документа - общий макет //3 Используя Метаданные . получаю имя документа и записываю его в параметр. //4 заполняем параметры области значениями реквизитов полученного до ку мента //5 перебираем строки табличных частей полученного на параметр доку мента. Изменится также вызов процедуры из формы документа Процедура ПечатьИзФормы(Кнопка) ПечатьНакладной(ЭтотОбъект); 7 Подробнее в разделе курса «Метаданные» ООО "IC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 81
“ 1С:Бухгалтерия 8 ". Конфигурирование и программирование от “А " до “Я” КонецПроцедуры И из формы списка Процедура ПечатьИзСписка(Кнопка) Тд = ЭлементыФормы.ДокументСписок.ТекущиеДанные; Если Тд = Неопределено Тогда Возврат; КонецЕсли; РеализацияСсыпка = Тд.Ссылка; РеализацияОбъект = РеализацияСсыпка.ПолучитьОбъект(); ПечатьНакладной(РеализацияОбъект); КонецПроцедуры Механизм готов, можно подключать его ко второму документу. 12. Практикум Подключить механизм печати ко второму документу Метаданные Объект метаданные предназначен для получения информации об объектах дерева конфигурации. С его помощью можно узнать какие справочники есть в текущей конфигурации, как они называются, какая длина номера у них... в общем, все, что записано в свойствах объектов дерева конфигураций. Чаще всего объект используется для получения информации об имени объекта (как, например, в примере темы «Общие макеты») или для проверки наличия объекта (свойства) при написании универсальных процедур. Например, в теме «Подмена стандартного действия» рассматривался пример отбора в Справочнике договоров но владельцу (контрагенту) и организации. Можно предположить, что механизм включения отбора пригодится не только в документе «Поступление товаров и услуг», но и в других документах. А может быть и не только в документах. Вывод: неплохо бы вынести этот механизм в общий модуль. 11о вполне может так получиться, что в отдельных объектах не будет реквизита «Организация». Как проверить есть или нет в документе такой реквизит? С помощью метаданных. Итак: вынесем отбор в справочнике договоры в общий модуль. Для этого напишем в обработчике события НачалоВыбора поля ввода ДоговорКонтрагента вызов процедуры: ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 82
Основы программирования на платформе V8 : Глобальный и чока1ьный контекст НачалоВыбораЗначенияДоговораКонтрагента(ЭтотОбъект, Элемент, Контрагент, ДоговорКонтрагента, СтандартнаяОбработка); А саму процедуру разместим в общем глобальном8 модуле Процедура НачалоВыбораЗначенияДсговораКонтрагента(ДокументОбъект, ЭлементФормы, Контрагент, ДоговорКонтрагента, СтандартнаяОбработка) Экспорт СтандартнаяОбработка = Ложь; ФормаВыбора - Справочники.ДоговорыКонтрагентов.ПолучитьФормуВыбора(,ЭлементФормы , ) ; ФормаВыбора.ПараметрОтборПоВладельцу = Контрагент; //1 МетаданныеДокумента = ДокументОбъект.Метаданные(); //2 Если НЕ МетаданныеДокумента.Реквизиты.Найти("Организация") •= Неопределено Тогда ФормаВыбора.СправочникСписок.Отбор.Организация.Значение = ДокументОбъект.Организация; ФормаВыбора.СправочникСписок.Отбор.Организация.Использование = Истина; ФормаВыбора.СправочникСписок.Отбор.Организация.ВидСравнения = ВидСравнения.Равно; ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.О рганизация.Доступность = Ложь; КонецЕсли; ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущаяСтрска = ДоговорКонтрагента; ФормаВыбора.Открыть() ; КонецПроцедуры В процедуру добавилась всего пара строк: процедура получает на себя среди прочего объект документа (первый параметр), и //1 используя его свойство Метаданные //2 пытается найти в документе реквизит по имени Организация. Если такой реквизит найден - включает отбор по его значению. Параметры сеанса Продолжая разговор о глобальном контексте можно вспомнить о задачах, когда возникала необходимость сохранить в течение сеанса работы в программе какие-то временные значения в памяти компьютера пользователя. * Свойство модуля «глобальный» доступно начиная с версии 8 1 ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 83
“7СБухгалтерия 8". Конфигурирование и программирование от "А ” до “Я" Отличия от констант состоит в том, что это значение храниться не базе данных, а в оперативной памяти и, как результат, для каждого пользователя может быть отлично. Можно сравнить параметр сеанса с экспортной переменной, объявленной в разделе объявления переменных модуля приложения, в которую можно что-то положить, например, при начале работы программы, а затем в течение сеанса использовать. Отличия в том, что на параметры сеанса можно ставить условия в запросе ограничения доступа роли на уровне записей. Пользователи Решим задачу учета документов по ответственным пользователям. Мы хотим в каждом документе запоминать, какой пользователь его ввел. Это может, например, пригодится для быстрого поиска документа по его автору. Список пользователей базы данных вводится в конфигураторе9 и хранится в отдельном файле. Кроме этого списка пользователей с административной информацией можно вести еще один список с информацией, имеющей отношение к базе данных этой конфигурации. Использовать для этого можно объект конфигурации «Справочник», а чтобы не приходилось добавлять пользователей в оба списка, справочник можно заполнять автоматически при входе в систему. Добавим в конфигурацию новый справочник «Пользователи», для которого установим длину кода 50 (в нем мы будем хранить краткое имя пользователя, которое задается в списке пользователей конфигурации), и длину наименования 100 символов. Ги.новные Иерархия Владельцы Длина кода ► Данные Нумерация Формы Макеты Длина наименования Тип кода Число 100 Основное представление В виде кода В воде наименования Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Действия Заполнять этот справочник и запоминать текущего пользователя мы будем при начале работы системы. 9 ведение списка пользователей рассматривается в разделе «Основы администрирования» ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 84
Основы программирования на платформе V8: Глобальный и юкачъный контекст Хранить текущего пользователя мы будем в параметре сеанса «ТекущийПользователь», тип СправочникСсылка. Й - i Общие - Подсистемы Й Общие модули i Параметры сеанса Т екущийПось-о&атель! Й *4 Роли Планы обмена К ритерии отбора Подлиски на события Регламентные задания Й Общие Формы Й Интерфейсы Основные: Т екущийПользовэтель | Синоним Т екущий пользователь Комментарий i Подсистемы. Бухгалтерия_8_от_А_до_Я ''Тип данных: | Тип СправочникСсылка.Пользователи L____________,_______________________ Имя fl »jMfetp сеанса В модуле приложения описываем обработчик события «ПриНачалеРаботыСистемы» Процедура ПриНачалеРаботыСистемы() //1 ИмяПользователя = ИмяПользователя(); ПолноеИмя = ПолноеИмяПользователя(); //2 Если ПустаяСтрока(ИмяПользователя) Тогда ИмяПользователя = "НеАвторизован"; ПолноеИмя = "Не авторизован"; КонецЕсли; //3 ТекущийПользователь = Справочники.Пользователи.НайтиПоКоду(ИмяПользователя); ПустойПользователь = Справочники.Пользователи.ПустаяСсылка(); //4 Если ТекущийПользователь = ПустойПользователь Тогда ОбъектПользователь = Справочники.Пользователи.СоздатьЭлемент(); ОбъектПользователь.Код = ИмяПользователя; ОбъектПользователь.Наименование = ПолноеИмя; ОбъектПользователь.Записать(); ТекущийПользователь = ОбъектПользователь.Ссылка; КонецЕсли; //5 ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь; КонецПроцедуры Прокомментируем модуль: //I используя функцию сеанса работы получаем имя и полное имя пользователя, заданные в конфигураторе //2 если пользователь не авторизовался, запоминаем в переменных строю «не авторизован», именно таким пользователем и будут помечаться все документы //3 ищем в справочнике Пользователи элемент, код которого соответствует краткому имени пользователя конфигуратора ООО "Ю-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 85
"1С: Бухгалтерия 8 ". Конфигурирование и программирование от "А ” до "Я” П4 если не на находим, то создаем новый элемент справочника //5 ссылку' на который и записываем в параметр сеанса. Осталось создать в документах новый реквизит «Ответственный», типа «СправочникСсылка.Пользователи». Имя 'Основные: Ответственный Синоним Ответственный комментарий Индексировать Не индексировать Полнотекстовый Использовать 'Тип данных: Тип L травочникСсылка Пользователи И размещаем поле ввода для него в диалоге формы. В модуле формы документа создаем обработчик события ПриОткрытии Процедура ПриОткрытии() Если ЭтоНовый() Тогда Ответственный = ПараметрыСеанса.ТекущийПользователь; КонецЕсли; КонецПроцедуры В обработчике для нового документа считываем из параметров сеанса значение текущего пользователя и записываем реквизит документа. ООО ”1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 86
Основы програм мирования на платформе \'8: Универсальные коллекции значении Универсальные коллекции значений В процессе программирования возникают задачи временного хранения массивов информации иногда одномерных (некоторое количество строк) многомерных (некоторое количество строк и колонок для каждой строки). Для решения этой задачи предназначено несколько объектов, объединяемых в класс «Универсальные коллекции значений». У всех объектов этого вида есть ряд общих методов и свойств. Объединяет их также и то, что все эти объекты предназначены для хранения в оперативной памяти коллекций значений. В процессе программирования мы будем довольно часто их использовать, а пока же просто познакомимся с ними на отвлеченных от решаемой задачи примерах. Массив Массив - упорядоченная совокупность элементов, можно создавать многомерные массивы, например: (10,10). Подразумевается, что каждый элемент массива первого уровня может хранить в себе массив из 10 значений. Мас = Новый Массив(Ю); Мас.Вставить(0,"А теперь это первое значение"); Мас.Установить(0,"Это опять первое значение"); Мас[0] = "Это опять первое значение"; Для каждого Элемент Из Мас Цикл ЗначениеЭлемента = Элемент; КонецЦикла; Macl = Новый Массив; Macl.Добавить("Первое значение"); Структура Структура - коллекция, каждый которой состоит из ключа и значения (ключ только строковый, это напоминает набор переменных - имя переменной и ее значение). Можно также сравнить с таблицей из двух колонок: первая из них хранит ключ (строковая величина, по которой можно идентифицировать строк} этой таблицы), вторая - значение (любого типа). Ключи структуры уникальны. Стр = Новый Структура("Дата1, Дата2", '20030101', '20030131'); гтр1 - Новый Структура ("Дата1, Дата2"); Стр1.Дата1 = '20030101'; Стр1.Дата2 = '20030131'; Стр2 = Новый Структура; Стр2.Вставить("Дата1", '20030101'); Стр2.Вставить("Дата2", '20030131'); I федставьтс, что вам поставили задачу сохранить до лучших времен (а они. лучшие времена, наступят скоро - в этом же сеансе работы) набор ОСЮ "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 87
“ 1СБухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" переменных с их значениями. Хранить надо имена переменных (они уникальны в данном наборе) и значения (любого типа данных). Вот это и есть структура, где имя переменной - ключ, а значение - значение. Соответствие Соответствие, то же что и структура, но ключи могут быть произвольного типа данных. Ключи соответствия уникальны. КурсыВалют = Новый Соответствие(); Доллар - Справочники.Валюты.НайтиПоНаименованию("Доллар"); КурсыВалют.Вставить(Доллар, 30.52); КурсыВалют[Доллар] = 31; // можно и так Рубль = Справочники.Валюты.НайтиПоНаименованию("Рубль"); КурсыВалют.Вставить(Рубль, 1) ; Для каждого КВ Из КурсыВалют Цикл Валюта = КВ.Ключ; Курс = КВ.Значение; КонецЦикла; Список значений Список значений можно представить в виде таблицы из пяти граф: индекс, пометка (Истина/Ложь), значение (любого типа), представление (строка), картинка. // Сп - Новый СписокЗначений(); // если в диалоге формы размещено поле списка с включенным флагом "отображать пометки" Товары - Справочники.Номенклатура.Выбрать(); Пока Товары.Следующий() Цикл Товар = Товары.Ссылка; Наименование = Товары.Наименование; ПризнакГруппы = Товары.ЭтоГруппа; Сп.Добавить(Товар, Наименование, ПризнакГруппы); КонецЦикла; Таблица значений Таблица значений - как и следует из названия - таблица. Имеет экранное представление в виде табличного поля. Включает в себя коллекции колонок и строк. //Тз = Новый ТаблицаЗначений,- МассивТипов - Новый Массив; МассивТипов.Добавить(Тип("Булево")); ТипБулево = Новый ОписаниеТипов(МассивТипов); ООО "lC-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 88
Основы программирования на платформе V8 : Универсальные коллекции значений Тз.Колонки.Добавить("ПризнакГруппы", ТипБулево ,"Признак группы"); Тз.Колонки.Добавить("Наименование"); ЭлементыФормы.Тз.СоздатьКолонки(); // если в форме Товары = Справочники.Номенклатура.Выбрать(); Пока Товары.Следующий() Цикл НоваяСтрока = Тз.Добавить(); НоваяСтрока.ПризнакГруппы = Товары.ЭтоГруппа; НоваяСтрока.Наименование = Товары.Наименование; КонецЦикла; Дерево значений Дерево значений - напоминает таблицу значений, но строки таблицы могут образовывать иерархические структуры - каждая строка может иметь набор подчиненных строк. //Дз = Новый ДеревоЗначений; Дз.Колонки.Добавить("Товар"); ЭлементыФормы.Дз.СоздатьКолонки(); // если в форме Товары = Справочники.Номенклатура.ВыбратьИерархически(); Пока Товары.Следующий() Цикл Родитель = Товары.Родитель; СтрокаРодителя = Дз.Строки.Найти(Родитель, "Товар", Истина); Если СтрокаРодителя = Неопределено Тогда НоваяСтрока = Дз.Строки.Добавить(); Иначе НоваяСтрока = СтрокаРодителя.Строки.Добавить(); КонецЕсли; НоваяСтрока.Товар = Товары.Ссылка; КонецЦикла; Все коллекции имеют ряд общих методов и для обхода коллекции используется констру кция языка Для Каждого ... Из ... Кроме того, возможно обращение к элементу коллекции с помощью оператора [], где в качестве аргумента передается индекс, а для струкзуры и соответствия - ключ. ООО " 1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 89
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" Отладчик Чем дальше мы продвигаемся в изучении встроенного языка, тем больше модули становятся... и тем больше ошибок в них появляется ... и тем дольше их (ошибки) становится искать. Для отладки модулей в конфигураторе предусмотрен ряд возможностей, основные из которых мы пройдем на примере только что разработанного отчета. Для отладки модуля можно воспользоваться либо меню, либо панелью инструментов Отладка. Для отладки мы должны открыть модуль в конфигураторе и запустить предприятие в режиме отладки (начать отладку). С чего обычно начинается отладка? С того, что мы определяем, на какой строке модуля, программа должна приостановить его выполнение и предоставить нам возможность пройти дальнейшую часть модуля «по шагам». Чтобы остановиться - необходимо установить «Точку останова», которая может быть или простая (остановиться в любом случае) или «с условием» (остановиться, если выполнено условие). Далее мы можем просматривать значение переменных модуля с помощью Табло или диалога «Вычислить выражение». Для отладки производительности модуля можно выполнить замер производительности, и узнать какой из использованных методов (механизмов) больше других «тормозит» систему. Управлять откладкой можно, используя пункты меню «Откладка» Продолжить отладку Перезапустить Завершить Останавливаться по ошибке Подключение {I) Шагнуть в {}i Шагнуть через Шагнуть из +{) Идти до курсора Ф Т екушая строка § Т очк а ост анова Точка останова с условием * Отключить точку останова F5 Ctrl+Shift+F5 Shift+F5 F11 F10 Shift+FIl Shift+F1U F9 Ctrl+Shift+F9 Убрать все точки останова Отключить все точки останова Список точек останова Alt*F9 Вычислить выражение Shift*F9 L> Табло Ctrl+Alt+W Стек вызовов Ctrl+Alt+C ’’ / Замер производительности ООО "1С-Учебный центр N 3”, телефон (495) 253-58-38. e-mail uc3@ le.ru. 90
Основы программирования на платформе V8: Отладчик Изучим возможность отладки модулей на примере заполнения документа «Поступление товаров и услуг» при вводе его на основании «Реализации...». Для этого установим точку останова первую строку процедуры (двойной щелчок мыши по полоске слева от модуля), перейдем в пользовательский режим и попробуем ввести документ на основании. Как только программа дойдет до строк, на которой установлена точка, отладчик возьмет управление на себя. 7мп5нч иснсв&мие Тип "Документ-Ссылка. РеализацияТоваровУслуг" ДопсворК'онту арен Реализация товаров и услуг 000000002 от 07.02.2007 16.38:41 Контрагент мснованне Контрагент Организация .«снсвамие Организация Тексту каТовары Основание Товары НсваяСтреке. Товары Добавить НоваяСтрека Количество ТекСтрока'Гсвары Количество НовалСтрека Номенклатура ТекСтрокаТоварн Номенклатура Новая*тр.на Гумма ТекСтрокаТоварн Сумма НсвалСтр-ка Цена ТекСтрокаТоварн Цена строка, которая сейчас выполняется, отмечается желтой стрелкой слева на полоске. Значения переменных можно увидеть, или просто подведя курсор к интересующей переменной, или с помощью диалога «Вычислить выражение» Основание Документесылка.РеализацияТовар овУслуг Рассчитать Включить в табло Закрыть Справка ложь Реализация товаров и услуг 0000 Документ! абличнаяЧасть Реализ Документ! абличнаяЧасть Реализ Дата СправочникСсылка ДоговорыКонт СправочникСсылка Контрагенты Строка СправочникСсылка Организации Булево Булево ДокументСсылка Реализация! ов Документ! абличнаяЧасть Реализ Документ!абличнаяЧасть Реализ Выражение Основание Значение а Основание Результат: Свойство Дата Ё ДоговорКонтрагента Е Контрагент Номер Е Организация г ПометкаУдаления '.Проведен Е Ссылка Товары Услуги 07 02 200716 38 41 Основной договор Главный покупатель 000000002" Фабрика ложь Тип Реализация товаров и услуг 0000 . ДокументСсылка. Реализация! ое. или с помощью табло, куда можно включить несколько интересующих нас переменных. ООО " 1С-Учебный иенгр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 91
“ 1С: Бухгалтерия 8". Конфигурирование и программирование от "А ” до "Я” j Выражение I □ Основание Контрагент Адрес Владелец ИНН Значение Г лавный покупатель "Москва" "7710000000" Тип СправочникСсылка Контрагенты Строка Неопределено Строка Л ;ааиа^> Отличие «Вычислить выражение» от «табло» состоит находясь в диалоге «Вычислить выражение» нельзя В том, что продолжать выполнять модуль - окно модальное. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 92
Табличная модель данных, язык запросов : Отладчик Табличная модель данных, язык запросов В разделе «Основы программирования на платформе V8» мы изучили основы программирования и использованием объектно- ориентированного встроенного языка платформы. Методы этого языка позволяют описать алгоритмы, как чтения, так и изменения (создания, редактирования, удаления) данных информационной базы. И то, что касается «изменения», вопросов не вызывает - это единственный возможный подход. А вот то, что касается чтения... Да, использовать методы объектов, такие как: Выбрать() - Следующий(), Найти() и другие для получения данных можно, но не всегда эффективно. Даже можно сказать, что почти всегда неэффективно. И если ставится задача получить отчет, который позволит отобрать из базы данных все документы (элементы справочников и т.д.) по определенному условию (или нескольким), сгруппировать по какому-то полю, упорядочить и т.д. использовать объектную модель данных становится совсем неэффективно. Объектная модель данных не позволяет точно сформулировать условия сложного запроса для извлечения данных. Для этого предназначена табличная модель данных. Где те же механизмы (справочники, документы, константы и т.д.) представлены не объектами, имеющими какие-то свойства и методы, а таблицами информационной базы, имеющими поля. Используя специальный язык запросов можно сформулировать очень точный запрос к базе данных, который будет выполнен намного быстрее, чем, если аналогичную задачу решать методом объекта Используемый язык запросов почти полный аналог SQL, но имеющий русский синтаксис и дополненный новыми предложениями для более удобного выполнения запросов, связанных с учетными задачами. Изучать язык запросов мы будем с помощью типового механизма «Консоль запросов» (или произвольный запрос), который входит в поставку типовых решений и может быть скопирован с диска ИТС1". Консоль запросов представляет собой внешнюю обработку, которая позволяет в пользовательском режиме написать текст запроса и его исполнить. Консоль запросов не обладает возможностями механизма «Консоль отчетов», но нам пока эти возможности и не нужны. Обобщенно структуру запроса можно представить в виде схемы Диск ИТС (Информационно-технологическое сопровождение) распространяется фирмой «1С» среди официальных пользователей и партнеров фирмы и содержит методические материалы, обновления, дополнительные механизмы. Полезная вещь. ООО ТС-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 93
“ 1С:Бухгалтерия 8”. Конфигурирование и программирование от ” до “Я" ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 94
Табличная модель данных, язык запросов : Конструктор запроса Конструктор запроса Текст запроса может быть написан или «вручную» и с помощью конструктора. Мы начнем знакомиться с табличной моделью данных из конструктора. Конструктор запроса можно вызвать из контекстного меню. На первой странице конструктор позволяет увидеть ту самую табличную модель, с которой мы будем работать (левое окно на первой закладке). ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(s lc.ru. 95
“ 1 (^Бухгалтерия 8". Конфигурирование и программирование от "А ” до “Я" Таблицы В табличной модели данных каждый нами созданный объект представлен одной или нескольких таблиц, из которых можно отобрать данные запросом. Пока речь идет только о реальных таблицах объектов, позднее, когда будут созданы учетные регистры, выясниться, что есть еще и виртуальные таблицы. Есть таблицы, в которых хранится справочники, есть таблица для хранения констант и таблицы для хранения документов. Если объект имеет табличную часть (например, документ «Поступление товаров и услуг» имеет табличную часть «Товары»), то для нее создается отдельная таблица базы данных. База данных В’ ' ВСправочники Ё-_______ Организации В Валюты Е Номенклатура В ПодрааделенияОрганизаш S Контрагенты В • ДоговорыКонтрагентов В Пользователи □ • , Документы □ Поступление!оваровУслуг - Ссылка - ПометкаУдаления •* Номер «• Дата "• Проведен В -- Организация В • ~ Контрагент В •• •« ДоговорКонтрагента В -> Ответственный В-- - Товары Ё“« Ссылка - НомерСтроки В - Номенклатура •• - Цена < > Константы ООО ”1С-Учебный центр N 3”. телефон (495) 253-58-38, e-mail uc3@ lc.ru. 96
Табличная модель данных, язык запросов : Детальная выборка Детальная выборка Итак, начнем изучать запрос со справочника. Задача - распечатать все поля таблицы справочника Номенклатура. Дополнительно Осъединения/Псеодонимы . Таблицы и поля Группировка Условия I i в База данных | Е Константы | В Справочники Ё~ Организации I Е" Валюты Таблицы Е Поля Нс иенклатура |Ё ПодразделенияОрганизаций Ё Контрагенты | Ё' ДоговорыКонтрагентов Е Пользователи | Е Документы I Е ‘ Перечисления s I г Запрос Номенклатура Ё- Ссылка ПометкаУдаления П ред определенный Родитель ЭтоГ руппа Код Наименование СтавкаНДС Представление Порядок Итоги Построитель Номенклатура Ссылка Номенклатура ПометкаУдаления Номенклатура Предопределенный Номенклатура Родитель Номенклатура ЭтоГ руппа Номенклатура Код Номенклатура Наименование Номенклатура СтавкаНДС Номенклатура. Представление Далее > ОК Отмена Справка Ё В список выбранных перенесена таблица справочника в список выбранных полей включены все поля таблицы. Текст запроса: ВЫБРАТЬ " ’ Номенклатура.Ссылка, Номенклатура.ПометкаУдаления, Номенклатура.Предопределенный, Номенклатура.Родитель, Номенклатура.ЭтоГруппа, Номенклатура.Код, Номенклатура.Наименование, Номенклатура.СтавкаНДС, Номенклатура.Представление ИЗ Справочник.Номенклатура КАК Номенклатура Результат запроса: Ссылка Пометка Предолре Родитель ЗтоГ ру Код Наименование СтавкаНДС Представление SE3S3SH ложь ложь истина 000000001 Товары Товары Материалы ложь ложь истина 000000002 Материалы Материалы Продукция ложь ложь истина 000000003 Продукция Продукция Доска ложь ложь Материалы ложь 000000004 Доска 18% Доска Ткань ложь ложь Материалы ложь 000000005 Ткань Ткань Услуги ложь ложь истина 000000006 Услуги Услуги Доставка ложь ложь Услуги ложь 000000007 Доставка 18% Доставка Т абуретка ложь ложь Продукция ложь 000000008 Табуретка 18% Т абуретка новый ложь ложь ложь 000000014 новый 18% новый Тот же результат можно было получить, не перечисляя все поля, указав после предпожения ВЫБРАТЬ знак «*», означающий «все поля». Можно указать, что нас интересуют только код, наименование и ставка НДС ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование, Номенклатура.СтавкаНДС ООО "iC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 97
“1С:Бухгалтерия 8". Конфигурирование и программирование от “А ” до "Я" ИЗ Справочник.Номенклатура КАК Номенклатура Псевдонимы Псевдонимы можно назначать источникам (в данном случае таблице Номенклатура) и полям запроса. Для источников это имеет смысл, если источников в запросе несколько. Если источнику назначен псевдоним, то обращение в предложении ВЫБРАТЬ к его полям осуществляется по псевдониму. Полям - просто, когда мы хотим, чтобы колонка результата запроса называлась не так, как называется свойство объекта в конфигураторе, а так, как нам нужно. Кроме того, псевдонимы полей будут использоваться в других предложениях запроса (УПОРЯДОЧИТЬ, ИТОГИ). Псевдонимы назначаются с использованием ключевого слова КАК. В конструкторе псевдоним источнику можно назначить, щелкнув правой кнопкой мыши по выбранной таблице и выбрав пункт «переименовать» Т аблицы Пол: Добавить Удалить Пермденовзгь таблицу.. •- Заменить таблицу. А для выбранных полей псевдонимы назначаются на закладе «Объединения и псевдонимы» (в таблице справа). Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Без дубл Имя поля •; Имя 1 Запрос 1 Наименование НДС Запрос 1 г -«• Номенклатура. Код Р ••» Номенклатура Наименование =•••• - Номенклатура СтавкаНДС Запрос < Назад Далее > ОК Отмена Справка Псевдонимы в запросе не должны повторяться и должны писаться слитно. ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование, Номенклатура.СтавкаНДС КАК НДС ИЗ Справочник.Номенклатура КАК Номенклатура На этой же закладке конструктора можно изменить порядок следования колонок в результате запроса. ООО "IC-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 98
Табличная модель Ванных, язык запросов: Детачьная выборка Код Наименование НДС 000000001 Т овары INK 000000002 Материалы 000000003 Продукция 000000004 Доска 182 000000005 Ткань 000000006 Услуги 000000007 Доставка 182 000000008 Т абуретка 182 000000014 новый 182 Упорядочивание Закладка конструктора порядок позволяет дописать в запрос новое предложение, с помощью которого можно упорядочить результат запроса по любому выбранному или вообще любому полю таблицы источника. Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Породок Итоги Построитель i Поля Поле Сортировка I - Код Наименование Возрастание \ I - м 1Ё- » Все поля I Й~__ Номенклатура > | Ссылка уу г- - ПометкаУдаления ••• • Предопределенный Й - - Родитель I Н - Это1 руппа < I ! - Код и « ••• * Наименование I Й- - СтавкаНДС = - Представление Автоупорядочивание | ______„_- .. . _____________ I > Запрос < Назад Далее > ОК Отмена Справка ...... „..у .... ................................................ - J В порядке сортировки указывается направление. По умолчанию (если не указано) возрастание. ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.СтавкаНДС КАК НДС ИЗ Справочник.Номенклатура КАК Номенклатура УПОРЯДОЧИТЬ по Наименование Результат упорядочен в прямом порядке (от А к Я). Код Наименование 000000004 Доска 000000007 Доставка 000000002 Материалы 000000014 новый 000000003 Продукция 000000008 Т абуретка 000000005 Ткань 000000001 Т овары 000000006 Услуги Если нужно упорядочить в обратном порядке (для наименования - порядок это алфавит, для сортировки документов по дате - дата календаря), нужно воспользоваться уточнением ВЫБРАТЬ ООО " 1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 99
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от "А ” до “Я” Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.СтавкаНДС КАК НДС ИЗ Справочник.Номенклатура КАК Номенклатура УПОРЯДОЧИТЬ ПО Наименование УБЫВ Результат: строки отсортированы от Я к А. Код 000000006 ; ooooooooi 000000005 000000008 J000000003 000000014 ’000000002 !000000007 000000004 Наименование I Услуги Товары Ткань Табуретка Продукция новый Материалы Доставка Доска Обратите внимание, и в том и в другом случае в предложении УПОРЯДОЧИТЬ для описания поля используется псевдоним этого поля, объявленный в предложении ВЫБРАТЬ. Автоупорядочивание Вместо того, чтобы заполнять предложение УПОРЯДОЧИТЬ, можно было проставить одну галку на этой странице и дописать, таким образом, одно предложение в запрос. Автоупорядочивание позволяет поручить сортировку результата запроса платформе. Таблица будет упорядочена по основному представлению объекта. Однако, надо иметь ввиду, что этот вариант может увеличить время выполнения запроса в 3-4 раза. Имеет смысл использовать упорядочивание только в универсальных отчетах, где заранее неизвестно, какое поле какой таблицы будет использоваться для группировки данных запроса. Уточняющие слова Закладка конструктора «Дополнительно» позволяет написать в дополнительные уточняющие слова Таблицы и поля Групгмровка Условия Дополнительно Йэ ез повторяющихся записей Для изменения Первые Поместить Т аблицы L. Номенклатура Запрос запрос. Объединения/Псевдонимы Порядок Итоги Построитель записей Разрешенные Т аблицы для изменения < Назад Далее > ОК Отмена Справка Можно отобрать только несколько первых записей запроса, или исключить дубли строк (для справочника не актуально - каждый элемент уникален, а для поиска купленных товаров в документах ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 100
Табличная модель данных, язык запросов : Детальная выборка может пригодиться), исключить из запроса те записи, на которые пользователь не имеет прав (Администрирование: продолжение). Вычисляемые поля запроса При необходимости выполнить вычисления прямо в запросе, нам помогут вычисляемые поля. Добавлять их нужно не из таблицы источника, а по кнопке «Добавить» списка полей на первой закладке. Оператор языка запроса Выбор Задача: показать в результате запроса колонку, в которой для групп справочника должно быть значение типа строка «Группа», а для элементов - «Элемент» UJlklPAQUTK ОК Ё Ё Й Отмена Справка Ссылка ПометкаУдаления П редопределенный Родитель [ЭтоГруша! Функции языка запросов Функции Операторы лрифм гические опера~-.ры Логические операторы Прочие операторы Код Наименование ВЫБОР КОГДА Номенклатура.ЭтоГруппа = ИСТИНА ТОГДА ИНАЧЕ КОНЕЦ В данном примере мы использовали оператор ВЫБОР, который, по своей сути, является уловным оператором, но для запроса. Условие ставили на поле таблицы ЭтаГруппа. Функция языка запросов Значение Более сложный пример: у нас в справочнике есть реквизит «СтавкаНДС». Этот реквизит имеет тип ПеречислениеСсылка. А мне в запросе нужно получить ставку в виде числа: 10. 18. 0. Для этого я добавляю новое поле ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 101
“ 1СБухгалтерия 8 ". Конфигурирование и программирование от “А " до “Я" Поле Н оменк лагураКод Номенклатура. Наименование Номенклатура. СтавкаНДС Все поля .ЧЕНИЕ (Перечисление. СтавкиНДС . НДС18} КОГДА Функции языка sanpocob Bt Fr - 1 С "Лгл “ it-енклатура СтавкаНДС Номенклатура.СтавкаНДС = ЗН. >ГДА Номенклатура.СтавкаНДС = ЗН. ИНАЧЕ КОНЕЦ EHMi Перечисление.СтавкиНДС.НДС1 СТ ВЫЕОР КОГДА Функции Операторы Арифметические операторы Логические операторы Прочие операторы ВЫБОР I- ВЫРАЗИТЬ Прочее Отмена Справка Функция ЗНАЧЕНИЕ позволяет получить из базы данных ссылку на предопределенное значение (значение перечисления, предопределенный элемент справочника, вида характеристик или счет плана счетов). Если нужно получить ссылку на непредопределенный элемент, следует воспользоваться параметрами запроса11. Созданным вычисляемым полям имеет смысл назначить псевдоним. Вложенные таблицы В качестве выбранного поля может быть получена в запрос целая таблица, например табличная часть справочника или документа. В этом случае поле запроса будет иметь тип «Результат запроса» (в консоли запросов результат запроса выгружается в таблицу значений). ВЫБРАТЬ ПоступлениеТоваровУслуг.Номер, ПоступлениеТоваровУслуг.Дата, ПоступлениеТоваровУслуг.Товары.(Номенклатура,Сумма) ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг Результат запроса - Номер Дата 000000001 СБ 02.2007 13 27 58 000000002 13.02.2007 12:06 34 Iовары Т аблицаЗначений Результат Сводная таблица 11 см. раздел запроса «Условия» ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@lc.ru. 102
Табличная модель данных, язык запросов : Условия Условия Для отбора данных в запрос по значению любого поля источника используется условие запроса (предложение ГДЕ, закладка конструктора «Условия»). Чтобы получить в результате запроса все элементы (не группы) справочника Номенклатура следует выполнить следующий запрос: ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа = ЛОЖЬ В конструкторе Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Поля , - -j □ Номенклатура пи - Ссылка ПометкаУдаления I..— П редопреаеленный ф- - Родитель Номер П... Условие 1 * Номенклатура.ЭтоГруппа= ЛОЖЬ ЭтоГруппа .. КОД ....Наименование Ф-» СтавкаНДС ; ~ - Представление Запрос < Назад Далее > ОК Отмена Справка В результат запроса попадут только элементы справочника. Параметры запроса Как правило, условия достаточно редко ставят на базовые типы данных (число, строка, дата, булево - в нашем случае булево). Обычно отборы осуществляются по ссылочным типам. Запрос, по своей сути, некий закрытый объект, в который мы передаем текст запроса и все что нужно, чтобы его выполнить. Потом запрос, используя полученные от нас данные, выполняет запрос к базе данных. В тексте запроса мы можем передать лишь условия на примитивные типы и на предопределенные значение с помощью функции ЗНАЧЕНИЕ. Условия на все остальные типы данных - на ссылки справочников, документов и др. можно передать «рядом» с текстом в виде параметров запроса. Все параметры, которые мы планируем передать в запрос, в самом тексте запроса имеют свои имена, начинающиеся со знака «&». Значения параметров передаются в запрос специальным методом ООО "1С-Учебный центр N 3". телефон (495) 253-58-38 e-mail uc3@ Ic.ru. 103
“/СБухгалтерия 8". Конфигурирование и программирование от “А ” до “Я” объект запроса, который мы пока писать не будем, за нас его написали разработчики обработки «Консоль запросов». Наша первая задача: получить список (код и наименование) элементов справочника, которые находятся внутри выбранной пользователем группы справочника. В конструкторе запроса на закладе «Условие» выбираем из списка полей поле «Ссылка» и ставим на нее условие с типом сравнении ВИерархии. Это условие сравнения позволяет получить все элементы принадлежащие группе. [ШЬмыдогар | Таблицы и поля I р,,т.мровка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель I Поля EJ- Номенклатура Номер Й- ПометкаУдале Предопределе Родитель ЭтоГруппа Код Наименование СтавкаНДС Ппепгтавпени) П... Условие - Номенклатура Ссылка В Иерархии! Ссылка Запрос < Назад Далее > I Я -у. в дди» ОК Отмена Справка Текст запроса: ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование 143 Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ(ЬСсылка) Где «&Ссылка» имя параметра, который в запрос обязательно нужно передать. В «Консоли запросов» это делается по кнопке «Параметры» на верхней командной панели. Создаем новую строку с параметром по имени «Ссылка», при выборе значения указываем тип «СправочникСсылка.Номенклатура» и кнопкой «Выбрать» выбираем значение интересующей нас группы. Закрываем окно параметров и выполняем запрос Код 000000’"?2 Наименование I Материалы 000000004 Доска (Ю0000005 Т кань В результат попали все элементы выбранной группы и она сама. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 104
Табличная .модель данных, язык запросов: Условия Сложение условий Если сама группа не нужна, в запрос придется добавить еще одно условие. Условия можно связывать между собой предложением запроса «И». Текст запроса: ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ(^Ссылка) И Номенклатура.ЭтоГруппа = ЛОЖЬ ЛОЖЬ это уже не параметр. Хотя ничто не мешает заменить его тоже на параметр с каким-нибудь именем и передать в запрос как Ссылку. ООО " 1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 105
"1С-.Бухгалтерия 8". Конфигурирование и программирование от “А” до “Я” Группировка и агрегатные функции Кроме получения (с разными фильтрами и сортировками) детальной выборки записей из табзиц базы данных запрос может проводить группировку и агрегирование (вычисление) данных из таблиц. Рассмотрим задачу на примере учета закупки товаров. Нас интересует, сколько товаров в количественном и стоимостном выражении было куплено. Данные о закупках товаров хранятся в базе данных в таблице Товары документа Поступление товаров и услуг. Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Поля Т аблицы В- : Т овары й' “ Ссылка . НомерСтроки Й - Номенклатура j- - Цена - Количество Базе да» ных ЕЬ Константы й $ Справочники В" s Документы Й ПоступлениеТова| Ссылка ПометкаУдал» Номер Дата Проведен Организация Контрагент ДоговорКонтр Ответственны! Т овары Номенклатура Т овары. Количество Т овары. Сумма 0- , Ы . Й Й • Запрос Далее > ОК Отмена Справка Мы выбираем в качестве источника данных таблицу «Товары», назначаем ей псевдоним Товары и выбираем из нее поля Поменклазура, Количество и Сумма. Если на этом остановиться, что программа выберет из базы данных все, что было во всех доку ментах. ' Номенклатура Ткань : Доска Доска Стул . Доска Ткань Количество Сумма 5 75.00 __________5 50.00 ННМК 500.00 50 250,00 5 50.00 5 75.00 При этом если один и тот же товар закупался в разных документах, таблица будет содержать несколько строк. Если же мы хотим видеть одну строку по товару, на каждую сумму, то данные нужно сгруппировать. ООО ’ЧС-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 106
Табличная .модель данных, язык запросов : Группировка и агрегатные функции KjQHCTqpyrop Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Поля E--S Все поля Г рупповое поле - Товары.Номенклатура Суммируемое поле ....« Товары.Количество - Т о^ары Сумма Функция Сумма Сумма Запрос < Назад Далее > ОК Отмена Справка < « Мы указываем, по какому полю выполнять группировку (Номенклатура) и по какие поля при этом рассчитывать (Количество, Сумма) и как (функция Сумма). Текст запроса: ВЫБРАТЬ Товары.Номенклатура, СУММА(Товары.Количество) КАК Количество, СУММА(То в ары.Сумма) КАК Сумма ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК Товары СГРУППИРОВАТЬ ПО Товары.Номенклатура Детальной выборки в этом запросе больше не существует, результатом запроса будет таблица: Номенклатура Количество Сумма Доска 60 Т кань 10 Стул 50 600 150 250 Кроме функции Сумма, существуют и другие, позволяющие получить количество различных значений, найти минимальное или максимальное значение, рассчитать среднее. Группировочных полей также может быть несколько. Все поля запроса, не попавшие в список суммируемых или группировочных будет удалены. Условие ИМЕЮЩИЕ на результат выполнения функции При необходимости поставить условие на результат выполнения агрегатной функции используют предложение запроса ИМЕЮЩИЕ. Условие ГДЕ предполагает выполнение отбора детальной выборки запроса. Условие ИМЕЮЩИЕ позволяет установить отбор по результату функции. Пример: возьмем прошлый запрос и добавим условие - в результат должны попадать только те товары, сумма которых больше какого-то числа. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 107
“ 1СБухгалтерия 8". Конфигурирование и программирование от “А " до “Я" На закладке «Условия» пишем произвольное (галочка) условие на выполнение функции Сумма. Текст запроса: ВЫБРАТЬ Товары.Номенклатура, СУММА(Товары.Количество) КАК Количество, СУММА(Товары.Сумма) КАК Сумма ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК Товары СГРУППИРОВАТЬ ПО Товары.Номенклатура ИМЕЮЩИЕ СУММА(Товары.Сумма) > 200 Результат запроса: номенклатура_Количество Сумма Доска ;Стул 50 250, Готово. ООО "1С-Учебный центр N 3”, телефон (495) 253-58-38. e-mail uc3@ lc.ru. 108
Табличная модель данных, язык запросов : Итоги Итоги В том случае, если мы хотим сохранить и детальные записи, полученные запросом из базы данных, и рассчитать итоги по группировочным полям следует воспользоваться предложением запроса ИТОГИ. При этом будет выполнена группировка данных по указанным полям, но детальная выборка останется в запросе. Результат же запроса станет больше похож не на таблицу значений, а на дерево значений (строки детальной выборки будут подчинены строками итогов). Решим задачу, похожую на предыдущую. Нам нужно получить закупки товаров (в суммовом выражении), но там.также интересно видеть из каких документов (дательная выборка) эти закупки сложились. Причем итоговое количество нам не интересно, а интересна только сумма. Па первой закладке конструктора получим еще одно поле Ссылка для доступа к документу Таблицы и поля Группировка Условия Дополнительно Обгьединения/Псевйонимы Порядок Итоги Построитель I- База данных ••••• - ПометкаУдалв! - Номер j.- Дата :••• Проведен 0 - Организация 0 - Контрагент 0 - ДоговорКонтрг 0 « Ответственный Т овары Ссылка Т овары. Количество Т овары Сумма 0 Г-т 0 гй Услуги 0 ™ Далее > Отмена на закладке Итоги укажем группировочные (Номенклатура) и итоговые поля (Сумма). Дополнительно можно рассчитать итоги по всему запросу в целом. Количество в нашем случае не будет рассчитываться в итогах, поэтому не будет нам доступно в итоговых записях запроса. В группировочных записях можно было указать тип итогов (например, дополнительно рассчитать итоги по каждой вышестоящей группе справочника и тоже включить их в запрос). ООО lC-Учебный центр N 3". телефон (495) 253-58-38 е mail uc3@ lc.ru. 109
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от "А ” до "ЯГ Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Поля Г руппировочное поле Номенклатура Т ип итогов .Элементы Псевдоним Номенклатура Количество Все поля Общие итоги Итоговое поле Сумма Выражение : СУММА[Сумма) ? Запрос < Назад Далее > ОК Отмена Справка Текст запроса: ВЫБРАТЬ Товары.Номенклатура КАК Номенклатура, Товары.Ссылка, Товары.Количество КАК Количество, Товары.Сумма КАК Сумма ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК Товары ИТОГИ СУММА(Сумма) ПО ОБЩИЕ, Номенклатура Результат запроса выводим в виде дерева значений: Способ выгрузки. Дерево ▼ Номенклатура В- Ссыл»а Количество Сумма Е) Ткань 150 Т кань Поступление товаров и услуг 000000001 от 06 02 2007 5 75 Ткань Поступление товаров и услуг 000000003 от 13 02 2007 5 75 В- Доска 600 Доска Поступление товаров и услуг 000000001 от 06 02 2007 5 50 й -Доска Поступление товаров и услуг 000000002 от 13.02 2007. 50 500 -Доска Поступление товаров и услуг 000000003 от 13 02 2007. 5 50 В-Стул 250 -Стул Поступление товаров и услуг 000000002 от 13 02 2007 50 250 В запросе осталась нетронутой детальная выборка (там есть поля Номенклатура. Ссылка. Количество. Сумма) и появилось два уровня итогов. Самый верхний - общие итоги по таблице в целом просуммировал для нас сумма закупки. Нижний - тоже самое сделал по каждому товару. Уровней итогов также может быть много - сколько укажем группировочных полей. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 110
Табличная .модель данных, язык запросов : Соединения источников Соединения источников Запрос можно выполнять не только к одной таблице базы данных, но и к нескольким. Этого можно добиться, просто перечислив несколько источников в списке выбранных таблиц. Однако используется это довольно редко - результатом запроса будет вывод всех возможных вариантов сочетаний полей этих двух источников. Как правило, таблицы соединяют между собой по одному или нескольким полям. И соединения эти бывают разные. Источники данных запроса Кстати, а нужны ли источники вообще? В самых простых запросах источник может не указываться. Мы можем прописать путь к извлекаемому полю в предложении ВЫБРАТЬ. Так, например, два приведенных ниже запроса отработают совершенно одинаково, и оба покажут список номенклатуры. Без указания источника: ВЫБРАТЬ Справочник.Номенклатура.Код, Справочник.Номенклатура.Наименование С указанием источника: ВЫБРАТЬ Код, Наименование Из Справочник.Номенклатура Во, как правило, источник указывают и. как мы уже начали выяснить, он может быть не один. Исходные данные для соединения Итак, у нас есть четыре приходных и столько же расходных накладных, и пять контрагентов. Главный покупатель Г лавный поставщик Иванов Петров Сидоров Мы получали товар от контрагентов ВЫБРАТЬ Поступление.Контрагент ИЗ Документ.ПоступлениеТоваровУслуг КАК Поступление Контрагент Г лавный поставщик Иванов Петров Сидоров ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. Ill
“ 1СБухгалтерия 8 ". Конфигурирование и программирование от “А " до “Я" Мы продаем товар контрагентам ВЫБРАТЬ Реализация.Контрагент ИЗ Документ.РеализапияТоваровУслуг КАК Реализация контрагент___________________ ! Г лавный покупатель Иванов Петров Сидоров Получается, что у Иванов, Петров и Сидоров являются и нашими поставщиками и покупателями заодно. А вот Главный поставщик и Главный покупатель - только поставщик и только покупатель. Что будет, если мы просто перечислим в списке источников оба? Все возможные сочетания. Никакого смысла... Полное (внешнее) соединение Это соединение позволит получить таблицу, в которую попадут все данные из обоих источников, те из них, которые «найдут себе пару» в соседнем источнике, будут стоять с этой «парой», а остальные сами по себе. Т аблицы и поля Связи I База данных В Константы В '4 Справочники Документы Г руппиров1 d фкпмструтор запрос* Условия Дополните 1ьнп Объединения/Псетдон Порядок Итоги Построитель Поля г Реализация Реализация Контрагент Поступление П оступление. Контрагент Таблицы^ В В ПоступлениеТ оварс Л В РеализацияТ оваровУ i- * Перечисления 1 < | Запрос Далее > ОК Отмена Справка на появившейся после добавления второго источника закладке связи. Соединение происходит по полю «Контрагент». Соединение может происходить по нескольким полям, но они обязательно должны быть в обеих таблицах и обеспечивать уникальность соединения. ООО "1С-Учебный центр N 3”, телефон (495) 253-58-38. e-mail uc3@ lc.ru. 112
Табличная модель данных, язык запросов: Соединения источников ГОР Таблицы и поля Связи Группировка Условия Дополнительно Объединения/Псевдон Порядок Итоги Построитель № Таблица1 Все Т аьлица 2 К Поступление ** Реализация Все П... Условие связи ✓ Поступление К.онтраг Реализация. Контраге . Запрос < Назад Далее > ОК Отмена Справка 1 ну и псевдонимы —Я Таблицы и поля Связи Группировка Условия Дополнительно Объединения/Псевдон Порядок Итоги Построитель Имя Запрос 1 Запрос Бездубл. Имя поля Поставщик Покупатель < Назад Запрос 1 •• «. Поступление Контрагент ..- Реализация Контрагент Далее > ОК Отмена Справка Текст запроса: ВЫБРАТЬ Поступление.Контрагент КАК Поставщик, Реализация.Контрагент КАК Покупатель ИЗ Документ.ПоступлениеТоваровУслуг КАК Поступление ПОЛНОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализация ПО Поступление.Контрагент = Реализация.Контрагент Результат запроса: Поставщик Покупатель I Главный поставщик Иванов Петров Сидоров Петров Сидоров Г лавный покупатель Тип данных NULL, Функция запроса ECTbNULL Напротив главного поставщика и главного покупателя остались пустые ячейки: программа не нашла в противоположной таблице значений соответствующих этим элементам. В таких ячейках содержится специальный тип данных NULL. При обработке результатов запрос именно он свидетельствует для нас о том, что не было найдено соответствия в другой таблице. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 113
С: Бухгалтерия 8". Конфигурирование и программирование от “А ” до "Я” Если мы хотим исключить из результата запроса значения тип NULL, можно воспользоваться или оператором выбора или специальным выражением языка запросов ECTbNULL. Первый параметр этого метода поля запроса, которое надо проверить, второй - на какое значение (или поле запроса) надо заменить значение поле, если там окажется NULL. ВЫБРАТЬ ECTbNULL(Поступление.Контрагент, "Пусто") КАК Поставщик, ECTbNULL(Реализация.Контрагент,"Пусто") КАК Покупатель ИЗ Документ.ПоступлениеТоваровУслуг КАК Поступление ПОЛНОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализация ПО Поступление.Контрагент = Реализация.Контрагент В данном случае заменяем на строку «Пусто». Внутреннее соединение В этом случае из двух источников в результат запроса попадут только те записи, которые нашли себе «пару» в другом источнике. В нашем запросе изменится только описание соединения источников Текст запроса: ВЫБРАТЬ Поступление.Контрагент КАК Поставщик, Реализация.Контрагент КАК Покупатель ИЗ Документ.ПоступлениеТоваровУслуг КАК Поступление ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализация ПО Поступление.Контрагент = Реализация.Контрагент Результат запроса:. Поставщик Покупатель Петров Иванов Петров Сидоров Сидоров В этом запросе никогда не возникнут поля со значением NULL. Левое, правое соединение В случае левого (правого) соединения приоритет отдается одной из таблиц. Она включается в запрос полностью, а из второй таблицы попадают только те записи, которые нашли себе соответствие в первой. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 114
Табличная модель данных, язык запросов : Соединения источников ' Т аблицы и поля Связи Г руппировка Условия Дополнительно Объединения/Псевдон... Порядок Итоги Построитель | — № Т аблица 1 Все Таблица 2 Все П Условие связи 1 " Поступление Реализация о Поступление Конграг = •» Реализация Контраге I S Запрос < Назад Далее > ОК Отмена Справка Левое соединение. Левой считается таблица, которая первой перечислена в списке источников. ВЫБРАТЬ Поступление.Контрагент КАК Поставщик, Реализация.Контрагент КАК Покупатель ИЗ Документ.ПоступлениеТоваровУслуг КАК Поступление ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализация ПО Поступление.Контрагент = Реализация.Контрагент Результат запроса: Поставщик__________Покупатель Главнь1й поставщик Иванов Иванов | Петров Петров 'Сидоров Сидоров Если в конструкторе поменять «галочки» местами, все равно соединение будет левым. Просто первой станет таблица Реализации. Правое соединение имеет смысл только, когда соединяемых таблиц более двух. При правом соединении в результат попадут все записи таблицы, которая справа (справа от соединения) и соответствующие им записи из левой. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 115
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от ‘‘А " до “Я” Объединение запросов Если соединение позволяло нам дополнить данный одной таблицы данными из другой, создавая новые колонки, то объединение запросов позволяет сложить два результат запроса в один, добавив новые строки. Главное условие - чтобы колонки запросов совпадали и по количеству и по смыслу. Выше мы писала запрос, который позволял увидеть закупки товаров, сгруппированные по товарам. А если нужно в одном отчете увидеть и закупки и продажи? Можно или воспользоваться соединением таблиц (внешним, чтобы попали все записи из обеих таблиц) или объединением запросов и подведением итогов. Для начала напишем первый запрос. Источник данных таблица Товары документа ПоступлениеТоваровУслуг. Нас интересует оттуда номенклатура и количество. Т аблицы и поля Г руппировка Условия База данных Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Ф- Й- й ш Номер Дата Проведен Организация Контрагент ДоговорКонтраге Ответственный Услуги Запрос 1 аблицы Е) =• ПоступлениеТовары й - Ссылка . НомерСтроки Й - Номенклатура - Цена Количество! Сумма Поля ПоступлениеТ овары Номенк татчра ПоступлениеТ овары. Количество Далее > ОК Отмена На закладке «Объединения и псевдонимы» присвоим им имена Справка Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Имя Без дубл Имя поля ~ Номенклатура ВШШ1 Запрос 1 Запрос 1 • ПоступлениеТ овары Номенклатура •••• » ПоступлениеТовары Количество Запрос < Назад Далее > ОК Справка там же нажмем кнопку «Добавить» в списке запросов и опять окажемся на первой странице конструктора...но уже во втором запросе. Переключаться между ними можно на панели справа выбранных полей. Если мы выберем все то же самое, но из документа «Реализация...». то получится, что в одной колонке (которую я в объединениях назвал Получено) у меня окажется и количество полученного и списанного товара. Тип данных \ них одинаковый - число - но по смыслу данные совсем разные. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ Ic.ru. 116
Табличная модель данных, язык запросов : Объединение запросов Поэтому, я вернусь на закладку «Запрос!» и добавлю еще одно (вычисляемое) поле. * Справка Далее> ОК Отмена [Поступление! овары Услуги Представление Таблицы^ В . = Поля - • Поступление!овары Номенклатура • Поступление! овары Количество Таблицы и поля Группировка Условия Дополнительно ОбъединенияЛЪавдонимы Порядок Итоги Построитель База данных Й й- $ га Ссылка ПометкаУдален Номер Дата Проведен Организация Контрагент ДоговорКонграг Запрос В этом поле будет «ноль», т.е. из этого (первого) запроса в него ничего не попадает. Оно мне нужно просто, чтобы создать еще одну колонку. Которую, на закладке «Объединения...» я назову «Списано». Вернусь обратно во второй запрос и создам здесь гоже три поля Габ.ыцыиполя Группировка Условия Дополнительно Обьединения/Псевдонимы Порядок Итоги Построитель I- База данных i— - Ссылка « ПометкаУдален — - Номер :- ~ Дата Проведен Е - Организация й - Контрагент Й - ДоговорКонграг О в ; Услуги —- - Представление !аблицы РеализаиияГовары Й - Ссылка НомерСтроки S » Номенклатура у- - Цена Количество! Сумма Поля Реализация! овары. Номенклатура] Flxl О Реализация! овары. Количество Далее > ОК Отмена Справка В этот раз «ноль» будет на месте, где из первого запроса будет заполняться «получено». Осталось объединить эти запросы Таблицы и поля I руппировк а Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Имя Бе: Запрос 1 Запрос 2 Имя поля —« Номенклатура •« Получено : Тм Списано Запрос 1 « Поступление!овары Номенклатура Поступление! овары Количество • ti-i О Запрос 2 - Реализация!овары.Номенклатура •Ь О Реализация!овары Количесп Запрос < Назад Далее > ОК Отмена Справка если поля сами не нашли «свои места», им надо «помочь» на закладке «Объединения...». ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru 117
“] С: Бухгалтерия 8”. Конфигурирование и программирование от “А" до "Я" Таким образом, два полученных результат мы соединили в одну таблицу, осталось подвести итоги по Номенклатуре (ИТОГИ подводятся сразу для всех объединенных запросов). Тип итогов Элементы Псевдоним Номенклатура Г. j. писк вочное поле Т аблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Поля Номенклатура Общие итоги Итоговое поле Получено Списано Выражение СУ М МА(П случено] СУММА(Списано) Запрос < Назад Далее > ОК Отмена Справка Можно посмотреть на текст запроса ВЫБРАТЬ ПоступлениеТовары.Номенклатура КАК Номенклатура, ПоступлениеТовары.Количество КАК Получено, О КАК Списано ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТовары ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РеализацияТовары.Номенклатура, О, РеализацияТовары.Количество ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары ИТОГИ СУММА(Получено), СУММА(Списано) ПО ОБЩИЕ, Номенклатура И на результат его исполнения Способ выгрузки: Дерево Номенклатура □ Ё Ткань Ё-Доска Ё-ДЙ Ё - Табуретка Получено Списано 122 11 61 50 121 60 61 ООО "lC-Учебный центр N 3", телефон (495) 253-58-38, e-mail uc3@ lc.ru. 118
Табличная модель данных, язык запросов : Вложенные запросы Вложенные запросы Основное применение этой возможности - когда нужно соединить две таблицы, но таблицы эти очень разные. И поле, по которому надо соединять вычисляемое. А соединить надо... можно, конечно, и так соединить, но очень не удобно. Вариант - сделать два (или сколько нужно) вложенных запросов, таблицы которых и соединить. Вложенный запрос может быть и один, если нужно провести группировку результата, объединенных запросов. В теме «Объединение запросов» мы рассмотрели пример, когда объединяются закупки и продажи. Но чтобы увидеть в одной строке и то и другое нам пришлось подвести итоги. Другой вариант решения воспользоваться вложенным запросом. По кнопке добавить добавляем в список источников вложенный запрос. Текст запроса можно скопировать из предыдущей темы (убрав из него предложение ИТОГИ) и вставить по кнопке «Запрос» в конструктор (Запрос - Редактировать запрос - вставить из буфера - Редактировать запрос) Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель (г База данных Е’“ ___________ S-' » Справочники S Документы E& J. ' Перечисления Константы Таблицы ВложенныйЗа'тюс Поля иЗтро- Hot.» и латфа| - । ложенныйЗа рос I То пучено «• В ложенныйЗапрос. Списано Далее > ОК Отмена Справка Т аблицы и поля 1ННЫХ Запрос Группировка Условия Дополнительно Объединения/Псевдонимы Построитель Константы Справочники Документы Перечнеленит ' Таблицы Постиг лениеТиваоы > оличество По туповары Номенклатура | |ЫБРАТЬ ПоступлениеТовары.Номенклатура КАК Номенклатура ПоступлениеТовары.Количество КАК Получено КАК Списано Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТовары Поступление!о эры Ci (равкв ОБЪЕДИНИТЬ ВСЕ ; ЕЫБТАТЬ РеализацияТовары.Номенклатура, РеализацияТовары.Количество ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары Когда вложенный запрос готов, мы работаем с ним как с обычным источником - выбираем нужные поля, группируем их. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 119
“ 1СБухгалтерия 8”. Конфигурирование и программирование от “А ” до "Я" Таблицы и поля Группировка Условия Дополнительно ОбъединснияЛТсеоаонимы Порядок Поля Итоги Построитель Запрос । рутловое. _лт В ложенный лапрос « Номенклатура - Получено » Списано ВложенныйЗапрос Номен лэтура] Суммируемое поле i ВложенныйЗапрос. Получено; ВложенныйЗапрос Списано Функция Сумма Сумма < Назад Далее? ОК Отмена Справка й Э и Отчет готов. Текст запроса: ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, СУММА(ВложенныйЗапрос.Получено) КАК Получено, СУММА(ВложенныйЗапрос.Списано) КАК Списано ИЗ (ВЫБРАТЬ ПоступлениеТовары.Номенклатура КАК Номенклатура, ПоступлениеТовары.Количество КАК Получено, О КАК Списано ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТовары ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РеализацияТовары.Номенклатура, О, РеализацияТовары.Количество ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура Кстати, вложенному запросу так же можно было бы назначить псевдоним. Результат запроса: Номенклатура Получено Списано I Доска 61 ; Т кань 11 i Т абуретка .61 Стул 50 60 Позже, при изучении регистров, мы будем использовать не только реальные, но и виртуальные таблицы базы данных. По своей сути виртуальные таблицы - это те же самые вложенные запросы, но пишет их для нас платформа. ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 120
Табличная модель данных, язык запросов : Вложенные запросы 13. Практикум Используя консоль запросов, разработайте отчет, который позволит проанализировать цены закупки товаров. Для каждого товара необходимо знать следующие показатели: минимальная цена закупки товара, максимальная цена закупки, средняя цена закупки _ Номенклатура Минимальная цена Максимальная цена Средняя цена Пользователь должен иметь возможность выбрать в качестве параметров интервал дат. 14. Практикум Используя консоль запросов, разработайте отчет, который позволит проанализировать закупки товаров в количественном и стоимостном выражении в разрезе поставщиков. Поставщик Товар Количество Сумма 30 300 Иванов 10 100 Авторучка 5 50 Карандаш 5 50 Петров 20 200 Авторучка Пользователь должен иметь возможность выбрать в качестве параметров интервал дат. 15. Практикум Используя консоль запросов, разработайте отчет «Движение товаров», представляющий собой оборотную ведомость в количественном выражении Товар Остаток на начало периода Приход Расход Остаток на конец периода Пользователь должен иметь возможность выбрать в качестве параметров интерваз дат. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 121
" 1С: Бухгалтерия 8”. Конфигурирование и программирование от “А " до “Я" Отчеты, обработки, объект запрос В этой темы мы рассмотрим объект «Запрос» предназначенный для выполнения запросов из языка, обработку результатов запроса. В значительной части запросы предназначены для извлечения данных для отчетов, поэтому мы также познакомимся с этим объектом и конструктором выходных форм. Отчеты и обработки Отчеты и обработки являются схожими объектами и отличаются незначительно - в отчете можно применять механизм компоновки данных12. Предполагается, что отчеты и обработки имеют функциональные отличия: если механизм удаляет все документы за год, например, это обработка. А если подготавливает печатную форму - отчет. Отчеты и обработки мотут быть сохранены во внешние файлы, и существовать отдельно от конфигурации. В свойствах отчета могут быть созданы реквизиты и табличные части. В информационной базе значения этих реквизитов не сохраняются. Использование реквизитов отчета имеет смысл в том случае, если у отчета есть несколько форм (например, основная форма и форма настройки) и один и тот же реквизит должен заполняться в обоих (например, интервал выбора периода отчета). Если форма у отчета одна, вполне можно обойтись реквизитами формы отчета, чтобы предоставить пользователю возможность вводить условия формирования отчега. 12 начиная с версии 8.1. В версии 8.0 отличий нет. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 122
Отчеты обработки, объект запрос : Конструктор выходной формы Конструктор выходной формы Как правило, отчеты извлекают данные из базы с помощью запроса. Этот запрос может быть описан и результат его обработан разработчиком отчета или же другими более сложными объектами конфигурации (построитель отчета, механизм компоновки данных). Мы рассмотрим самый простой вариант, который подходит для создания отчетов, не требующих сложной настройки пользователем условий формирования. Простые отчеты, как правило, используют объект «Запрос» для выполнения запросе к базе данных и его методы для обработки результатов. Чтобы не тратить время на рисование формы отчеты, написание текста запроса, описания методов его выполнения и обработки результатов и подготовку макета и результирующего табличного документа имеет смысл воспользоваться конструктором выходных форм. Сделаем отчет, который будет выполнять и выводить в табличный документ запрос, который мы написали в теме «Итоги» раздела «Табличная модель данных, язык запросов». Добавим новый отчет «Отчет о закупках». С закладки «Макеты» запустим конструктор выходной формы ф Ut.uri Ш ,Х Основные Данные Формы 1 ► Макеты I Подсистемы Права | Интерфейсы I Прочее • I I I I i Конструкторы s Конструктор ВЫХОДНОЙ Формы Закрь.._ —,______ _ Далее> Действия » <Назад L-. -.-................... _.w....................ц....I Используя кнопку «Запрос» можно вставить текст запроса ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗ©' lc.ru. 123
“ 1С: Бухгалтерия 8”. Конфигурирование и программирование от "А” до "Я" Таблицы и п. Группировка Условия Дополните п*- Обьединени Порядок Итоги Построитель Отчет Выходная фо I База данных 0 ___________ 0* $ Справочники 0 Документы В ! ' Перечисления Константы Таблицы Т овары. Номенклатура ВЫБРАТЬ Товары.Номенклатура Товары.Ссылка, Товары.Количество КлК Количество, Товары.Сумма КАК Сумма I.AE Номенклатура, ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК Товары ИТОГИ СУННА(Сумма ПО Загрос ОБЩИЕ, Номенклатура % i’ Справка Т овары. Ссылка Т овары Количество 1 OFWlKl Г иГНМЯ 2JBU. ГРМ или написать этот текст заново. Мы добавим к этому запросу лишь одно условие, которое позволит пользователю получать выборку за интервал дат (НачПериода и КонПериода). , п х Таблицы и п.. Группировка Услоиия Дополнит^ш Обьединени.. Порэдок Итоги Построитель Отчет Выходная фо... Поля Вй Товары 0- - Ссылка - Ссылка Г- - ПометкаУдаления - - Номер Номер П... Условие 1 Т овары Ссылка Дата Между НачПериода КонПериода Проведен Запрос < Назад Далее > ОК Отмена Справка Конструктор выходных форм отличается от конструктора запросов лишь двумя последними закладками. На закладке «Отчет» мы снимем флаг «Использовать построитель отчета» (иначе в этом отчете запрос будет выполняться не объектом Запрос, а объектом Построитель отчета, о котором мы поговорим позднее). с группировками в отдельных колонках в отдельной колонке Таблицы и п . Группировка Условия Дополнитель Обьединени Порядок Итоги Построитель Отчет Выходная Фо.. Т абличный документ табличный документ сводную таблицу в одной колонке диаграмму в отдельных колонках сводную диаграмму в отдельных колонках и только в иго.. Й£0°Дьзовать.отчета Оформление: Г руппировать строки Запрос < Назад Далее > ОК Отмена Справка ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38, e-mail uc3@ lc.ru. 124
Отчеты, обработки, объект запрос : Конструктор выходной формы 11а закладке «Выходная форма» оставим все без изменений | Таблицы и п.. Группировка Условия Дополнитель.. Объединени... Порядок Итоги Построитель Отчет Выходная Фо | Форма Форма настройки построителя отчета » Название выходной Формы ОтчетОЗакупках Модуль * Модуль Формы Заголовок выходной Формы Отчет о закупках * Новая Форма I Заголовок кнопки. Сформировать ОтчетОЗакупках J Параметры I Не располагать Элемент управления аь Поле ввода at Поле ввода ОК Отмена Справка параметр > НачПеииода КонПериода Запрос Редактировать в Форме Подпись Нач периода Кон периода Т ип параметра Дата Дата < Назад на этой закладке мы могли указать, где расположить процедуру, выполняющую запрос (в форме или в объекте), уточнить какие из параметров, передаваемых в запрос надо разместить в диалоге и в каком виде. В результате работы конструктора мы получим готовый макет диалог, где можно заменить поля для ввода интервала дат на & Й ' стандартный выбор периода Вставить элемент управления П оле текстового док уменга Полоса регулирования Сводная диаграмма ••• Индикатор Поле календаря } Поле графической схемы ; Поле географической схемы Имя 1 Имя 2: Надпись 1: Надпись 2: НачПериода КонПериода Период с по Выбор периода i 35 Поле HTML документа ; ' 1 Диаграмма * Диаграмма Ганта ; АЛ Дендрограмма ОК Отмена Справка и диалог формы готов. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3($? lc.ru. 125
" 1С:Бухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" Отчет можно выполнить в пользовательском режиме ООО "1С-Учебный центр N 3", телефон (495) 253-58-38, e-mail uc3@lc.ru. 126
Отчеты, обработки, объект запрос : Объект запрос: свойства и методы Объект запрос: свойства и методы Прокомментируем модуль, который был написан конструктором в прошлой теме. Процедура ОтчетОЗакупках(ТабДок, КонПериода, НачПериода) Экспорт Макет = ОтчетОбъект.ПолучитьМакет{"ОтчетОЗакупках"); Запрос = Новый Запрос; //1 Запрос.Текст = //2 "ВЫБРАТЬ Товары.Номенклатура КАК Номенклатура, Товары.Ссылка, Товары.Количество КАК Количество, Товары.Сумма КАК Сумма |ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК Товары [ГДЕ | Товары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода |ИТОГИ | СУММА(Сумма) |П0 | ОБЩИЕ, | Номенклатура"; Запрос.УстановитьПараметр("КонПериода", КонПериода); //3 Запрос.УстановитьПараметр("НачПериода", НачПериода); Результат = Запрос.Выполнить(); //4 ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет . ПолучитьОбласть ("ШапкаТаблицы") ,- ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть ("Детали".) ; ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); //5 ВыборкаОбщийИтог.Следующий(); / / 6 ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог); //7 ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень()); ВыборкаНоменклатура - ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); //8 Пока ВыборкаНоменклатура.Следующий() Цикл //9 ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура) ; //10 ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 127
“ /С:Бухгалтерия 8". Конфигурирование и программирование от “А" до "Я” ТабДок.Вывести(ОбластьНоменклатура, ВыборкаНоменклатура.Уровень() ) ; ВыборкаДетали = ВыборкаНоменклатура.Выбрать(); //11 Пока ВыборкаДетали.Следующий() Цикл //12 ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали); ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень() ) ; КонецЦикла; КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); КонецПроцедуры Комментарии. //1 Объект запрос используется для выполнения запроса к базе данных из языка системы //2 Свойство запроса Текст позволяет записать (и прочитать, при необходимости) текст запроса, который должен быть выполнен. //3 Если в тексте запроса используются параметры, они должны быть переданы запросу до его выполнения //4 Метод Выполнить запроса выполняет запрос и возвращает результат запроса, который может или выгружен в таблицу значений, или передан сводной таблице или. как в нашем случае, //5 будет получена выборка результатов, и по этой выборке можно пройти в цикле. В нашем запросе три уровня записей: общие итоги, итоги по номенклатуре и детальная выборка. Все уровни обходятся последовательно (сверху вниз). Сначала мы получаем из результата запроса выборку общих итогов. Для этого в метод Выбрать передаем в качестве параметра метод обхода «ПоГруппировкам». В этой выборке всего одна строка, //6 на которой мы и позиционируемся. Теперь данные полей этой строки нам доступны для чтения и заполнения параметров макета //7 Заполняем параметр области значением из строки общей выборки //8 Чтобы «провалиться» на уровень ниже, в выборку итогов по Номенклатуре (если мы не указываем специально, то мы будем «проваливаться» в той последовательности, которая есть в предложении ИТОГИ запроса), мы получаем выборку строк из общей выборки. //9 в отличие от общего итоги, строк итогов по номенклатуре может быть много, поэтому мы обходим их в цикле //10 заполняя параметры области макета значениями полей выбранной строки. ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. е-mail uc3@ lc.ru. 128
Отчеты, обработки, объект запрос : Объект запрос: свойства и методы П\ 1 в самом конце мы получаем последний уровень - детальную выборку запроса, которую часто вообще в отчет не включают. В нашем случае мы поступаем с ней так же, как и итоговыми выборками, т.е. //12 обходим в цикле. 16. Практикум В одном из практикумов прошлой темы была решена задача печати справочника контрагентов вместе с данными табличной части «Контактные лица» и данными подчиненного справочника «Договоры контрагентов». Предложите новое решение этой задачи, на этот раз используйте для извлечения данных запрос. Контрагенты должны быть упорядочены по наименованию. 17. Практикум В практикумах предыдущей темы, посвященной запросу, были реализованы несколько запросов, позволяющих анализировать обороты и остатки товаров. Используя конструктор выходных форм разработайте отчеты с аналогичной функциональностью. ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 129
“ IС: Бухгалтерия 8". Конфигурирование и программирование от “/1" до "Я" Администрирование: продолжение Администрирование конфигураций Выполняя работы по конфигурированию, мы изменяем конфигурацию. Текущую конфигурацию. Уточнение существенное, потому что конфигураций одновременно существует несколько. Текущая конфигурация Это та конфигурация, в которой сохраняются изменения, когда мы нажимаем на кнопку «Сохранить конфигурацию». О том что, конфигурация не сохранена, свидетельствует значок «*». После сохранения после названия конфигурации появляется новый значок <!>, свидетельствующий о том, что текущая конфигурация отличается от конфигурации базы данных. Конфигурация базы данных Конфигурация базы данных используется для работы пользователей. Текущая конфигурация копируется в конфигурацию базы данных после того, как была нажата кнопка «Обновить конфигурацию базы данных». Если при обновлении конфигурации базы данных в ней работают пользователи, будет выдано преду преждение13 г:‘* tssssr i Л Ошибка исключительной блокировки информационной базы J \ Возможно, информационная база используется другой задачей. ’ Ошибка разделения доступа к базе данных 'С |'.Курсы\.Бух_А_Я/1 CvB 1 CD' Нажмите "Отмена" для прекращения обновления Нажмите "Повторить" для повторения попытки установки монопольного режима Нажмите "Обновить динамически" для обновления без завершения работы пользователей Отмена Повторить Обновить динамически В окне предупреждения можно или попытаться еще раз (может пользователи наконец-то ушли), отказаться от обновления или обновить динамически. Динамическое обновление14 возможно в том случае, если внесенные в конфигурацию изменения не затронули структур таблиц базы (изменились только модули, формы или макеты конфигурации). В случае динамического обновления текущих конфигураций будет уже не одна, а две. Первая, на которой работают все находящиеся сейчас пользователи и вторая, на которой будет работать все, кто войдут в базу данных после сохранения. Таким образом, конфигураций базы данных может быть несколько. Все огги 13 Начиная с версии 8.1 14 Доступно только начиная с версии 8.1 ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 130
Администрирование: продолжение: Администрирование конфигураций будет удалены и заменены единственной после того, как удастся полностью обновить конфигурацию базы данных (после выхода всех пользователей). Конфигурация поставщика Типовые решения распространяются в виде поставки, содержащей в себе информацию о поставщике и конфигурацию поставщика. Информация о поставщике хранится в свойствах конфигурации. i Основные: i Имя Бухгалтерия_В_от_А_до_Я < Синоним Бухгалтерия 8 от А до Я X Комментарий Вариант встроенного языка Основная роль Русский Модуль приложения Модуль внешнего соединения Модуль сеанса Режим управления блокировкой данных Дополнительные словари полнотекстового п> » Представление: Разработка: Открыть Открыть Открыть Автоматический Поставщик 1С - Учебный центр N-3 Версия 1 О Адрес каталога обновлении Создается и настраивается поставка, используя меню «Конфигурация» / Поставка. Начнем с настройки поставки. •_ Изменить Объект Правило Бухгалтерия_8_от_А_до_Я В, Общие Ё Общие модули Поставка модулей объе» та Включать тексты модулей объект м— liiwmrewK И'менения разрешены Не включать тексты модулей о Ё Параметры сеанса ; Ё Роли Ё Общие Формы Ё Интерфейсы Ё Обшие макеты Ё Тг Обшие » эртинки Ё Языки Ё Константы Ё Г Д Справочники Е Документы Ё •! ’ Перечисления 5 :СтавкиНДС Ё Отчеты Правило • Изменения разрешены 5 И »ме тения не рекомендуются И зменения запрещены Поставка модулей объекта Включать в поставку исходный текст модулей объекта ОК Отмена I Изменения не рекомендуются Ё >' Обработки Справка I Файл поставки может использоваться для обновления Закрыть Справка В настройке можно указать, будут ли разрешены изменения объекта, если пользователь конфигурации установи! режим «Разрешить изменения конфигурации», будут ли включены в поставку исходные тексты модулей. Далее мы создаем поставку ООО ”1С Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 131
“1Сбухгалтерия 8". Конфигурирование и программирование от “А ” до “Я” [Соэдгаи^ Файл поставки ✓ Создать Файл поставки Файл обновления конфигурации Создать Файл обновления конфигурации Имя Файла обновления Имя Файла поставки С \Курсы\Поставка\1 OMCvBcl Конфигурации для обновления. Имя Версия Имя файла Каталог Файлов поставки Выполнить Отмена Справка L Полученный файл конфигурации можно загрузить и увидеть, что получилось. Объекты конфигурации отмечены справа значками, свидетельствующими, что они находятся на поддержке поставщика и не редактируются. . Некоторые модули в конфигурацию включены не были, поэтому их просто нет. В нашем случае, это текст общего модуля. й Г VES _ □ X 1 L Исходный текст модуля отсутствует 1 Чтобы включить возможность изменения конфигурации, необходимо войти в меню «Конфигурация» / Поддержка / Настройка поддержки. Конфигурация находится на поддержке I Конфигурация поставщика Бухгалтерия_8_от_А_до_Я Поставщик: 1С-Учебный центр №3 Версия. 1.0 | Настройка правил поддержки объектов s Q^beKT Включить возможнт сть изменения Бухг аят ерия_8_от_Д_до_Я Бухгалтерия_8_от_А_до_Я Редактируется с сохранением поддержки \ й i Общие : Ё ** Константы Й Справочники ; Й Документы ; Ё ПоступлениеТоваровУслуг Ё РеализацияТоваровУслуг ; El р. Перечисления < • Ёт СтавкиНДС j Ё Отчеты Правила поставщика Редактируется с сохранением поддержки Редактируется с сохранением поддержки Не редактируется Объект редактируется ! Объект не рекомендуется редактировать X Объект не редактируется > Правила пользователя Объект не редактируется Объект редактируется с сохранением поддержки Объект снят с поддержки Открыть Сохранить в Файл Закрыть Справка После включения возможности изменения конфигурации, некоторые объекты можно будет изменять, оставаясь на поддержке, некоторые (в нашем случае перечисление) - нет. В дальнейшем, можно будет управлять - какие из объектов оставить на поддержке поставщика и обновлять при обновлении конфигурации, а какие нет. Сейчас у нас ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 132
Администрирование: продолжение: Администрирование конфигураций хранятся уже три конфигурации: текущая, базы данных и поставщика. В случае, если мы не собираемся пользоваться обновлениями поставщика, можно снять конфигурацию с поддержки. При этом конфигурация поставщика будет удалена, и обновлениями пользоваться будет уже нельзя. ООО "JC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 133
"IC:Бухгалтерия 8". Конфигурирование и программирование от “А" до “Я Тестирование и исправление ИБ В меню «Администрирование» / Тестирование и исправление ИБ находится механизм проверки и лечения базы данных. Проверки и режимы ✓ Реиндексация таблиц информационной базы ч/ Проверка логической целостности информационной базы Проверка ссылочной целостности информационной базы Пересчет итогов Выполнить Закрыть Справка Сжатие таолиц .Ж1фсрмацноннои базы Т олько тестирование • Т вотирование и исправление При наличии ссылок на При частичной потере несуществующие объекты данных объектов . Прервать выполнение проверки через 1 часов С мин. Механизм позволит исправить значительную часть ошибок базы данных, возникших из-за программных, аппаратных сбоев или неправильной эксплуатации. ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 134
Администрирование: продолжение : Доступ на уровне записей Доступ на уровне записей Доступ пользователей к объектам конфигурации мы рассмотрели выше в теме «Роли». При необходимости разрешить/запретить доступ разным пользователям к записям (экземплярам объекта в базе данных) используют тот же механизм ролей. Решим задачу: каждый пользователь должен иметь право изменять только свои документы. А чужие документы (сделанные другими пользователям), может только просматривать. Для этого откроем или Роль Администратора или свойства документа «Поступление товаров и услуг» закладку «Права». Установим для события «Изменение» ограничение данных для полей Ограничение в данном случае устанавливается на равенство реквизита документа Ответственный и параметра сеанса ТекущийПользователь. Т аб лиды и по ля У с ловия Поля л EJ- ПоступлениеТоваровУслуг Ссылка НомерП Условие - Поступление!оваровУслу Н « ПометкаУдаления - Номер - Дата - Проведен Ш * Организация Ё - Контрагент Ё - ДоговорКонтрагента Т екушииПользователь Запрос [Ответственнь-”| < Назад ОК Отмена Справка При попытке другого пользователя сохранить низменный документ, бу дет выдано предупреждение: ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 135
" 1С:Бухгалтерия 8”. Конфигурирование и программирование от “А" до “Я" Если установить все тоже условие на событие чтение, Основные Данные Нумерация Движения Последовательности Журналы Формы Макеты Подсистемы В вод на основании ► Права Интерфейсы Обмен данными Роли Добавл^ни» Изменение Чплпени' Ограничения доступа к данным: Поля 0граничение доступа Ссылка Г ДЕ Ответственный = IT екущийПользователь Прочее Действия ’ <Назад Далее> Закрыть то при выполнении запросов в запрос также не будут попадать данные (в данном случае о ссылках). При этом рекомендуется использовать уточняющие слово запроса «РАЗРЕШЕ11НЫЕ» "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Товары.Номенклатура КАК Номенклатура, | Товары.Ссылка, Результат: Отчет о закупках | Номенклатура (Ссылка (Количество |Cyill.la I Итог 1 025.00 Доска 010.00 «Объект не найден» (21.аЬ290 5 50,00 «Объект не найден» (21 аЬЗОО 50 500,00 «Объект не найден» (21 аЬ380 5 50,00 |«Объект не найден» (2ГаЬ38ц 1 10,00 Ткань 165.00 «Объект не найден» (21 аЬ290 5 75,00 «Объект не найден» (21 аЬ380 5 75,00 «Объект не найден» (21 аЬЗбО 1 15,00 Стул 250.00 «Объект не найден» (21 аЬЗЗО 50 250,00 ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 136
Регистры сведений : Регистры - первое знакомство Регистры сведений Регистры — первое знакомство Место учетного регистра в задаче автоматизации Рассматривая задачу учета можно выделить два вида учетных регистров: хронологические и систематические. Учетные регистры с хронологической записью предназначены для записи операций по мере их возникновения. Систематические - хранят информацию сгруппировано, систематизировано. Хронологические учетные регистры удобны для отражения свершившихся операций, но не удобны для получения отчетов - слишком сложные запросы, которые будут долго выполняться. Систематические учетные регистры не удобны для записи пользователю, но удобны для составления отчетов, т.к. хранят информацию сгруппировано по тем самым признакам, по которым она будет выводиться в отчет. Аналогами хронологических учетных регистров можно считать документы и журналы документов для их хранения. По документам можно строить отчеты (мы это делали), но на реальном объеме данных это будет неприемлемо медленно. Виды учетных регистров В конфигурации предусмотрено несколько объектов, для хранения данных, как в регистрах систематической записи. Это: • Регистры сведений • Регистры накопления • Регистры бухгалтерии • Регистры расчета Запись в эти регистры, как правило, осуществляется с помощью документа (исключение - регистры сведений не подчиненные регистратору), а извлекается запросами в отчетах. Каждый из них предназначен для решения своей задачи и именно эту задачу он решает оптимально. Начнем изучение регистров с регистра сведений. Регистр сведений предназначен для хранения состояний объектов (сочетаний объектов) в том числе состояний изменяющихся во времени вместе с историей этих изменений. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ ic.ru. 137
“1С: Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я” Непериодический регистр Задача: хранить основной договор контрагента и организации. Если бы нам поставили задачу просто сохранить основной договор контрагента, мы бы сделали в справочнике Контрагенты новый реквизит ОсновнойДоговорКонтрагента и сохранили бы там значение из подчиненного справочника ДоговорыКонтрагентов15. Однако, если у нас ведется учет по разным организациям, и с каждой из них у контрагента заключены свои договоры и по каждой есть свой основной, нам необходимо задействовать регистр сведений. В этом случае нам нужно хранить значение договора для сочетания «Организация + Контрагент». Свойства, для сочетания (всегда уникального) которых нужно хранить значение (или значения - их может быть несколько) называются измерениями регистра. Само значение - ресурсом. Создадим новый регистр сведений «ОсновныеДоговораКонтрагентовОрганизаций» I ► Основные !_ Имя ОсновныеДоговораКонтрагентовОрганизаций Данные Синоним Основные договора контрагентов организаций | Формы Комментарий ! Макеты Подсистемы Права Периодичность: Непериодический ч Интерфейсы _ Режим записи Независимый ” т Обмен данными I Прочее I Действия - Далее) Закрыть Справка Хранить историю этих значений нам не кажется важным (Непериодический), вносить данные будет пользователь прямо в таблице регистра (независимый, альтернативный вариант - при записи документа). На закладке Данные определяем структуру регистра. ; Основные : ► Данные В,' Формы Макеты Подсистемы Права Интерфейсы Обмен данными Прочее Действия * <Назад Измерения ДалееЗ t 1 i Закрыть Справка Имя | Организация] Ведущее Основной отбор Запрет незаполненных значений Контрагент Ресурсы ДоговорКонтрагента Реквизиты Основные: Организация Синоним Организация Комментарий Полнотекстовый поиск Использовать Т ип данных: Т ип СправочникСсылка Организации 15 этот вариант как раз и используется в типовом решении, но мы попробуем сделать лучше ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 138
Регистры сведений . Непериодический регистр Для измерений устанавливаем свойство «Ведущее», что означает, во- первых, что при удалении значения, которое храниться в измерении (например, элемента справочника Организации) будут удалены записи регистра (т.к. он теряют свой смысл). Во-вторых, измерение будет автоматически проиндексировано для быстрого поиска и отбора. Можно нарисовать форму списка регистра Данные События IE - РегисгрСведенийСписок Й ЭлементыФормы В • РегисгрСведенийСписок □ ТекущиеДанные Справка Г вязь по владельцу ?! I » Основные: ’ Использование. КнопкаСпискаВыбора КнопкаВыбора КнопкаОчистки КнопкаРегулироеания КнопкаОткрьгтия АетоОтметкаНезаполненного АвтоВыборНезаполменногс РежимВ ыбораИ зСписка БыстрыйЕыбор В ыборГ руппИЭ лементов Форма выбора Связь по типу Элементы ж < Основная? ... х ЭлементыФормы Регистр ... х ^Контрагент ОК Отмена В форме списка связываем договор контрагента с контрагентом по владельцу. Готово. Можно войти и заполнить регистр данными. Фабрика Действия Организация О Торговый дом Контрагент Договор контрагента i Главный покупатель Договор с Фаб'мкгй Глаоныи покупатель 0 сновной догивир наш регистр можно представить на оси координат следующим образом: Организации Измерений может быть и больше и ресурсов тоже. В нашем случае, для каждого сочетания измерений мы храним одно значение. Теперь, ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 139
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от “Л ” до “Я” если мы хотим воспользоваться нашим регистром для заполнения документов, можно написать к нему запрос и получить значение ресурса по заданным измерениям. Сделаем это для документа «Реализация товаров и услуг». Процедура КонтрагентПрийзменении(Элемент) ЗаполнитьДоговорКонтрагента(); КонецПроцедуры Процедура ОрганизацияПриИзменении(Элемент) ЗаполнитьДоговорКонтрагента(); КонецПроцедуры Процедура ЗаполнитьДоговорКонтрагента() Запрос - Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Договора.ДоговорКонтрагента |ИЗ РегистрСведений.ОсновныеДоговораКонтрагентовОрганизаций КАК Договора |ГДЕ | Договора.Организация = ^Организация | И Договора.Контрагент = &Контрагент"; Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("Контрагент", Контрагент); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ДоговорКонтрагента = Выборка.ДоговорКонтрагента; КонецЕсли; КонецПроцедуры В модуле мы описали два обработчика событий для событий ПриИзмснении поля ввода Организация и Контрагент. Из обоих обработчиков мы вызываем процедуру, выполняющую запрос к регистру и получающую значение ресурса (договора). )ОО ' 1 С-Учебный центр N 3”. телефон (495) 253-58-38, e-mail uc3@ lc.ru. 140
Регистры сведений : Периодический регистр Периодический регистр Некоторые состояния могут изменяться во времени. При необходимости хранения истории таких изменений и возможности быстро получить актуальное значение на какой-то момент времени используют периодические регистры сведений. Классический пример: курсы валют. Для каждой валюты из справочника нужно сохранить значение курса на дату. Такой регистр можно представить себе в виде схемы: В данном случае будет одно измерение «Валюта» и одно предопределенное поле регистра «Период», кратный дню (курс может изменяться каждый день). Для этого сочетания будет храниться курс. Регистр - ► Основные Данные Формы Макеты Подсистемы Права Интерфейсы Обмен данными Прочее Имя- КурсыВалют Синоним Курсы валют Комментарий: Периодичность: В пределах дня Режим записи Независимый Основной отбор по периоду Действия - Далее> Закрыть Справка Закладка «Данные» регистра включает одно измерение (Валюта) и один ресурс Курс (число) -3' » Основные: Имя Основные ► Данные Формы Макеты Подсистемы Права i I t Е _ . Измерения Й Ресурсы Курс -S Реквизиты Синоним Комментарий Валюта Валюта Интерфейсы Обмен данными Прочее Действия - < Назад Далее) Закрыть Справка I Ведущее j Основной отбор S Запрет незаполненных значений ।: Полнотекстовый поиск Использовать * Т ип данных 3’ Тип СправочникСсылка Валюты ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 141
“/СБухгалтерия 8". Конфигурирование и программирование от “А " до “Я" Основные t I j Основные: ► Данные Синоним В Реквизиты Прочее Длина Действия <Назаа Далее> Закрыть Справка Неотрицательное Имя Формы Макеты Подсистемы Права Интерфейсы Обмен данными Индексировать Не индексировать Полнотекстовый поиск Использовать 1 ил данных: Тип Число В г , Измерения . Валюта Ресурсы Курс Курс Комментарий |j т |; Точность If Готово. Можно заполнять курсы. Зайти в справочник Валюты и по кнопке «Перейти» перейти в регистр сведений (это при условии, что Валюта является ведущим измерением). s Действия I ' Перейти» ** Код Наименование Реальные и виртуальные таблицы Если посмотреть на наш регистр сведений в табличной модели данных, то выясниться, что у него не одна, а аж три таблицы: • Курсы Валют • КурсыВалют.СрезПервых • КурсыВалют.СрезПоследних Это совсем не означает, что в базе данных он так храниться. Нет. В базе данных есть только одна таблица (КурсыВалют). А остальные две - виртуальные. Их не существует в базе данных. Это запросы, выполняемые платформой по нашему требованию. Зачем они существуют? Можно было бы обойтись и без них, но подумайте, что пригодится в нашей ситуации чаще - история курсов или актуальный курс на какую-то дату по одной валюте? Наверняка второе. Можно, конечно, построить довольно сложный запрос, который обратится к основной таблице регистра и найдет нам актуальный курс на дату. ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 142
Регистры сведений : Периодический регистр Сложный, потому что не факт, что на выбранную дату курс есть и в этой ситуации, актуальным является последний16. Чтобы упростить нам жизнь, разработчики уже написали этот запрос и назвали его виртуальной таблицей. Чтобы получить актуальные значения курсов, нам достаточно обратиться к ней. указав, по какой валюте и на какую дату. Указываем мы условия выполнения запроса в параметрах виртуальной таблицы Т аблицы и поля Г руппировка Базаданны> Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Табыицы Поля СрезПоследмих Е Справочники Й 4 Документы Журналы Документов ЁН-. Перечисления Й РегистрыСведений Валюта - ^Валюта ОК Отмена Далее > СрезП ослеаних. П ериаа! СрезПоследник Валюта СрезПос ледник Курс Справка 1 Период I Условие Запрос ОК ')тмьна Справка ВНИМАНИЕ! Одно и то же условие можно поставить и в параметрах и в предложение запроса ГДЕ. Но производительность выполнения запроса может отличаться при этом на порядки. Например, отбор по валюте. Если условие пишется в предложении ГДЕ: сначала виртуальная таблица (читай - запрос) соберет данные по всем валютам, сформирует срез последних по всем валютам, а потом мы возьмем из него одну строку. Если же мы устанавливаем условие в параметре виртуальной таблицы, еще на этапе сбора данных для этой виртуальной таблицы платформа отсеет все ненужные данные. ВЫВОД: при необходимости поставить условие на измерение регистра (любого) это условие нужно устанавливать ТОЛЬКО в параметре виртуальной таблицы. Реальная таблица (таблица записей) Рассмотрим более подробно все таблицы регистра. Основная (реальная, физическая) таблица: ВЫБРАТЬ КурсыВалют.Период КАК Период, КурсыВалют.Валюта, КурсыВалют.Курс ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют ГДЕ КурсыВалют.Валюта = &Валюта 16 Если интересно, такой запрос описан в книге «1 С:Предприятие 8.0 Простые примеры разработки» авторов А.П. Габен. Д.И. Гончаров ООО ”1С-Учебный центр N 3”. телефон (495> 253-58-38. е mail uc3@Jc.ru. 143
“ 1СБухгалтерия 8". Конфигурирование и программирование от "А ” до "Я” УПОРЯДОЧИТЬ по Период Результат: Период Валюта Курс 16.02.2007 USD 17.02.2007 USD ; 20.02.2007 USD 26,3060 26,2314 26,2358 26,2131 Таблица СрезПоследних Предназначена для потучения последнего актуального значения на дату. ВЫБРАТЬ СрезПоследних.Период, СрезПоследних.Валюта, СрезПоследних.Курс ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = ЬВалюта) КАК СрезПоследних Выполняем запрос с отбором по валюте USD на дату 19.02.2007. Результат: IП ериод____Валюта Курс USD 26,2358 На эту дату у нас не было заведено курсов, значит берем последний (17.02.2007) Таблица СрезПервых Предназначена для потучения следующего актуального значения на дат\ ВЫБРАТЬ СрезПервых.Период, СрезПервых.Валюта, СрезПервых.Курс ИЗ РегистрСведений.КурсыВалют.СрезПервых(&Дата, Валюта - &Валюта) КАК СрезПервых Отбор тот же. Курса на 19.02.2007 у нас нет. поэтому получили первый курс, который идет за этой датой. Период____Валюта Курс USD 2е 2131 Подводим итоги Как правило, актуальным считается последнее введенное значение, поэтому, как правило, для извлечения данных из периодического регистра используют таблицу СрезПоследних. ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 144
Регистры сведении : Периодический регистр Аналог этой таблицы в объектной модели: метод регистра сведений Получить! 1оследнее(). ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 145
“ICБухгалтерия 8". Конфигурирование и программирование от “А ” до “Я” Подчинение регистратору, проведение документа Регистр сведений единственный, который может быть заполнен пользователем «вручную». Все остальные регистры заполняются исключительно документом-регистратором. Регистр сведений также может быть подчинен регистратору. Пример использования такого регистра - учет свойств основных средств. Основные средства - внеоборотные активы предприятия, которые используются более чем в одном цикле воспроизводства и стоят, как правило, дорого. Часть свойств объектов являются неотъемлемыми и неизменяемыми, например: инвентарный номер, название, заводской номер. Другая часть может изменяться во времени: подразделение, где эксплуатируется объект, МОЛ (материально-ответственное лицо) за которым закреплен этот объект и др. Причем, просто так объект не может быть (не должен быть) передан из одного подразделения в другое. Это событие должно оформляться документом (приказом) и сохраняться в учете и базе данных. Учет свойств основных средств Создадим новый справочник «ФизическиеЛица» для хранения информации о сотрудниках, подотчетниках и МОЛах нашего предприятия. ► Основные Имя ФизическиеЛица Иерархия Владельцы Синоним: Физические лица j Данные Комментарий ▼ Действия - Далее> Закрыть Справка Создадим новый справочник «ОсновныеСредства», иерархический, содержащий реквизиты «ДатаВыпуска» (Дата) и «НомерПаспорта» (Строка). Основные Иерархия i Владельцы ► Данные I Нумерация 2 Формы Макеты i Подсистемы |. i Ввод на основании | Права j Интерфейсы Обмен данными Прочее Т ип кода Основное представление Число В виде кода • Строка • В виде наименования I В « = -• - ДатаВыпуска » НомерПаспорта Реквизиты Т абличные части Действия • < Назад Далее> Закрыть Справка ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3 (s'lc.ru. 146
Регистры сведений : Подчинение регистратору, проведение документа Регистр «Местонахождение ОС» Для хранения данных о перемещениях объектов ОС создадим регистр сведений «МсстонахождениеОС». Регистр будет подчинен ПО регистратору, и иметь периодичность Имя. МестонахождениеОС I Синоним Местонахождение ОС Комментарий регистратору. ► Основные Данные Регистраторы Формы Макеты Подсистемы Права Интерфейсы О бмен данными Прочее Периодичность Режим записи Действия Далее> По позиции регистратора Подчинение регистратору Закрыть Справка i — Физически периодичность по регистратору означает, что в качестве одного из «встроенных измерений» будет выступать сам документ. Таким образом, у регистра будет два «предопределенных измерения»: период и регистратор. Вместе с дополнительными измерениями, которые мы заведем, они будут создавать всегда уникальный набор измерений, который не может повториться. Основные Прочее Действия <Назад Далее> Закрыть Справка Измерения ► Да. инь е Регистраторы Формы Макеты П мсистемы Права Интерфейсы О бмен данными । = . ОсновноеСредство L— . Организация F3 Ресурсы МОЛ Местонахождение -« Реквизиты В регистре будут измерения ОсновноеСредство (СправочникСсылка.ОсновнысСредства. ведущее) и Организация (СправочникСсылка.Организации). Ресурсами регистра будут выступать МОЛ (СправочникСсылка.ФизическиеЛица) и Местонахождение (СправочникСсылка.НодразделенияОрганизаций). Нам осталось создать документ и описать алгоритм формирования записей в per истр. Документ «Перемещение ОС» Для ввода и хранения приказов о перемещении объектов основных средств создадим документ «ПеремещенисОС». Этот электронный аналог приказа будет иметь следующую структуру: ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 147
'Ч С-.Бухгалтерия 8". Конфигурирование и программирование от “А" до "Я” Основные ► Данные I | Нумерация | Движения | Последовательности ‘ Журналы I « Формы I Макеты г | Подсистемы | I Ввод на основании I | Права 5 i Интерфейсы | Обмен данными i _ I Прочее Реквизиты шапки: Организация, Подразделение и МОЛ (СправочникСсылка.ФизическиеЛица). В реквизитах шапки будут выбираться новые значения (куда перемещается) подразделения и МОЛа. Табличная часть ОС с реквизитом «ОсновноеСредство». Документ позволит переместить сразу несколько объектов из одного подразделения в другое. Осталось нарисовать форму документа, в которой мы свяжем по владельцу Подразделение с Организацией. Документ готов. Осталось описать алгоритм формирования записей в регистр. Проведение документа Изначально документ предназначен для того, чтобы фиксировать события в хозяйственной жизни организации. Кроме этого он имеет еще одни предназначение - он может вносить информацию в учетные регистры, где она уже будет храниться свернуто для быстрого извлечения отчетами. Подобное действие называется проведением документа. Для формирования записей в регистр существует специальный объект «НаборЗаписей». Этот объект позволяет считать и записать набор из ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 148
Регистры сведений : Подчинение регистратору, проведение документа нескольких записей регистра в одной транзакции. При желании, мы можем, используя этот объект создать записи к документу «извне», но как привило, записи формируются при проведении документа. Как работает этот механизм? У документа есть свойство «Движения». Это коллекция, которая содержит столько наборов записей, для скольких регистров этот документ является регистратором. Основные ''аннь s Нумерация Движения П ос ледовате льности Журналы Формы Чечеты да; Проведение Разрешить Оперативное проведение Запретить Удаление движений: Удалять движения автоматически < Регистры сведений М естонахо ждениеО С Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее * Конструктор движений М стонахождениеОС Действия <Назад Далее> Закрыть Справка В нашем случае - всего один. Это набор записей регистра сведений по имени «МестонахождениеОС». Если документ может быть проведен (свойство Проведение = Разрешить), мы можем описать в обработчике события заполнение этого набора записями. А свойство Удаление движений = Удалять движения автоматические позволит документу при повторной записи сначала удалить старые движение и только затем сформировать новые. Обработчик проведения документа описывается в модуле документа. Сделать это можно или «вручную» или конструктором движений. Воспользуемся конструктором. Регистреведении МестонахождениеОС Регистры L Организация > Подразделение Реквизиты документа Дата МОЛ Т ек Строк аО С О сновноеСредство I } : Т абличная часть ОС > Поле ОсновноеСредство Организация I МОЛ ' Местонахождение Выражение ТекСтрокаОС ОсновноеСредство Организация МОЛ Подразделение Далее> Заполнить выражения Очистить выражения ОК Отмена Справка ООО " IC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ 1с ru 149
“ 1СБухгалтерия 8". Конфигурирование и программирование от “Л ” до “Я" В левом верхнем окне конструктора создадим столько строк, сколько движений в регистры должен делать документ. Так как нужно делать движения по строкам табличной части, выберем табличную часть ОС и заполним соответствия свойств регистра и реквизитов документа. Результат: готовая процедура проведения. Процедура ОбработкаПроведения(Отказ, Режим) Для Каждого ТекСтрокаОС Из ОС Цикл Движение = Движения.МестонахождениеОС.Добавить(); Движение.Период - Дата; Движение.ОснсвноеСредство = ТекСтрокаОС.ОсновноеСредство; Движение.Организация = Организация; Движение.МОЛ = МОЛ; Движение.Местонахождение = Подразделение; КонецЦикла; Движения.МестонахождениеОС.Записать(); КонецПроцедуры Прокомментируем процедуру. Параметр обработчика Отказ позволяет отменить проведение документа, например, если в процессе проведения выяснилось, что не заполнено важное свойство и документ проведен быть не должен. Для этого достаточно в теле процедуры написать Отказ = Истина; В цикле по табличной части документы мы добавляем в набор записей новое движение и заполняем его свойства. В самом конце выполняем запись всего набора в базу данных. Метод Записать в документе не обязателен - на момент записи документ проверит, был ли набор записей изменен и запишет его сам. Готово. Действия» Перейти » >У Действия» v Перейти» Дата 20 02200717 06 52 00000 Организация Торг выйдем Подраздела л Бухгалтерия Номер. Дата Организация Подразделение; МОЛ 000000001 20.02 20071706 52 Торговый дом Бухгалтерия Иванов 4 N Основное средство |U Компьютер 2 Принтер Был введен новый документ, который при проведении сделал движения в регистр. Движения можно просмотреть, используя кнопку «Перейти». ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 150
Регистры сведений : Подчинение регистратору, проведение документа Проектирование регистра и запись в регистр При проектировании регистра следует уделять внимание следующим важным правилам. Во-первых, сочетание измерений должно быть уникальным. Например, в нашем случае это правило будет нарушено только в том случае, если пользователь дважды введет одно и тоже основное средство в таблицу документа. Тогда при проведении будет выдано предупреждение: ; 7Г''й Ошибка при вызове метсиа контекста [Записать) Запись с таг ими ключевыми полями сушествуег! Компьютер Торговый дом 20 02 2007 ' %^>т 17 06:52: Перемешени . ОС 000000001 от 20 02.2007 17 06 52 (Регистр сведений Местонахождение ОС. Номер строки 3) ОК Подробно ? ............................. И документ проведен не будет. Во-вторых, желательно объединять в один регистр ресурсы, которые изменяются вместе. В той же задаче учета основных средств у объектов учета будем масса свойств. Можно положить их все в один регистр (добавить ресурсы). Однако, надо учитывать, что если мы захотим изменить только одно из них, а остальные не заполним (старыми значениями, которые не изменились), то в регистр будут добавлены записи с пустыми значениями ресурсов. И с этого момента актуальными значениями для выбранных объектов будут считаться пустые. Таким образом, если из десяти ресурсов изменено значение только одного, придется изменить значение этого одного, а для остальных ресурсов «вспомнить» старые значения и записать их еще раз. В нашем случае, если мы передаем объекты ОС от одного МОЛа к другому, но подразделение остается тем же, нам нужно не только выбрать новое физическое лицо, но и вспомнить и заполнить старое подразделение, чтобы они в нем же и остались. Поэтому желательно разделить свойства объектов на столько регистров, сколько удастся выделить групп свойств, изменяющихся одновременно. Запрос к актуальным значениям Покажем пользователю актуальные значения свойств основного средства в диалоге формы элемента справочника. Для этого разместим в диалоге формы поля ввода, связанные с реквизитами формы (нам не нужно хранить в справочнике эти значения, нужно только показать актуальные). ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 151
“ 1С:Бухгалтерия 8 ". Конфигурирование и программирование от “А” до “Я" Действия - «- л ч» ? Q Код Наименование Родитель. .. х Дата выпуска: 0 Номер паспорта Дата сведений: 0 Местонахожде <л МОЛ Q. (Lj ОК Записать Закрыть Новые реквизиты формы: ДатаСведений (Дата+Время), Местонахождение (СправочникСсылка.ПодразделенияОрганизаций) и МОЛ (СправочникСсылка.ФизическиеЛица). Для полей ввода установим свойства «КнопкаОткрытия» и « Т олькоПросмотр». Основные: Группы и элементы <Основная> ’ Использование: I КнопкаСпискаВыбора I КнопкаВыбора ! КнопкаОчистки г | КнопкаРегулирования | КнопкаОткрытия | АвтоОтметкаНезаполненного I АвтоВыборНезаполненного i РежимВыбораИзСписка 5 СочетаниеКлавиш БыстрыйВыбор ВыборГ руппИЭлементов Форма выбора Связь по типу Связь по владельцу • ’Характеристики Выбирать! ип РежимВыбораНезаполненного При нажатии Enter Т олькоПросмотр V* Это позволит пользователю открыть элемент справочника, но нс позволит его изменить значение свойства (это нужно делать документом). В модуле формы опишем процедуру и обработчики событий. Процедура ЗаполнитьОписания() Запрос = Новый Запрос; Запрос.Текст = " ВЫБРАТЬ Сведения.МОЛ, Сведения.Местонахождение |ИЗ РегистрСведений.МестонахождениеОС.СрезПоследних( //1 &ДатаСведений, | ОсновноеСредство = &ОсновноеСредство) КАК Сведения”; Запрос.УстановитьПараметр("ОсновноеСредство", Ссылка); Запрос.УстановитьПараметр("ДатаСведений", ДатаСведений); Результат = Запрос.Выполнить(); ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 152
Регистры сведении Подчинение регис. тритору, проведение документа Если НЕ Результат.Пустой() Тогда //2 ЗаполнитьЗначенияСвойстЕ(ЭтаФорма, Результат.Выгрузить()[0]); //3 КонецЕсли; КоненПронедуры Процедура ПриОткрытии() ДатаСведений = КонецДня(РабочаяДата); ЗаполнитьОписания() ; КонецПроцедуры Процедура ДатаСведенийПриИзменении(Элемент) ЗаполнитьОписания() ; КонецПроцедуры Прокомментируем модуль. Процедура ЗаполнитьОписания выполняет запрос к срезу последних регистра. Процедура вызывается в момент открытия формы и в момент изменения даты сведений. //1. В качестве источника выбрана таблица актуальных значений СрезПоследних. Отбор выполняется на дату из реквизита формы и по ссылке. Если это новый элемент справочника и ссылка в базе еще не создана, запрос будет пустым. //2 если запрос не пустой, значит можно заполнить свойства формы. //3 метод запроса Выгрузить вернет таблицу значений. В ней должна быть только одна строка с актуальными значениями. Эта строка имеет индекс «0», по которому можно к ней обратиться. В строке имена колонок соответствуют псевдонимам полей запроса и именам реквизитов формы. Используем метод ЗаполнитьЗначенияСвойств, мы заполняем значениями ячеек строки одноименные реквизиты формы. ООО "1С Учебный центр N 3". телефон (495) 253-58-38. е mail uc3@4c.ru. 153
“ 1СБухгалтерия 8". Конфигурирование и программирование от “А” до “Я” Механизм характеристик Планы видов характеристик План видов характеристик представляет собой специфический справочник, который кроме стандартных для справочника свойств позволяет хранить для каждого своего элемента еще и тип значения. Понятие «План видов характеристик» можно «разложить» на три составляющие: план видов. виды характеристик и сами характеристики. В самом объекте мы можем определить первые два и типы значений третьего (характеристик). Поставим себе задачу: нам требуется сохранить для каждого пользователя системы некоторый набор значений по умолчанию. Такими значениями могут быть: основная ставка НДС. основная организация, основной покупатель и основной поставщик. Как можно было бы решить эту задачу? Можно так: создать справочник «Пользователи» и добавить в него реквизиты «ОсноваяСтавкаНДС», «ОсновнаяОрганизация» и др. Можно так сделать? Конечно! В чем будет слабое место такого решения? При необходимости хранить еще одно значение для каждого пользователя придется изменять конфигурацию, добавляя новый реквизит в справочник. Чтобы решить эту проблему (и не только ее) был придуман механизм характеристик, который позволяет пользователю самому создавать некое подобие новых реквизитов и самому их заполнять. Чтобы предоставить пользователю возможность создавать такие реквизиты мы должны, во-первых, где-то хранить список этих реквизитов, а, во- вторых, хранить тип значения каждого такого «реквизита». Для решения этой задачи и предназначен план видов характеристик. Сейчас нам еще не хватает знаний, чтобы решить задачу ввода и хранения характеристик объектов (реквизитов пользователей) полностью, мы лишь сделаем заготовку, которая позже позволит нам решить поставленную задачу. Создадим план видов характеристик «НастройкиПользователей». Все свойства этого объекта сильно похожи на свойства справочника, только в этом случае это не справочник, а «справочник реквизитов», для каждого из которых надо хранить не только его имя. но и тип значения. Ла закладке «Основные» мы задаем все возможные типы значений свойств, которые мы собираемся создать и хранить в этом плане видов характеристик. В нашем случае будет достаточно типов СправочникСсылка: Организации, Валюты, Контрагенты и ПеречислениеСсылка: СтавкиНДС. ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 154
Регистры сведений: Механизм характеристик ► Основные Иерархия Данные Имя. НастройкиПользователей Синоним Настройки пользователей Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Комментарий: Т ип значения характеристик: ПеречислениеСсылка.СтавкиН1 Дополнительные Составной тип данных 1 с Строка Дата z Булево СправочникСсылка Организации Валюты Номенклатура ПодрааделенияОрганизаций v Контрагенты ДоговорыКонтрагентов ПеречислениеСсылка F1 Действия ’ Дале Ei- Ст г акиНДС ПланВиаовХарактеристикСсылка Отмена ОК Б Составной тип данных Чтобы иметь возможность хранить в одной ячейке значения различных типов данных используется составной тип данных (флаг в левом верхнем углу окошка выбора типов). Значения составного тип данных хранятся в базе данных иначе: если для хранения значения одного типа данных программа добавляет в таблицу базы одно поле (например, мы добавили в справочник Контрагенты реквизит ИНН), то для хранения составного несколько. Для хранения каждого значения составного типа данных, в состав которого входят только ссылочные (как у нас: СправочникСсылка и 11еречислениеСсылка). программа задействует три поля в базе данных. Представим себе таблицу базы данных, для хранения некого реквизита. Если реквизит имеет простой (не составной тип данных), то для хранения его значения расходуется одно поле таблицы Таблица базы данных Реквизит простого типа данных Значение 1 Значение 2 Если же реквизит имеет составной тип данных, и в состав входят только ссылочные типы, то для хранения его значения потребуется тип поля базы данных Таблица базы данных — — Реквизит составного типа данных Имя объекта Имя таблицы Значение 11еречисление.имя Имя таб. Ссылка Справочник.имя Имя таб. Ссылка ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 155
"1С:Бухга1терия 8". Конфигурирование и программирование от "А " до "Я" Если в состав типа входят еще и примитивные типы (число, дата, строка, булево), то на хранение каждого примитивного расходуется еще одно поле базы данных. Например, если в состав включить еще и число и строку, кроме ссылок, то для хранения одного значения потребуется пять полей базы дынных. Таблица базы данных ... Реквизит составного типа данных Имя объекта Имя таблицы Значение Число Строка Имя спр. Имя таб Ссылка 10 «Строка» Таким образом, больше всего в базе данных займет поле для хранения составного типа данных, в состав которого входят ссылки и все четыре примитивных типа данных. Возвращаемся к нашей задаче: мы определили возможный тип значения характеристик как составной, включающий в себя только ссылки. Таблицу плана вида характеристик в базе данных можно представить следующим образом: GUID Код Наименование Тип значения характеристики 1 Основная ставка НДС ПеречислениеСсылка.СтавкиНДС 2 Основная организация СправочникСсылка.Организации И др. Сами значения (Основная ставка НДС, Основная организация) и выбор типа данных для них можно поручить вводить пользователю, а можно сделать это самим. И в справочнике (мы эту возможность не использовали) и в плане видов характеристик есть возможность заводить предопределенные значения. Предопределенные значения вводятся в конфигураторе и не могут быть удалены пользователем. В нашем случае мы воспользуемся этой возможностью, чтобы завести те свойства пользователя, которые однозначно будут нужны. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 156
Регистры сведений : Механизм характеристик Основные Иерархия Данные Модуль объекта П род nf оделенные Ну & ф| Действия Me По Вв Имя В Характеристики ОсновнаяО рганизация Код Пр Ин (ОсновнаяСтавкаНДС! Об - ОсновнойПокупатель — ОсновнойПоставщик ► Пр Родитель Характеристики Имя ОсновнаяСтавкаНДС Код 000000001 Наименование Основная ставка НДС Тиа Перечне лениеСсылка СтавкиНДС ОК Дек. Тип наименование Отмена 000000002 000000001 000000003 000000004 СправочникСсылка Организации Перечне лениеСсылка СтавкиН ДС СправочникСсылка Контрагенты СправочникСсылка Контрагенты Основная организация Основная ставка НДС Основной покупатель Основной поставщик СтаокиНДС Составной тип данных СправочникСсылка Перечне лениеСсылка Справка Отмена На закладке прочее мы открываем список предопределенных элементов (видов характеристик) и создаем новые. Для каждого вида характеристик мы задаем имя (неизменяемое) код и наименование (по умолчанию, пользователь сможет изменить) и тип значения (выбранная ссылка). Список «реквизитов» готов. Действия ’ I ° С ? Код 000000002 000000001 | 000000003 , 000000004 • - 000000005 Наименование ’ Тип значения Основная организация Справочник ссылка: Организации Основная ставка НДС Перечисление ссылка: Ставки НДС Основнойпокупатель СправочникСсылка Контрагенты Основной поставщик Справочник ссылка: Контрагенты Справочник ссылка' Контрагенты Т ожс что то с слоеное При желании, пользователь сможет добавить новые виды свойств (новые реквизиты), но предопределенные (отмеченные в пиктограмме точкой) удалены им быть не могут. Регистр сведений Какое все это имеет отношение к поставленной нам задаче хранения настроек пользователей? Для решения этой задачи нам потребуется еще два объекта: справочник «Пользователи», который будет хранить список пользователей нашей конфигурации и таблица в базе данных следующей структуры: Пользователь Вид характеристик Характеристика Иванов Основная ставка ИДС 18% Иванов Основная организация Фабрика ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 157
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" Иванов . . • ... Петров Основная ставка НДС 10% Петров . .. — ... ... Эта таблица будет хранить для каждого отношения «Пользователь - вид характеристики» значение характеристики. Создадим новый регистр сведений «НастройкиПользователей». Основные ► Данные Формы Макеты Подсистемы Права Интерфейсы О бмен данными Прочее Действия 'Назад Основные: Пользователь Синоним Закрыть Далее> Справка Имя Полнотекстовый поиск Использовать 7 Т ип данных: | Тип СправочникСсылка Пользователи Пользователь Комментарий , Настройка Й _ Ресурсы Значение •—S Реквизиты В . . Измерения Ведущее Основной отбор Запрет незаполненных значений регистр будет иметь измерения Пользователь (СправочникСсылка.Пользователи) и Настройка (ПланыВидовХарактеристикСсылка.НастройкиПользователей) и один ресурс Значение (Характеристика.НастройкиПользователей). Основные: Имя Синоним Настройка ; Комментарий Ведущее Основной отбор * i Запрет незаполненных значений Индексировать Не индексировать Полнотекстовый поиск Использовать ▼ ’Тип данных. Тип ПланБиаовХарактеристикСсылка.НастройкиПользователей ... Z. ' Основные: Имя Значение Синоним Значение Комментарий Индексировать Не индексировать Полнотекстовый поиск Использовать Т ип данных: Тип ХарактеристикаНастройкиПользователей Измерение «Настройка» будет хранить ссылку на вид характеристик. А вот ресурс будет хранить значение составного типа данных, состав ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 158
Регистры сведений : Механизм характеристик которого определен в плане видов характеристик. И поле ввода такого типа может быть связано с видом характеристик. На этом можно было бы и остановиться, но хочется сделать удобный интерфейс. Сейчас мы можем перейти к списку регистра и заполнить значения (правда, выбирая каждый раз тип данных), а потом сможем получить значения запросом. Но это не удобно. Создадим форму элемента справочника Пользователи и разместим там поле для редактирования регистра сведений. Действия ’ «. г. %* Кед Наименование: Действия - Настройка »Ь «Поле ввода; Значение аЬ. «Поле ввода; | £..} ОК Записать Закрыть В диалоге формы справочника размещаем табличное поле НастройкиПользателей типа РегистрСведенийНаборЗаписей. Т.к. в табличном поле должны отображаться значения свойств только текущего пользователя, оставляем в нем только две колонки: Настройка и Значение. Устанавливаем для этого табличного поля свойства: • ИзменяетДанные • ОбновлятьПриИзмененииОтбора • о’им» pl 1 Основные л; H астрой*«Пользователей । Данные НастройкиПользователей ТилЗначения РегистрСведенийНаборЗаписей НастройкиПользовагелей ▼ ... * ИзменяетДанные * \ ПропускатьПриВводе 1 \ ПервыйВГ руппе Видимость ; Доступность i АвтоКонтекстноеМеню s КонтекстноеМеню Отсутствует v । ▼ Использование 1 Тольк оПросмотр ИзменятьСоставСтрок РазрешитьНачалоПеретаскивания I РазрешитьПеретаскивание ; ИзменятьНастройкуКолонок ** ИзменятьПозициюКолонок Вывод Авто » J ОбновлятьПриИзмененииОтбора v v' ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ 1с ru 159
“ 1СБгхга/терия 8". Конфигурирование и программирование от “А ” до “Я" Для колонки табличного «Значение» устанавливаем связь по типу с «Настройкой» (это позволит выбрать в ней значение только того типа данных, который назначен в виде характеристик настройки). U 1 Основные: ТипЗначения ХарактеристикаНастройкиПользователей » — Доступность * » Использование: КнопкаСпискаВыбора КнопкаВыбора КнопкаО чистки КнопкаРегулироеания КнопкаОткрытия АетоОтметкаН ©заполненного АвтоВыборН ©заполненного СвЯ^Ь ПО типу РежимВыбораИзСписка БыстрыйВыбор ВыборГруппИЗлементов Группы и элементы ▼ ЭлеменгысРормы.Настрой1' ... х Данные События | □НастройкиПользователей । Й- ЭлементыФормы Ё) НастройкиПользоваггелей Й-Т екущие Данные I Настройка? 13-Отбор ОК Отмена Справка Для колонки настройка снимаем свойство «КнопкаОчистки», оставляя только «КнопкаВыбора» и назначаем обработчик события ПриИзменении Процедура НастройкиПользователейНастройкаПриИзменении(Элемент) Тд = ЭлементыФормы.НастройкиПользователей.ТекущиеДанные; Тд.Значение = Тд.Настройка.ТипЗначения.ПривестиЗначение(Тд.Значение); КонецПроцедуры Прокомментируем эту процедуру. Настройка имеет тип данных «ВидХарактеристикСсылка». У вида характеристик есть свойство «ТипЗначения» типа «Описание типов». Для описания типов есть метод ПривестиЗначение. Который, получив на себя в качестве параметра любое значение, проверяет «укладывается» ли оно в типы, если - да, возвращает его обратно. Если нет - возвращает пустое значение нужного (описанного в типах) значения. Результат - значению присвоен не составной тип данных соответствующий настройке. Осталось позаботиться о том, 1. чтобы в момент открытия для вновь созданных и незаписанных в базу элементов поле было недоступно (если нет ссылки, то и в регистр нечего сохранять) 2. чтобы при открытии и при записи (записали новый элемент) устанавливался отбор в табличном поле по пользователю ООО ”1С-Учебный центр N 3”, телефон (495) 253-58-38. е-mail uc3@ lc.ru. 160
Регистры сведений: Механизм характеристик 3. чтобы при записи элемента, набор записей регистра также записывался бы в базу данных Для этого мы допишем одну процедуру и пару обработчиков событий в модуль формы. Процедура УстановитьОтборИДоступность() ЭлементыФормы.НастройкиПользователей.Доступность = Не ЭтоНовый(); НастройкиПользователей.Отбор.Пользователь.Значение = Ссылка; НастройкиПользователей.Отбор.Пользователь.Использование = Истина; КонецПроцедуры Процедура ПриЗаписи(Отказ) УстановитьОтборИДоступность(); Если НастройкиПользователей.Модифицированность() Тогда НастройкиПользователей.Записать(); КонецЕсли; КонецПроцедуры Процедура ПриОткрытии() УстановитьОтборИДоступность(); КонецПроцедуры Г отово. Получение значений ресурса регистра Механизм настроек пользователей был разработан нами, прежде всего для того, чтобы помочь пользователю заполнить новый документ. Например, подставить туда организацию. Создадим новую функцию и новую процедуру общего модуля. Функция ПолучитьЗначениеПоУмолчанию(Пользователь, Настройка) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Настройки.Значение |ИЗ | РегистрСведений.НастройкиПользователей КАК Настройки | ГДЕ | Настройки.Пользователь = &Пользователь И Настройки.Настройка = &Настройка"; Запрос.УстановитьПараметр("Пользователь", Пользователь); Запрос.УстановитьПараметр("Настройка", ПланыВидовХарактеристик.НастройкиПользователей[Настройка]); Выборка = Запрос.Выполнить().Выбрагь(); Если Выборка.Следующий() Тогда Возврат Выборка.Значение; ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 161
”1С: Бухгалтерия 8". Конфигурирование и программирование от "А ” до "Я” КонецЕсли; Возврат Неопределено; КонецФункции Процедура ЗаполнитьШапкуДокумента(ДокументОбъект) Экспорт ТекПользователь = ПараметрыСеанса.ТекущийПользователь; Если НЕ ДокументОбъект.Метаданные().Реквизиты.Найти("Организация") = Неопределено Тогда ДокументОбъект.Организация = ПолучитьЗначениеПоУмолчанию(ТекПользователь, "ОсновнаяОрганизация"); КонецЕсли; КонецПроцедуры Прокомментируем модуль. Функция, получив на себя текущего пользователя и имя (строка) настройки, выполняет запрос к регистру сведений и получает значение нужной настройки пользователя. Процедура же проверив наличие в документе реквизита, заполняет его значением. Осталось вызвать процедуру из обработчика события формы документа ПриОткрытии Процедура ПриОткрытии() Если ЭтоНовый() Тогда ЗаполнитьШапкуДокумента(ДокументОбъект); КонецЕсли; КонецПроцедуры Готово. 18. Практикум Заполнять ставку НДС по умолчанию при вводе нового элемента справочника номенклатуры. Сделать новые свойства ОсновнойПокупатель и Основной! 1оставщик и заполнять ими значения контрагента в документах РеализацияТоваровУслуг и ПоступлениеТоваровУслуг. ООО 1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 162
Регистры накопления : Механизм характеристик Регистры накопления Как мы уже знаем, основное предназначение регистра хранить данные так, чтобы их было удобно и быстро извлекать. Как говорится, «подальше положишь - поближе возьмешь». В этом смысле регистр накопления не является исключением. Его задача - накапливать (ссумируя) остатки и обороты ресурсов в разрезе измерений. Регистр накопления получает на входе движения, а на выходе показывает агрегированные (накопленные) показатели остатков и оборотов (приход и расход). В отличие от регистра сведений, который хранил состояние (ресурс) в разрезе уникального сочетаний измерений, и, как результат, мог хранить только одну строку с этим уникальным сочетанием измерений, регисгр накоплений может (и должен!) хранить строк с таким сочетанием измерений много... хранить и накапливать по ним итог. Накапливать, агрегировать можно только числовые показатели, поэтому в отличие от регистра сведений, ресурсы регистра накопления могут быть только числовые. Как правило, регистры накопления используют для учета наличия и движения средств (денежных, материальных, любых, которые имеют количественное выражение). Регистр накопления обязательно подчинен регистратору и может изменяться только при наличии документа, как правило, при его проведении. Подводя итоги: регистр сведений предназначен для учета качественных состояний объектов и их изменения. Регистр накопления предназначен для агрегирования количественных показателей при решении задачи учета наличия и движения средств. Самым простым и наглядным примером использования регистра, с которого обычно начинают его изучение, является учет товаров. Итак, если нам была поставлена задача учета товаров в количественном выражении в разрезе товаров и складов, мы бы создали механизм, описывающий в программе следующую систему координат: ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 163
“1Сбухгалтерия 8". Конфигурирование и программирование от "А " до Я” Товар Паркер Офис Склад В данном примере регистр «Остатки товаров» будет содержать два измерения: Товар и Склад, на пересечении которых в ресурсе регистра будет храниться количественный остаток, который будет посчитан регистров по всем сочетаниям измерений. Используя этот механизм, решим пусть упрощенную, но задачу из реальной жизни регламентированного учета - задачу учета НДС. Немного теории. НДС (налог на добавленную стоимость), как не сложно догадаться из названия, уплачивается с «добавленной стоимости». Как можно определить, какую именно стоимость добавило наше предприятие к ценам поставщика и с которой, стало быть, нужно заплатить налог в бюджет? Можно запомнить на какую сумму ценностей мы получили, и сколько в них было НДС (ведь поставщик, наверняка тоже его платит), потом при продаже этой ценности также выделить НДС, а потом от второго показателя отнять первый. Пример: мы купили у поставщика 1 штуку товара по цене 118 рублей в том числе НДС 18% составил 18 рублей. Далее, мы продали эту штуку товара за 177 рублей, в том числе НДС 18% 27 рублей. Мы должны уплатить в бюджет 27-18 = 9 рублей. И мы должны обосновать, что именно столько мы должны уплатить. Для этого мы ведем журнал регистрации счетов-фактур полученных от поставщика, журнал регистрации счетов-фактур выданных покупателя и книгу покупок и книгу продаж. Выделим из этой задачи подзадачу: учет полученного (входящего) НДС. Нарисуем диаграмму связей документов, регистров и отчетов. ООО "JC-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 164
Регистры накопления : Регистр остатков Мы получаем от поставщика накладную и (может быть, а может и не быть) фактуру. Если фактура получена, мы имеем право принять ее к учету и отразить в книге регистрации счетов-фактур полученных. Далее, при выполнении определенных условий (которые не есть одинаковые для разных видов ценностей: например, для основных средств надо не только получить, но ввести ОС в эксплуатацию, а для расходов будущих периодов можно принять НДС к зачету только в части расходов отнесенных в текущем месяце, а не всех полученных) мы включаем полученные фактуры в книгу покупок. Возможно, что не на всю сумму (ку пили 10 объектов ОС. а ввели в эксплуатацию только 5). Пользователю необходимо знать следующие показатели учета: • на какую сумму НДС и без НДС было полученных ценностей, по которым мы можем принять НДС к зачету (оборот) • на какую сумму НДС и без НДС мы еще не приняли НДС к зачету7 (остаток) • на какую сумму уже приняли и включили в книгу покупок (оборот) Решим эту задачу на регистрах накопления. Регистр остатков Основная задача регистра остатков - посчитать и вернуть нам остатки по ресурсам и в разрезе измерений, соответствующих отчетам, которые требуются пользователю. Основная задача добав тения регистров в конфигурацию - более быстрое и более удобное получение отчетности и выполнения алгоритмов. Поэтому проектируто регистр надо исходить из того отчета, для которого мы его создаем. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 165
“/СБххгаиперия 8 ". Конфигурирование и программирование от “4 " до “Я” В нашем примере возникает отчет «Остатки предъявленного НДС», который должен показывать пользователю остатки НДС (сумма НДС и сумма без НДС) полученные от поставщика и не принятые в зачет (не включенные еще в книгу покупок). Отчет должен иметь фильтры (группировки) по организациям, поставщикам, ставкам НДС и документам поставки (фактурам). Организации Фабрика Можно представить себе такой регистр в виде модели координат. Где будет четыре измерения: Организации, Поставщики, ставки НДС, Фактуры и ресурс Сумма НДС. Создадим такой регистр. Проектирование регистра Создадим новый регистр накопления. Имя' НДСПредъяь ленный Синоним НДС предъявленный Комментарий: ► Основные Данные Регистраторы Формы Макеты Подсистемы Права Интерфейсы Обмен данными Прочее Вид регистра Остатки Действия Далее> Закрыть Справка 11а закладке данные заводим измерения и ресурсы pel истра ООО ”1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 166
Регистры накопления : Регистр остатков г:* ~£л$. t&i ®ss=s j Основные ► Данные | Регистраторы S | Формы Макеты | I Подсистемы Права | Интерфейсы з Обмен данными I I Прочее Действия ’ Измерения! г- • Организация I г - . Поставщик Г- . СчетФактура - СтавкаНДС Ё Ресурсы Р- СуммаБезНДС НДС -з Реквизиты < Назад Далее> Закрыть Слравк а Измерения - ю, в разрезе чего мы будем вести учет (группировки и отборы в отчете), ресурсы - то, что будем группировать (функции запроса отчета), реквизиты - дополнительные характеристики движения, по которым нельзя будет анализировать остатки и обороты, но можно будет видеть в движении, как дополнительную информацию или отбирать движения в отчете. Свойство Имя Тип значения Измерение Организация СправочникСсылка.Организации Измерение Поставщик СправочникСсылка.Контрагенты Измерение СчетФактура ДокументСсылка.ПоступлениеТоваровУслуг Измерение СтавкаНДС ПеречислениеСсылка.СтавкиНДС Ресурс СуммаБезНДС Число (10,2) Ресурс НДС Число (10,2) Основное внимание при проектировании регистра остатков надо обратить на то, что в процессе работы ресурсы регистра обязательно должны сворачиваться в ноль. Это означает, что бессмысленно (и опасно с точки зрения производительности) делать регистр остатков. остатки которого будут только расти, и никогда не будут закрываться. В нашем случае остатки будут расти в процессе получения НДС от поставщика, и уменьшаться в процессе включения его книг}7 покупок. Заполнение регистра В регистр остатков можно делать записи дву х типов: приход и расход. Приход увеличивает остаток в ресурсе, расход уменьшает. Если этот регистр предназначен для учета того, что можно руками потрогать (товаров, денег в кассе и т.д.), то вопроса в каком случае делать приход, в каком расход не возникает. Ясное дело: если мы кладем деньги в кассу это приход, если вынимаем - расход. А то. что осталось в регистре, будет соответствовать остатку денег в том самом железном ящике. Если мы начинаем работать с более абстрактными понятиями, например, задолженности, то появляются и вопросы: если надо положительной цифрой показать нашу задолженность перед поставщиком, то когда мы будем делать прихода при покупке товара, и расход при его оплате. Тогда сумма аванса, выданного поставщику. будет отражаться в отчете отрицательным остатком. А можно и ООО " IC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 167
“7СБухгалтерия 8 ". Конфигурирование и программирование от "А ” до "Я" наоборот: положительный остаток поставщик должен нам, а отрицательный - мы ему. Очень часто выбор вида движения для события учета является внутренней договоренностью. В нашем случае «договоримся» так: если мы получаем ИДС от поставщика мы будем делать движение Приход, а если включаем НДС в книгу покупок (зачет НДС) будем делать движение Расход. Тогда остаток по ресурсу будет как раз незачтенный НДС (по каждой организации, по каждому поставщику, по” каждой его фактуре в отдельности). И приход и расход нужно будет делать с полным заполнением всех измерений, иначе остатки «повиснут». Если при проектировании, вы осознаете, что, например, в документе прихода есть вся информация для заполнения измерений, а в расходном нет... значит надо подумать еще раз и перепроектировать регистр или документы. Изменения в структуре и форме документа Изменяем свойства документа «Поступление товаров и услуг». Добавляем в него два новых реквизита шапки: ФактураПолучен (булево) и НомерФактуры (строка)17. Добавляем в обе табличные части реквизиты СтавкаНДС (ПеречислениеСсылка.СтавкиНДС) и СуммаНДС (число). В методических целях будем считать, что цена всегда без НДС и сумма тоже18. Сумму всего (сумма с НДС) будет рассчитываться арифметически Сумма + СуммаНДС. 17 Внимание! При такой организации учета будет проблематично получить фактуру позже накладной. Поэтому в типовом решении используется другая схема: существует еше один документ «Счет фактура полученный», имеющий ссылку на документ прихода ценностей 18 В типовом решении пользователь может выбрать в самом документе, включен НДС в цену или нет. Это позволяет более удобно заполнять первичные доку менты. ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 168
Регистры накопления : Регистр остатков Основные t < i Действия Закрыть Справка <Назад Далее> Реквизиты [^ммаНДС< ► Данные Нумерация Движения Последовательности Журналы Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Организация Контрагент ДоговорКонтрагента Ответственный Ф актураП о лучен НомерФактуры В-; ' Табличныечасти В ' Товары I— - Номенклатура - Цена - Количество • Сумма - СтавкаНДС • « СуммаНДС В - Услуги Номенклатура •« Содержание Цена F- - Количество ..- Сумма .- СтавкаНДС Изменим диалог формы документа и в общий модуль. Действия Номер: Перейти Дата- □ Фактура получен Организация Контрагент: Договор контрагента Т овары Услуги I л P'ZK/^ZZZZZZZZZZZ^ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZWZZZZZZZZZZZZZ/DZZZZ?>ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ?yZZZZZZZZZZA'ZZZZZZZZZ>'ZZZZp Номенклатура Цена Количество Сумма СтавкаНДС СуммаНДС Всего £ «ь <Полевво *ь < *ь сПолев.. аь <Л аь <Поле «ь <Полев $ Ответственный ОК Записать Закрыть В шапке диалога формы появляется флаг и поле ввода для ввода номера фактуры. В табличных полях мы размещаем колонки СтавкаНДС и СуммаНДС. Кроме того, чтобы показать пользователю итоговую сумму с НДС, мы добавляем по правой кнопке мыши новую колонку, которой назначаем имя «Всего». ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 169
“ 1С:Бухгалтерия 8”. Конфигурирование и программирование от "А ” до "Я" Всего Т екстПопвала Новая колонка П одсказкаВ Ш апке Прижать вправо Г оризонта льноеП оло*ениеВ 1 оляпке Основные: Имя • ГилерСсылка Использование: ' АвтоОтметкаН ©заполненного s ВьщелятьОтрицагтельные Характеристики: ; Положение ГоризонтальноеПоложениеВШапке Прижать влево Данные Элементу правления ДанныеФлажка Доступность Видимость Т олькоПросмотр ТекстШапки Всего В свойствах устанавливаем Горизонтальное! 1оложениеВКолонке - прижать вправо. Для обоих табличных полей прописываем обработчики ПриВыводеСтроки. Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) ТекстВсего = Формат(ДанныеСтроки.Сумма + ДанныеСтроки.СуммаНДС, "ЧДЦ=2"); ОформлениеСтроки.Ячейки.Всего.УстановитьТекст(ТекстВсего); КонецПроцедуры Процедура УслугиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) ТекстВсего = Формат(ДанныеСтроки.Сумма + ДанныеСтроки.СуммаНДС, "ЧДЦ=2"); ОформлениеСтроки.Ячейки.Всего.УстановитьТекст(ТекстВсего); КонецПроцедуры Содержимое у них будет одинаковое. Используя метод Формат мы форматируем получившуюся сумму в виде числа с двумя знаками после запятой (конструктор строки форматирования можно вызвать по правой кнопке мыши). Далее записываем строку в ячейку «Всего» выводимой строки. Чтобы СуммаНДС рассчитывалась, пишем новую функцию и изменяем процедуру общего модуля «Процедуры документов». Функция ПолучитьПроцентНДС(СтавкаНДС) Экспорт Если СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда Возврат 18; КонецЕсли; Если СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда Возврат 10; КонецЕсли; Возврат 0; КонецФункции Процедура РасчетСтроки(Тд) Экспорт ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 170
Регистры накопления : Регистр остатков Тд.Сумма - Тд.Цена * Тд.Количество; ПроцентНДС - ПолучитьПроцентНДС(Тд.СтавкаНДС); Тд.СуммаНДС = Тд.Сумма * ПроцентНДС / 100; КонецПроцедуры Функция будет рассчитывать процент НДС от ставки из перечисления, а процедура, используя ее, вычислять сумму НДС. Функцию можно было бы не делать экспортной, но можно предположить, что такая функция наверняка пригодится и в других модулях. Осталось вызвать процедуру общего модуля из событий ПриИзменении полей ввода СтавкаНДС обоих табличных полей Процедура ТоварыСтавкаНДСПриИзменении(Элемент) Тд = ЭлементыФормы.Товары.ТекущиеДанные; РасчетСтроки(Тд); КонецПроцедуры Процедура УслугиСтавкаНДСПриИзменении(Элемент) Тд = ЭлементыФормы.Услуги.ТекущиеДанные; РасчетСтроки(Тд); КонецПроцедуры и документ готов. Действия Перейти Номер: 000000004 Дате Организация Т орговый дом ... х Nt 123 13.02.2007 1 3.47 И Фактура получен Контрагент Сидоров Договор контрагента Договор с поставщиком 1 овары Услуги 1 N___Номенклатура Б Доска 2 Т кань Цена 10.00 15.00 Количество Сумма Ставка НДС Сумма НДС Всего 2 20,00 18% 1 15.0010% 3,60 1.50 23.60 16.50 Ответственный Администратор ОК Записать Закрыть Проведение документа В свойствах документа на закладе «Движения» отмечаем документ, как регистратор для регистра накопления «НДСПредъявленный». ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 171
" 1С: Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" Основные Данные Нумерация ► Движения Последовательности Журналы Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Проведение: И Разрешить Оперативное проведение: Удаление движений. Удалять движения автоматически Конструктор движений <Назад Далее> Закрыть Справка Н Д СП редъяв ленный Н Д СП редъявленный Регистры сведений Регистры накопления Действия Документ будет проводиться, движения будут удаляться автоматически, но оперативное проведения использоваться не будет. Мы могли бы описать обработку проведения конструктором, примерно так же, как мы это сделали в теме «Учет свойств основных средств». Это было бы примерно так: Движение = Движения.НДСПредъявленный.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Организация = Организация; Движение.Поставщик = Контрагент; Движение.СчетФактура = Ссылка; Движение.СтавкаНДС = СтавкаНДС; Движение.СуммаБезНДС = СуммаБезНДС; Движение.НДС = НДС; Движения.НДСПредъявленный.Записать(); Но в данном случае значения реквизитов из документа не соответствуют «один в один» свойствам регистра. Может быть много строк с одной и той же ставкой НДС, в регистр в идеале записать одну на общую сумму. Да и табличных частей у нас тоже две. В таких случаях можно (и нужно!) воспользоваться запросов для группировки данных, а потом можно воспользоваться возможностью запроса быть выгруженных в таблицу значений и возможностью набора записей регистра быть из таблицы загруженным. С помощью конструктора запроса описываем текст запроса. Мы пишем два объединенных запроса. 11ервый из них по табличной части Товары, второй по табличной части Услуги документа. Выбранные поля: ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 172
Регистры накопления : Регистр остатков -г— i Таблицы и поля Группировка Условия До> юлнигьльно Объединения/Псевдонимс Порядок. Итоги Построитель 1 База данных I В - в . й * Контрагент ДоговорКонтраг- Ответственный Ф актураП о лучен НомерФактуры Таблицы В ?•:= Q Поля Т овары Ссылка. Дата ©• > Й- 0 В ' Услуги Представление - МоментВремени 0 РеализацияТ оваров1 Ссылка НомерСтроки Номенклатура Цена Количество Сумма СтавкаНДС СуммаНДС Т овары. Ссылка. Организация Т овары.Ссылка Контрагент Т овары. Ссылка Т овары СтавкаНДС Т ивары СуммаНДС Т овары Сумма ;• Запрос Далее > ОК Отмена Справка Мы получаем из документа значения всех реквизитов, которые потребуются нам при проведении. Через свойство табличной части Ссылка получаем доступ к реквизитам шапки Дата, Организация, Контрагент. Включаем саму Ссылку (эта будет наша фактура). Кроме того, добавляем поля СтавкаНДС и суммы из таблицы. На закладке Группировка группируем значения сумм по измерениям нашего запроса Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построители Поля f рупгк вое гюле Товары Ссылка.Организация Товары Ссылка Контрагент Т овары.СтавкаНДС Т овары Ссылка Т овары Ссылка Дата Суммируемое поле Товары. Сумма • Т овары С уммаН ДС Функция Сумма Сумма Запрос < Назад Далее > ОК Отмена Справка Й 8 § о * Я :< на закладке Условия устанавливаем условие на параметр Ссылка Таблицы и ле тя Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Поля Номер П Ус товие К - Товары Ссылка Ссылка Запрос < Назад Далее > ОК Отмена Справка На закладке Объединения... мы создаем еще один такой же запрос по табличной части Услуги, и (важно!) присваиваем псевдонимы полям запроса, соответствующие именам свойств (измерений и ресурсов) регистра накопления. ООО " IC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 173
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" Т аблицы и поля Группировка Условия Дополнительно Объединения,'Псевдонимы Порядок Итоги Построитель s Имя Без дубя. Имя поля Запрос 1 Запрос 2 л | Запрос 1 «. Т овары. Ссылка Дата • - УслугиСсылкаДата | Запрос 2 к- - Организация - « Товары.Ссылка. Организация - УслугиСсылкаОрг... 1 Поставщик Т овары 1 сылкаь инграгент * Услуги. Ссылка Кон. i- ~ СчетФактура - Т овары. Ссылка « Услуги Ссылка • ~ СтавкаНДС - Товары.СтавкаНДС - Услуги СтавкаНДС Г - НДС - Т овары. СуммаН ДС - Услуги.СуммаНДС - СуммаБезНДС » Товары.Сумма - Услуги Сумма Запрос < Назад Далее > ОК Отмена Справка Запрос готов. Осталось немного дописать руками. Итак, содержимое процедуры ОбработкаПроведения Если ФактураПолучен Тогда Запрос - Новый Запрос; //1 Запрос.Текст = "ВЫБРАТЬ Товары.Ссылка.Дата КАК Период, Товары.Ссылка.Организация, Товары.Ссылка.Контрагент КАК Поставщик, | Товары.Ссылка КАК СчетФактура, | Товары.СтавкаНДС, СУММА(Товары.СуммаНДС) КАК НДС, СУММА(Товары.Сумма) КАК СуммаБезНДС |ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК Товары | ГДЕ Товары.Ссылка = &Ссылка (СГРУППИРОВАТЬ ПО | Товары.Ссылка.Организация, | Товары.Ссылка.Контрагент, | Товары.СтавкаНДС, | Товары.Ссылка, | Товары.Ссылка.Дата I (ОБЪЕДИНИТЬ ВСЕ I |ВЫБРАТЬ | Услуги.Ссылка.Дата, | Услуги.Ссылка.Организация, | Услуги.Ссылка.Контрагент, Услуги.Ссылка, Услуги.СтавкаНДС, | СУММА(Услуги.СуммаНДС), | СУММА(Услуги.Сумма) | ИЗ | Документ.ПоступлениеТоваровУслуг.Услуги КАК Услуги | ГДЕ Услуги.Ссылка = &Ссылка I (СГРУППИРОВАТЬ ПО | Услуги.Ссылка.Организация, | Услуги.Ссылка.Контрагент, Услуги.СтавкаНДС, Услуги.Ссылка, | Услуги.Ссылка.Дата”; Запрос .УстановитьПараметр ("-Ссылка ", Ссылка); //2 ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 174
Регистры накопления : Регистр остатков ТабНДС = Запрос.Выполнить().Выгрузить(); //3 ТабНДС.Колонки.Добавить("ВидДвижения"); //4 ТабНДС.ЗаполнитьЗначения(ВидДвиженияНакопления.Приход,"ВидДв ижения"); //5 Движения.НДСПредъявленный.Загрузить(ТабНДС); //6 КонецЕсли; Прокомментируем модуль. //1 извлечение данных документа будет выполняться запросом, и это правильно: во-первых, запрос быстрее методов объекта, во-вторых, позволит сгруппировать данные //2 отбор будет по текущему документу (ссылка) //3 выгружаем результат запроса в таблицу значений //4 в нашей таблице (если посмотреть таблицу регистра или модуль, написанный нами чуть раньше) не хватает одной колонки ВидДвижения (приход или расход). Добавляем эту таблицу’ в уже готовую таблицу //5 заполняем новую колонку значением Приход //6 загружаем таблицу в набор записей регистра накопления. Напомним, у документа есть свойство Движения (коллекция наборов записей), где есть набор записей по имени регистра (НДСПредъявленный), вот его-то мы и записали. Готово. Действия- «*> ч* Перейти- ? Номер 000000004 Дата 13 02 2007 1 3 47 И Фактура получен I Организация Торговый дом х N- 123| Контрагент Сидоров х « Договор контрагента Договор с поставщиком ... х ? Товары Услуги г N Номенклатура Цена Количество Сумма СтавкаНДС СуммаНДС Всего I Доска 10.00 2 20,00 18% 3.60 23.60 | 2 Ткань 15.00 1 15.00 10% 1.50 16.50 | i Ответственный Администратор ... х | ОК Записать Закрыть i Действия - i Регистратор Но Поступлени Поступлени. Поступлени. - Активно Период Организация 1 13 02 200713 47 00 Торговый дом 2 ** 13 02200713 47 00 Торговый дом 3 v 13 02200713 4700 Торговыйдом Поставщик Сидоров Сидоров Сидоров Счет Фактура Поступление товаре Поступление товаре Поступление товаре Ставкам 18% 10% Без НДС Сумма б НДС 20.00 3.60 15.00 1.50 20.00 Физические таблицы регистра Теперь, когда мы описали регистр и его заполнение, нас гало время понять, как он устроен на уровне физических таблиц, для того чтобы эффективно выполнять к нему запросы ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 175
“ 1С: Бухгалтерия 8". Конфигурирование и программирование от "А ” до “Я” Регистр храниться в двух таблицах: таблице первичных движений и таблице итогов. Таблица записей (первичных движений) Таблицу первичных движений мы можем увидеть в форме списка регистра. Вот ее структура: Вид движения Регистратор Номер записи Активность Период Организация Поставщик Счет-фактура Ставка НДС Сумма без НДС НДС Системные поля Измерения Ресурсы Используя эту таблицу можно было получить журнал регистрации счетов фактур полученных. Но не более того. А чтобы получить остатки ресурсов в разрезе измерений пришлось бы выполнять очень сложный и долгий запрос. Поэтому существует еще одна таблица - таблица итогов. Таблица итогов Таблица итогов содержит данные сгруппировано (по измерениям и стандартным периодам - месяцам). При любой записи движений в регистр программа находит соответствующую строку таблицы итогов (месяц, к которому принадлежит период движения, сочетание измерений) и изменяет в ней остатки. Таким образом, таблица всегда содержит актуальные значения остатков в рассчитанных месяцах. При этом находят свое отражение только активные записи регистра (свойство Активность можно отключить). Каждая строка хранит остатки на начало месяца. Период Организация Поставщик Счет-фактура Ставка НДС Сумма без НДС НДС Системные Измерения Остатки ресурсов 01.01.07 01.02.07 01.03.07 Таблица итоюв рассчитывается помесячно или в пользовательском режиме (меню «Операции» / Управление итогами) ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 176
Регистры накопления : Регистр остатков Установка границы рассчитанных итогов Установка режима разделения итогов Регистр Рассчитан по Установить по = ✓ Все регистры 31.01.2007 28.02.2007 ✓ Регистр накопления Н ДС предъявленный 31.01.2007 28.02.2007 Выполнить Закрыть Справка или программно (методы объекта РегистрНакопленияМенеджер). Чтобы пользователь мог рассчитать итоги, у него должны быть права на монопольный вход и в базе данных не должно быть других пользователей. Действия - Права Шаблоны ограничений Объекты - Ё - <’ Общие Ё-**? Константы Ё * jS Справочники Ё" . Документы Ё' Iff Журналы документов И Отчеты ЁОбработки Ё Планы ьиаа характеристик I.Т- Планы счетов Описание Право на включение монопольного режима (М онопо льмыйРежим) Ограни к ние доступа Права Административные Функции Монопольный режим Активные пользователи Журнал регистрации Диалог управления итогами на картинке свидетельствует, что в таблице итогов есть два месяца «январь 2007». строки которого (со всеми сочетаниями измерений, по которым есть остатки) маркированы «01.01.2007» и хранят остатки на начало января и февраль 2007 с остатками на конец января. Актуальные итоги и производительность То что в нашей таблице только два вида строк (январь и февраль) это не совсем правда. Есть еще строки маркированные периодов 01.11.3999 г. В этих строках содержаться актуальные остатки с учетом всех активных движений регистра. Как правило, итоги рассчитаются за закончившийся месяц. Т.е. если сейчас февраль, то ито! и рассчитаны по январь включительно. Что же делает программа, если мне нужны остатки на конец февраля? Она использует актуальные итоги. Эти строки также обновляются при любой записи набора в таблицу регистра. Таким образом, можно сделать вывод, что наиболее быстро программа позволяет получить остатки из регистра накопления на начало месяца или актуальные (без указания даты). При необходимости получить остаток на середину месяца, платформа возьмет остаток на начало ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 177
“ 1С: Бухгалтерия 8". Конфигурирование и программирование от “А " оо "Я" следующего (или актуальный) и отнимет от него сумму движений до нужной даты, пробегая по таблице первичных движений назад. Запрос к регистру накопления остатков В табличной модели данных мы имеем доступ к таблице первичных движений регистра и к виртуальным таблицам, которые сами обращаются к таблице итогов. База данных Ё- Документы Ё • ( ЖурналыДокументов Ё-{- ’ Перечисления Ё- ПланыВиаовХарактеристик Ё- РегистрыСведений Ё РегистрыНакопления 0 Н ДСП редъяв ленный Ё- ♦ НДСПредъявленный.Обороты Ё- « НДСПредъявленный. Остатки Ё - 4 НДСПредъявленный-ОстаткиИОбороты Таблица остатки будет по возможности получать остатки из таблицы итогов, если итогов будет недостаточно, выполнит запрос к таблице первичных движений. Обороты (приход и расход) из регистра остатков могут быть получены, но только путем группировки данных таблицы первичных движений (т.е. относительно медленно). Остатки и обороты совмещают в одной таблице входящие остатки, обороты за период и исходящие остатки на конец периода. Запрос к таблице первичных движений Разработаем отчет «Реестр счетов фактур полученных». В отчет должны попадать все фактуры, которые мы получили от поставщика. В качестве источника данных выбираем таблицу записей регистра накопления. Т аблицы и поля Группировка 1 Б аза данных Константы Поля Н ДСП редъяв леннм4 Период] - Н ДСП редъявленный Регистрант . Н ДСП редъявленАый Поставщи ft*) ПРЕДСТАВЛЕНИЕ(НДСПредъя ft*) ВЫБОР КОГДА НДСПредъявле ft*) ВЫБОР КОГДА НДСПредъявле ft*) ВЫБОР КОГДА НДСПредъявле ft*) ВЫБОР КОГДА НДСПредъявле ft») ВЫБОР КОГДА НДСПредъявле - НДСПредъявленный Регистрап ft*) ПРЕДСТАВЛЕНИЕ(НДСПредъя Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Т аблицы а- "5$ Справочники а Документы Е ! 7 ЖурналыДокументов Перечисления Плань ВидовХарактеристик РегистрыСведений РегистрыН акопления ‘НДСПреды пленный] а- Период Регистратор НомерСтроки Активность В ид Движения Организация Поставщик . СчетФактура СтавкаНДС СуммаБезНДС НДС М оменгВ ремени Запрос Далее > ОК Отмена В а S а ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 178
Регистры накопления : Регистр остатков В список выбранных полей попадают Период, НомерФактуры (из регистратора), поставщик и регистратор. Числовые поля нужно разделить по ставкам НДС, поэтому добавляем пять операторов выбора: ВЫБОР КОГДА НДСПредъявленный.СтавкаНДС = &Ставка18 ТОГДА НДСПредъявленный.СуммаБезНДС ИНАЧЕ О КОНЕЦ Которые выделяют из таблицы суммы без НДС и НДС для ставки 18, 10 и без НДС. Отчет группируется Таблицы и поля Группировка Условия Дополнительно Объединения. Гсевдонимы Порядок '1тоги Построитель Поля |ПРЕДСТАВЛЁНИЕ(НДСПред] Групповое >ле Гм ПРЕДСТАВЛЕНИЕ(НДСПред- s Все поля НДСПредъявленный Период НДСПредъявленный.Регистратор.НомерФактуры НДСПредъявленный Поставщик НДСПредъявленный. Регистратор 0 Функция | Сумма Сумма Сумма Сумма Сумма ГЫБОГ ГС Др НДсПродг ае тенньиСт israHJi' = I • rt < гм ВЫБОР КОк Др нД1 Предт явленный СтавкаНДС « ь гм ВЫБОР КОГДА НДСПредъявленный СтавкаНДС • & Гм ВЫБОР КОГДА НДСПредъявленный СтавкаНДС - L. Гм ВЫБОР КОГДА НДСПредъявленный.СтавкаНДС » Запрос < Назад Далее > ОК Отмена Справка j Устанавливаются условия Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель КонПериода Запрос Далее > Справка < Назад ОК Отмена НДСПредъс 2 3 ВидДвижения НачПериода Организация Поля В * Номер П... Условие НДСПредъявленный ВидДвижения = ~ НДСПредъявленный Период Между . НДСПредъявленный Организация = НДСПредъявленный Активность = ИСТИНА должны попадать только активные записи прихода, за интервал дат по одной организации. Полям запроса назначаются псевдонимы ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 179
“ 1С: Бухгалтерия 8". Конфигурирование и программирование от “А" до "Я" Таблицы и поля Группировка Условия Дополнительно Объеаинения/Псевдонимы Порядок Итоги Построитель > Имя Запрос 1 Б ез дуб л Имя поля » РегистраторНомерФактуры - . Поставщик -fi*i ПоставшикПредставление БезНДС18 h»i НДС18 1м БезНДС! О НДС1О Запрос 1 ... НДСПредъявленный Период * НДСПредъявленный Регистратор НомерФактуры г- . НДСПредъявленный Поставщик -Fm ПРЕДСТАВЛЕНИЕ(НДСПреаъявленныйПоставшик) -Fi>: ВЫБОР КОГДА НДСПредъявленный.СтавкаНДС « (Ставка Е ВЫБОР КОГДА НДСПредъявленныйСтавкаНДС * (Ставка ВЫБОР КОГДА НДСПредъявленныйСтавкаНДС = (Ставка -Ги ВЫБОР КОГДА НДСПредъявленный СтавкаНДС = (Ставка Ь Ги БезНДС i - Регистратор ; ft*i РегистраторПредставление ! - Гм ВЫБОР КОГДА НДСПредъявленныйСтавкаНДС - (Ставка - НДСПредъявленный Регистратор fl*; ПРЕДСТАВЛЕНИЕ|НДСПрсдъявленный Регистратор) s « Запрос < Назад Далее > ОК Отмена Справка Сортировка по периоду и общие итоги для всех ресурсов. В диалоге формы оставляем поля для выбора периода и организации. Осталось навести красоту и передать параметры в запрос Запрос.УстановитьПараметр("ВидДвижения", ВидДвиженияНакопления.Приход); Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода)); Запрос.УстановитьПараметр("НачПериода", НачПериода); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("СтавкаЮ", Перечисления.СтавкиНДС.НДС10); Запрос.УстановитьПараметр("Ставка18", Перечисления.СтавкиНДС.НДС18); Запрос.УстановитьПараметр("СтавкаБезНДС", Перечисления.СтавкиНДС.БезНДС); Отчет готов Периоде: 01 01 2007 Е по: 31 12.2007 И Организация Торговый дом Реестр фактур полученных Период II* Поставщик Бе .НДС 18 НДС18 Бе.НДСЮ НДС 10 Бе-НДС 13.02.2007 33 Иванов 770,00 138,60 13.02.2007 123 Сидоров 20,00 3,60 15,00 1,50 20,00 Ilior 790.00 142.20 15.00 1.50 20.00 Запрос к таблице Остатки Напишем запрос, который позволит увидеть остатки ресурсов регистра в разрезе поставщиков, фактур и ставок НДС с отбором по организации на выбранную пользователем дату7. Для каждого ресурса регистра накопления в таблице остатков создается поле, имя которого составное <Имя11оля>Остаток ВЫБРАТЬ Остатки.Поставщик КАК Поставщик, Остатки.СчетФактура, Остатки.СтавкаНДС, ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 180
Регистры накопления Регистр остатков Остатки.СуммаБезНДСОстаток КАК СуммаБезНДС, Остатки.НДСОстаток КАК НДС, Остатки.СуммаБезНДСОстаток + Остатки.НДСОстаток КАК Всего ИЗ РегистрНакопления.НДСПредъявленный.Остатки(&Дата, Организация = &0рганизация) КАК Остатки Результат запроса: Поставщик. СчетФактура СтавкаНДС СуммаБезНДС НДС Всего Сидоров П оступление това.. 18% 20.00 3,60 23,6 Сидоров Поступление това. 10% 15.00 1,50 16.5 Сидоров Поступление това. Без НДС 20.00 20 Принятие НДС к вычету: структура и заполнение остатками НДС мы от поставщика получили, сохранили остатки этого НДС в регистре, теперь надо формировать книгу покупок и формирования движения «Расход» по предъявленному НДС на суммы, которые были включены в книгу покупок. Создадим для этого новый документ «Формирование записей книги покупок» - - - t i д Е) - Т абличные части □ - ВычетПоПриобретеннымЦенностям - Поставщик - СчетФактура СтавкаНДС « СуммаБезНДС - И Движения I Последовательности Журналы I Формы Макеты ! Подсистемы i Ввод на основании Права Интерфейсы ‘ Обмен данными i Прочее Действия • < Назад Далее> Закрыть Справка В шапке документа будет выбираться Организация, а в табличной части остальные измерения и ресурсы нашего регистра, данными которого мы и будем ею заполнять. Осталось нарисовать форму и описать алгоритм заполнения, сильно напоминающий написанный нами выше запрос и его обработку. ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 181
"1С.-.Бухгалтерия 8". Конфигурирование и программирование от “А " до “Я” На командной панели добавляем новую кнопку «Заполнить», привязываем к ней процедуру обработчик ЗаполнитьТЧ. Процедура ЗаполнитьТЧ(Кнопка) Если ЭтоНовый() Тогда //1 Ответ = Вопрос("Перед заполнением документ будет записан. Продолжать?", РежимДиалогаВопрос.ДаНет); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; КоненЕсли; КонецЕсли,- ЭтотОбъект.УстановитьВремя(РежимАвтоВремя.ТекушееИлиПоследним); ЭтотОбъект.Записать(РежимЗаписиДокумента.Запись); //2 Если ВычетПоПриобретеннымЦенностям.Количество() > 0 Тогда //3 Ответ = Вопрос("Перед заполнением табличная часть будет очищена. Продолжать?", РежимДиалогаВопрос.ДаНет); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; КонецЕсли; ВычетПоПриобретеннымЦенностям.Очистить(); //4 Запрос = Новый Запрос; //5 Запрос.Текст = //6 "ВЫБРАТЬ | Остатки.Поставщик КАК Поставщик, | Остатки.СчетФактура, Остатки.СтавкаНДС, Остатки.СуммаБезНДСОстаток КАК СуммаБезНДС, Остатки.НДСОстаток КАК НДС |из РегистрНакопления.НДСПредъявленный.Остатки(&Дата, Организация - ^Организация) КАК Остатки |УПОРЯДОЧИТЬ ПО | Остатки.СчетФактура.Дата"; Запрос.УстановитьПараметр("Дата", МоментВремени()); //7 Запрос.УстановитьПараметр("Организация", Организация); ТабНДС = Запрос.Выполнить().Выгрузить(); //8 ВычетПоПриобретеннымЦенностям.Загрузить(ТабНДС); //9 КонецПроцедуры Прокомментируем текст модуля. //1 при работе с остатками регистра в документе (в (обработке проведения и при заполнении) очень важно, на как какой момент их эти остатки получать. Мы можем получить дату документа, но это будет на начало дня (документ за день не попадут). Можем получить на конец дня (в результате при проведении еще одного документа за этот день - записи удвоятся). Можем получить актуальные, но для этого надо быть уверенным, что документ не будут проводить использовать задним числом. Поэтому самое простое и правильное в данном случае решение - заставить документ записать, а потом ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 182
Регистры накопления : Регистр остатков получить остатки на МоментВремени (самое точное время - дата + ссылка на документ). //2 Задаем пользователю вопрос и записываем документ. Причем, записываем его с текущим временем, если этот метод не указать, документ будет записан в начало дня. //3,4 Если в табличной части уже есть строки, их надо очистить. Опять- гаки с разрешения пользователя //5 данные из регистра будем извлекать запросом. //6 псевдонимы полей в запросе должны совпадать с именами реквизитов табличной части, чтобы было удобнее загружать. //7 в качестве даты в запрос передается момент времени документа //8 результат запроса выгружается в таблицу значений //9 которая загружается в табличную часть документа Г отово. Действия Номер 000000001 Дата 21 02.2007 13:07 0 С О рганизация Т орговый дом Заполнить N____Поста_вщик Счет Фактура,_______________ _________________„ _ __ (...Иванов _ Поступление товаров иуслуг оббобоЬО2_ст 13.02.2007. 18% 2 Сидоров Поступление товаров и услуг 000000004 от 13.02.2007. 18% 3 Сидоров Поступление товаров и услуг 000000004 от 13.02.2007. 10% 4 Сидоров Поступление товаров и услуг 000000004 от 13 02.2007 Без НДС СтавкаНДС _ Сумма без НДС НДС imeg 3.60 1.50 770.00 ~20.00 15,00 20.00 ОК Записать Закрыть Осталось написать алгоритм проведения документа, который мы также сделаем запросом. Принятие НДС к вычету: проведение Сделаем документ регистратором для регистра накопления. Основные Данные Нумерация ► Движения Последовательности Журналы Формы Макеты Подсистемы Проведение Разрешить Оперативное проведение Запретить Удаление движений Удалять движения автоматически Е Регистры сведений Б Регистры накопления : Н Д СП редъяв ле! <ный j Е вод на 'х новании Права Интерфейсы Обмен данными а Конструктор движений Н ДСП редъяв ленный Прочее Действия ’ < Назад Далее) Закрыть Справка t —................ 1 ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru 183
" 1С: Бухгалтерия 8". Конфигурирование и программирование от “А " до “Я” Пишем обработку проведения документа Процедура ОбработкаПроведения(Отказ, РежимПроведения) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Вычет.Ссылка.Дата КАК Период, Вычет.Ссылка.Организация, | Вычет.Поставщик, | Вычет.СчетФактура, | Вычет.СтавкаНДС, | Вычет.СуммаБезНДС, | Вычет.НДС |ИЗ Документ.ФормированиеЗаписейКнигиПокупок.ВычетПоПриобретенны мЦенностям КАК Вычет | ГДЕ | Вычет. Ссылка = &Ссылка",- Запрос. УстановитьПараметр ("Ссылка", Ссылка) ,- ТабНДС = Запрос.Выполнить().Выгрузить(); ТабНДС.Колонки.Добавить("ВидДвижения"); ТабНДС.ЗаполнитьЗначения(ВидДвиженияНакопления.Расход,"ВидДв ижения"); Движения.НДСПредъявленный.Загрузить(ТабНДС); КонецПроцедуры Она мало отличается от проведения ПоступлениеТоваровУслуг. Основное отличие - вид движения: расход. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 184
Регистры накопления : Регистр оборотов Регистр оборотов Используя таблицу «Обороты» регистра остатков мы можем получить обороты (приход и расход), но, во-первых, это будет медленно, во- вторых, не всегда вообще нужны остатки. Медленная скорость получения оборотов связана с тем, что таблица итогов регистра не хранит оборотов. Она хранит только остатки, а обороты получает из таблицы движений. И таким образом, скорость никак не зависит от рассчитанных итогов, а зависит только от количества движений. Кроме того, все показатели, требующие накопления данных легко можно разделить на показатели остатков и показатели оборотов. Например, показатели остатков: остатки товаров, остатки задолженности, остатки денег в кассе, остатки предъявленного НДС. Показатели оборотов: объем продаж, объем закупок, сумма НДС принятая к зачету. Для хранения и агрегирования оборотных показателей предназначены оборотные регистры накопления. В нашем примере этим оборотным показателем является сама книга покупок - суммы НДС, которые мы включаем в нее. Остатки для этого показателя смысла не имеют, а обороты пригодятся для получения суммы, на которую мы уменьшим сумму налога к уплате в этом месяце из книги продаж. ценные Регистраторы Синоним: НДС Записи книги покупок Формы Комментарий Макеты i Подсистемы Права Вод регистра Обороты ' | Интерфейсы ; Обмен данными i Прочее Действия » Далее> Закрыть Справка Структура нового регистра будет в точности соответствовать регистру НДСПредъявленный, но он будет оборотным. 1 Г | Основные ► Данные | Регистраторы i Формы < Макеты Подсистемы | Права Интерфейсы ; Обмен данными ; Прочее Действия » Измерения I д.;' . > Организация . Поставщик > СчетФактура . СтавкаНДС Й- Ресурсы СуммаБезНДС НДС Реквизиты < Назад Далее) Закрыть Справка ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 185
“ 1СБухгалтерия 8”. Конфигурирование и программирование от "А ” до "Я" Могли бы мы обойтись без него? В принципе - да. Могли бы получить туже информацию, проанализировав движения «Расход» из нашего регистра остатков. 11о, во-первых, это было бы намного дольше, а, во- вторых. в типовом решении в аналогичном регистре аккумулируются 19 данные из нескольких регистров остатков . Нам осталось описать обработку проведения для документа «Формирование записей книги покупок». Сделаем документ регистратором для нового регистра накопления Основные Данные Нумерация ► Движения Последовательности Проведение: Разрешить Оперативное проведение: Запретить Удаление движений: Удалять движения автоматически 0 Регистры сведений Журналы Формы Макеты _ Регистры накопления Н ** 1 НДСПредъявленный Н Д СЗаписиКнигиП окупок Подсистемы Ввод на основании Права Интерфейсы Обмен данными -а Конструктор движений Н ДСПредъявленный НДС ЗаписиКнигиП окупок Прочее Действия - «Назад Дале» Закрыть Справка Таблица записей оборотного регистра отличается от аналогичной таблицы регистра остатков только отсутствием одного свойства «Вид движения», поэтому мы можем незначительно изменить алгоритм проведения. До того, как мы добавляем в таблицу результат запроса колонку «ВидДвижения», загружаем копию таблицы в набор записей. ТабНДС = Запрос.Выполнить().Выгрузить(); ТабКнигаПокупок = Новый ТаблицаЗначений; ТабКнигаПокупок = ТабНДС; Движения.НДСЗаписиКнигиПокупок.Загрузить(ТабКнигаПокупок); Документ сформирует при проведении движения по оборотному регистру. Физические таблицы регистра Как уже было замечено, таблица первичных движений отличается отсутствием одного поля. Поэтому сразу перейдем к таблице итогов. 19 Анализируется не только факт наличия фактуры, но и. например, когда и каким документом эта фактура была оплачена ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 186
Регистры накопления : Регистр оборотов Таблица итогов Таблица итогов также будет сильно напоминать таблиц итогов регистра остатков. Но в данном случае она будет содержать агрегированные показатели оборотов ресурсов, а не остатков. Период Организация Поставщик Счет-фактура Ставка НДС Сумма без НДС НДС Системные Измерения Обороты ресурсов 01.01.07 01.02.07 • Г01.03.07 В таком регистре не нужно заботиться о то, чтобы ресурсы свернулись в ноль, потому что по ресурсам хранятся не остатки, а обороты. Во всем остальном - аналогично регистру накопления остатков. Запрос к регистру накопления оборотов Использую виртуальную таблицу Обороты можно фактически моментально узнать сумму НДС к вычету в выбранном месяце или получить книгу покупок Книга покупок Запрос этого отчета будет похож на реестр фактур полученных: ВЫБРАТЬ Обороты.СчетФактура.Дата КАК ДатаФактуры, Обороты.СчетФактура.НомерФактуры КАК НомерФактуры, Обороты.Поставщик, ПРЕДСТАВЛЕНИЕ(Обороты.Поставщик), Обороты.СчетФактура, ПРЕДСТАВЛЕНИЕ(Обороты.СчетФактура), СУММА(Обороты.СуммаБезНДСОборот + Обороты.НДСОборот) КАК ВсегоСНДС, СУММА(ВЫБОР КОГДА Обороты.СтавкаНДС - &СтавкаНДС18 ТОГДА Обороты.СуммаБезНДСОборот ИНАЧЕ О КОНЕЦ) КАК БезНДС18, СУММА(ВЫБОР КОГДА Обороты.СтавкаНДС = &СтавкаНДС18 ТОГДА Обороты.НДСОборот ИНАЧЕ О КОНЕЦ) КАК НДС18, СУММА(ВЫБОР КОГДА Обороты.СтавкаНДС - &СтавкаНДС10 ТОГДА Обороты.СуммаБезНДСОборот ИНАЧЕ О КОНЕЦ) КАК БезНДСЮ, СУММА(ВЫБОР КОГДА Обороты.СтавкаНДС = &СтавкаНДС10 ООО ")С-Учебный центр N 3”. телефон (495) 253-58-38. е mail исЗО lc.ru. 187
“1С: Бухгалтерия 8". Конфигурирование и программирование от "А ” до “Я” ТОГДА Обороты.НДСОбсрот ИНАЧЕ О КОНЕЦ) КАК НДС10, СУММА(ВЫБОР КОГДА Обороты.СтавкаНДС = &СтавкаБезНДС ТОГДА Обороты.СуммаБезНДСОборот ИНАЧЕ О КОНЕЦ) КАК БезНДС ИЗ РегистрНакопления.НДСЗаписиКнигиПокупок.Обороты(&НачПериода, &КонПериода, , Организация = ^Организация) КАК Обороты СГРУППИРОВАТЬ ПО Обороты.Поставщик, Обороты.СчетФактура, Обороты.СчетФактура.Дата, Обороты.СчетФактура.НомерФактуры УПОРЯДОЧИТЬ ПО ДатаФактуры ИТОГИ СУММА(ВсегоСНДС), СУММА(БезНДС!8), СУММА(НДС18), СУММА(БезНДС!О), СУММА(НДСЮ) , СУММА(БезНДС) ПО ______ОБЩИЕ_________________________________________________ Устанавливаем отбор за период дат и по организации. Получаем выборку всех фактур, разбивая данные на ставки НДС. Результат: ржз.... Сформировать Периоде. 01.01 2007 И по. 31 12 2007 В Организация Торговый дом . х Книга покупок Ддт*Фактуры 111 ПОСТАВЩИК ВсегоСНДС Бе>НДС1* идеи Бе.НДСЮ НДС10 Бе<НДС 13 02.2007 33 Иванов 906,60 770.00 138,60 13.02 2007 123 Сидоров 60,10 20,00 3,60 15,00 1,50 20,00 Итог мо.то тм.о» 142.20 15.»* 1.50 20.00 ООО "1С-Учебный центр N 3”, телефон (495) 253-58-38. e-mail uc3@ lc.ru. 188
Регистры накопления : Регистр оборотов 419. Практикум При формировании записей в книгу покупок не должны сразу попадать покупки объектов основных средств. НДС может быть принят к вычету только после того, как объект учета введен в эксплуатацию. 20. Практикум Предложить структуру регистров для решения задачи формирования книги продаж. При этом в книгу’ продаж попадают все отгрузки и все авансы (НДС платиться с аванса). После того, как произошел зачет аванса (мы отгрузили в счет аванса товары или услуги) необходимо уменьшить сумму начисленного НДС на сумму уплаченного с аванса. Уменьшение производится путем включения суммы в книгу покупок. ООО ” IC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 189
1С: Бухгалтерия 8". Конфигурирование и программирование от "А ' до "Я" Основы теории бухгалтерского учета Сложность постановки и реализации задачи автоматизации бухгалтерского учета зачастую определяется недостатком понимания предметной области бухгалтерского учета сотрудниками, выполняющими конфигурирование. Результатом может быть нерациональное, а ино1да и неправильное решение. Поэтому целесообразно иметь хотя бы поверхностное знакомство с бухгалтерской терминологией. Так как изучение теории бухгалтерского учета не является целью данного курса, то ниже рассматриваются лишь основные элементы, понимание которых представляется желательным. Более подробную информацию можно найти в соответствующей литературе, посвященной теории и практике бу хгалтерского учета. Классификация видов учета По поводу правильной классификации видов учета вполне можно вести научные споры, что, однако, не входит в наши планы. Наша задача - увидеть перед собой «непочатый край» работы и понять основные особенности каждого вида учета с целью более правильного выбора механизмов его автоматизации в дальнейшем. Оперативный учет - ограничивается участком выполнения работ. Используется для текущего (оперативного) управления предприятием. Пример: учет явки на работу, наличия материальных запасов и др. При его автоматизации решается локальная задача - получение (улучшение) оперативного управления ресурсами (трудовыми, денежными) на одном участке работ. Как правило, наиболее трудоемким для пользователя и важным (первоочередным) с точки зрения автоматизации является оперативный учет основной деятельности компании. Для торговой компании это складской учет, учет реализации и закупки товаров; для производственной - производственный учет (учет калькуляции себестоимости и др.). Статистический учет - изучает явления, носящие массовый характер, использует данные оперативного и бухгалтерского учета. Бухгалтерский учет - сплошное, непрерывное, взаимосвязанное отражение всей хозяйственной деятельности предприятия (на всех участках), на основании документов в различных измерителях, где обобщающим является денежный измеритель. Единый денежный измеритель позволяет учитывать и трудовые ресурсы (у сотрудника есть зарплата) и складские резервы (у товара есть себестоимость). В некоторых источниках выделяют из бухгалтерского учета подвиды: бухгалтерский управленческий, бухгалтерский финансовый и налоговый учет. ООО "1С-Учебный центр N 3". телефон (495) 253-58 38. e-mail uc3@ lc.ru 190
Основы теории бухгалтерского учета : Классификация видов учета Бухгалтерский управленческий учет предназначен для формирования информации о деятельности предприятия для внутреннего пользования (собственников, руководителей, сотрудников). Учет ведется «для себя» и не регламентируется ничем, кроме желания директора (коммерческого директора, финансового директора, менеджера... в общем сотрудника, который заинтересован в повышении управляемости компании). Что, однако, не означает, невозможность использования каких-либо стандартов при разработке учетной политики управленческого учета. В основу могут быть положены как Российские стандарты бухгалтерского учета (PCБУ), так и международные стандарты финансовой отчетности (МСФО). Бухгалтерский финансовый учет ориентирован на получение информации необходимой для составления бухгалтерской отчетности, подготовки информации для внешних пользователей (инвесторов, кредиторов, государственных контролирующих органов). Ведется в соответствии со стандартами бухгалтерского финансового учета и регламентируется законодательством (В РФ стандарты представлены ПБУ, за рубежом - GAAP, IAS и др.). Налоговый учет также как и финансовый предназначен для составления «внешней» отчетности для налоговых органов, но ведется в соответствие с налоговым законодательством, которое может отличаться (и отличается!) от стандартов бухгалтерского финансового учета. Место налогового учета в этой классификации спорно. До недавнего времени (до вступления в силу 25 главы НК РФ), налоговый учет можно было считать одним из подвидов бухгалтерского. Основная его задача - определение налоговой базы и исчисление налогов (в узком смысле - налога на прибыль, хотя подсистема учета НДС, также, несомненно, часть налогового учета) раньше решалась с использованием данных бухгалтерского учета (расчет налога на прибыль выполнялся на основании балансовой прибыли, скорректированной в соответствии с налоговым законодательством). Теперь вполне можно рассматривать налоговый учет как самостоятельный вид учета наряду с бухгалтерским учетом. Бухгалтерский финансовый и налоговый учет могут быть объединены в регламентированный учет. Критерием объединения в данном случае будет являться то. что оба вида учета регламентированы государством (бухгалтерское и налоговое законодательство). Еще один критерий - степень охвата видами учета операций и сами операции. Наибольшую степень охвата, по нашему мнению, имеет бухгалтерский управленческий учет, в котором находят отражения все совершаемые хозяйственные операции. Финансовый и налоговый учет охватывают лишь часть операций, результаты которых могут быть показаны внешнему по отношению к компании пользователю и/или подлежат отражению в соответствии со стандартами учета. ООО "1С Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@lc.ru. 191
“/С:Бухгалтерия 8". Конфигурирование и программирование от "А " до “Я" Предмет и метод бухгалтерского учета Предметом бухгалтерского учета в обобщенном виде выступает вся хозяйственная деятельность предприятия. Методы, которые используются для его ведения: инвентаризация (проверка фактического наличия), документация (письменной свидетельство) и двойная запись на счетах. Счет и план счетов Каждый счет это учетный регистр, представляющий собой таблицу с двусторонней записью. Левая сторона счета называется «дебет», правая - «кредит». Свой первоначальный смысл слова давно потеряли, поэтому, нужно просто запомнить: «... слева - дебет, справа - кредит...». Две стороны нужны счету для отражения операций увеличения и уменьшения средств на счете. На счете группируются однородные хозяйственные операции, так, например, на счете «Касса» группируются операции по приходу и списанию средств из кассы предприятия. Отрицательные числа используются в бухгалтерском учете только для операций сторнирования (исправления ошибок). Во всех остальных случаях и при поступлении средств в кассу, и при их списании из кассы, на счет заносится положительная цифра, меняется лишь сторона счета (дебет или кредит). Бухгалтерский счет можно сравнить с регистром накопления остатков (регистры бухгалтерии и накопления вообще имеют много общего). Мы можем создать регистры накопления «Остатки товаров», «Остатки денег в кассе» и «Задолженность покупателей». В бухгалтерском учете есть аналогичные счета. В современном бухгалтерском учете используется «двурядная система счетов», при которой состав и назначение счетов является следствием главной формы бухгалтерского учета - баланса. Бухгалтерский баланс на <как\ ю-то дату> Актив 11ассив Статья Остаток Статья Остаток Касса Долг поставщикам Товары Уставный капитал И др. И д.р. •. • Итого актив Итого пассив В левой части баланса отражаются активы (средства) предприятия по их составу и размещению. Можно перечислить такие средства предприятия, как: деньги в кассе и на расчетном счете банка, товарно- материальные запасы, долги «кого-то» нашему предприятию. Все это наше имущество, т.е. активы. ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 192
Основы теории бухгалтерского учета : Предмет и метод бухгалтерского учета В правой части баланса отражаются источники средств предприятия (другими словами - откуда предприятие их получило и кому их должно). Средства, как известно, не могут взяться из ниоткуда и исчезнуть в никуда, поэтому раз у нас есть какое-то имущество, должны быть и обязательства (пассивы). Часть средств нам дали собственники (хозяева) бизнеса и мы учитываем долг предприятие перед собственником на счете «Уставный капитал», другую часть средств мы получили в банке или взяли товары в долг у поставщика. Как уже было замечено, средства не могли взяться «из ниоткуда» или исчезнуть «в никуда», поэтому сумма всего имущества (в денежном выражении) должна быть равна сумме обязательств, другими словами баланс должен «балансировать». Возвращаясь от задачи подготовки отчетности (баланс) к учетной задаче (счета), мы сможем выделить среди всех счетов, на которых ведется учет на предприятии, счета для учета имущества и счета для учета обязательств. Счета, используемые для учета операций с имуществом, остатки которых находят свое отражение в активе баланса, называют «активными». Счета учета обязательств - «пассивными». В теории бухгалтерского учета счета принято отображать «самолетиками» (самолетик, потому что с «крылышками» - дебет и кредит :) Активный счет Пассивный счет Дебет Кредит Дебет Кредит Сальдо на начало Сальдо на начало Операции поступления средств на счет Операции списания средств со счета Операции погашения задол жен н ости Операции увеличения задол же н н ости Дебетовый оборот Кредитовый оборот Дебетовый оборот Кредитовый оборот Сальдо на конец периода Сальдо на конец периода Бухгалтерская отчетность, как правило, составляется на дату начала календарного месяца (квартала, года). Или, если дело касается оборотов, за календарный месяц (квартал, год). Поэтому каждый счет может содержать какие-то остатки с прошлого месяца (начальное сальдо), обороты за период (дебетовый оборот и кредитовый оборот) и вытекающее из остатков и оборотов конечное сальдо. При отражении операций по активному счету, увеличение средств на счете отражаются по дебету счета, а списание - по кредиту. Логично предположить, что списать со счета больше чем туда за все время ООО "JC-Учебный центр N 3", телефон (495) 253-58-38, e-mail uc3@ lc.ru. 193
1С Бухгалтерия 8". Конфигурирование и программирование от “А" до “Я' положили невозможно, поэтому остаток по счету (и на начало и на конец периода) всегда дебетовый. При отражении операции по пассивному счету, увеличение задолженности перед «кем-то» мы отражаем по кредиту счета, а ее погашение (когда мы отдаем долг) по дебету'. Соответственно, остаток по такому счету всегда будет кредитовый. Если вдруг мы отдали нашему контрагенту больше, чем были ему должны, то теперь не мы ему должны, а он нам и такую задолженность в бухгалтерском учете принято отражать на другом счете (дебиторская задолженность актива баланса). Возвращаясь к балансу, теперь мы можем уточнить, что в актив баланса попадут дебетовые остатки активных счетов, а в пассив - кредитовые остатки счетов пассивных. Российские стандарты бухгалтерского учета (РСБУ) предполагают и наличие третьего вида счета - «активно-пассивного». Это. как правило, счета расчетов. Если с «хозяином» и с его счетом «Капитал» все просто - навряд ли когда-нибудь он будет должен своему предприятию, то счетами расчетов, например, с сотрудниками- подотчетниками могут быть сложности в определении типа счета. Если предприятие выдало сотруднику какую-то сумму денег, и он не отчитался, куда ее дел или не вернул назад, стало быть, он должен предприятию, у него сейчас находятся наши средства. В этом случае подотчетника можно назвать «дебитор» и долг его отразить по дебету счета и включить в актив баланса. Если же сотрудник за свой счет купил что-то полезное, отчитался и мы (предприятие) признали за собой задолженность перед ним, то получается, что он уже наш «кредитор» и мы ему должны вернуть израсходованные деньги и пока не вернули должны учитывать задолженность как кредитовый остаток по счету в пассиве баланса. Именно для таких случаев и создаются активно-пассивные счета, остаток которых зависит от совершенных операций и может быть как дебетовым, так и кредитовым. И включаться этот остаток может как актив, так и в пассив. Все используемые для ведения учета на предприятии счета объединяются в план счетов. По своей сути это справочник, список учетных регистров, применяемых для ведения учета. План счетов может быть полностью определен стандартами учета (РСБУ) или могут быть заданы лишь правила его построения (МСФО), в любом случае именно от плана счетов зависит и технология учета и отчетность, которая будет в результате получена. Операция и проводка Основанием записи по бухгалтерскому счету всегда является первичный документ. Все записи по всем счетам, которые будут сделаны на основании одного документа, называют «операцией». ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru 194
Основы теории бухгалтерского учета : Предмет и метод бухгалтерского учета Движение средств на счетах отражают взаимосвязано: не могли возникнуть средства на счете из ниоткуда, или их должно стать меньше в другом месте или должна увеличится задолженность за них. Поэтому любая запись в бухгалтерском учете затрагивает сразу два счета: дебет одного и кредит другого. И запись такая называется проводкой. Это одно из ключевых отличий оперативного и бухгалтерского учета и, соответственно, регистра накопления и регистра бухгалтерии. Если мы ведем учет не на счетах бухучета, а на регистрах накопления, мы можем сделать движение «Приход» по счету' товары и не делать больше ничего. Потому что решения локальной задачи оперативного учета на складе совершенно не важно, откуда мы этот товар взяли, сколько мы должны поставщику, оплатили ли, и если да, то из каких средств. В бухгалтерском учете это неприемлемо. Одновременно с получением товара (приход на счет товары) у нас увеличилась задолженность перед поставщиком, причем на ту же сумму. В самом простом варианте проводка содержит один дебетуемый счет и один кредитуемый. Именно таким образом и ведется учет в соответствии с PCБУ. При такой схеме учета, во-первых, соблюдается баланс двойной записи: оба счета изменились на одну и ту же сумму. А, во-вторых, достигается возможность анализа оборотов между счетами: мы всегда можем узнать на какую сумму было приобретено товаров (именно товаров, а не материалов, основных средств и т.д.) от поставщиков (именно поставщиков, а не прочих дебиторов- кредиторов или сотрудников). Западные стандарты учета допускают использование сложных проводок (один счет дебетуется, несколько кредитуются или наоборот) и сборных проводок (несколько счетов дебетуются и несколько кредитуются). В этом случае каждая операция состоит из нескольких зависимых записей. Правило «двойной записи» при этом не нарушается и баланс все равно «балансирует»: при вводе такой проводки необходимым условием ее записи будет являться равенство суммы всех дебетовых всем кредитовым записям одной операции. Большая гибкость при ведении учета сложными и сборными проводками, которые не требуют от бухгалтера «укладывать в Прокрустово Ложе корреспондирующих счетов» хозяйственные операции, имеет, к сожалению, и обратную сторон) медали. При ведении учета сборными проводками теряется возможность анализа оборотов между счетами. Остается лишь возможность анализа остатков и оборотов по отдельно взятому счету. Выбор схемы учета при его автоматизации (с поддержкой корреспонденций - два счета в проводке, или без поддержки корреспонденции) зависит от поставленной задачи. «1С:Предприятие 8» позволяет реализовать обе учетные схемы. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 195
“1С бухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" Исключение из правила двойной записи составляют только забалансовые счета. При формировании движения (проводки) по забалансовому счету не требуется указывать корреспондирующий счет (при выборе схемы учета с поддержкой корреспонденций) или формировать еще одну зависимую запись с противоположным типом движения (если выбрана схема без поддержки корреспонденций). На забалансовых счетах учитывается, например, имущество, которое не является собственностью организации. Это могут быть товары, принятые на комиссию (которые продолжают считаться собственностью комитента), арендованные основные средства и др. Двойную запись на счетах (т.е. бухгалтерские проводки) принято показывать или «строчками» или «самолетиками». Бухгалтера- практики обычно записывают проводку строчкой. Самолетики чаще всего используются в методических целях при изучении бухгалтерского учета и, кроме того, могут помочь проанализировать результаты операции при какой-нибудь новой учетной схеме, потому что позволяют увидеть движения и остатки средств на счетах. Ниже приведены оба варианта отражения проводок. Проводки отражают две хозяйственные операции: 1. Обналичиваем средства - снимаем с банковского счета в кассу. 2. Выдаем деньги сотруднику в подотчет. 11роводки «самолетиками» Проводки «строчками» Банк Касса 11одотчетник Дебет Кредит Сумма Сотержанис 100 Касса Банк 10 Обналичка Обналичка Подотче) н Касса 7 В подотчет 10 В подотчет 7 10 0 10 7 7 0 90 3 7 Обычно у слушателя, который раньше не сталкивался с бухгалтерским учетом, при виде самолетиков возникает вопрос: если мы все время рисуем стрелки слева направо, значит, где-то слева эта цепочка должна заканчиваться? Если бы все счета были активными (а у нас на рисунке Касса и Банк - активные счета), то так бы оно, наверное, и было. Но есть и пассивные счета (счета источников средств). Поэтому первая проводка на любом предприятии затрагивает все-таки два счета - дебет счета активного (например, средств, или задолженности ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@lc.ru. 196
Основы теории бухгалтерского у чета Пред мет и метод бухгалтерского учета учредителей по вкладам в уставный капитал) и кредит пассивного (капитал). Т.е. первая проводка увеличивает сразу два счета. И, как результат, мы получаем первый, вступительный, баланс фирмы. Синтетика и аналитика: детализация учета По способу группировки и обобщения счета делятся на синтетические и аналитические. Все рассмотренные нами до этого момента счета в бухгалтерском учете принято называть «синтетическими». Остатки с этих счетов сформируют баланс предприятия. Синтетические счета предназначены для укрупненной группировки информации в едином денежном измерителе. Синтетические счета можно представить в виде регистров накопления вообще без измерений. Если получение баланса с укрупненными и не развернутыми по детальным признакам показателями является единственной целью учета, то можно на этом было бы остановиться. Однако в большинстве случаев бухгалтеру недостаточно данных, которые может дать синтетический учет, и тогда к синтетическим счетам открывают аналитические разрезы (аналитические счета). Понятия «аналитический учет» и «анализ» ничего общего между собой не имеют. Аналитический учет это просто более детальный учет. Аналитические счета хранят детальные, частные сведения. Аналитический счет раскрывает синтетический в разрезе его видов, частей, статей и, где это требуется, с оценкой информации в натуральном, трудовом и денежном выражении. Аналогом аналитических счетов для регистров накопления являются измерения регистра. Как может быть несколько измерений, так может быть и несколько аналитических срезов для бухгалтерского счета. Взаимосвязь синтетических и аналитических счетов такова: сальдо одного синтетического счета должно быть равно сумме сальдо всех аналитических счетов, к нему относящихся. То же касается и оборотов. Отчетность Результирующая информация о деятельности компании может быть предоставлена пользователю в виде отчетных форм, содержащих показатели, полученные путем группировки данных на счетах бухгалтерского учета. К основным отчетным формам можно отнесли баланс, отчет о прибылях и убытках, отчет о движении денежных средств, отчет о дебиторской и кредиторской задолженности, отчет об изменении капитала собственника и др. 1 лавная из них - баланс, отчет который базируется на двойной записи. ООО "IC-Учебный центр N 3". телефон (4951 253-58-38. e-mail uc3@ lc.ru. 197
‘ЧС.‘Бухгалтерия 8". Конфигурирование и программирование от “А” до “Я" Баланс в бухгалтерском учете рассматривается как способ обобщения и группировки хозяйственных средств предприятия и их источников на определенную дату. По своему строению представляет собой двустороннюю таблицу, левая сторона которой - актив - отражает состав и размещение хозяйственных средств, а правая - пассив - отражает источники образования хозяйственных средств. В балансе должно быть обязательное равенство итогов: сумма всех статей актива баланса должна быть равна сумме всех статей пассива. Сумму статей актива/пассива называют так же валютой баланса. Полнота и степень детализации этих отчетов зависит от степени охвата учетом деятельности компании (управленческий или финансовый учет). ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 198
Основы теории бухгалтерского учета : Техника и формы бухгалтерского учета Техника и формы бухгалтерского учета Под техникой бухгалтерского учета понимается способ его ведения, т.е. регистрация учетных записей. Для этого в «бумажной бухгалтерии» предназначены учетные регистры (карточки, сводные листы, книги). Под формой бухгалтерского учета принято понимать определенное сочетание построения и взаимосвязи регистров, а также порядок и способы регистрации и группировки в них учетной информации. На практике до нас «дожили» несколько форм бухгалтерского учета: журнально-ордерная, мемориально-ордерная (в основном бюджетные учреждения), журнал-главная (для небольших предприятий). Нам эта тема может быть интересна только с точки зрения лучшего понимания заказчика, потому что сами мы будем использовать только одну форму учета - машинно-ориентированную (или компьютерную). Отличаются формы в первую очередь набором учетных регистров (форм) - различного вида таблиц, в которые записываются данные из первичных документов. Наиболее часто используемая классификация регистров: по назначению. По назначению они делятся на: хронологические, куда факты записываются по мере их возникновения без иной систематизации; систематические, которые ведутся в разрезе группировочных признаков; комбинированные (сочетает в себе первые два варианта). Компьютерная форма учета отличается тем, что учетные регистры строятся на основании таблиц базы данных (и называются отчетами) и теряют часть своих функций, а именно - группировку и контроль. Группировкой занимается запрос, а контроль правильности расчетов становится не нужен, так как в арифметике компьютер не ошибается. Единственная их функция - представить информацию в удобном для бухгалтера виде. К сожалению, очень часто для пользователя понятия «удобно» и «привычно» не имеют огличия. Ну что ж, в этих случаях Вам просто придется разрабатывать новые отчетные формы в конфигурации. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 199
“ 1 С:Бухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" Виды движений денежных средств в учете Давайте попробуем закрепить все полученные знания о теории бухгалтерского учета на практике. Задача. Некто Иванов Иван Иванович, хорошо освоивший (не без помощи знаний, полученных на наших курсах!) «1С:Предприятие», решил организовать собственный бизнес по оказанию услуг внедрения этого программного продукта. Само собой, ему потребовалось вести учет хозяйственной деятельности своего, пусть очень маленького, но, все-таки, предприятия. И, как и положено «сапожнику без сапог», решил он вести бухгалтерский учет своего предприятия на бумаге. В нашу с Вами задачу входит помочь ему составить баланс за первый месяц деятельности его предприятия. Дальше по тексту Иванов И.И. приводит нам свои хозяйственные операции, которые он совершил в течение первого месяца работы в качестве внедренца. Мы должны оформить эти операции в проводки, систематизировать и, в конечном итоге, составить баланс. 1. Инвестиция в бизнес Любой бизнес начинается с инвестиций в него определенной суммы денег - начального капитала. Иванов мог позволить себе вложить в дело 100=00 денег. В данном случае директор и хозяин одно лицо - Иванов. Иванов (как хозяин) дал деньги в оборот Иванову (как директору). Бухгалтерский учет «смотрит» на все это со стороны директора, и видит, что директор имеет в своем распоряжении 100 рублей в кассе и должен теперь хозяину 100 рублей. Проводка: 1 Инвестиция средств в бизнес. Счет дебета Счет кредита Сумма Наличные Капитал 100=00 В результате первой операции у нас появляются два счета: «Наличные» и «Капитал». Счет средств «Наличные» активный и в результате операции увеличивается на сумму операции. Счет источника средств «Капитал» (капитал собственника) - пассивный, тоже увеличивается на сумму операции. В нашем примере понятие «Счет» и «Статья баланса» - одно и то же. В реальном бухгалтерском учете статья баланса может аккумулировать информацию нескольких синтетических счетов. БАЛАНС АКТИВ ПАССИВ Статья Сумма Статья Сумма Наличные 100=00 Капитал 100=00 Всего актив 100=00 Всего пассив 100=00 ООО "lC-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@lc.ru. 200
Основы теории бухгалтерского учета : Виды движений денежных средств в учете 2. Приобретение офиса Первым делом наш бизнесмен купил себе офис, который обошелся ему в 60=00. 2 Покупка офиса за наличные деньги Счет дебета Счет кредита Сумма Офис Наличные 60=00 В нашей бухгалтерии появился еще один активный счет «Офис», на котором мы будем учитывать стоимость долгосрочного актива. Современная бухгалтерия использует метод «Начисления», или, другими словами, ведет учет «от имущества», а не «от денег», как при кассовом методе. Чтобы была понятна разница, приведем пример: вы купили себе новое пальто. С точки зрения «домашней бухгалтерии» (которая, кстати сказать, ведется кассовым методом и учитывает только один вид актива - деньги) это был расход. Если же мы начинаем учитывать все имущество, а не только деньги, то можно рассматривать эту покупку, как капиталовложение (у нас были деньги, а теперь у нас есть пальто!). Т.е. приобретение имущества не считается расходом. Расход возникнет тогда, когда от этого пальто пуговицы отвалятся, и дырки в нем моль проест, т.е. когда оно износится. Все покупаемое имущество учитывается в бухгалтерском учете по цене приобретения (есть исключения, но мы их пока не рассматриваем). В результате этой операции, в которой участвуют два активных счета, мы увеличили счет «Офис» и уменьшили счет «Наличные» на сумму потраченных на покупку офиса денег. БАЛАНС АКТИВ . ПАССИВ Статья Сумма Статья Сумма Наличные 40=00 Капитал 100=00 Офис 60=00 Всего актив 100=00 Всего пассив 100=00 3. Приобретение мебели в долг Иванов договорился с поставщиком мебели о покупке мебели для своего офиса в долг. 3 Покупка мебели в долг Счет дебета Счет кредита Сумма Мебель Обязательства к выдаче 15=00 В учете появляются два новых счета. «Мебель» - активный счет, на котором будем учитывать стоимость мебели в нашем офисе. «Обязательства к выдаче» (он же: расчеты с поставщиками, счета к оплате, короче: «мы должны» или «кредиторка», как говорят бухгалтера) - пассивный счет, который будет увеличиваться по мере роста нашего долга перед поставщиками и уменьшаться, когда мы будем платить по долгам. Все счета, о которых идет речь - синтетические. Пример аналитического счета: мы могли бы разбить счет «Обязательства к выдаче» по поставщикам. Тогда мы могли бы получать информацию о том, сколько мы должны каждому поставщику. На синтетическом счете «Обязательства к выдаче» хранится информация нашего долга перед всеми поставщиками. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 201
“ 1С:Бухгапперия 8". Конфигурирование и программирование от "А" до “Я” БАЛАНС АКТИВ ПАССИВ Статья Сумма Статья Сумма Наличные 40=00 Капитал 100=00 Офис 60=00 Обязательства к выдаче 15=00 Мебель 15=00 Всего актив 115=00 Всего пассив 115=00 4. Оказал услуги по настройке программы за наличные Нашелся первый клиент, которому нужно было что-то в программе донастроить. Иванов договорился с ним об оплате наличными сразу по окончании работы. 4 Оказал услуги за наличные деньги Счет дебета Счет кредита Сумма Наличные Капитал 10=00 В результате у Иванова стало больше денег в кассе, и вырос капитал его фирмы. БАЛАНС АКТИВ ПАССИВ Статья Сумма Статья Сумма Наличные 50=00 Капитал 110=00 Офис 60=00 Обязательства к выдаче 15=00 Мебель 15=00 Всего актив 125=00 Всего пассив 125=00 5. Оказал услуги по настройке программы в долг Второй клиент уговорил нашего внедренца настроить ему про]рамму в долг. Оплатит - потом, когда-нибудь, когда деньги появятся. 5 Оказал услуги в долг Счет дебета Счет кредита Сумма Обязательства к получению Капитал 5=00 Денег больше не стало. Но зато появилась расписка покупателя в том, что он обязуется эти деньги вернуть, а это тоже актив. Хотя и менее ликвидный, чем наличные средства (которые можно сразу потратить, степень ликвидности именно так и определяется: самые ликвидные - наличные деньги, менее ликвидные безналичные, еще менее ликвидные - долги, совсем не ликвидные - запасы, которые сначала надо продать, потом долг полечить, а только потом потратить!). Капитал тоже увеличился на сумму этой «филькиной грамоты». Саму «филькин}7 грамоту» будем учитывать на счете «Обязательства к получению» (он же: расчеты с покупателями, счета к получению, короче: «нам должны» или «дебиторка», как говорят бухгалтера). БАЛАНС АКТИВ ПАССИВ ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 202
Основы теории бухгалтерского учета : Виды движений денежных средств в учете Статья Сумма Статья Сумма Наличные 50=00 Капитал 115=00 Офис 60=00 Обязательства к выдаче 15=00 Мебель 15=00 Обязательства к получению 5=00 Всего актив 130=00 Всего пассив 130=00 6. Зарплата наемному работнику В течение всего этого времени в офисе работала, ну, например, уборщица. Ей пришлось заплатить зарплату. 6 Зарплата наемному работнику Счет дебета Счет кредита Сумма Капитал Наличные 3=00 Денег стало меньше, и капитал уменьшился. Деньги ушли из бизнеса. БАЛАНС АКТИВ ПАССИВ Статья Сумма Статья Сумма Наличные 47=00 Капитал 112=00 Офис 60=00 Обязательства к выдаче 15=00 Мебель 15=00 Обязательства к получению 5=00 Всего актив 127=00 Всего пассив 127=00 7. От дал часть долга поставщику мебели Как это ни неприятно, но долги иногда приходится отдавать. 7 Погасил часть долга поставщику мебели Счет дебета Счет кредита Сумма Обязательства к выдаче Наличные 9=00 Уменьшился долг перед поставщиком и наличные в кассе БАЛАНС АКТИВ 11АССИВ Статья Сумма С гатья Сумма Наличные 38=00 Капитал 112=00 Офис 60=00 Обязательства к выдаче 6=00 Мебель 15=00 Обязательства к получению 5=00 Всего актив 118=00 Всего пассив 118=00 8. Решил потратить свои деньги, в бизнес не инвестированные Если деньги в бизнесе не участвуют, то и проводки в бухучете предприятия делать не надо. Пограчены деньги, которые не были инвестированы в бизнес. 9. Получил долг с клиента Как это ни странно, но долг нашему внедренцу отдали. Причем полностью. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 203
“ IСБухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" 9 Клиент отдал долг за оказанные ранее услуги Счет дебета Счет кредита Сумма Наличные Обязательства к получению 5=00 Денег стадо больше, а задолженности перед нами - меньше. Оба счета активные - валюта баланса (итоги актива, пассива) не меняется. БАЛАНС АКТИВ ПАССИВ Статья Сумма Статья Сумма Наличные 43=00 Капитал 112=00 Офис 60=00 Обязательства к выдаче 6=00 Мебель 15=00 Обязательства к получению 0=00 Всего актив 118=00 Всего пассив 118=00 10. Продал часть офиса Иванов решил, что офис для него слишком большой, а денег, как известно, слишком много не бывает, и решил часть офиса продать (скажем, одну из двух комнат). Сделка состоялась, продаваемая часть офиса был оценена в 30=00. 10 Продажа части офиса за наличные Счет дебета Счет кредита Сумма Наличные Офис 30=00 Денег стало больше, а офиса - меньше. Как и в предыдущем случае, валюта баланса не меняется. Продал он его по себестоимости, т.е. без прибыли, т.е. были две одинаковые совершенно комнаты купленные вместе за 60, теперь одну из них продали... Если бы прибыль возникла, проводка (а точнее, проводки) отличались бы от приведенной выше. БАЛАНС АКТИВ ПАССИВ Ста гья Сумма Статья Сумма Наличные 73=00 Капитал 112=00 Офис 30=00 Обязательства к выдаче 6=00 Мебель 15=00 Обязательства к получению 0=00 Всего актив 118=00 Всего пассив 118=00 11. Изъял часть денег из бизнеса на личные нужды Понадобились ему деньги на собственные расходы, на что-то и жить надо. 11 | Изъял часть наличных из бизнеса на собственные нужды Счет дебета Счет кредита Сумма Капитал Наличные 40=00 Денег стало меньше, и капитал фирмы уменьшился. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 204
Основы теории бухгалтерского учета : Виды движений денежных средств в учете БАЛАНС АКТИВ ПАССИВ Статья Сумма Статья Сумма Наличные 33=00 Капитал 72=00 Офис 30=00 Обязательства к выдаче 6=00 Мебель 15=00 Обязательства к получению 0=00 Всего актив 78=00 Всего пассив 78=00 Результат В результате деятельности фирмы за первый месяц мы получили баланс со следующими цифрами, отражающими состояние нашего бизнеса. Все средства, которые участвуют в бизнесе, были или инвестированы владельцем фирмы (Ивановым - «Капитал»), или получены в долг («Обязательства к выдаче»). Средства представлены в виде наличных денег, вложены в офис и мебель. На момент составления баланса нам никто не должен. 21. Практикум Составьте оборотный баланс деятельности Иванова И.И. Как выглядит оборотный баланс? Таблица, строки которой счета, а колонки: сальдо на начало (дебетовое и кредитовое), обороты за период (дебетовые и кредитовые), сальдо на конец (дебетовое и кредитовое). Отличие от баланса, который уже приведен в наших конспектах - наличие оборотов (сальдо на начало у нас нет предприятие начало свою деятельность в текущем отчетном периоде). Ваша задача составить оборотный баланс и проверить баланс, который мы получили к концу примера. Итак, вспомним, какие операции были в течение месяца работы на фирме. № Счет дебета Счет кредита Сумма Комментарий 1. Наличные Капитал 100=00 Инвестиция 2. Офис Наличные 60=00 Купил офис 3. Мебель Обязат. к выдаче 15=00 Купил мебель в долг 4. Наличные Капитал 10=00 Оказал услуги за наз 5. Обязаз. к получению Капитал 5-00 Оказал услуги в дол! 6. Капитал Наличные 3=00 З.п. работнику 7. Обязат. к выдаче Наличные 9=00 Отдал долг поставщику 8. Нет проводки. 9. Наличные Обязат. к получению 5=00 Получ. долг с клиента 10. Наличные Офис 30=00 Продал часть офиса И. Капитал Наличные 40=00 Взял деньги из бизнеса Для решения поставленной задачи воспользуйтесь комбинированным регистром учета - формой «Жури ал-главная». Она лучше всего подходит для решения задачи учета маленькой фирмы. Часть этого регистра (первая колонка, а каждая колонка соответствуют одному счету) приведена ниже. ООО " 1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 205
" IС: Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" Порядковый номер операции, содержание_________________Наличные На начало 0=00 1. Инвестиция 100=00 2. Купил офис 60=00 4. Оказал услуги за наличные 10=00 6. Выплатил зарплату сотруднику 3=00 7. Отдал долг за мебель 9=00 9. Получил долг с заказчика 5=00 10. Продал офис 30=00 11. Изъял деньги из бизнеса 40=00 Обороты 145=00 112=00 На конец 33=00 Не забываем, каждая сумма в бухгалтерском учете проходит по двум счетам - дебету одного и кредиту другого. Это значит, если по дебету кассы прошло 100=00, значит, эти же 100=00 должны быть учтены по кредиту другого счета (в данном случае «Капитал»). Когда все счета (колонки формы) заполнены, подводим итог по каждому — обороты и сальдо, и записываем их в оборотку. Оборотный баланс предприятия Иванова И.И. за XX месяц 20ХХ г. Счет (статья) Сальдо на начало Обороты Сальдо на конец Дебет Кредит Дебет Кредит Дебет Кредит Наличные 0=00 145=00 112=00 33=00 Офис 0=00 Мебель 0=00 Обязат. к получению 0-00 Капитал 0=00 Обязат. к выдаче 0=00 Итого: 0=00 0=00 Проверка: дебетовый оборот по всем счетам должен быть равен кредитовому (ведь любая сумма проходила сразу по двум счетам — по дебету одного и по кредиту другого), и сальдо на конец дебетовое по всем счетам должно быть равно кредитовому и валюте баланса на предыдугцей странице. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 206
Основы теории бухгалтерского учета : План счетов бухгалтерского учета План счетов бухгалтерского учета Все счета бухгалтерского учета, используемые на предприятии, объединяются в план счетов. План счетов это справочник счетов, но именно он во многом определяет логику проведения документов и отчетность. План счетов и настройки аналитического учета каждого счета, как правило, определяются на этапе проектирования информационной системы. Чтобы конфигурация удовлетворяла отчетные потребности руководства, план счетов должен проектироваться после анализа этих самых отчетных потребностей. Проектирование плана счетов во многом напоминает, по сути, и по важности проектирование регистров накопления. Отличая, однако, тоже есть. Если при проектировании регистров можно дать волю своей фантазии, то план счетов в соответствии с РСБУ определен законодательно. По крайней мере, счета верхнего уровня, субсчета к ним можно добавлять и аналитику можно определять произвольно (хотя рекомендации к субсчетам и аналитическим разрезам также имеются). Рассмотрим основные разделы плана счетов Раздел Счет Код Наименование Внеоборотные активы 01 Основные средства 02 Амортизация ОС 03 Доходные вложения 04 11ематериальные активы 05 Амортизация IIMA 07 Оборудование к установке 08 Вложения во внеоборотные активы 09 Отложенные налоговые активы Материаль ные ценности 10 Материалы И Животные 14 Резервы по снижение стоим, мат. 15 Заготовление материалов 16 Отклонение в стоимости материалов 19 11ДС по приобретенным ценностям Затраты 20 Основное производство 21 11олу фабрикаты 23 Вспомогательное производство 25 Общепроизводственные расходы 26 Общехозяйственные расходы 28 Брак в производстве 29 Обслуживающие производства £ § х 3 i < о И О- - >> н о с 40 Выпуск продукции 41 Товары 42 Торговая наценка ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3@ lc.ru. 207
“ IС: Бухгалтерия 8". Конфигурирование и программирование от "А ” до “Я” 43 Готовая продукция Затраты 44 Расходы на продажу 45 Товары отгруженные 46 Выполненные этапы по незавершенным работам Денежные средства 50 Касса 51 Расчетные счета 52 Валютные счета 55 Специальные счета 57 Переводы в пути Финансовые вложения 58 Финансовые вложения 59 Резервы под обесценение финансовых вложений Расчеты 60 Расчеты с поставщиками 62 Расчеты с покупателями 63 Резервы по сомнительным долгам 66 Расчеты по краткосрочным кредитам 67 Расчеты по долгосрочным кредитам 68 Расчеты по налогам и сборам 69 Расчеты по социальному страхованию 70 Расчеты с персоналом по оплате труда 71 Расчеты с подотчетными лицами 73 Расчеты с персоналом по прочим операциям 75 Расчеты с учредителями 76 Расчеты с прочими дебиторами и кредиторами 77 Отложенные налоговые обязательства 79 Внутрихозяйственные расчеты Капитал 80 Уставный капитал 81 Собственные акции 82 Резервный капитал 83 Добавочный капитал 84 Нераспределенная прибыль (непокрытый убыток) 86 Целевое финансирование Финансовые результаты 90 Продажи 91 Прочие доходы и расходы 94 Недостачи и потери от порчи ценностей 96 Резервы предстоящих расходов 97 Расходы будущих периодов 98 Доходы будущих периодов 99 Прибыли и убытки Забалансовые ценности 001 Арендованные основные средства 004 Товары на комиссии И др. К каждому счету могут быть добавлены субсчета. Иногда, добавляются субсчета второго уровня (третий уровень плана счетов: счет / субсчет / субсчет). Западные стандарты вообще не предусматривают утвержденного плана счетов, а лишь содержат рекомендации по его построению. В разделе внеоборотные активы перечисляются счета ценностей, участвующих более чем в одном цикле воспроизводства. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(p lc.ru. 208
Основы теории бухгачтерского учета /7 ian счетов бухгалтерского учета В раздел «Материальные ценности» входят все счета учета материалов. Отдельно выделим счет 19. на котором учитывается НДС, полученный от поставщика в цене материальных ценностей и не только их. Пока мы не приняли его в зачет, это тоже актив. Раздел «Затраты» объединяет все счета затрат на производство, сюда же можно было бы отнести 44 счет (расходы торговых организаций). Раздел «Учет готовой продукции» включает в себя счет учета этой самой выпущенной продукции и товаров, а также счета с ними связанные. Раздел «Денежные средства» включает счета учета наличных и безналичных денежных средств. Большой раздел «Расчеты» объединяет счета расчетов с контрагентами, сотрудниками, и др. Раздел «Капитал» включает счета учета капитала собственника и резервов. В разделе «Финансовые результаты» содержаться калькуляционные счета, из которых чаще всего будут использоваться 90, 91, 99. 90 и 91 закрываются на 99, а тот свою очередь на счета капитала. Забалансовые счета предназначены для учета ценностей, которые не являются собственностью нашего предприятия, но учитываться должны. Эти счета не входят в баланс двойной записи, т.е. могут участвовать в проводке без корреспондирующего. Если бы переложили операции Иванова из темы «Виды движений денежных средств в учете» проводок было бы намного больше за счет добавления проводок по «промежуточным» калькуляционным счетам. Но результат все равно был бы тот же. ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 209
" 1СБухгалтерия 8". Конфигурирование и программирование от “Д ” до “Я" Бухгалтерский учет на платформе в V8 В платформе предусмотрены следующие специфические объекты и механизмы использованиях общих объектов для организации бухгалтерского учета. Объект платформы Решаемая задача учета План счетов Хранение плана счетов учета Регистр бухгалтерии Хранение и группировка проводок План видов характеристик Хранение списка аналитических счетов А теперь приступим к изучению механизмов бухгалтерского учета. План счетов Создаем новый план счетов для ведения бухгалтерского учета хозрасчетных организаций. Длина кода Основные ► Данные Нумерация Субконто Формы Макеты Подсистемы Ввод на основании Длина наименования Маска кода @@ @@ !^ОПОрОДОК ПО КОДу; Длина порядка Основное представление • В виде кода В виде наименования Права Интерфейсы Обмен данными Прочее Реквизиты •*, Признаки учета Т аб ччные части Действия ’ < Назад Далее> Закрыть Справка 5 Имя «Хозрасчетный». Устанавливаем длину кода равной 5 символов20 и длину наименования по умолчанию. Код счета предназначен для идентификации счета пользователем и, как правило, используется как основное представление объекта (рамка «основное представление»). В отличие, например, от справочника, который тоже обладает свойствами код и наименование, код счета на практике будет включать собственно код счета и коды всех его предполагаемых родителей. План счетов можез быть иерархическим и в нашем случае он будет как раз таким. Па самом деле, реальная иерархия счетов и иерархия кодов счетов- субсчетов (маска кода) могут отличаться. Так. например, счет, имеющий код «1.1», может быть иерархически подчинен счету с 20 В типом решении используется 8 символов и маска кода @@@.@ ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 210
Бухгалтерский учет на платформе в V8: План счетов кодом отличным от «1». Тем не менее, рекомендуется назначать счетам коды с учетом их иерархии. Иерархичностью и не только ей управляет свойство «Маска кода». Это свойство также позволяет описать, какие символы можно будет использовать при определении кодов, и какие разделители будут использоваться между кодом счета и субсчета. Заполняем свойство «Маска кода» значением @@.@@ (два уровня вложенности, два знака в коде счета, два знака в коде субсчета). Символы, которые можно использовать всегда можно найти в описании метода Маска() встроенного языка. Отдельно следует остановиться на использовании символа @ в описании маски кода счета. Использование этого специального символа не только позволяет вводить любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел, ио и влияет на хранение кода в базе и отображение его в диалогах ввода. При использовании этого символа в маске кода счета, группа знаков кода, для которой использованы символы @ при сохранении кода, в базу данных упаковывается - из него вырезаются пробелы. Кроме того, использование этого символа влияет на формирование порядка счета. Поле «Порядок» предназначено для сортировки счетов в форме списке плана счетов и в результатах запросов. Необходимость этого поля выясняется тогда, когда, мы или установили основным представлением наименование, а хотим упорядочить по счету (наш случай) или. что бывает чаще код счета, являющийся представлением не подходит для сортировки. Рассмотрим пример: Как должно быть Отсортированные по коду 1.1 1.1 1.2 1.10 1.3 1.11 1.N 1.2 1.10 1.3 1.11 1.N Мы видим, что счет с кодом 1.10 при сортировке по коду оказывается после 1.1, а не после 1.9, где должен быть. Исправить эту ситуацию можно или с использованием лидирующих нулей в коде счета: Как должно быть Сортировка по коду с лидирующими нулями 1.1 01.01 1.2 01.02 1.3 01.03 1.N 01.0N 1.10 01.10 1.11 01.11 ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 211
“ I С: Бухгалтерия 8". Конфигурирование и программирование от "А " Оо “Я” или если использовать для сортировки не код. а еще одно специальное поле, которое называется «Порядок». А чтобы заполнялось это поле автоматически, при описании маски кода необходимо использовать только знаки @ и знаки разделители (точка, например). В этом случае метод ПолучитьПорядокКода() позволит автоматически сформировать строку, которая должна быть записана в поле порядок для правильной сортировки: в этой строке будут добавлены вместе «лидирующих» нулей, «лидирующие» пробелы. В нашем случае формирование кода для хранения в базе данных и поля для сортировки будет выглядеть так. Пользователь решил ввести код со счетом «1.1» при маске кода счета и длине кода и порядка 5 символов. Номер символа 1 2 3 4 5 Маска @ @ <точка> @ @ Вводится 1 <пробел> <точка> 1 <пробел> Хранится 1 <точка> 1 нет нет Порядок <пробел> 1 <точка> <пробел> 1 Флаг «автопорядок по коду», во-первых, подменяет сортировку по коду сортировкой по порядку7 по всех запросах, где будет указано упорядочивание по полю «Код». А. во-вторых, позволяет автоматически получить порядок при вводе предопределенного счета. Итак, у маски кода следующие назначения: задавать символы, которые можно использовать при кодировании задавать иерархичность плана счетов задавать количество знаков в коде всех уровней определять возможность свернутого хранения кода счета определять возможность автоматического формирования порядка счета Следующая наша задача - ввести предопределенные счета. Как и справочник, план счетов может иметь счета, вводимые в пользовательском режиме, и ле, которые задаются на этапе конфигурирования (предопределенные) и не изменяются пользователем. Ссылка на предопределенные счета можно получать, обращаясь к неизменяемому имени (не путать с наименованием!) счета. Предопределенные счета вводятся на закладке «Прочее»21. 21 Свойства «Режим блокировки» и «Полнотекстовый поиск» доступны только начиная с версии 8.1 ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 212
Бухгалтерский учет на платформе в V8: План счетов Основные s Данные i Нумерация | Субконто Формы Макеты ! Подсистемы Ввод на основании Права Интерфейсы ; Обмен данными i ► Прочее Модуль объекта П род определенные Режим блокировки Автоматический Полнотекстовый поиск Использовать Справочная информация Включать в содержание справки Действия • <Назад Закрыть ---- Справка Описываем предопределенные счета. Для большинства счетов мы опишем в списке предопределенных только счет верхнего уровня, субсчета, если нужно заведем в пользовательском режиме22. J п Действия * Имя Код Наименование Вид Забала.. □ jl : Материалы 10 Материалы Активный 1 Н ДСпоПриобретеннымЦенмостям 19 НДСпо приобретенным цен Активный Н 0 сновноеП роизводство 20 Основное производство Активный ! Р- 0 бщехозяйственныеРасходы 26 Общехозяйственные расхо Активный i ; Товары 41 Т овары Активный 1—Касса 50 Касса Активный : РасчетныеСчета 51 Расчетные счета Активный В алкл ныеСчета 52 Валютные счета Активный . РасчетыСПоставщиками 60 Расчеты с поставщиками Ак гивный/Пассивный i РасчетыСП окупагелямм 62 Расчеты с покупателями Активный/Пассивный Г -"-л-т- > ] Для каждого счета мы указываем: Имя, Код, Наименование, Вид. Порядок формируется автоматически (флажок - «автопорядок по коду» с закладки «Данные»). Поля, которые придется заполнить для каждого предопределенного счета: Поле Комментарий Имя Уникальное имя счета (имя объекта метаданных), которое позволит нам получить ссылку на него. Код Код счета, который будет виден пользователю в поле выбора, если основным представлением для счета выбран «код» и который пользователь (внимание!) сможет изменить Наименование Наименование счета, которое будет видно пользователю в поле выбора, если основным представлением выбрано " В типовом решении все {или почти все) счета и субсчета являются предопределенными ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(P lc.ru. 213
“ 1СБухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" «наименование». Вид Определяет тип сальдо на счете. Счет может быть активным (дебетовое сальдо), пассивным (кредитовое сальдо) или активно-пассивным (тип сальдо зависит от оборотов и может быть как дебетовым, так и кредитовым) Порядок Поле используется для сортировки. В нашем случае будет содержать код счета с добавленными лидирующими пробелами. Важно отметить, что для предопределенных счетов поля «Код», «Наименование» и «Порядок» (если поле ввода было добавлено в диалог формы счета) могут быть изменены пользователем. Чтобы предоставить пользователю возможность вводить счета в пользовательском режиме, нужно позаботиться о заполнении поля «Порядок». По умолчанию оно не добавляется в диалог пользователя. Если в маске плана счетов используются только символы @ и разделители, порядок можно сформировать автоматически. Для этого в модуле объекта (закладка плана счетов «Прочее») пишем процедуру Процедура ПередЗаписью(Отказ) Порядок = ПолучитьПорядокКода(); КонецПроцедуры Процедура сформирует и заполнит порядок счета в момент его записи23. 23 С нашей маской (3(3.(3(а и кодами начинающимся с «О» (01. 02) порядок может не использоваться, но в типовом решении маска а большинство кодов счетов все-таки двухзначные. Поэтом) в типовом решении код 50.01 в поле порядок будет представлен строкой «<Пробел>50.01» и позволит правильно отсортировать отчеты. ООО "1С Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 214
Бухгалтерский учет ни платформе в V8: Аналитический учет Аналитический учет Понятию бухгалтерскою учета «аналитические признаки», в системе «1С:11редприятие» соответствует понятие «Субконто». Группа однородных объектов аналитического учета (субконто) называются «Вид субконто». Рассматривая уже знакомую нам гему учета оперативного на регистрах накопления можно сравнить виды субконто с измерениями. Отличия будут связаны исключительно с особенностью бухгалтерского учета и его отличием от оперативного. Итак, проведем параллели между знакомым учетом на регистрах накопления и аналитическим учетом в бухгалтерии. Учет на регистрах накопления Бухгалтерский учет Все регистры накопления Регистр бухгалтерии Регистр накопления Счет Измерение регистра Вид субконто Значение измерение Субконто Одно из основных отличий оперативного учета от бухгалтерского в степени охвата организации. Оперативный учет ведется на участке, бухгалтерский на всем предприятии. Вывод: в оперативном учете можно предусмотреть все учетные регистры, необходимые для решения этой локальной задачи. В бухгалтерском - нет. 11оэтому типовой механизм платформы должен позволять произвольно добавлять новые счета пользователю. Для того, чтобы можно было добавлять новые счета, во-первых, нужен список этих счетов (план счетов мы уже сделали). Во-вторых, нужен список измерений (видов субкснто). которые пользователь также сможет добавлять сам и сможет сам «навешивать» на счета. Ну и как результат, итоги по ним должны лежать в одной таблице, но об этом чуть позже. План видов характеристик и виды субконто План видов характеристик имеет несколько предназначений. При автоматизации бухгалтерского учета основное из них - хранение списка видов субконто (аналитических счетов). В общем случае, этот объект предназначен для описания множеств однотипных объектов аналитического учета, т.е. может содержать несколько таких множеств. Часть этих «множеств» (их название, тип данных для наполнения) могут быть определены на этапе конфигурирования (предопределенные характеристики). Часть - в пользовательском режиме. Каждое из этих множеств - вид субконто, т.е. аналитический счет. Л его наполнение (элементы справочника, значения перечисления, документы и т.д.) - элементы аналитического учета, субконто. Можно ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 215
*’ 1СБухгалтерия 8". Конфигурирование и программирование от “4 ” до "Я" провести такие параллели между’ объектами системы и понятиями предметной области. Объект V8 Понятие системы «1С» Понятие бухучета Планы видов характеристик Все виды субконто Все аналитические разрезы (счета) Вид характеристики Вид субконто Аналитический разрез Характеристика Субконто Объект аналитики С чего начнем разработку? Во-первых, нам необходимо предусмотреть все виды субконто, которые мы сделаем «жесткими» и которые пользователь изменять не будет. Для этого надо решить, какие аналитические разрезы нам могут понадобиться при проведении документов. Реализуются «жесткие» (т.е. неизменяемые пользователем) виды субконто с помощью предопределенных значений видов характеристик и служат для организации аналитического учета на тех счетах, которые будут задействованы в алгоритмах проведения документов. Как и любой объект конфигурации, предопределенная характеристика имеет «имя», которое позволяет обращаться к ней «из языка». Создаем новый план видов характеристик «ВидыСубконтоХозрасчетные». Тип значения характеристик указываем «составной» и отмечаем те типы, которые хотим использоваться для организаций измерений в аналитическом учете. Именно на этом моменте мы определяем тип полей в таблицах итогов. Следует обратить внимание, что при описания типов значения харакгеристик плана видов характеристик, используемого для ведения аналитического учета, категорически не рекомендуется использовать примитивные типы данных. Причин тому несколько. Во- первых. для хранения составного типа данных, включающего в себя только ссылки, система расходует три поля базы данных. На хранение каждого дополнительного примитивного добавится еще одно поле. Т.е. если в нашей конфигурации задействовано гри вида субконто на одном счета, то при условии включения в тип только ссылочных типов будет занято девять полей в базе данных и, как результат девять полей в индексе таб шцы итогов регистра бухгалтерии. Если мы добавим еще хотя бы один примитивный тип. дату, например, то это уже двенадцать полей, если включим в добавок к ссылочным два примитивных типа пятнадцать полей. Максимальная длина индекса в SQL составляет 16 полей. В таблице итогов регистра индексируются поля: период, счет, все измерения, субконто (по зри ноля на каждое, если это составной ссылочный тип). Те потя, что не попали в индекс, будут «сильно мешать» и при записи и при построении отчетов - платформа не сможет быстро получить одну строку7 таблицы итогов, а вместо этого получит диапазон строк, который будет перебирать. Еще причина, почему нельзя включать примитивные типы данных, связана с количеством индексов. Количество индексов будет строиться на все возможные сочетания: дата-дата, дата-строка, строка- ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 216
Бухгалтерски!! учет на платформе в V8 : Аналитический учет дата... для каждого примитивного типа. Все эти индексы будут обновляться при записи проводки в базу данных. Более подробно о структуре таблиц регистра и их индексировании можно прочитать в разделах «Физическое устройство регистра бухгалтерии». Итак, мы включили только ссылочные. Результат: i Е I ► Основные Иерархия Данные Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Имя ВидыСубконтсХозрасчетные Синоним Виды счбконто хозрасчетные Комментарий Т ип значения характеристик Дополнительные значения харак Справочни» Ссылка ПодразделенияОрганизаций Прочее Справочник СсылкаОсновныеСредства, СправочникСсылка Контрагенты, Справочник Ссылка. ДоговорыКонтрагентов С правочник Ссы лк а Н оменк латура. СправочникСсылка Физические/I ица Действия - Далее> Закрыть пра&очь&4кСсылг а. Подразделе] Уже сейчас можно зайти на закладку «Прочее» и создать предопределенные виды характеристик. Определяя тип, мы снимаем флаг «Составной» - у нас не будет субконто, где пользователь мог бы выбирать или сотрудника или контрагента, например. Дес гвия - Имя Код Н аименование Тип В Характеристики 1 — Договоры 000000003 Договоры Справочник Ссы лка. Дого Контрагенты 000000002 Контрагенты СправочникСсы лка Конт — Номенклатура 000000001 Номенклатура СправочникСсылка Номе ОсновныеСредства 000000005 Основные средства СправочникСсылка. Осно. ..... РаботникиОрганизаиий 000000004 Работники организаций СправочникСсылка Физи Родитель. Имя- Код Наименование Тип Характеристики Контрагенты 000000002 Контрагенты СправочникСсылка Контрагенты ... ^Составной тип данных □ СправочникСсылка Номенклатура ПодраэделенияОрганизаций Контрагенты ДоговорыКонтрагентов ОК Отмена Справка 0К Отмена Чтобы предоставить пользователю возможность создавать собственные (пользовательские) виды аналитики и хранить их значения (субконто) в базе данных мы должны насiроить механизм дополнительных значений характеристик. ООО "1С-Учебный центр N 3". те.юфон (495) 253-58-38. e-mail uc3(a lc.ru. 217
“ 1СБухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" Для этого создаем новый справочник «Субконто» (иерархический без дополнительных реквизитов), включаем его в составной тип данных плана видов характеристик. Теперь пользователь сможет создать новый вид субконто... но только один! Ведь таблица базы данных для этого справочника одна и, стало быть, значения всех видов субконто, которые он создаст, будут храниться «вперемешку». Чтобы этого избежать мы должны сделать справочник «Субконто» подчиненным к плану видов характеристик: Сябмргр г Основные Иерархия ► Владельцы Данные Нумерация Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Список владельцев справочника Использование подчинения: Элементам <Назад Далее> Закрыть |ПланВиаоеХг1р> теристик В^ыСубкомтаХозрасчетные Справка Действия Теперь на каждый новый вид субконто в справочнике будет создаваться свое подмножество объектов аналитического учета. А чтобы у них не «пересекалась» нумерация, можно ее настроить «в пределах подчинения владельцу». Последний штрих: чтобы по умолчанию виды характеристик, вводимые пользователем получали тип «СправочникСсылка.Субконто» необходимо выбрать этот справочник как дополнительные значения характеристик ► Основные Имя ВидыСубконтоХозрасчетные Иерархия Данные Синоним Видысубконтохозрасчетные Нумерация Комментарий Формы Макеты _ I ип значения характеристик Подсистемы Г _ СправочникСсылка Подразделе ... Ввод на основании Дополнительные значения характеристик. Права „ Субконто ... х Интерфейсы Обмен данными , Прочее Бухгалтерия_8_от_А_ло_Я ОК □ ; Справочники• Отме> Действия ” Дат ООО ЧС-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 218
Бухгалтерский учет ни платформе в \'8 : Аналитический учет Объект, для хранения видов субконто готов. Переходим к настройке плана счетов. Настройка плана счетов для ведения аналитического учета На закладке «Субконто» плана счетов «Хозрасчетный» выбираем в свойстве «виды субконто» созданный план видов характеристик «ВидыСубконтоХозрасчетные» и устанавливаем максимальное количество субконто на счете равным трем. Основные Данные Нумерация ► Субконго Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Виды субконго ВидыСубконтоХозрасчетные Прюнани учета субконго! Максимальное количество субконго Справка Действия <Назад Далее» Закрыть 1 Признаки учета по субконто пока не создаем, они позволят организовать только количественный, или только валютный (как пример) для отдельных видов субконто отдельных счетов. Механизм признаков учета по субконто будет рассмотрен нами отдельно. Следующая задача - подключить аналитику к соответствующим счетам плана счетов. Выполняется это в списке предопределенных счетов (закладка «11рочие») Действия - — Имя Код Н аименование Вид 3... П Субконто 1 Субконго 2 Субконто 3 S Материалы 10 Материалы Активный 10 Номенклатура —Н ДСпоП риобретеннымЦ ен 19 НДСпо приобретенны Активный 19 г- ОсновноеП роизводство 20 Основное производство Активный 20 НОбщехозяйственныеРасходы 26 Общехозяйственные р Активный 26 Н Товары 41 Т овары Активный 41 Номенклатура - Касса 50 Касса Активный 50 РасчетныеСчета 51 Расчетные счета Активный 51 i ВалютныеСчета 52 Валютные счета Активный 52 Н РасчетыСПоставщиками 60 Расчеты с поставщик Активный/П 60 Контрагенты Договоры < —Расчет ыСПок упателями 62 Расчеты с покупателя Активный/П 62 Контрагенты Договоры ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 219
“1С .Бухгалтерия 8". Конфигурирование и программирование от "А ” до "Я" Проектирование регистра бухгалтерии Работы по созданию плана счетов и видов субконто были, несомненно, важны, но были подготовительными. Приступаем к созданию регистра бухгалтерии. Регистр бухгалтерии и регистр накопления имеют много общего. И тот и другой созданы для решения одной и той же задачи: накопления и анализа каких либо показателей в разрезе каких либо измерений. Основные отличия заключаются в том, как это делается и для чего это делается. В первую очередь, «для чего». Задача оперативного учета - управление (часто оперативное, в реальном времени) одним (или несколькими, но не всеми) участком учета предприятия. Задача бухгалтерского учета - управление всей финансово-хозяйственной деятельностью предприятия. И решение этой задачи требует использования специфических методов, в первую очередь двойной записи на счетах, которая образует замкнутую систему показателей. Из этих отличий в задачах следуют отличия в механизмах платформы. Необходимость учета всего множества хозяйственных операций предприятия исключает возможность однажды задать состав регистров: в процессе работы возникают новые виды деятельности, новые хозяйственные операции и, как результат, новые учетные регистры, которые также должны попасть в баланс двойной записи. Причем создавать их должен иметь возможность не только программист, но и пользователь. По свой сути регистр бухгалтерии это совокупность учетных регистров. Один регистр бухгалтерии содержит в себе множество учетных регистров (счетов), каждый из которых может иметь независимую аналитик}. в разрезе которой и будут отражаться учетные показатели. В целях контроля все учетные регистры (счета) связаны между собой правилом двойной записи, которое образует замкнутую систему показателей: невозможно изменить значение показателя одного учетного регистра, не затронув другой, причем на ту; же сумму. Создаем новый регистр бухгалтерии. Даем ему имя «Хозрасчетный». Один регистр основан на одном плане счетов (при этом один план счетов может быть использован в нескольких регистрах). Если потребуется вести учет по нескольким планам счетов, то необходимо создать несколько регистров. На закладке «Основные» выбираем в качестве Плана счетов - «Хозрасчетный». Устанавливаем флаг поддержки корреспонденций - он позволит делать проводки с указанием дебета и кредита, и. в результате, пользователь сможет видеть обороты между счетами. Регистр без поддержки ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 220
Бухгалтерский учет на платформе в V'<S . Проектирование регистра бухгалтерии корреспонденций - позволит видеть лишь остатки и обороты отдельных счетов. ► Основные Имя Хозрасчетный Данные Регистраторы Синоним Хозрасчетный Формы Макеты Подсистемы Права Интерфейсы О бмен данными Прочее Коммент арий | Действия - План счетов Хозрасчетный Корреспонденция- Далее> Закрыть Закладка «Данные» позволяет нам настроить основные измерения и виды учета (ресурсы). «Предопределенные» и дополнительные измерения Основной вид учета в бухгалтерии - учет на счетах и субсчетах в денежном выражении. Т.к. это регистр бухгалтерии, который основан на плане счетов, то измерения учета «Счет дебета» и «Счет кредита» в нем уже есть (нет, не на закладке данные - там их как раз нету, а в таблицах регистра бухгалтерии, ну как минимум одно - счет). Можно считать, что это «предопределенные» измерения регистра, их просто не может не быть в регистре бухгалтерии с поддержкой корреспонденций. Мы уже указали в качестве видов субконто План видов характеристик и уже добавили аналитику к отдельным счетам, поэтому разрезы по субконто в регистре гоже уже есть (опять таки в таблицах регистрах, на закладке данные их не видно). Это дополнительные измерения регистра, которыми может управлять пользователь. Балансовый ресурс Осталось добавить ресурс и учет в денежном выражении у нас готов. Добавляем новый ресурс «Сумма», в котором устанавливаем свойство «Балансовый». ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 221
“7С:Бухгалтерия 8". Конфигурирование и программирование от "А" Оо "Я" i а? t г1 * 'Основные Имя I Синоним Сумма О. | । Комментарий Полнотекстовый поиск Использовать ▼ I » Т ип данных: j Тил Число » ... Длина Ю Z Точность 2 I Неотрицательное * Представление I Балансовый 1 I Признак учета х | | Признак учета субконго ... х . Что значит балансовый? Начать нужно с описания понятия проводка. Что такое проводка? Одновременное движение по двум учетным регистрам: по дебету одного и по кредиту другого. Причем на одну и ту же сумму (с одного счета эту сумму сняла, на другой ее же положили). Если сумма на обе стороны проводки одна, то соблюдается баланс двойной записи. Сумма является балансовым ресурсом, т.е. присутствует в проводке в единственном экземпляре. Счет дт Счет кт Сумма 41 60 100.00 Небалансовый ресурс создаст два поля - свое для дебета и свое для кредита Небалансовый ресурс Не все показатели учета должны балансировать. Например: количество. Вот списали мы 10 штук каких-то материалов, а оприходовали одно готовое изделие. На ту же сумму (внимание, сумма ресурс балансовый и по нему контроль двойной записи). А по количеству нужен? Ответ - нет. Надо заметить, что это вообще вопрос спорный - являются ли эти показатели бухгалтерскими, если они не балансируют. Стоит ли загружать регистр бухгалтерии решением задач ему не свойственных. В отечественной практике учета сложилось, что бухгалтерия занимается всем: и склад ведет и зарплату считает. Поэтому и регистр бухгалтерии (инструмент бухгалтера) может решать и смежные задачи, например учет в количественном выражении. Чтобы организовать учет в количественном выражении, добавляем в регистр новый ресурс «Количество», не балансовый. ООО "1С Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 222
Бухгалтерский учет на платформе в V8: Проектирование регистра бухгалтерии Я ’ , z* * ” Основные: I Имя Количество Синоним Количество ; Комментарий ! Полнотекстовый поиск Использовать ’ ’Тип данных' Тип Число » ... > Д лина Ю * Точность О t Неотрицательное ’ Представление Балансовый Признак учета ... х ! Признак учета субконто ... х Физически это приведет к тому, что в проводку будет добавлено два поля: КоличествоДт и КоличествоКт. Само собой при такой организации учета баланса по количеству мы никогда не получим, но он нам и не нужен. Счет дт Счет кт Сумма Кол.дт. Кол. кт 41 60 100.00 10 шт. 90 41 100.00 10 шт. 41 41 100.00 1 шт. 10 шт. Остался последний штрих - как запретить заполнять в проводке количество для тех счетов, где оно не имеет смысла (в кассе, например, что там считать - монеты или бумажки и какой экономический смысл даст сложение одного и другого). Признаки учета Признак учета это свойство счета, сильно напоминающее его реквизит. Отличия от реквизита: признак может быть только типа «Булево» и признак может у правлять доступностью полей регистра бухгалтерии. Добавим в плане счетов на закладке данные новый признак учета «Количественный». ; Основные I ► Данные Нумерация Субконто Формы Макеты 5 Подсистемы < Ввод на основании Права Интерфейсы ‘ Обмен данными Прочее Длина кода Длина наименования Маска кода @@ Автопорядок по коду Длина порядка Основное представление • В виде кода В виде наименования t I i I Реквизиты Й . Признаки учета i Количественный i Т абличные части Действия - < Назад Далее> Зак рыть Справка ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 223
“ 1СБухгалтерия 8". Конфигурирование и программирование от “А” до "Я" Теперь мы можем связать этот признак учета с ресурсом «Количество» регистра бухгалтерии и программа будет разрешать заполнять количество в проводке только в том случае, если признак учета «Количественный» для счета указан. Синоним , Признак учета субконго , onpi-g ст венный Основные Имя Полнотекстовый поиск Использовать 'Тип данных Тип Число Количество Комментарий Количество Длина ’ Т очное гь Неотрицательное П р ед ст а в ление | Балансовый Можно сразу указать этот признак учета для предопределенных счетов. Для пользовательских это сможет сделать пользователь самостоятельно. Материалы Активный Забалансовый Признак учета Количественный Родитель Имя Код Наименование Вид Поряаок. Т олько обороты Отмена ОК Справка Виа субконто Номенклатура Счета Материалы 10. 10 Следует сразу затронуть вопросы производительности и универсальности. Механизм количественного учета сделан универсально, таким образом, что пользователь, когда захочет добавить новый счет для количественного учета должен будет поставить всего один флажок. Цена этой универсальности - во все таблицы регистра, для всех счетов был добавлен ресурс (где-то две колонки, своя для дебета, своя для кредита, где-то одна, но все равно добавлена). Балансовые измерения Измерения вообще как таковые в регистре бухгалтерии физически в таблицах регистра решены очень похоже на измерения регистра накопления, но смысл имеют совсем другой. Так как регистр ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 224
Бухгалтерский учет на платфор ме в V8: Проектирование регистра бухгалтерии бухгалтерии объединяет в себе много учетных регистров (счетов), то для каждого из них измерения задаются в виде субконто. Сами же измерения регистра бухгалтерии используются для решения задач многофирменного учета или добавления единого измерения сразу на все счета. Для решения задач многофирменного учета используются балансовые измерения. Балансовое измерение добавляет в проводку и в таблицы итогов регистра поле, по которому можно будет группировать и отбирать итоги. Что значит - балансовое? ho значит, что поле будет одно. Одно для дебета и оно же для кредита. В результате каждого значения измерения возникает баланс двойной записи. Как правило, балансовыми измерениями выступают юридические лица холдингов или обособленные подразделения организаций, выделенные на отдельный баланс. Отдельный баланс - ключевое слово. Если баланс по подразделению не нужен, а нужен, например, только отчет о прибылях и убытках, то подразделение это уже не измерение. Подразделение это будет уже субконто на счетах раздела финансовых результатов. В нашем случае речь идет о балансе. Мы хотим в одной информационной базе иметь несколько (сколько у нас организаций) замкнутых систем учета (балансов). Добавляем в регистр бухгалтерии новое измерение «Организация». Основные: Имя Организация Синоним Организация Комментарий Запрет незаполненных значений ; Индексировать Не индексировать i Полнотекстовый поиск Использовать •Тип данных. Т ип СправочникСсылкаОрганизации Представление: Признак учета Измерение будет балансовым и не будет привязано ни к одному признаку учета, т.е. не будет зависеть от счетов проводки: его надо будет заполнять всегда. Результат - каждая проводка получает свой признак отнесения к балансу той или иной организации. Организация Счет дт Счет кт Сумма Фабрика 43 20 100.00 Фабрика 79 43 100.00 Торг, дом 41 79 100.00 ООО "JC-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3(p lc.ru. 225
“1 С: Бухгалтерия 8". Конфигурирование и программирование от ‘\4 ” до "Я" Уже нельзя будет просто взять и передать товары с одной организации на другую (как было бы, если бы мы добавили субконто на счет, ведь у дебета свой субконто у кредита - свой). Для передачи имущества, задолженностей и др. между обособленными подразделениями в хозрасчетной бухгалтерии используется счет 79 «Внутрихозяйственные расчеты». Фабрика 43 79 100 Торговый дом 79 41 100 В данном случае фабрика передала торговому дому выпущенную продукцию. Потом, в балансе холдинга 79 счет «свернется». Небалансовые измерения Добавление небалансового измерения почти равноценно добавлению на все счета плана одного и того же вида субконто. Физически в таблицах регистра эти механизмы реализуются различно, но функционально - похоже. Использование небалансовых измерений для ведения аналитического учета встречается редко, чаще для организации многовалютного учета. Задача многовалютного учета состоит в хранении остатков и оборотов (валютных и рублевых эквивалентов) на отдельных счетах в разрезе валют. Для этого нам потребуется добавить регисгр бухгалтерии новое небалансовое измерение «Валюта» (СправочникСсылка.Валюты) и новый небалансовый ресурс «ВалютнаяСумма». t 1 I В . Измерения . Организация . Валюта В Ресурсы Сумма Количество Основные ► Данные Регистраторы \ Формы ; Макеты S Г-1 ; Подсистемы ! Права f Интерфейсы Обмен данными « Прочее \ Действия - < ВалютнаяСу та £ Реквизиты Далее> Закрыть Справка т.к. измерение небалансовое и ресурс тоже в проводку б\ дет добавлено четыре поля: ВалютаДт и ВалютаКт. ВалютнаяСуммаДт и ВалютнаяСуммаКт. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 226
Бухгалтерский учет на платформе в V8: Проектирование регистра бухгалтерии Вал.дт Вал. кт Счет дт Счет кт Сумма Вал.сум.дт Вал.сум.кт USD 50 62 2500.00 $100.00 USD 60 50 2500.00 $100.00 На заполнение этих полей в проводке нужно наложить такие же ограничения, как и в количественном учете. Мы создадим еще один признак учета «Валютный». Г Ал.'- I Основные ► Данные | Нумерация I Субконго Длина кода Длина наименования Маска кода @@ @@ Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Автопорядок по коду Длина порядка Основное представление • В виде кода В виде наименования Реквизиты Й -?„ Признаки учета „ Количественный Валютный^ Т абличные части; Действия • сНазад Далее? Закрыть Свяжем его с новым измерением и ресурсом \ Имя Валюта I Синоним Валюта I Комментарий I I Запрет незаполненных значений \ Индексировать Не индексировать ; Полнотекстовый поиск Использовать :» Т ип данных: I Т ип СправочникСсылка Валюты '» Представление: > Балансовый Признак учета Синоним Комментарий Признак учета Длина Точность Неотрицательное П редставление Балансовый Полнотекстовый поиск Использовать I ип данных: Тип Число Валютный Признак учета субконто Основные. Имя ВалютнаяСумма Валютная сумма 5 : проставим признаки для валютных счетов ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗФ lc.ru. 227
” I С: Бухгалтерия 8". Конфигурирование и программирование от "Д ” до “Я" Родитель Счета Имя ЕалютныеСчета ! : Код: 52 Наименование Валютные счета = Вид Активный ж Забалансовый : Порядок 52 ! Признак учета Учитывать ' Количественный ' Валютный PVHHI , t 1 Вид субконго Т олько обороты ОК Отмена Справка | Признаки учета субконто Признаки учета субконто позволяют отключить ведение того или иного вида учета для отдельно взятого вида субконто на отдельно взятом счете. Один признак учета субконго - предопределенный. Он позволяет создавать только оборотные субконто. По значениям таких видов субконто система не будет хранить остатки. Хранение остатков счета в разрезе объектов аналитике не все1да удобно. Некоторые аналитические срезы предназначены только для детализации оборотов счета. Например, для построения «отчета о движении денежных средств» необходимо получить обороты счета(ов) денежных средств в разрезе статьей. При эюм в бухгалтерском учете, мы наверняка получаем деньги по статьям «Выручка от покупателя», «Возвраты сумм, выданных в подотчет». «Возвраты денег от поставщиков» и т.д. и почти наверняка никогда не получим деньги по статье «Выдача зарплаты» или «Оплата поставщику за поставленный товар». Результат: если просто добавить ведение аналитического учета на счет «Касса», это приведет к тому, что одни статьи будут накапливать положительные остатки, а другие - отрицательные. И, что интересно, ни те, ни дру I ие - не ну жны. i .к. не имеют никакого экономического смысла. А вот обороты нужны. В типовом решении этот признак учета субконто используется, например, для организации учета косвенных расходов по статьям и учета денежных средств по статьям движения денежных средств. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. email uc3@ lc.ru. 228
Бухгалтерский учет на платформе в V8: Проектирование регистра бухгалтерии ift» ?Ч5Я ; Родитель Счета i Имя Касса Кед: 50. . Наименование Касса Вид' Активный ▼ i Забалансовый I Порядок 50 i Признак учета i Валютный , Количественный t I i ЙЧД с Сконто Только обороты Учитывать । Статьи Движения Дене ж ныхСр^1 ст в Су. Ва. Ко.. I ОК Отмена Справка ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 229
" 1 С: Бухгалтерия 8". Конфигурирование и программирование от “А ” до "Я" Дополнительные признаки учета субконто Если «Только обороты» это встроенный признак учета, то есть возможность создавать и свои собственные. Их задача - ограничить ведение какого либо вида учета по выбранному виду субконто счета. Примером может служить методика расчета стоимости для списания ТМЦ при наличии нескольких сладов. В соответствии со стандартами учета, себестоимость может рассчитывать как по сочетанию товар-склад, так и по «по номенклатурному номеру по предприятию в целом». В первом случае средняя стоимость рассчитывается как результат от деления суммового остатка товара на складе на количественный остаток товара на складе. Основное достоинство этого способа состоит в том, что бухгалтер имеет возможность анализировать суммовой остаток на складе, или. другими словами, задолженность материально- ответственного лица (МОЛ). Во втором - «средняя» рассчитывается без учета склада, как результат от деления суммового остатка товара по предприятию в целом на количественный остаток его же. Для склада же нужно хранить только количественные остатки в целях учета наличия товаров на складе. Плюсы этой методике в том, что на прибыль (выручка минус себестоимость) не влияет выбор склада. Минус - невозможно проанализировать задолженность МОЛа. Выбор методики зависит от стандартов учета и внутренней учетной политики компании. Как реализовать первый вариант (суммой учет по складам), думаю, вопросов не вызывает (два субконто на счете и признак количественного учета для счета в целом). А вот для реализации второго нам потребуются признаки учета субконто. Механизм признаков учета субконто позволяет отказаться от хранения в таблицах итогов остатков и оборотов какого либо ресу рса для какого либо вида субконто счета. Признаков учета субконто должно быть столько, сколько видов учета мы хотим иметь возможность «отключать». Для решения нашей задачи складского учета, нам потребуется отключать ведение суммового учета по складам24. Для этого создаем новый признак учета субконто «Суммовой» на закладке «Субконто» плана счетов. 24 В типовом решении признак учета субконто Суммовой для склада включается опционально пользователем при настройке параметров учета. ООО "1С Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 230
Бухгачтерскии учет на платформе в V8: Проектирование регистра бухгалтерии Основные ’ Данные Нумерация | ► Субконго Формы Макеты [ Подсистемы ' Ввод на основании Права Интерфейсы Обмен данными \ Прочее \ Л<= L=.......... Максимальное количество субконго Виды субконго: ВидыСубконгсХозрас четные 1 I i В- *; Признаки учета субконго Валютный , Количественный < Назад Далее) Закрыть ... X Справка з: Чтобы признак учета «заработал» его необходимо связать с ресурсом регистра бухгалтерии, которым он будет «управлять» Основные ► Данные Регистраторы Формы Макеты Подсистемы Права Интерфейсы О бмен данными Прочее Е Измерения Организация . Валюта В Ресурсы ВалютнаяСумма Количество ЁЭ ~ Реквизиты • Годержание • НомерЖурнала Действия < Назад Далее) Закрыть Справка - Основные Имя Сумма Синоним Сумма Комментарий — I ил данных: Тип Число » ... Длина 15 * Т очность 2 3 Неотрицательное — Представление Балансовый «к Признак учета ... х П; знак учета субк тнто Осталось отметить субконто для счетов. По умолчанию для всех видов субконто всех счетов этот признак учета будет включен. В типовом решении (на картинке) флаг ведения суммового учета снят с субконто «Склады» счета «Материалы». Код счета: 10 Вид Активный ; Наименование Материалы t * Запретить использовать в проводках № Вид f 1 Номенклатура 2 Партии : 3 Склады Только обороты Суммовой Количественный ОК Записать Закрыть Реквизиты регистра бухгалтерии Предназначение реквизитов регистра бухгалтерии ничем не отличается от также регистра накопления. Он позволяют оставить дополнительную информацию о движении регистра. В типовом ООО lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 231
" IС: Бухгалтерия 8". Конфигурирование и программирование от “А ” оо "Я" решении это Содержание, например. Добавим в наш регистр реквизит Содержание (строка 50 символов). г Основные ► Данные Регистраторы f Формы Макеты I | Подсистемы I Права : Интерфейсы i Обмен данными > < Прочее til □ г > Измерения г- • Организация Валюта Й~ _ Ресурсы Сумма к— Количество ‘.... ВалютнаяСумма Й-s Реквизиты ^Содержание сНазад Далее> Закрыть Справка Теперь пользователь (или мы - . программно при проведении документа) сможет оставить краткую информацию о сделанной проводке. ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗ® lc.ru. 232
Бухгаттерский учет ни платформе в V8 : Заполнение регистра Заполнение регистра И регистр накопления, и регистр бухгалтерии имеют одинаковые методы для заполнения. Основным по-прежнему является документ и его проведение. Проведение документа Отличительной особенностью проведения документа в бухгалтерском учете является то, что он может фиксировать разные операции. Так, например, приобретение ценностей может быть приобретением товаров, материалов, оборудования, капвложениями в основные средства и др. Кроме того, мы можем получить эти материальные ценности от поставщика, от прочего дебиторка/кредитора. учредителя и др. Все вышеперечисленные виды ценностей и расчетов учитываются на разных счетах и субсчетах плана счетов. И состав этих счетов и субсчетов может пополняться. Поэтому самый разумный выбор - предоставить пользователю возможность самому выбрать счета учета. Можно ему в этом помочь, но возможность выбора должна остаться. Сделаем это для документа 1 вступление товаров и услуг. Добавим на закладке данные документа новые реквизиты: реквизит шапки документа СчетУчетРасчетовСКонтрагентом (ПланыСчстовСсылка.Хозрасчетный) и реквизит табличной части товары СчетУчетаБУ того же типа данных. sw ...... Основные t 1 I ► Данные H )мерация Движения ЕН* Реквизиты Последовательности Журналы Формы Макеты Организация Контрагент ДоговорКонтрагента Ответственный ФактураПолучен НомерФактуры Подсистемы Б вод на основании Права Интерфейсы Обмен данными Прочее t 4 1 Т абличные части □ Т овары Номенклатура Цена Количество Сумма СтавкаНДС СуммаНДС Э Услуги Действия Разместим для новых реквизитов поля ввода в диалоге формы документа. ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3(c? Ic.ru. 233
“1С: Бухгалтерия 8”. Конфигурирование и программирование от " 1 ” до "Я" Действия 'Т Перейти - ? Номер Дата ЕЗ Фактура получен № Организация Контрагент х Счет учета расчетов с контр ... х Договор контрагента: . X Товары Услуги U t I ИЬы N Номенклатура Цьна аЬ <Поле вво . iat < Количество Сумма Ставка НДС Сумма НДС Всего Счет учета БУ аь <Полев «ь <П at <Поле at «.Поле в at. <Полевв < Ответственный: I • > । ' —j xj OK Записать Закрыть Теперь займемся проведением документа. Отметим документ как регистратор для нашего регистра бухгалтерии. Основные Данные Нумерация Движения Последовательности Журналы Формы Макеты Проведение: Разрешить Оперативное проведение: Запретить Удаление движений 0- S В Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Действия Удалять движения автоматически Регистры сведений • Регистры накопления Регистры бухгалтерии Хозрасчетный, К онструктор движений Н ДСП редъяв ленный Хозрасчетный^ <Назед Далее) Закрыть Справка а и написать обработку проведения. Этот документ уже делает движения по регистру накопления учета НДС, поэтому мы не будем пользоваться конструктором и напишем обработку сами: Для каждого СтрТовары Из Товары Пикл //1 Проводка = Движения.Хозрасчетный.Добавить(); //2 Проводка.Период = Дата; //3 Проводка.СчетДт = СтрТовары.СчетУчетаЕУ; Проводка.СчетКт = СчетУчетаРасчетсвСКонтрагентом; Проводка.Организация = Организация; Проводка.СубконтоДт.Номенклатура = СтрТовары.Номенклатура; //4 Проводка.СубконтоКт.Контрагенты = Контрагент; Проводка.СубкснтоКт.Договоры = Д сворКонтрагента; Проводка.Сумма = СтрТовары.Сумма; //5 Проводка.КоличествоДт = СтрТсвагы.Кэличество; Проводка.Содержание = "покупка"; //6 ООО “lC-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 234
Бухгалтерский учет ни платформе в V8: Заполнение регистра КонецЦикла; Прокомментируем модуль. //1 на счетах учета ТМЦ (10. 41. 43. 07. 08.04) ведется учет по номенклатуре. Значит, нужно формировать проводку по каждой строке документа. Для этого используем цикл по строкам табличной части Товары25. //2 добавляем движение в набор записей регистра бухгалтерии //3 заполняем системные поля и обязательные измерения регистра //4 заполняем дополнительные измерения (субконто) //5 заполняем ресурсы И заполняем реквизит Осталось проверить: счет расчетов, например, 60, счет учета ТМЦ, например, 41. Документом будут сформированы проводки. “5 Было бы более рационально выполнить запрос к табличной части и сформировать проволки при обходе результатов запроса, в типовом решении так и реализовано. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 235
“ 1С: Бухгалтерия 8”. Конфигурирование и программирование от "1" Оо "Я" 22. Практикум Мы забыли при проведении про НДС. Причем у счета 19, в дебет которого надо сделать проводку на сумму НДС может быть много субсчетов. Пользователь должен иметь возможность выбрать счет учета НДС в строке таблицы Товары. При проведении на каждую строку должна быть сделана проводка в дебет выбранного счета (субсчета) 19 счета с кредита Счета учета расчетов с контрагентом на сумму НДС из строки документа. —.................................. ...... . ........ 23. Практикум Пользователю быстро надоест руками выбирать счета в диалоге формы. Хранить счета в справочнике Номенклатуры нельзя - у нас многофирменный учет, для одной организации это продукция, для другой - товар. Значит надо сделать не периодический регистр сведений с измерениями Организация и Номенклатура и ресурсами - счетами учета и там хранить. При изменении номенклатуры подставлять счет учета. 24. Практикум Такой же механизм реализовать для счетов учета расчетов с контрагентами: для каждой организации, контрагента и договора с контрагентом хранить свои счета учета расчетов с контрагентом, как с поставщиком и с контрагентом, как с покупателем. —...........„„„............... ______ , __ _ .......„.....। Ручная операция Этот режим ввода было доступен и для регистров накопления, но используется он для них крайне редко. Этот вариант позволяет пользователю самому ввести любые движения в регистр. В регистрах накопления нет никаких средств контроля правильности ввода и, кроме того, логика их организации сильно зависит от программиста (и ничем кроме его фантазии не ограничена). В регистре бухгалтерии существует контроль двойной записи, и логика организации учета на счетах подчиняется правилам и стандартам бухгалтерского учета. Ошибку, конечно, допустить можно, но мы предполагаем, что в программе работает бухгалтер, который знает бухгалтерский учет и знает, что делает. Создадим новый документ Операция. Мы могли бы обойтись в этом документе вообще без реквизитов, но мы26 считаем, что неправильно вводить в одну операцию проводки по разным организациям. Поэтому мы создадим в докл менте один реквизит «Организация» 26 Как и разработчики типовой конфигурации ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 236
Бухгалтерский учет ни платформе в V8 : Заполнение регис три (СправочникСсылка.Организации). На закладке Движения отмечаем документ как регистратор регистра бухгалтерии и отключаем его проведение - проводиться, значит формировать движения в соответствии с алгоритмом, описанным в обработке проведения, а у операции этого алгоритма не будет. Проведение: Запретить Оперативное проведение Удаление движений' ЕЭ Регистры сведений ЕВ Регистры накопления Регистры бухгалтерии I Основные I Данные Нумерация ► Движения | Последовательности Журналы t Формы f Макеты | Подсистемы | Ввод на основании | Права Интерфейсы I Обмен данными Хозрасчетный к® Конструктор движении Хозрасчетный ! Прочее Действия » «Назад Далее> Закрыть Справка S Осталось нарисовать форму документа. В диалоге формы размещаем номер, дату, организацию и табличное поле «Хозрасчетный». Напомним, как работает запись движений в регистр документом. У документа есть свойство «Движения». Это коллекция, где каждый элемент - набор записей регистра, куда этот документ может сделать движения. Так вот мы размещаем в диалоге формы табличное поле для ручного заполнения этого самого набора записей. Осталось добавить в него колонки (все. кроме полей Регистратор, Период и Организация), используя помощник размещения данных, и наводим красоту. Действия ’ Перейти » Номер: Дата ЕЗ Организация Действия - „В1 | 4 Ном... Ак... Счет Дт СубконтоДт1 Количество стро... СубконтоДт2 Валюта СубконтоДтЗ Валютная су аЬ < аЬ <По аь <Полеввод аЬ «Поле в в- вво аь <Полеввод аь «Поле в а.ь «Поле ввод «Поле в Счет Кт СубконтоКт1 СубконтоКт2 СубконтоКтЗ аь <П.. „аь «Поле ввод 66 аь «Поле ввод аЬ «Поле ввод Количество Сумма Валюта Содержание Валютная су аь «Поле в а.ь «Поле ввша> аь «Поле в at «Полеввода> аь «Поле в ОК Записать Закрыть Так как у нас есть подчиненные справочники, которые мы используем в качестве субконто (договоры контрагентов), надо связать поле ввода второго субконто с первым по владельцу для дебета и для кредита проводки. ООО ”1С-Учебиый центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 237
“ 1С:Бухгалтерия 8”. Конфигурирование и программирование от "А " оо “Я" Данные События EF ДокуменгОбьект В ЭлементыФормы Е1 Хозрасчетный □ ТекущиеДанные ^СубконтоДт! ( к- СубконгоДт2 I- СубконтоДтЗ р-СубконтоКт1 *.СубконтоКтЗ СубконтоКтЗ - - Организация S Отбор ОК Документ почти готов. Последний штрих - заполнить свойства регистра, которые мы не включили в диалог формы. Регистратор будет заполнен системой автоматически, а вот поля Период и Организация надо заполнить значениями реквизитов шапки. Напишем обработчик события формы 11ередЗаписью Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Для каждого Проводка Из Движения.Хозрасчетный Цикл Проводка.Организация = Организация; Проводка.Период - Дата; КонецЦикла; КонецПроцедуры Мы будем считать, что все проводки одной операции имеют один период и проходят по одной организации. Готово. [8 отрйаи аойиюмп от гавгаю и Действия Номер 000000001 Перейти 22 02 2007 15. П О реализация Т орговый дом t Счет Кт Количество Валюта Валютная су. СубконтоКт1 СубконтоКт2 СубконтоКтЗ Г лавный покула Основной догов Количество Сумма Валюта Содержание Валютная су... СубконтоДН СубконтоДтЗ СубконтоДтЗ 1 000,00 оплата от покупателя Действия * Ном.. Ак... Счет Дт стро... Записать Закрыть При желании такую красивую форму списка можно было бы нарисовать для регистра бухгалтерии, таким образом, мы получили журнал проводок. Валютный учет в ручной операции Мы не предусмотрели расчет рублевой суммы на основании валютной и курса валюты. Чтобы это сделать придется вспомнить методы периодического регистра сведений. Нам необходимо получить курс валюты из регистра, актуальный на дату операции. ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 238
Бухгалтерский учет на платформе в V8: Заполнение регистра В модуле формы документа пишем функцию, рассчитывающую эквивалент и процедуры-обработчики событий для валюты и валютной суммы. Функция ПересчетСуммыПоКурсу(ВалютнаяСумма, Валюта, Дата) Экспорт Запись = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата, Новый Структура("Валюта", Валюта)); Сумма = ВалютнаяСумма * Запись.Курс; Возврат Сумма; КонецФункции Процедура ХозрасчетныйВалютаДтПриИзменении(Элемент) ТД = ЭлементыФормы.Хозрасчетный.ТекущиеДанные; ТД.Сумма = ПересчетСуммыПоКурсу(ТД.ВалютнаяСуммаДт, ТД.ВалютаДт, Дата); КонецПроцедуры Процедура ХозрасчетныйВалютаКтПриИзменении(Элемент) ТД = ЭлементыФормы.Хозрасчетный.ТекущиеДанные; Если НЕ ТД.СчетДт.Валютный Тогда ТД.Сумма = ПересчетСуммыПоКурсу(ТД.ВалютнаяСуммаКт, ТД.ВалютаКт, Дата); КонецЕсли; КонецПроцедуры Комментарии к модулю. Функция получает на себя валю гну ю сумму, валюту и дату. Используя метод регистра сведений ПолучитьПоследнее, получаем из регистра актуальный курс валюты на переданную дату, и вычисляет эквивалент. Процедуры привязаны соответственно своим названиям к валюте дебета (событие при изменении и это же событие валютной суммы дебета) и валюте кредита (и валютной сумме кредита). Готово. Действия Номер Действия 000000002 Перейти Дата 22 02 200716 □ Организация: Т орговый дом t Счет Кт Количество Валюта Валютная су Сумма Содержание количество Валюта Валютная су СубконтоКт! СубконтоКт2 СубконтоКтЗ Г лавный погупа Основной догов Счет Дт 62 26 213.10 34 467.60 СубконтоДт! СубконтоДт2 СубконтоДтЗ Ном... Ак... стро.. Г лавный покупа Основной догов USD 1 000.00 1 000.00 ОК Записать Закрыть Можно ввести несколько проводок по валютному счету. Активность Это свойство записи регистра уже встречалось нам в регистре накопления. Остановимся на нем подробнее. Мы уже знаем, что регистр хранит свои данные в двух типах таблиц: таблицы первичных движений и таблицы итогов. Свойство Активность записи позволяет ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 239
“/С:Бухгалтерия 8". Конфигурирование и программирование от “А" до “Я" управлять, будет ли эта запись учитываться в таблице итогов и. как резу льтат, будет ли она влиять на отчеты. Все записи одного работа должны иметь одинаковую активность, но сама активность является свойством записи. Управлять ей можно либо с помощью свойства «Активность» записи регистра бухгалтерии (мы добавили его в табличное поле, расположенное в форме документа операции). Либо «из языка». Если поле было добавлено в форму документа, пользователь сможет активизировав флажок (при условии, конечно, что отключен режим «Только просмотр») активности на записи регистра, снять его или установить, не забыв, однако, сделать то же самое с другими записями этого регистратора. После чего можно будет записать измененный набор записей в регистр бухгалтерии. Ниже приводится процедура, позволяющая управлять активностью «из языка». Вызывается процедура из модуля формы документа: Процедура ВключитьВыключить(Кнопка) Проводки = Движения.Хозрасчетный; Если Проводки.Количество() > 0 Тогда Проводки.УстановитьАктивность(НЕ Проводки[0].Активность); КонецЕсли; Проводки.Записать(); КонецПроцедуры Комментарии: мы проверяем наличие в наборе записей, изменяем активность на противоположную и записываем набор в регистр. Универсальные документы В бухгалтерском учете много хозяйственных операций, когда корреспондирующий счет может меняться радикально от вида операции. Например, мы можем получить деньги в кассу от покупателя (аналитика: контрагенты и договоры конграгентов), от поставщика возврат (тоже), от подотчетника (сотрудники), от учредителя (контрагенты) от кого угодно еще (и аналитика, соответственно, какая угодно). В таких случаях в документе один счет прописывается жестко (ну или путем выбора субсчетов одного счета), а второй пользователь может выбрать сам из плана счетов. Но надо ведь ему разрешить и аналитику заполнить. Давайте сделаем такой документ. Для решения этой задачи используется тип данных «Характеристика» плана видов характеристик, которая может принимать значения типов, заданных при проектировании плана видов характеристик. Рассмотрим задачу на примере приходног о кассового ордера. Создаем новый документ «Приходный кассовый ордер». В который добавляем реквизиты Организация (СправочникСсылка.Организации), Счет (ПланыСчетовСсылка.Хозрасчетный). Сумма (число) и гри Субконто ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 240
Бухгалтерский учет на платфор ме в V8: Заполнение регистра (Характеристика плана видов характеристик «Виды Субконто хозрасчетные») Основные ► Данные Нумерация Движения Последовательности В-S Реквизиты ; • - Организация - Счет Основные: Имя Счбк.онто! Субконто! Комментарий Синоним Журналы Формы Макеты Субконго2 СубконтоЗ Сумма Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее Т абли .ные части| Действия < Назад. Далее> Закрыть Справка Индексировать Не индексировать Полнотекстовый поиск Использовать г Тип данным: Qf ] Характеристика В идьСубконтоХозрасчетные Составной тип данным •> ПланВидовРасчетаСсылка БизнесПроцессСсылка Т очкаМаршрутаБизнесПроцессаСсылка ЗадачаСсылка • • ПланОбменаСсылка Характеристика НастройкиПользователей ! ВидьС^контоХозрасчетмыг, ОК Отмена & Размещаем реквизиты в диалоге формы документа. Для полей ввода реквизитов Субконто1, Субконто 2 и Субконто 3 устанавливаем свойства: связь по типу (ДокументОбъект / Счет), ЭлементСвязиПоТипу27 (порядковый номер субконто - 1, 2, 3) и связь по владельцу (для второго с первым). На картинке показаны свойства второго субконто. “ Доступно только начиная с версии 8.1. В версии 8.0 это свойство называется «Вид субконто» ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ Jc.ru. 241
" IС: Бухга /терпя 8". Конфигурирование и программирование от А" до "Я" ДеиСР,ИО ’ *• -so Номер Дата ЕЭ Организация .. х Счет .. х Субконто1 Т х П: л — О Субконто2 Р Т х В: ф: | : D СубконтоЗ. Т X Сумма 0 00 А * Основные Имя Субьонго2 Данные Субконго? •j-J ОК Записать Закрыть И зменяет Данные П ропуск атьП риВ воде ПервыйВГ руппе Видимость * Доступность * АвтоКонтекстноеМеню * КонтекстноеМеню Отсутствует Использование: КнопкаСпискаВ ыбора КнопкаВыбора v КнопкаОчистки КнопкаРегулирования КнопкаОткрытия АвтоОтметкаНезаполненного АвтоВ ыборН езапо лненного ЗлементСвязиПоТ ипу 2 РежимВыбораИзСписка Сочетание^ лавиш х БыстрыйВыбор ВыборГруппИЭлеменгоб Группы и элементы ж [ Связь ПО ТИП^ Связь по владельцу Субконго! ... х Осталось избавиться от диалога выбора типа и «навести красивость» показав пользователю имя вида аналитики в заголовках надписей диалога формы. Для этого мы прописываем обработчики событий «ПриОткрытии» формы и «11риИзменении» поля ввода «Счет»: Процедура СчетПриИзменении (f рс»м«-'•.•m) ЧислоСубконто = Счет.ВидыГус .Количество(); Для Сч = 1 По ЧислоСубкснт :к^ ипСубконто = Счет.ВидыСубк ‘ ч - 1].ВилСубк^нто.ТипЗначения; ДокументОбъект["Субконтс" + ТипСубконто. ПривестиЗначение (Д,. /ментОбъект["Субконтс" + Сч] ) ; КонецЦикла; ''“тановитьВидимостьСу0кснг1 с ( ) ; КонецПроцедуры Процедура УстановитьВидимс ''текс нто () Для Ном = 1 по 3 Цикл Если (Ном <= Счет.ВидыСубк нт "ичество()) и (НЕ Счет.Пустая()) Тогда ЭлементыФормы["НадписьСубк нт'"+Нсм].Заголовок = Строка(Счет.ВидыСубконтс[Ном-1].ЕидСубконтс); ЧпементыФормы [" НадписьС'убК' " + 1 тм] . Видимость = Истина; ЭлементыФормы["Субконтс"+Н- м].Видимость = Истина; И Н 3 ч с ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(g lc.ru. 242
Бухгалтерский учет на платформе в \'8: Заполнение регистра ЭлементыФормы["НадписьСубконто"+Ном].Видимость = Ложь; ЭлементыФормы [ "Субконто”+Ном] . Видимость = Ложь; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ПриОткрытии() УстановитьВидимостьСубконто(); КонецПроцедуры Прокомментируем модуль. При изменении счета мы получаем число видов субконто на этом счете. Пробегая в цикле по количество видов субконто, мы обращаемся к специализированной табличной части «ВидыСубконто» счета. Строки этой специализированной табличной части нумеруются с нуля. Получая из вида субконто его тип значения, мы «приводим» тип реквизита к типу субконто. Если тип текущего значения не совпадает, значение реквизита будет очищено. Процедура УстановитьВидимостьСубконто() делает «лишние» поля ввода и надписи к ним невидимыми, а для видимых полей устанавливает значения надписей (при этом надпись должна иметь имя «НадписьСубконто»+Номер). Осталось сделать этот документ регистратором бухгалтерии «Основной» для регистра Основные Проведение: Разрешить Оперативное проведение: TSBffSI Удаление движений: Удалять движения автоматически S Регистры расчета К онструктор движений Действия Далее> < Назад Закрыть гправка гить Осг •еной! Основной Й- Й Регистры сведений Регистры накопления Регистры бухгалтерии Данные Нумерация ► Движения Последовательности Журналы Формы Макеты Подсистемы Ввод на основании Права Интерфейсы Обмен данными Прочее И написать обработку проведения документа: Процедура ОбработкаПроведения(Отказ, Режим) Движение = Движения.Хозрасчетный.Добавить(); Движение.СчетДт = ПланыСчетов.Хозрасчетный.Касса; Движение.Период = Дата; Движение.СчетКт = Счет; Движение.Организация = Организация; Если Счет.ВидыСубконто.Количество() > 0 Тогда ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 243
“ 1СБухгалтерия 8". Конфигурирование и программирование от "Л” оо "Я” Движение.СубконтоКт[Счет.ВидыСубконто[0].ВидСубконто] = Субконто!; КонецЕсли; Если Счет.ВидыСубконто.Количество() > 1 Тогда Движение.СубконтоКт[Счет.ВидыСубконто[1].ВидСубконто] = Субконто2; КонецЕсли; Если Счет.ВидыСубконто.Количество() > 2 Тогда Движение.СубконтоКт[Счет.ВидыСубконто[2].ВидСубконто] = СубконтоЗ; КонецЕсли; Движение.Сумма = Сумма; КонецПроцедуры В данном случае при заполнении аналитики проводки нам очень пригодятся []. В них мы передадим вид субконто из табличной части счета и таким образом получим доступ к полям «Субконто» проводки. Документ готов. Действия »• «• л v г. Перейти •» ? Номер 000000001 Номер 000000001 Дата 22.02200717:0513 П Организация: Торговый дом ... х Счет Б2 ... х Контрагенты Главный покупатель ... х Договоры Договор с Фабрикой ... х Сумма 1000.00 ОК Записать Закрыть 25. Практикум В документе поступление товаров и услуг есть табличная часть «Услуги». С точки зрения бухгалтерского учета, оказанные нам услуги, являются затратами. На счетах учета затрат может быть несколько субконто (подразделения, виды деятельности, статьи затрат и др.). Необходимо реализовать в табличной части выбор счета дебета проводки и аналитики к нему (три субконто). ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(p lc.ru. 244
Бухгалтерский учет на платформе в V8: Физическое устройство регистра бухгалтерии Физическое устройство регистра бухгалтерии Физические таблицы регистра бухгалтерии Теперь, когда мы настроили регистр бухгалтерии в объектной модели данных и заполнили его проводками пора переходить к формированию отчетности, но до этого необходимо разобраться в его физической структуре. С физическими таблицами регистра накопления мы уже знакомы. Таблицы регистра бухгалтерии более сложные, что связано с универсальностью механизмов бухгалтерского учета, для которой необходимо разрешить пользователю самому добавлять новые учетные регистры (счета) и самостоятельно определять для них ресурсы и измерения (субконто). В базе данных для регистра бухгалтерии создаются следующие таблицы: Первичные движения: записи Период Регистратор № записи Активность Счет дт Счет кт Измерения Ресурсы Реквизиты 01.01.06 02.02.06 Таблица содержит всю информацию о проводке, но без признаков аналитического учета. Для хранения значений субконто предусмотрена отдельная таблица. Первичные движения: значения субконто Период Регистратор № записи Вид движения Вид субконто Значение субконто 01.01.06 Дебет 02.01.06 Кредит Таблица хранит значения субконто к проводкам из первой таблицы. Одна строка таблицы «Записей» может иметь несколько подчиненных строк в таблице «Значений субконто». Например, если была сделана проводка в дебет счет «Товары» с кредита счета «Поставщики»: Период Регистратор № записи Активность Счет дт Счет кт ПНК 1 Истина Товары Поставщики ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 245
“ 1С^Бухгалтерия 8". Конфигурирование и программирование от “4” до “Я" и на обоих корреспондирующих счетах ведется аналитический учет (товары в разрезе номенклатуры товаров и складов, а поставщики в разрезе контрагентов и договоров), то в таблице «Значения субконто» будет добавлено четыре записи: Период Регистратор № записи Вид движения Вид субконто Значение субКОНТО пнк 1 Дебет Номенклатура Авторучка Паркер пнк 1 Дебет Склады Оптовый пнк 1 Кредит Контрагенты Иванов пнк 1 Кредит Договоры Договор № 1 Вместе они хранят всю информацию о проводке, причем хранят ее компактно: при добавлении новых видов субконто на счет, основная таблица записей регистра останется неизмененной. Перечисленные выше таблицы первичных движений хранят всю информацию о проводке, однако строить на их основании отчеты затруднительно. Для подсчета оборотов за период пришлось бы их каждый раз складывать, а для подсчета остатков пришлось бы делать это аж два раза (весь приход минус весь расход) да еще и с самой первой записи регистра. Для решения этой задачи регистр накопления хранил в базе данных таблицу итогов. Регистр бухгалтерии хранит сразу несколько таблиц итогов. Таблицы первичных движений являются электронными аналогами хронологических учетных регистров бумажной бухгалтерии. Для быстрого получения остатков и оборотов по счетам регистром бухгалтерии создаются таблицы итогов. Таблицы итогов являются аналогами систематических учетных регистров в бумажной бухгалтерии. Они хранят остатки и обороты свернуто (сгруппировано) по календарным месяцам, счетам, измерениям, субконто. Первая из рассматриваемых нами таблиц итогов - таблица «Остатки и обороты по счетам» Итоги: остатки и обороты по счетам Период Измерения Счет Ресурсы Остаток Оборот дт Оборот кт 01.01.06 01.02.06 Первая колонка таблицы (период) хранит дату начала месяца итогов. Таким образом, таблица хранит итоги с дискретностью месяц. В разрезе месяцев, счетов и измерений хранятся остатки и обороты (дебетовый и кредитовый). ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. е-mail uc3@ lc.ru. 246
Бухгалтерский учет на платформе в V8: Физическое устройство регистра бухгалтерии Таблица хранит абсолютный остаток (остаток дебета минус остаток кредита) на начало месяца и обороты за месяц по каждому счету вне зависимости от того, активный счет или пассивный. «Разворачивание» остатков на дебетовые или кредитовые в зависимости от вида счета (активный, пассивный, активно-пассивный) будет выполнено виртуальной таблицей при обращении к ней в запросе. Обороты хранятся отдельно дебетовый и кредитовый. При ведении в конфиту рации аналитического учета дополнительно создаются таблицы итогов остатков и оборотов по счетам и субконто. Число таких таблиц будет соответствовать максимальному числу субконто на счете конфигурации. Так, например, если используется три субконто на счете, то будут созданы три таблицы: Для счетов, на которых задействован только один вид субконто, будет создана таблица, где будет добавлено одно измерение «Субконто!». Итоги: остатки и обороты по счетам и субконто Период Измерения Счет Субконто1 Ресурсы Остаток Оборот дт Оборот кт 01.01.06 01.02.06 И для хранения итогов по счетам с двумя видами субконто: Итоги: остатки и обороты по счетам и двум субконто Период Измерения Счет Субконто! Субконто2 Ресурсы Остаток Оборот дт Оборот кт 01.01.06 01.02.06 Для хранения итогов по счетам, где задействованы все три вида субконто: Итоги: остатки и обороты по счетам и трем субконто Период Измерения Счет Субконто! Субконто2 ч СубконтоЗ Ресурсы Остаток Оборот дт Оборот кт 01.01.06 01.02.06 Соответствующе строки таблиц итогов обновляются при записи проводок (если это не отключено программно, для ускорения выполнения регламентных операций). Кроме того, для хранения оборотов между счетами регистра с поддержкой корреспонденций, создается таблица: | Итоги; обороты между~счетами | ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗ© lc.ru. 247
“1С Бухгалтерия 8". Конфигурирование и программирование от “А" до "Я" Период Измерения Счет дт Счет кт Ресурсы Оборот 01.01.06 01.02.06 Эта таблица не хранит оборотов между субконто и имеет смысл только для построения отчетов типа «Сводные проводки» и «Шахматка». Таким образом, при записи проводки в регистр происходит: • добавление строки в таблицу записей • добавление строки (нескольких строк) в таблицу значений субконто (если в проводке участвуют счета, на которых ведется аналитический учет) • захват строки (в клиент-серверном режиме) таблицы итогов «остатки и обороты по счетам» и изменение ее (за месяц, к которому принадлежит проводка). Такой захват делается для обоих счетов проводки • если на счетах проводки ведется аналитический учет, то в зависимости от количества задействованных на счетах субконто, программа захватывает для изменения соответствующие строки таблиц «Остатки и обороты по счетам и субконто» Используя перечисленные выше физические таблицы, система, стараясь оптимально использовать существующие, рассчитанные итоги, выполняет построение виртуальных таблиц, когда мы к ним обращаемся из запросов. Таблицы регистра бухгалтерии для запросов Выше мы рассмотрели, как физически хранятся в базе данные регистра бухгалтерии. Следующая наша задача - понять, как к этим данным мы можем обратиться. Основным способом извлечения данных в системе является запрос, который выполняется к таблицам, представленным табличной моделью данных системы «1С: Предприятие». Все таблицы регистра можно разделить на реальные и виртуальные таблицы. Реальные таблицы предоставляют доступ к физическим таблицам регистра (далеко не ко всем, а только к таблицам первичных движений). А виртуальные таблицы представляют собой запросы, которые по нашему требованию (при обращении к ним) выполняет платформа к физическим таблицам. При этом платформа сама построит запрос так. ООО 1С Учебный центр N 3 . телефон (495) 253 58-38. e-mail uc3@ lc.ru 248
Бухгалтерский учет ни платформе в V8: Физическое устройство регистра бухгалтерии чтобы оптимально произвести извлечение данных из физических таблиц. Две реальные таблицы регистра - таблица по имени регистра и таблица «Субконто» предоставляют доступ к двум физическим таблицам первичных движений/таблица записей и таблица значений субконто). Все остальные таблицы виртуальные. Таблица «ДвиженияССубконто» строится соединением двух таблиц первичных движений (записей и значений субконто). С этим связана ее особенность - туда попадают неактивные записи. Остальные таблицы строятся преимущественно на основании таблиц итогов. Преимущественно, а не полностью, потому что программа пытается по возможности воспользоваться данными таблиц итогов. Если же таких данных там нет, тоща она обращается к таблицам первичных движений. ООО "1С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 249
"J С Бухгалтерия 8". Конфигурирование и програм мирование от “А" до "Я" Так, например, если мы обратимся к виртуальной таблице «Остатки», чтобы получить остаток на начало рассчитанного в итогах месяца, она обратиться к таблице итогов (остатки и обороты по счетам или остатки и обороты по счетам и субконто, смотря по тому, интересен нам остаток по счету или с отбором субконто). Если же мы обратимся, чтобы получить остаток на середину месяца, то программа обратиться к таблице итогов, чтобы взять остаток на начало следующего (или актуальный остаток), а затем отнимет сумму по данным таблиц проводок. При обращении к таблице «Обороты», если мы не потребуем от нее данные по корсчетам, и нас будет интересовать оборот за период, кратный месяцу, данные будут получены из таблиц итогов. В противном случае - программа воспользуется таблицами первичных движений. Таблица «Остатки и обороты» получил остатки на начало, подобно таблице «Остатки», обороты за период подобно таблице «Обороты» (но без корсчетов), а остатки на конец рассчитает сама. Если мы потребуем от нее расчета остатков и оборотов с группировкой по периодам (периодичность), то после извлечения остатков и оборотов программа запишет результат во временную таблицу, в ней рассчитает остатки и потом уже вернет нам результат. Таблица «Обороты дт кт» позволит быстро получить обороты между счетами за период кратный месяцу на основании таблицы итогов «Обороты между счетами». Если же мы потребуем от нее оборотов между субконто или оборотов за неровный период, программа обратиться к таблицам первичных движений. Индексирование таблиц регистра бухгалтерии Рассматривая физическую структуру таблиц итогов регистра бухгалтерии, не следует забывать об индексировании этих таблиц. Индексируются в этих таблицах поля период, счет, измерения и субконто. На что здесь следует обратить внимание? В первую очередь на ограничение длины индекса, накладываемое базой данных. Так. например, максимальная длина индекса в таблицах MS SQL составляет 16 полей. Это значит, что при создании индекса, который используется для быстрого поиска, первые 16 полей таблицы попадут в индекс. Остальные - нет. При расчете длины индекса следует обратить внимание на типы полей. И, в первую очередь, на составные типы данных. Для хранения одного значения составного типа данных программа расходует три поля в базе данных (имя объекта, имя таблицы, ссылка на запись в таблице). Это при условии, что в состав типа входят только ссылочные типы данных. Если в состав кроме ссылочных входят еще и примитивные. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 250
Бухгалтерский учет на платформе в V8: Физическое устройство регистра бухгалтерии то для хранения каждого значения примитивного типа данных в базе данных будет задействовано еще одно поле таблицы. Не сложно посчитать, что если мы создаем реквизит и указываем, что он может хранить значение составного типа данных, и в состав входят ссылки и «Число», то для хранения потребуется четыре поля базы данных. Если включить в составной тип еще и «Строку» - пять полей. Добавим «Дату» и «Булево» и выясниться, что для того, чтобы сохранить это значение в базе данных, потребуется создать семь полей в таблице базы данных. А теперь вернемся «к нашим баранам»: таблица итогов регистра бухг алтерии и максимальная длина индекса в таблицах MS SQL. Представим себе самую большую таблицу итогов регистра бухгалтерии типовой конфигурации «Бухгалтерия предприятия». Для регистра бухгалтерии «Хозрасчетный» объявлены измерения «Валюта» и «Организация». С помощью этих измерений ведется многовалютный и многофирменный учет. Кроме того, в плане счетов установлено максимальное количество субконто на счете равное трем. Таблицу итогов «Остатки и обороты по счетам и субконто» можно представить так: Итоги: остатки и обо| эоты по счетам субконто Период Организация Валюта Счет Субконто 1 Субконто 2 Субконто 3 Ресурсы Остаток Оборот дт Оборот кт 01.01.06 01.02.06 Рассмотрим типы данных и количество полей, которые надо индексировать. Поле Реквизит Тип Поле в БД № Период Служебное Дата Дата 1 Организация Измерение Ссылка Ссылка на запись 2 Валюта Измерение Ссылка Ссылка на запись 3 Счет Служебное Ссылка Ссылка на запись 4 Субконто 1 Субконто Составной Имя объекта 5 Имя таблицы 6 Ссылка на запись 7 Субконто 2 Субконто Составной Имя объекта 8 Имя таблицы 9 Ссылка па запись 10 Субконто 3 Субконто Составной Имя объекта 11 Имя таблицы 12 Ссылка на запись 13 Таким образом, длина индекса составила 13 полей. При максимальной длине индекса в таблицах MS SQL равной 16 полям. Не сложно ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 251
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от “J " до "Я" подсчитать, что если добавить еще два субконто на счет, то последний уже в индекс не попадает. К чему это приведет? Индексы используются не только быстрого получения итога в отчетах, но и, самое главное, при записи движений в регистр. По индексу программа быстро находит строку, которую нужно захватить и изменить. Это в том слу час, если все поля, которые должны быть проиндексированы, в индекс поместились. А если нет? Тогда программа получает не одну строку, а диапазон строк и в дальнейшем перебирает его в поисках нужной, что очень существенно скажется на скорости записи документов. Какие выводы из этого можно сделать? • Ии в коем случае не включать в состав типа данных субконто примитивные типы, включать только ссылочные. Тогда на хранение одного значения субконто будет использоваться только три поля базы данных • При проектировании регистра и количества видов субконто на счете стараться «уложиться» в длину индекса 16 полей. Кстати, кроме того, что примитивные типы данных увеличивают число индексируемых полей, они еще и количество индексов увеличивают. Так, например, если взять гипотетическую ситуацию, в которой мы ведем учет по двум параллельным срезам (два субконто на счете) и эти субконто имеют составной тип данных «Дата + Строка», то количество индексов будет на все сочетания, т.е. четыре. И все эти индексы будут обновляться при записи движений в регистр. Начиная с версии «1С:11редприятие» 8.1 в случае, если все поля не помещаются в индекс, создается специальное поле, которое должно повысить скорость записи движений за счет быстрого обновления итогов. Однако наличие этого механизма никак не влияет на скорость получения отчетов. В любом случае, при проектировании регистра решение об использовании типов данных (например, примитивных) и количества измерений (субконто), если поля не помещаются в длину индекса, должно приниматься только после проведения нафузочных тестовых испытаний. Управление итогами регистра бухгалтерии Расчет итогов Расчет итогов создает строки в таблицах итогов регистра за рассчитываемые месяца. Рассчитываются и гот или программно: РегистрыЕухгалтерии.Основной.УстановитьПериодРассчитанныхИтогов(Да та) ; или интерактивно из меню Операции - Управление ито1 ами: ООО ’’lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 252
Бухгапперский учет на платформе в V8: Физическое устройство регистра бухгалтерии ’ Установка границы рассчитанных итогов Установка режима разделения итогов I’ Регистр. ................^Рассчктанпр Установить по * * Все регистры _ _ 31 01 2007 26 02 2007 ] L »/Регистр накопления г!ДС предъявленный 31 01.2007 28.02 2007 < ✓ Регистр бухгалтерии Хозрасчетный 31 01 2007 28 02 2007 | Выполнить Закрыть Справка i После расчета итогов, при записи проводки в рассчитанный месяц программа сама будет выполнять обновление месяца проводки и всех последующих (если изменения вносятся задним числом). Автоматическое обновление таблиц итогов может быть отключено с целью повышения производительности при проведении регламентных операций. Кроме выполнения расчета по указанный период, существует возможность пересчитать все итоги или итоги за месяц или только актуальные итоги (методы объекта РегистрБухгалтерииМенеджер). Режим разделения итогов28 Режим разделения итогов предназначен для увеличения параллельности записи в регистр при значительном количестве одновременно работающих пользователей. Механизм работает только при записи движений. Механизм не работает в файловом режиме (только в клиент-серверном), не работает с PostgreSQL в автоматическом режиме управления блокировками в транзакции Выше, при описании работы таблиц итогов мы обратили внимание на то, что для записи в регистр проводки блокируются строки таблиц итогов. Так, например, если у нас рассчитаны итоги по конец декабря (т.е. последняя строка таблицы итогов маркирована 01.12.200Х), то при записи проводки датой декабря профамма найдет соответствующие строки в таблицах итогов • остатки и оборот ы по счетам • остатки и обороты по счетам и субконто (если есть аналитика) • обороты между счетами заблокирует эти строки и изменит их. Основная проблема здесь будет с таблицей «Остатки и обороты по счетам». Проиллюстрируем это на примере: два пользователя одновременно оформляют приходные накладные. Скорее всего, они приходуют различный товар, а может быть и на разные склады. Поэтому проблемы с захватом строк таблицы «Остатки и обороты по счетам и субконго» не возникнет Доступно начиная с версии 8.I ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 253
“ 1СБухгалтерия 8". Конфигурирование и программирование от “4" Оо "Я" Итоги: остатки и обороты по счетам и субконто Период Счет Субконто! Ресурсы Остаток Оборот дт Оборот кт 01.12.06 Товары Авторучка 01.12.06 Товары Карандаш . Каждый из них заблокирует свою строку, изменит ее и отгту стит. А вот в таблице «Остатки и обороты по счетам» они столкнуться: счет-то ведь у обоих пользователей один и тот же: «Товары», а это одна строка в этой таблице. Итоги: остатки и обороты по счетам Период Счет Ресурсы Остаток Оборот дт Оборот кт 01.12.06 Товары Чтобы решить эту проблему, для регистра может быть включен «режим разделения итогов». Разрешается использование разделения итогов регистра на закладке «Прочее» свойств. < р X Основные Данные Регистраторы Формы Макеты Подсистемы Права Интерфейсы Обмен данными ► Прочее Модуль набора записей Режим блокировки Автоматический Полнотекстовый поиск Не использовать Справочная информация Включать в содержание справки Действия < Назад Закрыть Справка Разрешать D®.^e/lenMe итогов В свойствах объекта «Регистр» разрешается использование этого режима в принципе только для тех регистров, где этот механизм имеет смысл. Использование этого режима в гот или иной момент времени при работе в информационной базе устанавливается или программно (методами объекта РегистрБухгалтерииМенеджер) или интерактивно используя диалог управления итогами ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 254
Бухгалтерский учет на платформе в V8: Физическое устройство регистра бухгалтерии Как работает это режим? В тот момент, когда два пользователя «столкнутся» в одной таблице программа добавит в таблицу итогов новую строку для второго пользователя. Итоги: остатки и обороты по счетам Разделитель Период Счет Ресурсы Остаток Оборот дт Оборот кт 0 01.12.06 Товары 1 01.12.06 Товары Таким образом, строки итогов будут «размножаться» ровно столько, сколько было одновременных захватов строки итогов таблицы. Но при обращении к итогам регистра из запроса, итоги будут складываться и в отчете будет только один итог. Плюсы и минусы этого режима: Плюсы Минусы Более высокая параллельность работы при записи в регистр Увеличивает размер таблицы итогов (до пересчета) Может снижать быстродействие считывания остатков Сворачивание строк таблицы итогов будет выполняться при пересчете итогов, который можно выполнить, используя диалог управления итогами или программно методами объекта РегистрБухгалтерииМенеджер ПересчитатьИтоги() ПересчитатьИтогиЗаПериод() В первую очередь имеет смысл использовать метод ПересчитатьИтогиЗаПериод(), который позволяет выполнить сворачивание строк, например, за прошедший период, в котором использовался режим разделения итогов. Актуальные итоги Рассматривая физическое устройство регистра бухгалтерии, мы утверждали, что итоги хранятся в таблицах помесячно. Это утверждение верно, но лишь отчасти. Действительно на каждый рассчитанный месяц в таблице итогов создаются новые строки, которые хранят остатки на начало этого месяца и обороты за месяц. Кроме итогов по месяцам, таблицы итогов регистра хранят записи маркированные датой «01.11.3999». Это актуальные итоги. В регистре бухгалтерии хранятся актуальными только остатки. Актуальные итоги включают в себя итоги всех активных записей регистра. | Итоги: остатки и обороты по счетам | ООО "lC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 255
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от "А " до "Я” Период Счет Ресурсы Остаток Оборот дт Оборот кт 01.12.2006 Товары 01.11.3999 Товары 0 0 Актуальные итоги позволяют максимально быстро получить в запросах «последние текущие остатки». Использовать актуальные итоги можно для быстрого получения остатков «на сейчас», при условии, что учет ведется в реальном времени. Актуальные остатки могут использоваться для получения остатков при оперативном проведении документа (оперативное проведение обеспечивает запись документов с текущим временим, запрет на ввод документом будущей датой и контроль ввода задним числом). Для обращения к актуальным итогам требуется или вообще не передавать момента при обращении к виртуальным таблицам регистра, или, если выполняется получении итогов методом объекта РегистрБухгалтерииМенеджер Остатки(), передать в качестве параметра Неопределено. Отключение использования итогов и актуальных итогов29 Таблицы итогов регистра с одной стороны позволяют быстро формироваться отчетности, но с другой - замедляют проведение документов и уменьшают параллельность работы нескольких пользователей при записи документов. В случае записи значительного числа движений в регистр, при которой не требуется получать итоги регистра, можно отключить автоматическое обновление всех итогов (или только актуальных итогов). Управляют необходимостью рассчитывать итоги при записи движений в регистр методы объекта РегистрБухгалтерииМенеджерО УстановитьИспользованиеИтогов(Ложь) УстановитьИспользованиеТекущихИтогов(Ложь) Если передать в эти методы ЛОЖЬ, существенно возрастает скорость записи движений, однако скорость получения отчетов так же существенно снизиться. Когда имеет смысл их использовать? Например, при регламентной загрузке большого числа движений (документов, формирующих движения в регистр), при условии, конечно, что загружаемые 29 Доступно начиная с версии 8.1 ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 256
Бухгалтерский учет на платформе в V8: Физическое устройство ре, тетра бухгалтерии документы не анализируют в момент своего проведения итоги регистра. Когда же загрузка будет выполнена, достаточно передать в методы ИСТИНА, чтобы итоги были рассчитаны УстановитьИспользованиеИтогов(Истина) УстановитьИспсльзованиеТекущихИтогов(Истина) Метод УстановитьИспользованиеИтогов() позволяет в принципе отключить обновление таблиц итогов. Метод УстановитьИспользованиеАктуальныхИтогов() позволяет управлять необходимостью расчета актуальных остатков. ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 257
“ ^Бухгалтерия 8'. Конфигурирование и программирование от “А " до “Я Запросы к регистру бухгалтерии В этом разделе мы рассмотрим выполнение запросов к регистру бухгалтерии. В первую очередь для получения стандартной бухгалтерской отчетности. Синтетические отчеты Рассмотрим получение отчетов в разрезе счетов и субсчетов. Оборотно-сальдовая ведомость Оборотно-сальдовая ведомость, оборотный баланс или просто оборотка показывает по каждому счету остатки на начало периода, обороты за период и остатки на конец. Разработаем этот отчет с помощь конструктора. В качестве источника данных выберем таблицу регистра бухгалтерии ОстаткиИОбороты. Параметры этой таблицы позволят нам отобрать остатки и обороты за интервал дат и по одной организации. Таблицы и поля Группировка Условия Догтлнигпыо Объединеиия/Псев... Порядок Итоги Построитель Отчет Выходная форма ^Накопления ^Бухгалтерии асчетный асчетный ДвиженияССубкокп асчетный Обороты асчетный ОборотыДтКт ’ асчетный. О статки |зсчетнк|й. О стэткий Обороты j асчетный Субконго Таблицы =3* ОстаткиИОбороты НачалоПериода КонецПериода । Териодичность МетодДопслнения Поля ОстаткиИОборап '.Счет -чет ^КонПериода ПРЕ ДСТАВЛЕНИЕ(ОстагкиИОбороты С ОстаткиИОбороты СуммаНачальиыйОс ОстаткиИОбороты СуммаНачальныйОс ОстаткиИОбороты СуммаОборотДт ОстаткиИОбороты СуммаОборотКт ОстаткиИОбороты СуммаКонечныйОстг ОстаткиИОбороты СуммаКонечныйОстг И — УсловиеСчета ОК Отмена Справка Субконто Условие Организация = ^Организация ОК Отмена Справка В выбранные поля включаем счет, дебетовый и кредитовый остаток на начало и на конец периода и обороты дебетовые и кредитовые по ресурсу сумма. Группировки и условия в тексте запроса устанавливать не нужно - таблица виртуальная, все уже было сгруппировано еще до нас, а условия мы поставили в параметрах вирту альной таблицы. Па закладке «Объединения...» можно поменять заголовки, на закладке «Порядок» установить порядок по коду счета. Па закладке «Итоги» подводим итоги по счету7 с иерархией, чтобы в отчет попали итоги по счетам верхнего уровня (если у них есть субсчета). Можно подвести и общие итоги, но будут рассчитаны только обороты. Остатки в таблицах регистра бухгалтерии хранятся ООО "1 С-Учебный центр N 3 . телефон (495) 253-58-38. e-mail uc3@lc.ru. 258
Бухгалтерский учет на платформе в V8: Запросы к регистру бухгалтерии свернуто, поэтому остатки всех активных счетов (положительные) плюс остатки всех пассивных счетов (отрицательные) в сумме дадут ноль (баланс). Если мы хотим увидеть остатки по всем счетам (собственно баланс), то надо накапливать в процессе обработки результатов запроса и выводить в отчет «вручную». Таблицы и поля Группировка Условия Поля . -fix', СчетПреаставленив Дополнительно Объединения/Псев... Пэрядок Итоги Построитель Отчет Выходная Форма Группировочное поле___________Т ип итогов П севдоним | Элементы и иерархия Счет Счет « Обшие итоги Итоговое поле >] СуммаКонечныйОстеток.Дт С уммаК.он<*чнь йОгтатокКт С -1маг1<.чаг'ьныиСгтаТл дт СуммаНачальныйОстагокКт СуммаО борот Дт << СуммаОборотКт Выражение СУММА[СуммаКонечныйОстэтокДт) СУММА[СуммаКонечныйОстатокКт) СУММА(СуммаНачальныйОстатокДт) СУММА[СуммаНачальныйОстатокКт) СУ М МА[СуммаО борот Дт] СУММА(СуммаОборотКт) Запрос < Назад Далее > Отмена Отчет делается без построителя (закладка «Отчет»). В диалоге выходной формы располагаются поля ввода для Организации и интервала дат. Отчет можно считать готовым. Осталось навести красоту и, если есть желание формировать отчет без отбора по организации, вынести это условие виртуальной таблицы в переменную. До текста запроса располагает условный оператор: Если Организация.Пустая() Тогда Условие = ""; Иначе Условие = "Организация = ^Организация"; КонецЕсли; В тексте запроса, в предложении описания источника: |из | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода. &КснПериода, , , , , "+Условие+") КАК ОстаткиИОбороты Отчет готов. Периоде 01.012007 Ш по 31.12 2007 S 1..-J Организация Торговый дом ... х I Оборотка |Oiei I Cyi иллНлчл л| Су1.и.1лНлч .-Ц Суш laOoop {С yui.i<Woo|>( СуимлК оне CyiJiMh оне <| 10 35,00 35,00 41 750,00 750,00 50 2 000,00 _0>Ю00 52 60 680,70 60 680,70 60 785.00 785,00 62 62 680,70 62 680,70 ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 259
“ 1СБухгалтерия 8". Конфигурирование и программирование от "А " до "Я” Анализ счета Этот отчет должен показывать пользователю обороты одного выбранного счета со всеми корреспондирующими. И, кроме того, остатки на начало и на конец периода. Начнем с оборотов. Отчет разрабатываем конструктором выходных форм. Источник данных таблица Обороты регистра бухгалтерии. Таблицы и поля Группировка Условия Дополнительно ОбъедотенияЛТсев... Порядок Итоги Построитель Отчет Выходная форма анных Документы I ЖурналыДокументов ' । “ре1 моления П ланыВидовХарахтери ПланыСчетов РегистрыСведений ' РегистрыНакопления РегистрыБухгалтерии 3 I Хозрасчетный I I Хозрасчетный Дви, , _ УсловиеСчета | Хозрасчетный. Обод Хозрасчетный Сбое Хозрасчетный Оста Хозрасчетный Оста* Субконто Хозрасчетный Субс Условие Запрос Таблицы Поля Отмена Справка Обороты КорСчет ПРЕ ДСТАВЛЕНИЕ|Обороты КорСчет) Обороты СуммаОборотДт Обороты СуммаОборотКт НачалоПериода ЬКонПериода КонецПериша Периодичность Счет В ИЕРАРХИИ (ЬСчет) Организация - ^Организация ОК Отмена Справка В параметрах таблицы устанавливаем отборы за интервал дат по счету и по организации. Можно назначить полям псевдонимы (Дебет и кредит вместо СуммаОборотДт и СуммаОборотКт), упорядочить результат запроса по коду корреспондирующего счета. Подводим итоги Т аблицы и поля Группировка Условия Поля КорСчетПредставление Порядок Итоги Построитель Отчет Выходная Форма Тип итогов__________Псеедоним л г'орСчет Дополни ельно Объединения/Пссв Г руппир осочное поле КорСчет 3ле.-чмгы и иерархия Общие итоги Итоговое поле Дебет Кредит Выражение СУММАШебет) СУММА)Кредит) < Назад Далее > ОК Отмена Справка Отчет разрабатывается без построителя, в выходнч ю форму включаем поля для выбора периода, счета и организации. В целях дальнейшей разработки расшифровки отчетов, разместим процедуру в модуле (закладка «выходная форма»). Заготовка отчета у нас уже есть. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 260
Бухгалтерский учет на платформе в V8 . Запросы к регистру бухгалтерии Нам не хватает остатков на начало и на конец периода. В реальной практике имеет смысл при разработке отчетов минимизировать количество запросов и источников в них. В методических целях мы поступим самым простым способом - мы допишем еще один запрос к таблице Остатки регистра бухгалтерии. ЗапросОст = Новый Запрос; ЗапросОст.Текст = "ВЫБРАТЬ Остатки.СуммаОстатокДт, Остатки.СуммаОстатокКт |ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ^ (&Счет), , Организация = ^Организация) КАК Остатки"; ЗапросОст.УстановитьПараметр("Дата", НачПериода); ЗапросОст.УстановитьПараметр("Счет”, Счет); ЗапросОст.УстановитьПараметр("Организация", Организация); Остатки = ЗапросОст.Выполнить().Выбрать(); Если Остатки.Следующий() Тогда ОстатокДт = Остатки.СуммаОстатокДт; ОстатокКт = Остатки.СуммаОстатокКт; КонецЕсли; Чтобы получить остаток на начало периода, а остаток на конец периода рассчитаем: Если Счет.Вид = ВидСчета.Активный Тогда ОстатокДт = ОстатокДт + ОборотДт - ОборотКт; ОстатокКт = 0; ИначеЕсли Счет.Вид = ВидСчета.Пассивный Тогда ОстатокДт — 0; ОстатокКт = ОстатокКт + ОборотКт - ОборотДт; Иначе Остаток = (ОстатскДт+ОстатокКт) + ОборотДт - ОборотКт; Если Остаток > 0 Тогда ОстатокДт = Остаток; ОстатокКт = 0; Иначе ОстатокКт = Остаток; ОстатокДт = 0; КонецЕсли; КонецЕсли; ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗО lc.ru. 261
'Ч С .Бухгалтерия 8". Конфигурирование и программирование от "А " <)о "Я" 26. Практикум Доделать отчет Анализ счета. До оборотов показать строку с остатками на начало периода, после оборотов - с остатками на конец периода. Аналитические отчеты Разработаем отчеты для анализа остатков и оборотов по счетам в разрезе субконто. Оборотка по счету товаров Для построения отчета воспользуемся уже знакомым нам конструктором выходных форм. В качестве источника данных запроса выбираем таблицу ОстаткиИОбороты, для которой задаем параметры. В параметрах задаем интервал дат. Условие счета: поле «Счет» таблицы равно параметру по имени «Счет», который мы передадим в запрос, это будет счет учета товаров. Внимание: даже если мы заранее знаем, по какому счету должен формироваться отчет, мы не можем написать условие Счет.Код = "41". Код счета даже предопределенного может быть изменен пользователем. Неизменным остается только его имя и ссылка. Поэтому условие пишем на параметр «Счет», в который передадим ссылку на элемент плана счетов (или выбранную пользователем или полученную по имени счета). Альтернативный вариант получить ссылку на предопределенный счет используя литерал ЗНАЧЕНИЕ()30. В этом случае условие запроса будет выглядеть следующим образом: Счет = Значение(ПланСчетов.Хозрасчетный.Товары) При условии, что счет предопределенный.______________________________ Условие Субконто! В ИЕРАРХИИ(&Товар) позволит нам в диалог формы добавить поле ввода Товар и включить в отчет записи со значением поля таблицы «Субконто!». которые принадлежат выбранному в диалоге «Товару». 30 Доступно только начиная с версии 8.1. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 262
Бухгаттерский учет на и ттформе в V8 : Запросы к регистру бухгалтерии Выберем поля Субконто], СуммаНачальныйОстаток, СуммаОборотДт. СуммаОборотКт, СуммаКонечныйОстаток. На закладке «Объединение...» можно установить псевдонимы для полей, которые будут отображаться в таблице отчета: t 1 Имя Запрос 1 Б ез дубл Имя поля „ у овар ! ОстНач Приход Расход ОстКои Таблицы и поля Группировка Условия Дополнительно Объединения/Пс. Порядок Итоги Построитель Отчет Выходная Форма Счбконго! П редставление] Запрос 1 .• ОстИОб.Субконто! s й»’ ПРЕДСТАВЛЕНИЕ(ОстИОбСубконго!) ОстИОб СуммаНачальныйОстаток ОстИОб СуммаОборотДт ОстИОбСуммаОборотЕт ОстИОб СуммаКонечн! йОстаток < Назад Далее > ОК Отмена Спр зека На закладке «Итоги» указываем группировочное поле и Субконто 1 (Товар) с типом итогов «Элементы и иерархия» (в результат запроса будут добавлены итоги по элементам и группам справочника «Номенклатура»), Суммируемые поля - остатки и обороты. И устанавливаем флаг «Общие итоги», чтобы получить итог по таблице в целом. .♦ к Таблицы и по. Группировка Условия Дополните,е Объединения Порядок Итоги Построитель Отчет Выходная фо Поля fW Субконто! Представление S- Группировочное поле Товар Тип итогов \ 3 лементы и иерарх.,. Псевдоним Товар Все поля Общие итоги Итоговое поле ОстКон ОстНач Приход Расход Выражение СУММА(ОстКон) СУММА(ОстНач) СУММА(Приход) СУММА(Расход) Запрос < Назад Далее > ОК Отмена Справка На закладке «Отчет» как всегда отключаем использование построителя отчета, и переходим к рисованию формы. На закладке конструктора «Выходная форма» настраиваем включение в диалог формы полей ввода для параметров запроса. Счет не включаем - его будем задавать в модуле отчета. ООО "1С-У небный центр N 3". телефон (495) 253-58-38. e-mail uc3(e lc.ru. 263
'ЧС:Бухгалтерия 8". Конфигурирование и программирование от "А” ()о "Я” Таблицыип.. Группировка Условия Дополнитесь. Объединени. Порядок Итоги Построитель Отчет Выходная Фо.. Форма Фоома настройки построителя отчета Название выходной Формы Движение! оваров Модуль Модуль Формы Заголовок выходной Формы. Движение товаров Заголовок кнопки: Сформировать Новая форма Параметры: Имя параметра Товар Счет НачПериода КонПериода I Редактировать в Форме Движение! оваров Не располагать Запрос Подпись Товар Счет Нам периода Кон периода Т ип параметра 3 лемент управления СправочникСсылка Ч-'менк аЬ Поле ввода !»Ь Поле ввода ’«ь Поле ввода аь Поле ввода Дата Дата < Назад ОК Отмена Справка После этого осталось нажать «ОК» и внести некоторые изменения в получившийся отчет. Наш отчет предназначен только для анализа счета учета товаров. А раз так, необходимо это прописать в модуле. Процедура, которая выполняет запрос, располагается в модуле объекта (мы так захотели - переключатель на закладке «Выходная форма» - «Расположение процедуры»). В этой процедуре среди прочего есть передача в запрос параметров, в том числе «Счет» Запрос.УстановитьПараметр("Счет", ПланыСчетов.Основной.Товары); Отчет готов. в |Тов^|> |O<lH«k4 | Приход | Рас ход | Ос rh он Итог 703 490.00 703 400.00 Карандаши 490.00 400.00 Kohinor тм 490,00 490,00 Авторучки 4000.00 4000.00 Паркер "Golg" 4 000,00 4 000,00 Холодильники 740 000.00 740 000.00 BOSCH KGS 3760 IE 200 000,00 200 000,00 ELECTROLUX ER 9007 В 300 000,00 300 000,00 Атлант МХМ1704-00 240 000,00 240 000,00 Стиральные пашины 40 000.00 19 000.00 Ardo TL 1000 ЕХ-1 49 000,00 49 000,00 В реальной жизни имело бы смысл несколько изменить текст запроса, построенный конструктором. Дело в том, что В ИЕРАРХИИ() потребует от системы значительных усилий. Поэтому было бы неплохо проверить, нужно ли вообще устанавливать условия на значение субконто, и если да - то это значение является группой или э. тементом справочника. При этом до того, как будет заполнено свойство Текст запроса, мы должны написать условный оператор ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 264
Бухгалтерский учет на платформе в V8 : Запросы к регистру бухгалтерии Условие - "" ; Если Товар.Пустая() Тогда ИначеЕсли Товар.ЭтоГруппа Тогда Условие = "Субконто1 В ИЕРАРХИИ (&Товар)"; Иначе Условие = "Су0конто1 = &Товар"; КонецЕсли; В самом тексте запроса вносим изменения в строку с источником данных: РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(^НачПериода, &КонПериода, , , Счет = &Счет, , "+Условие+") КАК ОстИОб Отчет оптимизирован. 27. Практикум Разработайте отчет о взаиморасчетах, который позволит оценить задолженность перед нами и нашу перед контрагентами, следующей формы - -у-,4-У " >4. - . "«н* 'Iwwl Сформировать Периоде: | 0 по: П Поставщик ... х Долги поставщикам [Поставщик |ДолгНдН.т<ыло |3лкупм1 |Опл.ны |ДолгНтКонец В Итог •50 540.00 •50 54v.OO Продавцы •50 540.00 •50 $ Ю.00 1 Продадим всегда 6 540.00 6 540.00 Поставка 844 000,00 844 000,00 обратите внимание на то, что счет «Пассивный». Отбор и упорядочивание по виду субконто Среди параметров виртуальных таблиц есть параметр субконто «Субконто». Зачем он? Отбор по значению су бконто мы описываем в параметре таблицы по имени «Условие»... С нашей точки зрения правильнее было бы назвать этот параметр не «Субконто» (объект аналитики), а «Вид субконто» - аналитический счет. В этот параметр мы можем передать или значение типа вид характеристик плана видов характеристик или массив таких значений. Каково его назначение? Во-первых, это возможность установит отбор по виду субконто. Так, например, если мы хотим, чтобы в запрос попали итоги по всем счетам, на которых есть субконто номенклатура, то в наш прошлый отчет нужно внести следующие исправления. ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3fe--lc.ru. 265
“ IСБухгалтерия 8". Конфигурирование и программирование от ".4 “ Оо "Я" В параметрах виртуальной таблицы мы уберем отбор по счету или установим отбор по вид}’ субконто31 В модуле изменяем то место, где передаются параметры в запрос Запрос.УстановитьПараметр("ВидСубконто", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); То же самое можно сделать, используя возможность обращения к предопределенным данным в запросе, передав в качестве параметра в запрос литерал ЗНАЧЕНИЕ32 ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклат Ура)_____________________________________________________________ Второй вариант использования связан с упорядочиванием видов субконто в запросе и вообще построении универсальных отчетов по нескольким счетам. В нашем плане счетов может быть несколько счетов с одинаковой аналитикой33. Ну, или с почти одинаковой. Например, один и тот же вид субконто может быть прикреплен в разной последовательности (первым, вторым, третьим). Например, у нас есть счет, на котором первый вид субконто «Номенклатура», второй — «Склады», а на другом первый вид субконто - «Склады», второй - «Номенклатура». Если мы выполним запрос, передав в качестве условия на счет в параметр виртуальной таблицы Счет В (&СчетТоваров, &СчетМатериалов) а в отчете будем группировать итоги по первому субконто (Субконто!), то будет отчет из серии «... все смешалось: кони, люди...»: мы увидим, что номенклатурные позиции чередуются со складами... 41 В типовом решении субконто ОсновныеСредства используется на счетах 01. 02. 001. Могут появляться другие счета и субсчета для учета ОС. В запросах используется отбор по виду субконто. 32 Доступно только начиная с версии 8.1. 33 В типовом решении активно используется унифицированная аналитика для всех счетов раздела учета (учет ТМЦ. учет взаиморасчетов). Но некоторые счета имеют отличную аналитику (например. 10.7 «Материалы, переданные в переработку»). ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 266
Бухгапперскии учет на платформе в V8: Запросы к регистру бухгалтерии Как это исправить? Передать в качестве параметра «Субконто» в виртуальную таблицу массив видов субконто: мВидыСубконто = Новый Массив; мВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасч етные.Номенклатура); мВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозраче тные.Склады); Запрос.УстановитьПараметр("ВидСубконто", мВидыСубконто); Тогда, где мы не обращались к полю Субконто! виртуальной таблицы (отбор в параметре, детальная выборка, группировка), мы получим данные именно по товарам. Соответственно Субконто2 в нашем запросе всегда - склад. Внимание: наличие в запросе счетов с несимметричной аналитикой приведет к тому, что виртуальная таблица должна будет выполнить два запроса к базе данных, что замедлит скорость выполнения запроса. Запросы в проведении документа Курсовые разницы Рассмотрим использование запроса к регистру бухгалтерии на примере документа «Расчет курсовых разниц». Упростим себе задачу: у нас пока только один валютный учет (52 - валютные счета в банке) и на нем нет аналитики. Создадим новый документ «Расчет курсовых разниц». Документ не будет иметь реквизитов, но будет являться регистратором для регистра бухгалтерии. Пишем обработку проведения этого документа. Процедура ОбработкаПрсведения(Отказ, РежимПрсведения) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Остатки.Валюта КАК Валюта, Остатки.ВалютнаяСуммаОстаток * КурсыВалют.Курс - Остатки.СуммаОстаток КАК Разница, Остатки.Организация КАК Организация |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Момент, Счет = &Счет, , ) КАК Остатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(кМомент, ) КАК КурсыВалют ПО Остатки.Валюта = КурсыВалют.Валюта |ГДЕ | Остатки.ВалютнаяСуммаОстаток * КурсыВалют.Курс - Остатки.СуммаОстаток о О"; Запрос.УстановитьПараметр("Момент", МоментВремени()); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ВалютныеСчета); Строка =• Запрос .Выполнить () .Выбрать () ; Пока Строка.Следующий() Пикл Разница = Строка.Разница; Валюта - Строка.Валюта; ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 267
“ 1СБухгалтерия 8". Конфигурирование и программирование от “Л ” ()о "Я” Организация = Строка.Организация; Движение = Движения.Хозрасчетный.Добавить(); Если Разница > 0 Тогда // положительная Движение.СчетДт = ПланыСчетов.Хозрасчетный.ВалютныеСчета; Движение.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеДоходы; Движение.ВалютаДт = Валюта; Движение.Сумма = Разница; Движение.Содержание = "Положительная"; Иначе Движение.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеДоходы; Движение.СчетКт = ПланыСчетов.Хозрасчетный.ВалютныеСчета; Движение . ВалютаКт *= Валюта ; Движение.Сумма = - Разница; Движение.Содержание = "Отрицательная”; КонецЕсли; Движение.Период = Дата; Движение.Организация = Организация; КонецЦикла; КонецПроцедуры Прокомментируем процедуру. Запрос получает остатки из регистра бухгалтерии по ресурсам сумма и валютная сумма и получает актуальные курсы из регистра сведений. Обратите внимание, что остатки из регистра будут получены на момент времени документы (а не на его дату). Получив расчетный эквивалент валютного остатка по текущему курсу, он сравнивает его с рублевым остатком на счете и делает проводку на разницу. Готово. 28. Практикум Как выяснилось в процессе конфигурирования: 1. по каждой организации нужно вводить свой документ. 2. валютный счет может быть не один 3. на нем может быть от «нуля» до трех субконто Внести изменения в документ. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 268
Бухгалтерский учет на платформе в V8: Сложная бухгалтерская отчетность Сложная бухгалтерская отчетность Значительная часть бухгалтерских отчетов имеют шахматную форму (или по другому «кросс-отчеты»). Это, конечно, сама «шахматка» (шахматный баланс), журнальный ордер, ведомость по счету, мемориальный ордер и многие другие. Мы не наслаиваем на использовании того или другого термина (кросс-отчет или шахматный отчет) и оставляем выбор терминологии на усмотрение специалиста, выполняющего обследование и беседующего с постановщиком задачи. Строить их можно разными способами, рассмотрим основные из них на примере отчета «Шахматный баланс»: строки отчета дебетуемые счета корреспонденций, колонки - кредитуемые, а на пересечении показывается оборот между счетами. Во всех примерах в качестве источника данных будет использоваться таблица «ОборотыДтКт» и анализировать будем ее поля Счет Дт. Счет Кт, и СуммаОборот. Построение шахматного (кросс-) отчета «вручную» Для начала рассмотрим возможность построения такого отчета «вручную»: используя методы табличного документа и объект запрос для извлечения данных. С помощью конструктора построим отчет, сильно напоминающий «Сводные проводки». С целью сделать код проще, мы убрали из запроса представления полей, но это не означает, что в реальной практике надо поступать также. Т аблицы и поля Группировка Условия Дополнительно ОбьединенияЛТсевдонимы Порздок Итоги Построитель Б аза данных 0-ж (2223 Таблицы 0- П ОборотыДтКт.СчетКт ОборотыДтКт СуммаОборот 0•- • ’ ПланыОбмена Справочники □- Документы 0 Последовательности 0 •! Т ЖурналыДокументов < 0 * Перечисления 0 ПланыВиаовХарактеристик << Ё ПланыСчетов 0-- *- ПланыВиаовРасчета 0 РегистрыСведений v Запрос Далее > ОК Отмена Справка В параметрах таблицы укажем условие на интервал дат ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 269
“ 1СБухгалтерия 8". Конфигурирование и программирование от “J ” до “Я" j НачалоПериода КонецПериода I Периодичность УслоеиеС четаДт ! 5 СубконтоДт УсловиеСчетаКт ^НачПериода ККонПериода СубконтоКт ▼ * Условие — v I ОК Отмена Справка i i. ... ..... - ! Включим автоупорядочивание и подводим итоги по обоим счетам и общие по таблице Т аблицы и поля Группировка Условия Дополнит_льно Объединения/П' евдонимы Порядок Итоги Построитель Поля Группировочное поле I СчетДт СчетКт Т ип итогов [Элементы Элементы Псевдоним СчетДт СчетКт Общие итоги Итогбво: голе СуммаО борот Вь ражение | СУММА(СуммаОборот) < Назад Далее > ОК Отмена 4 Справка Отчет разрабатывается без использования построителя : Таблицы и поля Группировка Условия Дополнительно Объединения/.. Порядок Итоги Построитель Отчет Выходная форма i Т абличный документ и табличный документ сводную таблицу диаграмму сводную диаграмму Использовать построитель отчета в одной колонке :В отдельных колонках в отдельных колонках и только в итогах с группировками • в отдельных колонках в отдельной колонке Оформление * Группировать строки Запрос < Назад Далее > ОК Отмена Справка и в выходной форме размещается интервал дат. Само собой никакой шахматки у нас не получилось. Получились самые что ни на есть «сводные проводки.» Чтобы отчет приобрел шахматный вид, кое-что придется дописать «руками». ООО "1С-Учебнын центр N 3". телефон (495) 253-58-38. e-mail uc3<0 lc.ru. 270
Бухгалтерский учет на платформе в V8: С южная бухгалтерская отчетность Начнем изменение макета. Сейчас макет содержит только горизонтальные именованные области, а нам нужны еще и вертикальные. |Шапк |СчетДт ..-гетаямиггиггм. ।_____ '(Заголовок ?| ИтогСтр Шахматка СчетКт _______3 [ ИтогКлн |Счег Дг Счет hi СчетК» • <СуммаОборот> Ih ого Cyi.iuaOoopoi I Итого Cvi.ii ыОоорот ГЖЭВМК К таким областям обращаются по двойному имени «Шапка|Боковик». можно было обойтись без назначения имен всей колонки и всей строки и назначить имя конкретной ячейке (группе ячеек), к ним было бы проще обращаться, но макет на наш взгляд выглядел бы менее наглядно. Теперь нужно переписать модуль. Процедура Шахматка(ТабДок, КонПериода, НачПериода) Экспорт Макет = ОтчетОбъект.ПолучитьМакет("Шахматка"); Запрос - Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОборотыДтКт.СчетДт КАК СчетДт, | ОборотыДтКт.СчетКт КАК СчетКт, | ОборотыДтКт.СуммаОборот КАК СуммаОборот |ИЗ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПериода, &КонПериода,,,,,,) КАК ОборотыДтКт |ИТОГИ | СУММА(СуммаОборот) | ПО | ОБЩИЕ, СчетДт, СчетКт |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("КонПериода", КонПериода); Запрос.УстановитьПараметр("НачПериода", НачПериода); Результат = Запрос.Выполнить(); ОблЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОблШапкаБоковик = Макет. ПолучитьОбласть ("Шапка | Боковик ") ,- //1 ОблШапкаСчетКт = Макет.ПолучитьОбласть("Шапка|СчетКт"); ОблШапкаИтогКлн - Макет.ПолучитьОбласть("Шапка|ИтогКлн"); ОблСчетДтБсковик = Макет.ПолучитьОбласть("СчетДт|Боковик"); ОблСчетДтСчетКт - Макет.ПолучитьОбласть("СчетДт|СчетКт"); ОблСчетДтИтогКлн = Макет.ПолучитьОбласть("СчетДт|ИтогКлн"); ОблИтогСтрБоковик = Макет.ПолучитьОбласть("ИтогСтр|Боковик"); ОблИтогСтрСчетКт = Макет.ПолучитьОбласть("ИтогСтр|СчетКт"); ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ic.ru. 271
" 1С:Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я" ОблИтогСтрИтогКлн = Макет.ПолучитьОбласть("ИтогСтр|ИтогКлн"); ТабДок.Очистить () ; ТабДок.Вывести(ОблЗаголовок); ВыборкаОбщие = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Общие"); //2 ВыборкаОбщие.Следующий(); //собираем шапку таблицы ТабДок.Вывести(ОблШапкаБоковик); ВыборкаКолонок = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетКт"); //3 Пока ВыборкаКолонок.Следующий() Цикл ОблШапкаСчетКт.Параметры.Заполнить(ВыборкаКолонок); ТабДок.Присоединить(ОблШапкаСчетКт); КонецЦикла; ТабДок.Присоединить(ОблШапкаИтогКлн); //таблица отчета ВыборкаСчетДт = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетДт"); //4 Пока ВыборкаСчетДт.Следующий() Цикл ОблСчетДтБоковик.Параметры.Заполнить(ВыборкаСчетДт); ТабДок.Вывести(ОблСчетДтБоковик); ВыборкаСчетКт = ВыборкаСчетДт.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"СчетК т" ,"Все"); //5 Пока ВыборкаСчетКт.Следующий() Цикл ОблСчетДтСчетКт.Параметры.Заполнить(ВыборкаСчетКт); ТабДок.Присоединить(ОблСчетДтСчетКт); КонецЦикла; ОблСчетДтИтогКлн.Параметры.Заполнить(ВыборкаСчетДт); //6 ТабДок.Присоединить(ОблСчетДтИтогКлн); КонецЦикла; //собираем подвал таблицы ТабДок.Вывести(ОблИтогСтрБоковик); ВыборкаКолонок = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетКт", "Все"),- /11 Пока ВыборкаКолонок.Следующий() Цикл ОблИтогСтрСчетКт.Параметры.Заполнить(ВыборкаКолонок); ТабДок.Присоединить(ОблИтогСтрСчетКт); КонецЦикла; ОблИтогСтрИтогКлн.Параметры.Заполнить(ВыборкаОбщие); //8 ТабДок.Присоединить(ОблИтогСтрИтогКлн); КонецПроцедуры Прокомментируем процедуру. //1 Обращаясь по «двойному имени» мы получаем из макета области ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 272
Бухгалтерекий учет на платформе в \'8: Сложная бухгачтерская отчетность //2 Общий итог нам понадобиться, чтобы получить «ито1 по диагонали» - крайнюю правую нижнюю ячейку, пока же мы получаем выборку общего итога, чтобы «провалиться на нижний уровень». //3 Начинаем собирать шапку таблицы. Для этого нам нужно получить выборку кредитуемых счетов, которые и будут нашими колонками. Мы получим все кредитуемые счета, которые есть «под» общей выборкой. //4 Дальше нужно собрать собственно сам отчет. Строки этого отчета счета дебета. Получив из общей выборки выборку счетов дебета пробегаем по ней. Из нее получаем - имя счета и в самом конце (маркер //6) итог по строке: весь дебетовый оборот по счету. //5 В этот раз нам опять понадобились счета кредита, но итоги нужны только на суммы корреспонденции с выбранным счетом дебета. Поэтому выборку счетов кредита мы получаем не из общего итога, а из итога по счетам дебета. Но. при этом, нужно получить «все» счета кредита. Даже если итог в дебет выбранного счета с кредита равен нулю, колонка нам все равно нужна. //7 Так же как мы собирали шапку таблицы, собираем ее итог. Все повторяется, только на этот раз ячейка содержит параметр СуммаОборот, поэтому мы увидим итоги по колонкам (обороты с кредитуемыми счетами). //8 Используем общий итог, чтобы получить итог по всей таблице (крайнюю правую нижнюю ячейку). Работу/ с итогами запроса можно представить в виде схемы Отчет готов. ООО ”1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 273
“ I С: Бухгалтерия 8". Конфигурирование и программирование от ".4” о<> "Я" •к •_ С Сформировать Периоде. Шахматка ЕЗ по: п . 1 1 1 Счет Дт Счет Кт 50 52 00 0? 91.01 Итого t 1» 160,00 1С0.00 1 41 750,00 750.00 50 2 000,00 2 000.00 52 60 680,70 5 532,40 04 213.10 71 100,00 100.00 М.01 1 213,10 1 213.10 I Итого 100.00 1 ’13.10 910.00 42000.70 5 532.40 70 430.20 1 Л-- > 1 Группировки Все отчеты, которые мы разрабатывали с помощью конструктора, уже включали в себя возможность группировки строки. Щелкнув мышкой по «плюсику» слева от строки мы могли развернуть группировку строк, потом свернуть ее обратно тем же способом. Как это устроено? До того, как начался первый уровень (группировка строк) отчета, начинаем автогруппировку строк. ТабДок.НачатьАвтогруппировкуСтрок(); При выводе в результирующую таблицу строк, указываем к какому уровню они относятся. Если отчет формируется запросом (а обычно именно так и бывает), можно воспользоваться методом Уровень(), чтобы определить уровень строки. ТабДок.Вывести(Область, Выборка.Уровень()); И после окончания группировки ТабДок.ЗакончитьАвтогруппировкуСтрок(); Если необходимо предоставить пользователю возможность управлять строками группировки (сворачивать / разворачивать все 1руппировки одного уровня), то в модуле формы для таблицы необходимо установить свойство «Отображать заголовки». ТабДок.ОтображатьЗаголовки = Истина; Этим свойством сможет управлять и пользователь через «Меню - Таблица - Вид - Отображать заголовки». Так же работает и автогруппировка колонок. Изменим наш отчет шахматка. Начнем с того, что создадим в запросе итоги по иерархии, что позволит в дальнейшем сгруппировать счета одного уровня. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 274
Бух гач терс кий учет на платформе в V8: Сложная бухгалтерская отчетность Таблицы и поля Группировка Условия Дополнительно Объединения/Псеваонимы Порядок Итоги Построитель Поля Все поля Г руппировочное поле СчетДт СчетКт Т ип итогов Элементы и иерархия [Элементы и иерархия Псевдоним СчетДт СчетКт 1 ! а по ОБЩИЕ, СчетДт ИЕРАРХИЯ, СчетКт ИЕРАРХИЯ Дальше можно было бы изменить макет, чтобы строки и колонки с разными уровнями отличались визуально (шрифт, размер шрифта, фон), но в методических целях мы не будем этого делать, чтобы не увеличивать код на строки на получение из макета новых областей. Вносим изменения в модуль. Нам потребуется изменить ту часть кода, где обрабатываются результаты запроса, и формируется шапка и тело отчета. ТабДок.Очистить () ; ТабДок.Вывести(ОблЗаголовок); ВыборкаОбщие = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Общие"); ВыборкаОбщие.Следующий(); ТабДок.НачатьАвтогруппировкуКолонок(); ТабДок.Вывести(ОблШапкаБоковик); ВыборкаКолонок = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетКт"); //3 Пока ВыборкаКолонок.Следующий() Цикл ОблШапкаСчетКт.Параметры.Заполнить(ВыборкаКолонок); ТабДок.Присоединить(ОблШапкаСчетКт, ВыборкаКолонок.Уровень()) ; КонецЦикла; ТабДок.Присоединить(ОблШапкаИтогКлн); ТабДок.ЗакончитьАвтогруппировкуКолонок(); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаСчетДт = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетДт"); //4 Пока ВыборкаСчетДт.Следующий() Цикл ОблСчетДтБоковик.Параметры.Заполнить(ВыборкаСчетДт); ТабДок.Вывести(ОблСчетДтБоковик, ВыборкаСчетДт.Уровень() ) ; ООО "1С-Учебный центр N 3“. телефон (495) 253-58-38. e-mail uc3@ ic.ru. 275
“/С: Бухгалтерия 8". Конфигурирование и программирование от “А ” <)о “Я" ТабДок.НачатьАвтогруппировкуКолонок(); ВыборкаСчетКт = ВыборкаСчетДт.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"СчетК т" ,”Все") ; //5 Пока ВыборкаСчетКт.Следующий() Цикл ОблСчетДтСчетКт.Параметры.Заполнить(ВыборкаСчетКт) ; ТабДок.Присоединить(ОблСчетДтСчетКт, ВыборкаСчетКт.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуКолонок(); ОблСчетДтИтогКлн.Параметры.Заполнить(ВыборкаСчетДт); //6 ТабДок.Присоединить(ОблСчетДтИтогКлн, ВыборкаСчетДт.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); Отчет готов Если нужно добавить еще один уровень группировки - чтобы пользователь мог свернуть отчет так, чтобы оставались только общие итоги, то можно еще немного изменить код. ВыборкаОбщие = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Общие"); //2 ВыборкаОбщие.Следующий(); ТабДок.НачатьАвтогруппировкуКолонок(); ТабДок.Вывести(ОблШапкаБоковик,0); ВыборкаКолонок = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетКт"); //3 Пока ВыборкаКолонок.Следующий() Цикл ОблШапкаСчетКт.Параметры.Заполнить(ВыборкаКолонок); ТабДок.Присоединить(ОблШапкаСчетКт, ВыборкаКолонок.Уровень()+1) ; КонецЦикла; ТабДок.Присоединить(ОблШапкаИтогКлн,0); ООО 1С-Учебный центр N 3". телефон (495) 253-58-3X. e-mail uc3@ lc.ru. 276
Бухгалтерский учет на платформе в V8 Сложная бухгалтерская отчетность ТабДок.ЗакончитьАвтогруппировкуКолонок(); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаСчетДт = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетДт"); //4 Пока ВыборкаСчетДт.Следующий() Цикл ОблСчетДтБоковик.Параметры.Заполнить(ВыборкаСчетДт); ТабДок.Вывести(ОблСчетДтБоковик, ВыборкаСчетДт.Уровень()+1); ВыборкаСчетКт = ВыборкаСчетДт.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"СчетК т" ,"Все"); //5 Пока ВыборкаСчетКт.Следующий() Цикл ОблСчетДтСчетКт.Параметры.Заполнить(ВыборкаСчетКт); ТабДок.Присоединить(ОблСчетДтСчетКт, ВыборкаСчетКт.Уровень()+1) ; КонецЦикла; ОблСчетДтИтогКлн.Параметры.Заполнить(ВыборкаСчетДт); //6 ТабДок.Присоединить(ОблСчетДтИтогКлн, ВыборкаСчетДт. Уровень 0*1) ; КонецЦикла; //собираем подвал таблицы ТабДок.Вывести(ОблИтогСтрБоковик, 0); ВыборкаКолонок = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетКт"); //7 Пока ВыборкаКолонок.Следующий() Цикл ОблИтогСтрСчетКт.Параметры.Заполнить(ВыборкаКолонок); ТабДок.Присоединить(ОблИтогСтрСчетКт); КонецЦикла; ОблИтогСтрИтогКлн.Параметры.Заполнить(ВыборкаОбщие); //8 ТабДок.Присоединить(ОблИтогСтрИтогКлн); ТабДок.ЗакончитьАвтогруппировкуСтрок(); Прокомментировать код можно гак: мы «подняли» уровень группировки на единицу, как результат появилась возможность «схлопнуть» отчет до верхнего итога. ООО "lC-Учебный центр N 3".телефон (495) 253-58-38. e-mail исЗФ lc.ru. 277
'ЧСсБухгачтерия 8" Конфигурирование и программирование от “А " до “Я" Шахматка СчетДт Счет Кт Итого 1» 100.00 11 750.00 50 2 000.00 52 00 211.10 71 100.00 91 1 211.10 91.01 1 211.10 Итого 70 436.20 Построитель отчета Построитель отчета - объект, предназначенный для разработки сложных, настраиваемых пользователем, отчетов. Причем, разработки с минимальными усилиями для разработчика. До этого момента для извлечения данных из информационной базы мы всегда использовали объект «Запрос». Оно и понятно: он делает именно то, чего от него просят. Ничего лишнего. Это позволило нам успешно (надеюсь) изучить объект «Регистр бухгалтерии». Однако разрабатывать настраиваемые отчеты с помощью него проблематично, думаю, в этом удалось убедиться на примере «Карточки» и не только. Из чего состоит создание отчета? Нарисовать диало1 (поля отбора, группировки, сортировки - чем больше возможности настройки, тем сложнее это все сделать), написать текст запроса, нарисовать макет и описать заполнение этого макета результатами запроса. Построитель возьмет на себя решение всех этих задач. Он сам нарисует диалог, макет и заполнит его результатами. Отчет с использованием построителя можно сделать в конструкторе выходных форм, оставив включенным флаг «Использовать построитель отчета» на закладке «Отчет», но чтобы лучше его понять разработаем отчет «вручную». В качестве примера использования построителя давайте разработаем все тот же отчет «Шахматка», т.е. решим задачу, ранее сделанную с помощью сводной таблицы еще одним способом. Для этого создаем новый отчет. В список реквизитов отчета добавляем один реквизит «Построитель» типа «ПостроительОтчета». ООО "JC-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3<£ lc.ru. 278
Бухгалтерский счет на платформе в V8 : Сложная бухгалтерская отчетность Основные ► Данные Формы Макеты Подсистемы Права Интерфейсы Прочее t 1 1 В-S Реквизиты Посгрп14тель1 Т абличные части П 1 ’ Основные: Имя Построитель Синоним Построитель Комментарий ’Тип данных. пп ПостроительОтчета Действия » <Назаа Далее> Справка Закрыть Отмена Составнойтиг панныч ВиаСчета "Л;, ВидДвиженияБухга/тгерии S ПоляНастройки ПостроительОтчета Создадим форму для этого отчета. Ничего не будем располагать в ней на этапе работы конструктора форм. Далее добавим на нее табличные поля, связанные с данными: Построитель.ИзмеренияСтроки Построитель. ИзмеренияКолонки Построитель.Отбор Поле Т ип <Поле вводз. at <. t I □ Поле Тип at < Поле ввода, at < У □ Поле Т ип Значение сравнения С По at <Полеввода> at <Поле .at < По ле ввода > ввода) аЬ <П<?лее зода> at'<Поле ввода) b-J Сформировать Закрыть Можно добавить в диалог командные панели для этих табличных полей. Пока построитель помог нам нарисовать диалог, создав элементы управления для выбора группировок запроса строками и колонками отчета и установки фильтров формирования отчета. Следующая наша задача - объяснить построителю, какие данные и из какого источника надо извлекать, т.е. надо написать запрос. Текст запроса построитель должен получить еще до того, как форма ООО ТС-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@lc.ru. 279
“ 1С: Бухгалтерия 8". Конфигурирование и программирование от “.4” до "Я" откроется, чтобы, когда она открылась, пользователь смог внести в настройки изменения. Создаем процедуру обработчик события «При открытии» формы Процедура ПриОткрытии() Построитель.Текст = "ВЫБРАТЬ | ОборотыДтКт.СчетДт КАК СчетДт, | ОборотыДтКт.СчетКт КАК СчетКт, | ОборотыДтКт.СуммаОборот КАК СуммаОборот |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт КАК ОборотыДтКт |ИТОГИ | СУММА(СуммаОборот) I ПО ОБЩИЕ, | СчетДт, СчетКт | АВТОУПОРЯДОЧИВАНИЕ" ; Построитель.ЗаполнитьНастройки(); КонецПроцедуры Текст запроса можно взять из предыдущих отчетов. Но на этот раз никаких параметров в виртуальную таблицу мы не передаем. Это за нас сделает построитель. Мы передаем ему текст запроса и просим заполнить настройки по своему усмотрению. Что он и делает. При этом он анализирует: Детальную выборку - чтобы узнать какие поля запроса можно включать в отчет, но группировать данные по ним нельзя Источник данных и предложение ГДЕ (если есть), чтобы понять, по каким полям (параметры виртуальной таблицы) можно ставить отборы при формировании запроса Предложение ИТОГИ, чтобы знать, по каким полям можно группировать данные (строки, колонки) и какие при этом надо выводить на пересечении строк и колонок (СуммаОборот). Результатом работы этой процедуры будет диалог. который потьзователь сможет настроить по своему усмотрению. ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. е mail uc3@ lc.ru. 280
Бухгалтерский учет на платформе в V8 : Сложная бухгалтерская отчетность Действия Тип Элемен Чип Эомен Поле НачалоПериода КонецПерима Организация Т ип срав Значение Равно 01 01 2006 О ПОДО Равно 31 12 2006 23 59.59 В списке ЧЯИИЯГЯЯ Сформировать Закрыть Осталось буквально совсем чуть-чуть: выполнить запрос и вывести результат Процедура КнопкаСформироватьНажатие(Кнопка) Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Классика); Построитель.Выполнить(); Построитель.Вывести(); КонецПроцедуры Макет оформления позволит придать более красивый вид отчету, но работать будет и без него. Как работает построитель Давайте усложним диалог нашего отчета. Мы не будем добавлять в отчет новой функциональности пока, нам интересно понять, как работает уже нами сделанная. Текст запроса Для начала разместим в диалоге формы элемент управления «Поле текстового документа». ООО ЧС-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@lc.ru. 281
“1С: Бухгалтерия 8". Конфигурирование и программирование от “А ” до “Я” Действия ” ? 1 Поле <Полеввода> &ь Тип Поле Поле Тип «ь <Поле ввода аь5 <.. Т ип Значение сравнения эь «Поле ввода} _*ь «Поле Е*ь «Поле, ввода> «Поле- Основные: Показать текст запроса Сформировать Закрыть Имя ПолеТ екстового Документа!! И зменяет Данные Пропуск агьПриВ воде ПервыйВГ руппе Видимость Доступность АвтоКрнтекстноеМеню КонтекстноеМеню Отсутствует ▼ Характеристики: I Только просмотр | Расширение Язык запросов В это поле мы выведем текст запроса, который на самом деле исполняет построитель. Тот текст, который уже содержит дополнения внесенные построителем после того, как пользователь изменил настройки построителя. Создадим в диалоге формы еще одну кнопку «ПоказатьТекстЗапроса» и привяжем к ней одноименную процедуру Процедура ПоказатьТекстЗапроса(Кнопка) Запрос = Построитель.ПолучитьЗапрос(); Текст = Запрос.Текст; ЭлементыФормы.ПолеТекстовогоДокумента1.УстановитьТекст(Текст); КонецПроцедуры Теперь зайдем в пользовательский режим и нажмем на эту кнопку. Результат - нам покажут тот текст запроса, который собираются исполнять. Он мало отличается от того, который мы написали. ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 282
Бухгалтерский учет ни платформе в V8 Сложная бухгалтерская отчетность ; Действия - СчетДт I Поле Тип Поле Тип Поле Типср . Значение | СчетКт Элементы ! < | ЕЕь j АТЬ ОсновнойОборотыДтКт.СчетДт КАК СчетДт, ОсновнойОборотыДтКт.СчетКт КАК СчетКт, ОсновнойОборотыДтКт.СуммаОборот КАТ СуммаОборот РегистрБухпалтерии Основной.ОборотыДтКт КАК ОсновнойОборотыДтКт КТ-ГИ СУММАi СуммаОборот ! пс СчетДт КАК СчетДт СчетКт КАК СчетКт АЕ ТОУПСР ЯД ОШЕ АШЕ Показать текст запроса Сформировать Закрыть Добавим в поле «Отбор» несколько отборов (например, за интервал дат) и еще раз покажем текст запроса. Мы видим, что построитель переписал запрос, добавив туда отбор за период, заполнив параметры виртуальной таблицы. Именно такой текст и будет выполнен, если мы сейчас запустим выполнение запроса построителем. Значения параметров построитель получит из полей настройки. Макет построителя Теперь давайте разберемся, каким образом построитель рисует макет отчета. Размещу в диалоге формы (для экономии места - вместо текстового документа) поле табличного документа и добавлю кнопку ООО ТС Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 283
“/С.Бухгалтерия 8”. Конфигурирование и программирование от “А” во "Я" «ПоказатьМакетП©строителя» с привязанной к ней одноименной процедурой. Процедура ПоказатьМакетПостроителя(Кнопка) Макет = Построитель.Макет; ЭлементыФормы.ПолеТабличногоДокумента1.Очистить(); ЭлементыФормы.ПолеТабличногоДокумента!.Вывести(Макет); КонецПроцедуры Зайдем в пользовательский режим, установим для табличного документа (Главное меню / Таблица / Имена) режим «Отображение именованных строк/колонок» и «Отображать именованные ячейки». Выберем оба измерения нашего запроса (Счет дт и счет кт) в качестве строк отчета и покажем макет. Мы видим, что построитель нарисовал макет, создав в нем именованные области, соответствующие группировкам нашего запроса. Если мы изменим группировки запроса, добавив в строки иерархию, макет будет перерисован Действия - ? j t ? Поле Тип Поле Тип Поле Тип ср Значение ; СчетДт Иерархия СчетКт 1Ш&Д1 l'yi.n laOoopoi Показать макет построителя Сформировать Закрыть Если же мы решим, что кросс-отчет нам интереснее, что и вид макета тоже будет изменен. Кроме именованных строк в макете появились области, из которых бу дез построено тело отчета ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 284
Бухгалтерский учет на платформе в V8: Сложная бухгалтерская отчетное ть Деис-ьня Поле СчетДт Тип Элементы Поле : СчетКт Тип ^Элементы Поле Тип ср... Значение Заголовок Л'четД| ШапкаСтрок _____ СчыД1 м ‘ »глилллЫ1кк.г ъПлк .плмк-« ичегК. Н»ог аголововИгоглПоС more CwwaOCcpor Ресурсы Сут.«ыа?<5е<у|жы11тогПоКолонке « ckiij.i'.rteMvpcbilli >гПо> троге «‘ут.«.м’> >:•{>•: »loujjw4liorn |ПодвалТаб. |Подвал Показать макет построителя Сформировать Закрыть !• мы.-. Изменение макета построителя Макет, создаваемый построителем, может быть изменен нами программно. Изменим ширину колонок отчета в обоих вариантах формирования отчета. Для этого изменим процедуру формирования отчета Процедура КнопкаСформироватьНажатие(Кнопка) Построитель.Макет = Неопределено; //1 Макет = Построитель.Макет; Если Построитель.ИзмеренияКолонки.Количество() > 0 Тогда //3 Макет.Область("ШапкаСтрок").ШиринаКолонки = 10; Макет.Область("СчетКт").ШиринаКолонки = 10; Макет.Область("ЗаголовокИтогаПоСтроке").ШиринаКолонки = 10; Иначе //4 ОбластьСуммы = Макет.НайтиТекст("СуммаОборот"); ОбластьСуммы.ШиринаКолонки = 10; КонецЕсли; Построитель.Макет = Макет; //5 Оформление = ПолучитьМакетОформления(СтандартноеОформление.Классика); Построитель.МакетОформления = Оформление; //6 Построитель.ОформитьМакет(); Построитель.МакетОформления = Неопределено; Построитель.Выполнить(); Построитель.Вывести(); КонецПроцедуры Прокомментируем текст модуля. //1. Во-первых, необходимо, что бы при повтором формировании отчета построитель заново сформировал макет (если этого не сделать, то он попытается вывести отчет в ранее сформированный макет). ООО ” lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 285
"1С:Бухгалтерия 8'. Конфигурирование и программирование от “А " t)o "Я" //2. получаем на переменную «Макет» макет построителя. //3. если количество измерений колонок больше нуля, значит, строится кросс-отчет, и, стало быть, надо искать области с именами, которые мы уже видели при изучении макета отчета. //4. если это не кросс-отчет, значит ищем ячейку с текстом «СуммаОборот» и изменяю ширинку для этой колонки. //5. когда макет поправлен, кладу его обратно в построитель //6. оформляю отчет с помощью стандартного оформления, отчет готов. //7 осталось «сбросить» стандартное оформление, на случай повторного формирования отчета, выполнить запрос и вывести результат в макет. Расширение языка запросов для построителя На данном этапе наш построитель это «вещь в себе»: он сам анализирует запрос, зам заполняет свои настройки, позволяя пользователю изменить текст запроса, и сам выполняет результат. А часто бывает нужно показывать пользователю не все поля, а только нужные (для настроек) или передавать в построитель значения параметров запроса не из свойств построителя, а из обычных полей ввода (например, интервал дат хочется выбирать не в «Отбор», а в обычном выборе периода). Первым делом не будем требовать от построителя самостоятельной работы. Для этого закомментируем строю ________________________________________________________V_______ //Построитель.ЗаполнитьНастройки(); С этого момента построитель не будет анализировать текст запроса на предмет настройки диалога, а будет ждать инструкции от нас с вами. Инструкции эти описываются в фигурных скобках и во многом повторяют предложения языка запросов. Их также можно описать с помощью конструктора запросов. Начнем с параметров виртуальной таблицы ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ Ic.ru. 286
Бухгалтерский учет на платформе в V8: Сложная бухгалтерская отчетность Таблицы и поля Группировка Условия Дополнительно Обьединения/Псев... Порядок Итоги Построитель Таблицы Поля Условия Порядок Итоги Таблица Обязательная Номер группы новноиО боротыДтКт В параметрах описываем те поля, которые должны быть доступны пользователю для выбора в отборе. Поля перечисляются через запятую. Точка и звездочка после названия поля означает возможность использования вложенных полей. Также описываем предложение «Итоги» I Таблицы и поля Группировка Условия Д| шолниг₽льно Объединения/Псев Порядик Итоги Построитель Т аблицы Поля Условия Порядок Итоги Поля СчетДт Н- СчетКт Ь- СуммаОборот Й s Все поля П^ле СчетДт — СчетКт И... Псевдоним | v СчетДт V СчетКт Запрос < Назад ОК Отмена Справка на этих же закладках можно было описать, какие поля детальной выборки будут доступны пользователю, какие условия на ресурсы (или поля реальной таблицы) он сможет поставить, по каким полям сможет у порядочить результат запроса. Те поля, которые мы описали, попадут в текст запроса в фигурных скобках и будут доступны пользователю в настройках построителя. А как же быть с остальными? Тот же интервал дат? А их описываем обычным способом в тексте запроса без фигурных скобок. Результат: ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 287
“ 1СБухгалтерия 8”. Конфигурирование и программирование от "А ” Оо "Я" Таблицы и поля Группировка Условия Дополнительно Объединения/Псев.. Порядок Итоги Построитель Константы i База данных____ Е | Ёг" КритерииОтбора Е-ПланыОбмена ЁСправочники Е г Документы Ё ~ Последовательности j Ё Ш ЖурналыДокументов Ё . Перечисления Ё ПланыВидовХарактер < > Запрос Таблицы □да П н ion и. нр > |ДтКт г новнойО боротыДтКт. Счет Дт >? .'новнойОборстьПтКт СчетКт □новнойО боротыДтКт СуммаОборот Текст запроса: ВЫБРАТЬ ОсновнойОборотыДтКт.СчетДт КАК СчетДт, ОсновнойОборотыДтКт.СчетКт КАК СчетКт, ОсновнойОборотыДтКт.СуммаОборот КАК СуммаОборот ИЗ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(ЬНачПериода, &КонПериода, , , , , , {(Организация).*, (ВалютаДт), (ВалютаКт)}) КАК ОсновнойОборотыДтКт ИТОГИ СУММА(СуммаОборот) ПО СчетДт, СчетКт {ИТОГИ ПО СчетДт.*, СчетКт.*} АВТОУПОРЯДОЧИВАНИЕ_________________________________________________ Теперь пользователю будут доступны для отбора поля Организация (вместе с вложенными), валюта дт и валюта кт. Для группировки итогов будет доступны поля Счет дт и Счет кт (с вложенными). Интервал да! пользователь не сможет заполнить в полях настройки построителя (они без фигурных скобок), значения для этих двух параметров надо передать в запрос «напрямую» до его выполнения. Построитель.Параметры.Вставить(”НачПериода", НачПериода); Построитель . Параметры. Вставить (" КонПериода ", КонПериода) ,- Построитель.Выполнить() ; Конструктор выходных форм с построителем Разработаем отчет о движении товаров используя построитель отчет и конструктор выходных форм. Конструктором мы уже много раз пользовались, но каждый раз отключали использование построителя отчетов. Задача уже нам знакома, мы делали такой отчет в теме «Аналитические отчеты». Источником данных будет таблица «Остатки и оборони» ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 288
Бухга iтерский учет на платформе в V8 : Сложная бухгалтерская отчетность Таблицы и по.пя Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построитель Отчет Выходная Форма Таблицы Й » Счет [ОстаткиИОбороты Б аза данных S Последовательности Й '“l ЖионалыДокчментоь ЬНачПериода Начало" ериода । онецПериода ЬКонПериода Периодичность М етод Дополнения Счет - Значение|ПланСчетов Основной Товары) ... УсловиеСчета ОстаткиИОбороты Субконго! ПРЕДСТАВЛЕНИЕГОстаткиИОбороты Субконго!) ОстаткиИОбороты I1 оличестеоНачальныйОстатс* ОстаткиИОбороты Ко личествоОборотДт ОстаткиИОбороты КоличествоОборотКт ОстаткиИОбороты КоличествоКонечныйОстаток Субконго S 0 Ут ловив ОК Отмена Справка Далее > ОК Отмена Справка Мы описываем здесь только те параметры виртуальной таблицы, которые должны выбираться в полях ввода (не в отборе построителя) или задаются жестко (счет). Наш отчет не будет шахматным, и группировка отчета (товар с иерархией и общие итоги) известны заранее, поэтому их тоже описываем в предложении запроса Таблицы и поля Группировка Условия Дополнительно Объединения/Псевдонимы Порядок Итоги Построигегь Отчет Выходная Форма Поля Субконго! Представление Г руппировочное поле Субконто! Тип итогов в /1енты и иерархия Псевдоним I Субконго! I Общие итоги Итоговое поле КолмчествоКонечныйОстаток К оличествоНачальныиОстаток КоличествоО борот Дт КоличествоОборотКт Выражение СУММА|КоличествоКонечныйОстаток) СУММА(КоличествоНачальныйОстагок) СУММА(КоличествоОборотДт) СУММА)КоличествоОборотКт) Запрос Назад Далее . ОК Отмена Справка Теперь переходим к закладе, описывающей настройки построителя ООО " 1С-Учебный центр N 3". телефон (495) 253-58-38. е-mail uc3@ lc.ru. 289
“ 1С:Бухгалтерия 8'\ Конфигурирование и программирование от “А” до "Я" Таблицы и поля Группировка Условия Дополнительно Обьединения/Псеьаонимы Порядок Итоги Построитель Отчет Выходная Форма В параметре виртуальной таблицы «Условие» перечисляем имена измерений, которые должны быть доступны пользователю для отбора. Можно было здесь же назначить им псевдонимы, но удобнее это будет сделать потом программно. Описываем поля, по которым пользователь сможет упорядочить отчет (все) Таблицы и поля Группировка Условия Дополнительно ОбьединенияЛТсевдонимы Порядок Итоги Построитель Отчет Выходная Форма Итоги Т аблицы Поля Условия Порядок Поля Субконто! Представление Количествен ачальныйОстаток КоличествоОборотДт КоличествоОборотКт К DnnMecTBoKnHexHbiPOcTaTOK т Все поля Поле — Субконго! Количествен ачальныйО ста КоличествоОборотДт КоличествоОборотКт КоличествоКонечныйОстаток И. Псевдоним Субконго! Количествен ачальныйОстаток КоличествоО борот Дт КоличествоОборотКт КоличествоКонечныйОстаток Запрос < Назад Далее > ОК Отмена ; Й Справка I -----J На закладке «Отчет» оставляем флаг «Использовать построитель отчета» и устанавливаем флаг «Использовать фиксированный макет». ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(° lc.ru. 290
Бухгалтерский учет на платформе в V8: Сложная бухгалтерская отчетность * табличный документ сводную таблицу , в одной колонке ру пнровкам i диаграмму в иТДельных колонках • в отдельны* колонках сводную диаграмму в отдельных к ндонках и только в итогах в отдельной колонке и Использовать построитель отчета Оформление Классика » • в шапке в подвале ............................... и 'Использовать Фиксированным макет только в подвале ... ......... ......... в шапке и подвале I I » Запрос < Назад i Далее» СК Отмена Справка На закладке «Выходная форма» настраиваем основную форму отчета (два поля ввода для интервала дат) и форму настройки Таблицы и поля Группировка Условия Дополнительно ОбьединенияЛТсевдснимы Порядок Итоги Построитель Отчет Выходная Форма Форма Форма настройки построителя отчета Т ( >/ Отбор и Порядок Условное оформление Ютбор в Форме отчета т 1 I S • Новая Форма Движение Т овароеПостроителемНастройка | I Запрос < Назад ОК Отмена Справка В форме настройки разместим отбор. Размещать его в основной форме не станем (слишком много места занимает). Осталось нажать на кнопку «ОК» и отчет почти готов. Осталось в модуле формы отчета закомментировать строку ПостроительОтчетаДвижениеТоваровПостроителем.ЗаполнитьНастройки(); Мы описали логику7 настройки отчета с помощью расширения языка запросов и нам метод Заполнить11астройки() не нужен. Можно огредактировать макет отчета, придав ему более удобный вид (главное не изменять имена областей и параметры ячеек). ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru 291
“ 1С:Бухга.1 терпя 8". Конфигурирование и программирование от “А ” до “Я" 4 ,;-.5 1 1 2 3 4 5 6 । -i \ i 1 е i 1 Заголовок 1 Й п 1 Движение товаров построителем i i 2 3 4 5 6 7 8 9 ШагжаТабл Товар Остаток начальный Приход Расход Остаток конечный ' Обш^еИто! Итог • Количеств» Количеств» • Количеств» Количеств^ 1 Субконто! Пред с тлв пение - Количеств» • Количеств»« Количеств» Количеств^ Субконто!Представление Количеств»-Количеств»-Количеств» Количеств^ 1 < Ко личест в о « Ко личест в о < Ко личест в о < Ко личест в d а 1 J Субконто11 Субконто1 Детали ПодвалТаб) ! < > й И можно смотреть на результаты. Вот только проблема с отбором: мало того, что псевдонимы (Субконто! и Субконто2) не очень понятны (хотелось бы Номенклатура и Склады), так ведь еще и тип данных не задан: ведь субконто имеет составной тип, состав которого определен в плане видов характеристик. Отбор Поряйок Условное оформление Поле Т ип сравнения Значение Субконго! Равно Т х ? __ ? v 1|_ .-Ф—Т-— -- twx* »*»••« X - —ran Номенклатура %. Склады Субконго Физические лица Обе эти задачи можно решить, дописав несколько строчек кода в модуле формы отчеты. Дело в том, что с настройками построителя можно работать, не только интерактивно (табличные поля в диалоге формы), но и программно. Среди свойств построителя есть свойство. «Доступные! 1оля». Эта коллекция включает в себя все поля запроса, доступные построителю (в нашем случае, все, которые взяты в фигурные скобки - и для отбора, и для упорядочивания, все). Допишем в инициализацию построителя (процедура, которая вызывается перед открытием формы отчета) несколько строк кода после того, как построитель уже получил текст запроса. Счет = ПланыСчетов.Хозрасчетный.Товары; Сч = 0; Для каждого Стр Из Счет.ВидыСубконто Цикл Сч = Сч + 1; Поле = ПостроительОтчетаДвижениеТоваровПостроителем.ДоступныеПоля.Найти(” Субкснто"+Сч); Поле.Представление = Стр.ВидСубконто.Наименование; Поле.ТипЗначения = Стр.ВидСубконто.ТипЗначения; КонецЦикла; На переменную счет получаем ссылку на предопределенный счет «Товары», аналитика которого и испотьзуется для отбора. У счета есть специализированная табличная часть «Виды субконто», по которой ООО "IC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3(e Ic.ru. 292
Бухгалтерский учет на платформе в V8: Сложная бухгалтерская отчетность мы и организуем цикл. Внутри цикла по строкам табличной части мы находим в полях настройки (доступные поля) построителя (у нас он называется ПостроительОтчетаДвижениеТ оваровПостроителем) нужное нам поле. Находим мы его по имени (Субконто! и Субконто2). Дальше, зная первый/второй вид субконто, мы можем узнать его тип (свойство вида характеристик) и его название (опять гаки свойство) и назначить соответственно тип значения и представление у поля настройки. Готово. Отбор Порядок. Условное оформление Поте v Номенс пчгчра Тмпсравн Значение Равно — х Кроме отбора в нашем отчете можно настроить упорядочивание и задать условное оформление (например, выделить шрифтом или цветом все товары, остаток которых меньше заданного значения). Расшифровка Расшифровка - возможность детализации показателей отчета. В отличие от Группировки, при которой мы детализируем отчет строчками того же типа (в нашем случае - тот же состав колонок и наполнение данными), при расшифровке мы можем детализировать отчет с помощью совершенно другого по структуре и наполнению отчета. Рассмотрим механизм расшифровки на примере «Оборотки». Этот отчет, как и большинство других, собирался нами конструктором, поэтому какие-то элементы механизма там уже реализованы. Основывается этот механизм на том. что каждая прямоугольная область табличного документа, кроме того значения, которое показывается пользователю, может «за кадром» хранить еще одно - значение любого типа. Пользователь его не видит, но догадывается о его наличии (если для таблицы установлено свойство ТолькоПросмотр=Истина и ячейка «защищена») - курсор приобретает над такой ячейкой вид перекрестия с лупой (или, если для ячейки установлено свойство гиперссылка, как на картинке справа, «пальчика или р\ чки»). ООО "1С Учебный центр N 3", телефон (495) 253-58-38. е-mail uc3@ lc.ru. 293
" 1С бухгалтерия 8”. Конфигурирование и программирование от "А ” до "Я” Имя R6C2 Размещенье I Ячейки Основные: I Защита ч* I Г иперссылка Макет Заполнение Параметр I Парам расшифровки Использование расшифровки Ячейка Параметр СчетПредставление Счет Если бозьше ничего не делать, т.е. ограничиться тем, что записать в ячейку таблицы параметр расшифровки (Счет), установить свойство ТолькоПросмотр для табличного документа, то, по двойному щелчку7 мыши (или, если установлено свойство гиперссылка - одинарный щелчок) программа обработает значение «стандартно» - если это объект, имеющий форму, откроет форму этого объекта. Если установить в свойстве «Использование расшифровки» значение «Строка», то указанное действие будет происходить по щелчку7 на любой ячейке строки, расположенной от настраиваемой вправо. Если же мы хотим, чтобы было выполнено какое-то действие, это действие надо описать. Отвечает за это событие «Обработка расшифровки» элемента формы типа табличный документ. ?! I * » Основные: I ► Использование: ► Расположение: События \ Выбор Q [.Обработка расшиФроеки | При активизации области » Q | Начало перетаскивания Q i Проверка перетаскивания » Q I Окончание перетаскивания ▼ Q I Перетаскивание ч- Q \ При изменении содержимого области ▼ Q Существует это событие только для табличного документа, расположенного в форме. Чтобы описать его, необходимо щелкнуть мышью по полю табличного документа (выделится ячейка табличного документа), нажать Esc (выделится весь табличный документ), и создать процедуру- обработчик для события Обработка расшифровки. Если среди свойств отсутствуют события, видимо причина в кнопке Показывать только важные, которая ПОЗВОЛЯСТ СПрЯТВТЬ ЧаСТЬ СВОЙСТВ И которая должна быть «отжата». Расшифровка отчета «Оборотка» отчетом «Анализ счета» Оборотку мы разрабатывали с помощью конструктора выходных форм, и параметр расшифровки он уже прописал для ячейки второго ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@lc.ru. 294
Бухгалтерский учет на платформе в V8 . Сложная бухгалтерская отчетность столбца области «Счет». Нам осталось установить свойство Использование расшифровки в значение «Строка». Мы будет расшифровывать Оборотку с помощью отчета Анализ. Оборотка показывает пользователю обороты по счету в целом, а Анализ - в разрезе корреспондирующих счетов. Там же в отчете «Оборогка». в свойствах табличного поля назначаем обработчик события ОбработкаРасшифровки. Первый вариант Самый простой вариант, который можем сделать почти сразу и почти не прилагая усилий будет следующим. Опишем для табличного документа, расположенного в диалоге формы отчета «Оборотка» обработчик события «Обработка расшифровки». Процедура ПслеТабличногоДокументаОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; АнализОбъект = Отчеты.АнализСчета.Создать(); ТабДок = Новый ТабличныйДокумент; АнализОбъект.АнализСчета(ТабДок, КонПериода, НачПериода, Организация, Расшифровка); ТабДок.ОтображатьСетку = Ложь ; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); КонецПроцедуры Прокомментируем обработчик. С помощью параметра СтандартнаяОбработка отключаем открытие формы в данном случае счета. Получаем объект отчета АнализСчета. В модуле объекта расположена экспортная процедура, которая, получив в качестве параметра табличный документ, интервал дат, организацию (интервал дат и организацию мы можем взять из реквизитов диалога формы Оборотки) и счет (который мы получили на параметр Расшифровка) заполняет табличный документ и отдает его нам обратно. Нам осталось лишь навести красоту и показать его пользователю. Г отово. ООО ”1 С-Учебный центр N 3", телефон (495) 253-58-38. e-mail uc3@ lc.ru. 295
“ I С: Бухгалтерия 8". Конфигурирование и программирование от “А ’’ до “Я” Сформировать Перист с. 01.01 2007 □ по 31 12 2007 О Оборотка |Счет 10 41 50 52 60 62 71 01 91 01 Организация Торговый дом 100,00 35,00 750,00 2 000,00 [ Су|.и.|аНача^ Cyi.u.iaH.na ц« >u jaOoop^Cj i u iaO6epi|Cyi п.мКоне^|Сум1.1аКоне-| 35,00 750,00 1 900,00 Анализ счета КорСлет Остаток Итог Остаток- Дебет Кредит 2 000,00 2 000.00 юоо 100,00 100.00 Вариант типового решения Какие недостатки имел первый вариант? Перечислим: • Нельзя провести дальнейшую расшифровку (Анализ открывается без формы) • При изменении реквизитов формы отчета Оборотка после его формирования, расшифровка отрабатывает не верно (отчет расшифровки не соответствует цифрам основного отчета). Внесем изменения в механизм расшифровки, приблизив наше решение к решению типовой конфигурации. Мы будем хранить все показатели, значения которых используются для расшифровки (в нашем случае: интервал дат, счет, организация) в параметрах расшифровки табличного документа. При этом, ту их часть, которая не изменяется в момент вывода строк отчета мы «спрячем» в первой ячейки первой строки. Для этого опишем в первой ячейке первой строки параметр расшифровки и использование «Без обработки». В эту ячейку мы «спрячем» стр\ ктуру, содержащую интервал дат и организацию. :Ячейки » Основные. Текст R1C1 И спо льзованиеР асшифрог и Текст Расшифровка Без обработки РазмещениеТекста Авто Имя Защита ГиперСгылка Макет Заполнение П араметрРасшифровки ООО "1С-Учебный центр N 3". телефон (495) 253-58-38, e-mail uc3(s lc.ru. 296
Бухгалтерский учет ни платформе в V8: Сложная бухгалтерская отчетность Остальные параметры, изменяющиеся при выводе строк в отчет (в нашем случае Счет) мы положим в другую структуру и спрячем в расшифровку' строку34. В свойства ячейки строки отчета записываем параметр расшифровки по имени, например, «расшифровка». При заполнении отчета «Оборотка» создаем и заполняем две структуры (общую и для строки). Общую структуру можно создать и заполнить в любой момент после вывода заголовка таблицы: ОбщРасш = Новый Структура(); ОбщРасш.Вставить("НачПериода”, НачПериода); ОбщРасш.Вставить("КонПериода", КонПериода); ОбщРасш.Вставить("Организация", Организация); ЭлементыФормы.ПолеТабличногоДокумента.Область(1,1).Расшифровка = ОбщРасш; ________ ч_________________________________________________________ Структуру строки заполняем и выводим внутри цикла по строкам: Пока ВыборкаСчет.Следующий() Цикл Если ВыборкаСчет.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда Область = ОбластьСчетИерархия; Иначе Область = ОбластьСчет; КонецЕсли; Область.Параметры.Заполнить(ВыборкаСчет); Расшифровка = Новый Структура; Расшифровка.Вставить("Счет", ВыборкаСчет.Счет); Область.Параметры.Расшифровка = Расшифровка; ТабДок.Вывести(Область, ВыборкаСчет.Уровень()); КонецЦикла; Теперь некоторые изменения нужно внести в отчет АнализСчета. Нужно сделать процедуру, которая выполняется при нажатии на кнопку' Сформировать экспортной35. Процедура ДействияФормыАнализСчетаСформировать(Кнопка) Экспорт Чтобы было удобнее прописывать заполнение отчета «АнализСчета» данными расшифровки, и чтобы механизм был более универсальным (ведь АнализСчета будет служить не только для расшифровки 54 Структура нужна, потому как параметров может быть больше, чем счет, например, в типовом решении оборотка может показывать данные и с группировкой по аналитике. ' В типовом решении экспортным является не обработчик нажатия на кнопку, а еше одна процедура ОбновитьОтчет. которая из него вызывается. ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 297
''1С бухгалтерия 8" Конфигурирование и программирование от “А ” до "Я” Оборотки но и, вполне вероятно, других отчетов) расположим у него в форме экспортную процедуру Настроить() . которая получив на себя структуру со значениями реквизитов заполнит реквизиты отчета36. Процедура Настроить(Расшифровка) Экспорт НачПериода = Расшифровка.НачПериода; КонПериода - Расшифровка.КонПериода; Организация = Расшифровка.Организация; Счет = Расшифровка.Счет; КонецПроцедуры Осталось изменить отчет Оборотка, добавив туда обработку расшифровки. Процедура ПолеТабличногоДокументаОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОбщРасш = ЭлементыФормы.ПолеТабличногоДокумента.Область(1,1).Расшифровка; Для каждого Стр Из ОбщРасш Цикл Расшифровка.Вставить(Стр.Ключ, Стр.Значение); КонецЦикла; АнализОбъект = Отчеты.АнализСчета.Создать(); АнализФорма = АнализОбъект.ПолучитьФорму(); АнализФорма .Настроить(Расшифровка); АнализФорма.ДействияФормыАнализСчетаСформировать(Неопределен о) ; АнализФорма.Открыть(); КонецПроцедуры Прокомментируем процедуру. Получаем из общей расшифровки структуру с общими параметрами, а из параметра процедуры структуру, содержащую счет. Осталось соединить их вместе, отдать экспортной процедуре Настроить отчета Анализ, сформировать отчет и открыть форму пользователю. Готово. 36 В типовом решении значения хранятся в реквизитах отчета (а не формы) и процедхра также расположена в модуле объекта (а не формы). ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 298
Бухгалтерский учет ни платформе в V8: Сложная бухгалтерская отчетность Сформировать Периоде 01 01 2007 0 по 31 12 2007 ЕЗ Оборотка Организация Торговый дом |счет 10 50 52 60 62 71 । | Сформировать Счет 50 — х Организация Торговый дом ... х Периоде 01 01.2007 □ по: 31 122007 0 |СуцмаНачаг(Су»л1.1аНача>(суммаОбор|су|1маУбор1Сут»лаКоне,|« у»1лаКоне«| 35,00 35,00 750,00 750,00 2UOUOO Юи.Ои 1 900.и0 91 v1 Анализ счета КорСчет Остаток 62 Дебет Кредит 2 000,00 Итог Остаток г 000.00 1 ооо I00 О 100.00 ООО " 1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 299
“1С: Бухгалтерия 8". Конфигурирование и программирование от “А " до “Я" Основные механизмы типового решения В этом разделе курса мы рассмотрим применение методов и объектов языка при решении задачи автоматизации учета разработчиками типового решения «Бухгалтерия предприятия, ред. 1.5». Идеи, подходы, решения многих из гех механизмов, которые мы разрабатывали в процессе изучения программирования и конфигурирования были позаимствованы автором курса в типовом решении. Сделано это было намеренно, чтобы теперь, когда мы переходим к очень непростой теме программирования в типовом решении, подходы и решения его были понятны интуитивно. Начинаем с того, что включаем возможность изменения типовой конфигурации. Для этого открываем конфигурацию, и из меню Конфигурация выбираем пункт Поддержка / Настройка поддержки. Нажимаем на кнопку «Включить возможность изменения», соглашаемся с тем, что конфигурация автоматически обновляться не будет, теперь мы можем изменять конфигурацию. Универсальные механизмы документов Документы типового решения похожи друг на друга: одинаковые названия используемых реквизитов, обработчиков событий, механизмы заполнения. Рассмотрим основные из них, чтобы при создании собственных документов «не изобретать велосипед». Тренироваться будем на новом документе, который назовем «Поступление ценностей» (ну, надо же его как-то называть :). Заполнение реквизитов шапки Как уже было сказано, многие реквизиты повторяются во всех документах. Ну, как минимум, это организация. И многие из них было бы неплохо заполнить по умолчанию при вводе нового документа. Настройки по умолчанию хранятся, как и у нас, в регистре сведений «Настройки пользователей». Механизм ввода и хранения мы изучали в теме «Механизм характеристик». ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 300
Основные механизмы типового решения : Универсальные .механизмы документов Действия Группа Краткое имя Полное имя. Абдулов Юрий Владимирович Физическое лицо Настройки Контактная информация Доступ к объектам Настройка В- ^Основные чачек |д. л подстановки б до... Не отражать документы в налоговом Основная валюта взаиморасчетов Основная единица по классификатору Основная организация — ОсновнаяСтавкаНДС Основное подразделение Основной ответственный Основной склад Основной тип иен продажи Перейти Абдулов (директор] Абдулов Юрий Владимирович Значение МебельСтройКомппект завод ОК Записать Закрыть Абдулов Юрий Владимирович Главный склад Добавим в наш документ реквизиты «Организация», «Склад» и «Ответственный» (Пользователи). В модуле формы документа описываем обработчик события ПриОткрытии. Процедура ПриОткрытии() Если ЭтоНовый() Тогда ЗаполнитьШапкуДокумента(ЭтотОбъект, глТекущийПользователь); КойецЕсли; КонецПроцедуры Готово. Операции документов Многие докл7менты имеют в своем составе реквизит ВидОперации. а на верхней командной панели в пользовательском режиме меню для выбора вида операции. В дальнейшем вид операции повлияет на внешний вид документа, подстановку счетов и его проведение. Добавим новое перечисление Основные ► Данные Формы Макеты I Подсистемы I I t »• Действия - со значениями «Поступление» и «Возврат». В документе «Поступление ценностей» сделаем новый реквизит «ВидОперации» типа ссылка на новое перечисление. В диалоге формы документа на верхней командной панели добавим кнопку со свойствами: ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 301
“1С:Бухгалтерия 8”. Конфигурирование и программирование от "А " до "Я Имя Тип И 1 ' Основные: П одмемюВ идаО перации Подменю Подменю < Произвольное подменю) * Порядок, кнопок Не упорядочивать •’ Представление Текст Операция j Подсказка Выбор сида операции Пояснение В любой момент времени можно измен, | Картинка х Отображение Надпись и картинка L—----------„—;----------------------------— В модуле формы появляются процедуры Процедура ПриОткрытии() УстановитьПодменюВыбораВидаОперации («ЭлементыФормы.ДействияФормы.Кн опки.ПодменюВидаОперации,ВидОперации.Метаданные().ЗначенияПеречисл ения,Новый Действие("ДействияФормыДействиеУстановитьОперацию")); УстановитьЗаголовокФормыДокумента(Строка(ВидОперации), ЭтотОбъект, ЭтаФорма); КонецПроцедуры Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Если ЭтоНовый() Тогда ВыбратьВидОперации(ЭтотОбъект, Отказ); КонецЕсли; КонецПроцедуры Процедура ДействияФормыДействиеУстановитьОперацию(Кнопка) Если Кнопка <> Неопределено Тогда ВидОперации = Перечисления.ВидыОперацийПоступлениеЦенностей[Кнопка.Имя]; КонецЕсли; УстановитьЗаголовокФормыДокумента(Строка(ВидОперации), ЭтотОбъект, ЭтаФорма); //Если ВидОперации = Перечисления.ВидыОперацийПоступлениеЦенностей.Исступление Тогда //Иначе //КонецЕсли; //УстановитьВидимость(); КонецПроцедуры // ДействияФормыДействиеУстановитьОперацию() Процедура ПослеЗаписи () УстановитьЗаголовокФормыДокумента(Строка(ВидОперации), ЭтотОбъект, ЭтаФорма); КонецПроцедуры Прокомментируем процедуры модуля. Перед открытием формы нового документа пользователю предлагают выбрать вид операции (чтобы он не забыл после открытия). При открытии процедура общего модуля создает меню для кнопки командной панели на основании значений перечисления и привязывает к ним обработчик события. Обработчик события нажатия на кнопку меню записывает значение перечисления в реквизит документа, и выполняем операции установки видимости, доступности и прочее (для каждого документа свои). ООО "1С-Учебный центр N 3 . телефон (495) 253-58 38. e-mail uc3@lc ru 302
Основные механизмы типового решения : Универсальные механизмы документов После записи (если была выполнена запись документа без закрытия формы) изменяется заголовок формы, где будет отображаться вид операции. Схем} работы процедур и функций можно изобразить так Автоподстановка счетов учета Большинство доку ментов предоставляют возможность выбора счета в диалоге формы. Однако уже при вводе документа и заполнению основных его полей (организация, контрагент, договор, склад, номенклатура) программа сама заполняет счета учета значениями по умолчанию. Механизм основан на том, что многие счета имеют унифицированную аналитик} , это: • Почти все счета учета ГМ1 ( • Почти все счета учета расчетов с контрагентами • Счета учета 11ДС входящего • Счета учета основных средств и их амортизации • Счета учета объектов строительства ООО " lC-Учебный центр N 3". телефон (495) 253-58-38. email uc3@ lc.ru. 303
“ 1С:Бухга1терия 8' Конфигурирование и программирование от “А ” до “Я” Наличие поля для выбора счета (субсчета) в диалоге формы делает конфигурацию более гибкой (пользователь может сам добавлять новые счета и субсчета) и более наглядно (пользователь видит, какой счет пойдет в проводку). Однако заполнять все эта счета в каждом документе представляется сложным. Поэтому реализован механизм счетов по умолчанию. Счета хранятся для сочетаний свойств (например, счета учета номенклатуры для сочетания номенклатура, склад, организация и вид вклада). Хранить некое значение (или несколько значений) для сочетания измерений удобнее всего в регистре сведений. Так и реализовано: хранятся эти счета в регистрах сведений, где измерениями являются перечисленные объекты, а ресурсами сами счета учета. Чтобы не заставлять пользователя вводить счета на каждый элемент справочника номенклатуры, регистр сведений позволяет хранить соответствия не только для элементов, но и для групп справочника (запрос, извлекающий данные из регистра это обрабатывает). Поэтому, наиболее вероятной и удобной будет такая организация справочника, чтобы на каждый счет (субсчет) учега в нем? была отдельная группа элементов. Для хранения счета учета взаиморасчетов с контрагентами и счетов учета материальных ценностей используются регистры сведений СчетаУчетаРасчетовСКонтрагентами и СчетаУчетаНоменклатуры соответственно. Каждая строка, таким образом, хранит настройку для организации (если не выбрана - для всех), для номенклатуры (или группы из справочника номенклатуры, если нс выбрана - для всех), для склада и типа склада (если выбраны) какие счета использовать в документах. Изначально регистр может содержать одну строку с пятыми измерениями и заполненными ресурсами. Эта строка является настройкой по умолчанию для всех документов. Далее пользователь может детализировать и уточнить настройку. Документы Рассмотрим работу документов с регистром сведений СчетаУчетаНоменклатуры. При выборе пользователем номенклатуры в строке табличного поля вызывается обработчик события «При изменении» ТоварыНоменклатураПриИзменении. Процедура, получая текущие данные строки на переменную СтрокаТЧ, взывает другую процедуру ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл, расположенную в модуле объекта и имеющую параметры: Данные строки, имя табличной части, отражать в БУ, отражать в НУ. Эта процедура вызывает экспортную функцию общего модуля БухгалтерскийУчет ПолучитьСчетаУчетаНоменклатуры. Функция возвращает структуру, содержащую счета учета. Как работает эта ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗ(° lc.ru. 304
Основные механизмы типового решения : Универсальные механизмы док\ ментов функция? Получив на себя в качестве аргументов Организацию. Номенклатуру и Склад она выполняет запрос к регистру сведений СчетаУчетаНоменклатуры. Точнее, несколько запросов. Склад учитывается процедурой, только в том случае, если он передан в нее (есть документы, где нет склада). Обязательными параметрами запросов является организация и номенклатура. Все запросы объединены в один и отличаются между собой условиями (предложение ГДЕ), в котором в самых первых из них устанавливается отбор по значениям организации, номенклатуры, склада... а в самых последних - отбор по пустым значениям этих же полей таблицы. Можно интерпретировать программный код так: Организация Номенклатура Склад Вид склада Приоритет Указана Указана И т.д. И т.д. 1 Указана Группа 2 Указана Пустая 3 Пустая Указана 4 Пустая Г руппа 5 Пустая Пустая 6 Изначально существует строка с пустой организацией и пустой номенклатурой имеющая наименьший для выбора в документ приоритет (максимальное число, в примере - 6). Поэтому во всех документах, при выборе любого элемента справочника номенклатура и любой организации будут подставляться счета учета, указанные в этом правиле. Как уже было сказано, все запросы объединяются в один, выполняются и возвращают структуру, содержащую счета учета. Зачем их так много и зачем нужен «Приоритет»? Анализируется лишь первая строку результата запроса, содержащую приоритет с наименьшим значением. Результат запроса запоминается в структуру и возвращается в документ: Структура «Счета учета» Ключ Значение СчетУ четаБУ 41.01 СчетУчетаНДС 19.03 И т.д. Получив на себя эту структуру и метаданные документы, процедура ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл вызывает универсальную процедуру ЗаполнитьСчетаБУ, которая заполняет счета учета номенклатуры из переданной структуры СчетаУчета. В резу льтате пользователь может завести более приоритетные правила подбора счетов (самое приоритетное будет иметь Приоритет = 1, и будет содержать ссылку на конкретный элемент номенклатуры и организацию). Или не заводить новые правила вообще, если вся указанная номенклатура учитывается на одном счете или если пользователю не лень каждый раз, когда в документе выбирается ООО "lC-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 305
" 1С бухгалтерия 8". Конфигурирование и программирование от “А " до "Я" элемент номенклатуры, учитываемый на другом счете, изменять счет по умолчанию. Разумным можно считать сгруппировать справочник по видам ТМЦ (материалы, товары, внеоборотные активы, продукция), и создать правила на группы номенклатуры, указав для каждой группы свои счета учета (для материалов субсчет 10 счета, для товаров 41, и т.д.). Продолжая, можно сгруппировать материалы внутри группы «Материалы» по видам, соответствующим субсчетам, и создать правила для них. Тогда при выборе элемента из группы (например, «Топливо» и правило для этой группы со счетом 10.03). Если какой либо элемент группы «выбивается» из правила (все материалы учитываются на 10.01, а он на 10.03), можно создать свое правило для этого элемента, которое будет более приоритетным. Схема вызова процедур и функций Как подключить в новом документе В документе «Поступление ценностей» появляется табличная часть «Ценности» с реквизитами Номенклатура и СчетУчетаБУ. Для поля ввода Номенклатура табличной части создаем обработчик при изменении: Процедура ЦенностиНоменклатураПриИзменении(Элемент) СтрскаТабличнойЧасти = ЭлементыФормы.Ценности.ТекущиеДаиные; ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрскаТабличнойЧасти, "Ценности", Истина, Ложь) КонецПроцедуры В модуле объекта описываем процедуры: Процедура ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТЧ, ИмяТабЧасти, ЗаполнятьБУ, ЗапслнятьНУ) Экспорт ООО ”1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 306
Основные механизмы типового решения : Универсальные механизмы оокх ментов СчетаУчета = ПолучитьСчетаУчетаНоменклатуры(Организация, СтрокаТЧ.Номенклатура, Склад); МетаданныеДокумента = ЭтотОбъект.Метаданные(); ЗаполнитьСчетаБУ(СтрокаТЧ, ИмяТабЧасти, СчетаУчета, ЗаполнятьБУ, МетаданныеДокумента); КонецПроцедуры Процедура ЗаполнитьСчетаБУ(СтрокаТЧ, ИмяТабЧасти, СчетаУчета, ЗаполнятьБУ, МетаданныеДокумента) Если ЗаполнятьБУ = Истина Тогда Если ИмяТабЧасти = "Ценности" Тогда СтрокаТЧ.СчетУчетаБУ = СчетаУчета.СчетУчетаБУ; КонецЕсли; ИначеЕсли ЗаполнятьБУ = Ложь Тогда СтрокаТЧ.СчетУчетаБУ = ПланыСчетов.Хозрасчетный.ПустаяСсылка(); КонецЕсли; КонецПроцедуры Механизм готов. В процедуре ЗаполнитьСчетаУчетаБУ можно среди прочего использовать условия на операцию документа (см. «Операции документов»). Печать Механизм печати унифицирован для всех документов. На нижней командной панели в пользовательском режиме можно увидеть две кнопки - Печать (с выпадающим меню печатных форм) и кнопка быстрой печати (с именем печатной формы по умолчанию). В режиме конфигуратора этих кнопок на панели нет, они добавляются программно. Можно изобразить порядок вызова процедур и функций в виде схемы: ООО "1С-Учебный центр N 3”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 307
“1С бухгалтерия 8". Конфигурирование и программирование от “А " до "Я" ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 308
Основные механизмы типового решения Универсальные механизмы документов Настройка нового документа Чтобы добавить механизм печати в новый документ необходимо в форме документа добавить следующий программный код Перем мДеревоМакетсв; Перем мПодменюПечати; Перем мПечатьПсУмолчанию; Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) УстановитьКнопкиПечати(); КонецПроцедуры Процедура УстановитьКнопкиПечати() мДеревоМакетов = ПолучитьДеревоМакетовПечати(Ссылка, ПолучитьСтруктуруПечатныхФорм(), Новый Действие("ОсновныеДействияФормыПечать"), Новый Действие("ОсновныеДействияФормыУстановитьПечатьПоУмолчанию")); УстановитьПодменюПечати (мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетсв.Строки.Количество() > 0); УстановитьПечатьПоУмолчанию(мПечатьПсУмолчанию, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов, Метаданные().Имя,Новый Действие("ОсновныеДействияФормыПечатьПоУмолчанию")); Если Не мПодменюПечати = Неопределено Тогда СформироватьПодменю(мДеревоМакетсв, мПодменюПечати,Истина,Истина); КонецЕсли; КонецПроцедуры Процедура ОсновныеДействияФормыПечатьПоУмолчанию(Кнопка) ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст); КонецПроцедуры Процедура ОсновныеДействияФормыПечать(Кнопка) ПечатьПоДополнительнойКнопке(мДеревоМакетсв, ЭтотОбъект, ЭтаФорма, Кнопка.Текст); КонецПроцедуры Процедура ОсновныеДействияФормыУстановитьПечатьПоУмолчанию(Кнопка) Если НазначитьКнопкуПечатиПоУмолчанию мДеревоМакетсв, Метаданные().Имя) Тогда УстановитьКнопкиПечати(); КонецЕсли; КонецПроцедуры В модуле объекта документа добавить процедуры и функции Функция ПолучитьСтруктуруПечатныхФорм() Экспорт СтруктураЛечатныхФорм = Новый Структура; СтруктураПечатныхФорм.Вставить("Макет1", "Первая форма"); СтруктураЛечатныхФорм.Вставить("Макет2", "Вторая форма”), Возврат СтруктураЛечатныхФорм; КонецФункции Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Непсср-едственнаяПечать = Ложь) Экспорт Если ИмяМакета = "Макет1” тогда ТабДскумент = ПечатьПервогоВарианта(); ИначеЕсли ИмяМакета = "Макет2" тогда ООО "lC-Учебный центр N 3’. телефон (495) 253-58-38. е-mail uc3(9lc.ru. 309
“ 1С: Бухгалтерия 8". Конфигурирование и программирование от "А “ до “Я” ТабДокумент = ПечатьВторогоВарианта(); КонецЕсли; НапечататьДокумент(ТабДокумент, КоличестЕоЭкземпляров, НаПринтер, СформироватьЗаголовокДокумента(ЭтотОбъект, Строка(ВидОперации)), НепосредственнаяПечать); КонецПроцедуры Функция ПечатьПервогоВарианта() Таб = Новый ТабличныйДокумент; // Возврат Таб; КонецФункции Функция ПечатьВторогоВарианта() Таб = Новый ТабличныйДокумент; // Возврат Таб; КонецФункции Функции ПечатьПервогоВарианта и ПечатьВторогоВарианта создают, заполняют и возвращают табличный документ печатной формы. Готово. Номер: 1 Лата. 02.03 2007 22 05 54 0 Организация. МебельСтройКомплект завею ... х Склаа Главный склаа ... х Ответствен. Абдулов Юрий Владимирович ... х N_______Номенклатура Счет учета БУ ЦЦ Диван для отдыха 43 Первая Форма Печать - ОК Записать Закрыть Первая Форма Вторая Форма По умолчанию... Механизм внешних печатных форм Механизм внешних печатных форм позволяет, не изменяя типового решения, добавлять новые печатные формы к существующим документам, заменять существующие формы собственными и даже накладывать условия на выбор печатной формы для того или иного документа. Условия разработки внешней печатной формы: • эго должна быть внешняя обработка, • содержащая в своем составе реквизит обработки по имени СсылкаНаОбъект (тип: ДокументСсылка.) ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru. 310
Основные механизмы типового решения J ннегре ильные механизмы документов • в модуле объекта которой должна располагаться экспортная функция по имени Печать, возвращающая заполненный табличный документ. Создадим новую печатную форму и подключим ее к документу «Поступление ценностей». Создадим внешнюю обработку, в которой размещаем один реквизит (реквизит обработки, а не формы!) с именем Ссылка! 1аОбъект (тип: ДокументСсылка.1 !осгуплениеЦенностей). Создаем новый макет (имя: Макет) следующего содержания: В макете будет одна область Шапка, содержащая ячейки с параметрами 11омер, Дата, Контрагент. Функция Печать() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Поступление.Номер, | Поступление.Дата, Поступление.Организация |ИЗ Документ.ПоступлениеЦенностей КАК Поступление (где Поступление.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); РезультатЗапросаПоШапке = Запрос.Выполнить().Выбрать(); РезультатЗапросаПоШапке.Следующий(); ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.Заполнить(РезультатЗапросаПоШапке); ТабДок.Вывести(ОбластьШапка); Возврат ТабДок КонецФункпии Функция возвращает заполненный табличный документ. Осталось подключить внешнюю печатную форму в пользовательском режиме (Сервис / Внешние печатные формы) и можно использовать. ООО ' lC-Учебный центр N 3 телефон (495) 253-58-38. e-mail uc3@lc.ru. 311
'ЧС’Бухгаиперия 8”. Конфигурирование и программирование от "А" до "Я" Наименование: Печать поступления ценностей Код: 4 Вид Комментарий Исходный Файл ПечатьПоступленияЦенностей epf размер:4 744' изменен:05.03.200713:55:20; сохранен в ИБ:05.03.200713:55:48 Принадлежность печатной Формы Пользователи г о а»- № 11ред<~гавление объекта В Документ "Поступление ценностей" Отбор Файл печ.. Заменяв. ОК Записать Закрыть Готово. 02.03 2007 22 05 54 МебельСтройКомплект завод : Номер .Дата Организация Вынесение встроенной печатной формы во внешнюю Механизм внешних печатных форм хорошо в первую очередь тем, что позволяет не изменять типовое решение и, как результат, не снимать его с поддержки. Очень часто типовое решение подходит небольшому предприятию вообще без внесения каких либо изменений - на то оно и типовое. Но вот к печатным формам могут «придраться» и очень часто придирки заслуженные: можно было бы заполнить ее хранимыми в базе данными намного более полно. Чтобы решить эту задачу мы можем «вынести» встроенную печатную форму в внешнюю обработку и там уже донастроить. Потренируемся на форме ОС-14 «Акт о поступлении оборудования». Если рассматривать типовой механизм печати документа, то выясниться, что все встроенные печатные формы для заполнения используют: • Макет (дою мента и или общий) • Функцию в модуле объекта (имя которой можно узнать в процедуре Печать, расположенной там же в модуле). Макет «ОС 14» расположен в документе. Функция ПечатьОС14 расположена в модуле объекта. Создаем новую обработку. В этой обработке создаем реквизит «СсылкаНаОбъект» типа «ДокументСсылка.ПоступленисТоваровУслуг». Копируем в нее макет «ОС 14» из документа. Из модуля объекта документа копируем в модуль обработ ки функцию ПечагьОС14, которую переименовываем в Печать и делаем ее экспортной. Дописываем в функцию в самом ее начале объявление двух переменных, которые используются по ходу ее выполнения: ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail исЗ© lc.ru. 312
Основные механизмы типового решения : Универе тьные механизмы документов Функция Печать() Эксперт Ссылка - СсылкаНаОбъект; мВалюта РегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); Осталось подключить нашу форму вместо типовой и все готово. Наименование О С (14 Код 4 Вид Комментарий Исходный файл ПечатьОС! 4 epf f 1 размер:11 256. изменен 09 06.2007 11 32:16; сохранен б ИБ:09 06.200711.32:24 ' ’ Принадлежность печатной Формы Пользователи t , N- Представление объекта 0... Файл... Заменяемая печатная Форма Щ Документ "Поступление товаров и услуг" ОС-14 (Акт о приеме оборудования) ОК Записать Закрыть Отладка внешних печатных форм Устанавливать точку основа в файле внешней печатной формы, как Вы догадывается - бесполезно. Исполняться будет совсем не тот файл, который был написан. А тот, который программа создаст на диске, сохранив туда из справочника двоичные данные файла образца. Вывод: точку останова надо ставить или в функции НапечататьВнешнююФорму общего модуля РаботаСДиалогами. Или создать формх для обработки, в которой разместить поле ввода для реквизита «Ссылка на объект», и написать обработчик события нажатия на кнопку Процедура КнспкаВыполнитьНажатие(Кнопка) ТабДскумент = Печать(); НапечататьДокумент(ТабДскумент); КонецПроцедуры ООО ” IC-Учебный центр N 3 . телефон (495) 253 58 -38. е mail uc3@ lc.ru. 313
“ 1СБухгалтерия 8”. Конфигурирование и программирование от “А ” до "Я" - - - .... 29. Практикум Разработать печатную форму для документа «Требование накладная», которая позволит пользователю проанализировать какое количество, на какую сумму, и по какой цене было списано какого материала. Учесть возможность использования партионного учета (списание одного наименования номенклатуры из нескольких партий по разным ценам, которые нельзя усреднять). В случае, если партионный учет в конфигурации (план счетов) и для выбранной организаиии (учетная политика бухгалтерского учета) ведется необходимо к колонкам отчета МПЗ, Количество, Цена, Сумма добавить колонку Партия и показывать все перечисленные данные для каждой партии. Документ Треооьанне навледнач МСК00000001 от 05.01.2005 9:00:00 Материал Партия Цена Количество Суш та Заготовка для полозьев Поступление товаров и услуг МСК00001 от 04.01.2005 12,61 31,00 390,92 Заготовка для полозьев Поступление товаров и услугМСК00001 от 29.12.2004 12,40 25,00 310,00 Трубка д4 Поступление товаров и услуг МСК00001 от 04.01.2005 0,99 48,00 47,59 Трубка д4 Поступление товаров и услугМСК00001 от 29.12.2004 0,98 50,00 48,75 Итого 797,26 ООО "1С-Учебный центр N 3”, телефон (495) 253-58-38. е-mail uc3C°' lc.ru. 314
Основные механизмы типового решения : Универсальные механизмы документов Автозаполнение табличных частей Аналогично механизму внешних печатных форм реализован механизм автоматического заполнения табличных частей. Обработки могут подключаться в пользовательском режиме в справочник внешних обработок заполнения табличных частей и вызываться из соответствующего документа. Схематично механизм похож на печать Чтобы подключить механизм к новому документу необходимо в форме документа добавить следующие переменные процедуры и функции Перем мКнспкиЗаполненияТЧ; Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) УстановитьКнопкиПодменюЗаполненияТЧ(); КонецПроцедуры ООО " 1С-Учебный центр N 3’. телефон (495) 253-58 38. е mail uc3@ lc.ru. 315
“ 1СБухгалтерия 8”. Конфигурирование и программирование от ".-1 ” до 'Я Процедура УстановитьКнопкиПодменюЗаполненияТЧ(); СоответствиеТЧ = Новый Соответствие; СоответствиеТЧ.Вставить(ЭлементыФормы.Ценности,ЭлементыФормы.Коман днаяПанель!); мКнопкиЗаполненияТЧ = СформироватьПодменюЗаполненияТЧ(Ссылка, СоответствиеТЧ, Новый Действие("НажатиеНаДополнительнуюКнопкуЗаполненияТЧ")); КонецПроцедуры Процедура НажатиеНаДополнительнуюКнопкуЗаполненияТЧ(Кнопка) ОбработатьНажатиеНаДополнительнуюКнопкуЗаполненияТЧ(мКнопкиЗаполне нияТЧ.Строки.Найти(Кнопка.Имя,"Имя",Истина),ЭтотОбъект); КонецПроцедуры Далее разработать внешнею обработку, которая будет в модуле объекта содержать процедуру с заданным именем и входящими параметрами: Процедура Инициализировать(Документ, ИмяТабЧасти, ТабличноеПоле) Экспорт ТабЧасть = Документ[ИмяТабЧасти]; ТабЧасть.Очистить(); Пока Цикл СтрокаТЧ = ТабЧасть .Добавить () ,- КонецЦикла; КонецПроцедуры Подключить обработку в справочник в пользовательском режиме Действия • Перейти» ? s Наименование По остаткам на склааах Кед 3 Виа « Комментарий • Исходный Файл: Заполнить! оварыПоОстаткамНаСклааах ept t !_i размер4Т10.изменен.1б09.20051935:03;сохраненвИБ16.09.2005 1 9 35:23 ' ” • 1 Принадлежность обработки по заполнению табличных частей Пользователи ! N- Представление объекта Табличная часть Щ Документ "Поступление ценностей" Ценности i ОК Записать Закрыть Г отово. ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3@ lc.ru 316
Основные механизмы типового решения: Универсальные механизмы документов Номер 1 i | Дата: 0203 2007 2205 54 S I | Организация МебельСтройКомплект завод — х । Склад Гласный склад ... х | Ответствен. Абдулов Юрий Владимирович ... х Заполнить - N______Номенклатура Ш Диван для отдыха По остаткам на складах 43 Первая Форма Печать^ ОК Записать Закрыть Задача: заполнить перемещение товаров по остаткам Задача на адаптацию типового решения: у нас много МОЛов. На каждом МОЛе числятся и товары, и материалы и ... все, что есть в справочнике Номенклатура и учитывается на счетах, где есть аналитика Номенклатура и Склад. МОЛы уходят в отпуск (надолго), увольняются и при этом должны передать все свои материальные ценности преемнику. МОЛ - это склад. Создаем новую обработку. В ней не будет реквизитов и не нужна форма. Нужен только ее модуль, где будет экспортная процедура. Процедура Инициализировать(Документ, ИмяТабЧасти, ТабличноеПоле) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто! КАК Номенклатура, ХозрасчетныйОстатки.КоличествоОстаток КАК Количество, | ХозрасчетныйОстатки.Счет КАК СчетУчетаБУ |ИЗ |РегистрБухгалтерии.Хозрасчетный.Остатки( |&Дата, |&ВидыСубконтс, (Организация = ^Организация |И Субконто2 В ИЕРАРХИИ (&Склад)) КАК ХозрасчетныйОстатки"; //1 Запрос .Установи-! ьПараметр ("Дата ", Документ .Дата) ; //2 Запрос.УстановитьПараметр("Организация", Документ.Организация); Запрос.УстановитьПараметр("Склад", Документ.СкладОтправитель); ПВХ = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные; мВидыСубконто.Добавить(ПВХ.Номенклатура); мВидыСубконто.Добавить(ПВХ.Склады); Запрос.УстановитьПараметр("ВидыСубконто", мВидыСубконто); Остатки - Запрос.Выполнить().Выбрать{); ТабЧасть = Документ[ИмяТабЧасти]; //3 ТабЧасть.Очистить(); Пока Остатки.Следующий() Цикл //4 СтрокаТЧ = ТабЧасть.Добавить(); //5 //6 СтрокаТЧ.Номенклатура = Остатки.Номенклатура; ООО "JC-Учебный центр N 3 ”. телефон (495) 253-58-38. e-mail uc3@ lc.ru. 317
“ 1С:Бухгалтерия 8". Конфигурирование и программирование от “А ” до "Я" СтрокаТЧ.Количество = Остатки.Количество; СтрокаТЧ.СчетУчетаБУ = Остатки.СчетУчетаБУ; //7 СтрокаТЧ.НовыйСчетУчетаБУ = Остатки.СчетУчетаБУ ; //8 НовСтр.СчетУчетаБУ = ПреобразоватьСчетаБУвСчетНУ(Новый Структура("СчетБУ", НовСтр.СчетУчетаБУ), , , Документ.Дата); СтрокаТЧ.НовыйСчетУчетаБУ = СтрокаТЧ.СчетУчетаНУ; КонецЦикла; КонецПроцедуры Комментарии к процедуре: //! запрос к остаткам регистра бухгалтерии. Получаем поля Субконто! (номенклатура - почему именно первое, а не второе или третье - будет понятно ниже), остаток в количественном выражении и счет, на котором он. остаток, есть. //2 запрос выполняем на дату документа, с отбором по организации, видам субконто (где, внимание, первый вид в массиве - номенклатура, а второй - склад), складу (второй вид субконто в массиве, поэтому Субконто2) ИЗ Табличная часть документа (в нашем случае будут товары, это укажем в пользовательском режиме) //4 бежим в цикле по таблице остатков и //5 заполняем таблицу документа //6 номенклатура, счет учета, количество - по данным запроса //7 новый счет учета тот же (пользователь только склад получатель в диалоге задаст новый и все) //8 процедура общего модуля ОбработкаТабличныхЧастей получит налоговые счета, соответствующие выбранным бухгалтерским. Готово. Осталось в пользовательском режиме (Сервис / Внешние обработки заполнения табличных частей). Действия N- Представление объекта Щ Док и юнг 'Т ере еш ение —z аро Перейти Закрыть Т абличная часть Т овары ОК Записать Наименование Заполнить по остаткам МОЛа Комментарий Исходный Файл ЗаполнитьПоОстаткамМОЛа ept размер. 4130. изменен 26 03 200717.01.42. сохранен в ИБ 26 03.2007 17:04.44 Принадлежность обработки по заполнению табличных частей Пользователи Создаем новый элемент. Выбираем нашу обработку. Указываем документ («Перемещение товаров») и имя табличной части (товары). ООО "1С-Учебный центр N 3". телефон (495) 253-58-38. e-mail uc3 (s' lc.ru. 318
Основные механизмы типового решения : .V ниверсспьные механизмы документов L ........ ................... ................ 30.