Автоматизация ввода документа
Мы продолжим работать с документом, чтобы расширить его функции. В том виде, в котором документ существует сейчас, при его вводе в программу все колонки табличной части будут вводиться вручную. Так как оформление прихода материалов чаще всего выполняется на основании документов поставщика (накладной, счета-фактуры), очевидно, что пользователь, вводящий документ, должен будет внимательно и аккуратно перенести данные из документа поставщика. Однако даже такая простая работа чревата ошибками, особенно, если приходный документ содержит большое количество строк. Поиск подобных ошибок может занять очень много времени.
Очевидно; чтосумма и НДС поступившего материала при вводе нашего документа могут быть рассчитаны автоматически. Вычисляя эти показатели, мы несколько упростим и ускорим ввод документа и уменьшим количество ошибок.
Поэтому следующим усовершенствованием, которое мы внесем в разработанный документ, будет автоматизация заполнения реквизитов «Сумма» и «НДС». В табличной части документа опять откроем форму документа так, как мы это делали при редактировании диалога ввода документа. Теперь можно заполнить формулу. Мы впервые в процессе изложения приемов конфигурирования подошли к необходимости написания команд на встроенном языке«1С: Предприятия», до этого обходясь исключительно визуальными средствами.
Встроенный язык содержит очень большое количество возможностей, что легко понять, посмотрев на объем его описания в комплекте поставки «1С:Бухгалтерия». Однако встроенный язык устроен так, что вам совершенно не обязательно изучать сразу все его возможности, лучше всего осваивать язык постепенно. Для серьезной работы полезно ознакомиться с вводными главами описания встроенного языка, чтобы получить общее представление о языке, однако в данном изложении мы будем осваивать возможности языка «с нуля» на примерах, затрагивая только те его свойства, которые нам нужны для реализации конкретной задачи.
Итак, нам нужно написать формулу заполнения реквизита «Сумма». Для этого используется один из основных операторов любого языка - оператор присваивания. В нашем случае оператор присваивания будет выглядеть так:«Сумма=Количество*Цена».Для каждого поля ввода диалога формы -можно задать формулу, которая будет выполняться после того, как данное поле будет заполнено. Следовательно, мы должны ввести алгоритм вычисления реквизита «Сумма» в формулу реквизита«Цена», чтобы после ввода цены выполнилась формула расчета суммы. Для этого в режиме «Диалог» надо активизировать табличную часть, затем двойным щелчком в заголовок колонки«Цена» активизировать свойства этой колонки и в закладке«Дополнительно» ввести формулы расчета последовательно рассчитываемых граф. Слева -идентификатор реквизита, значение которого мы рассчитываем; справа - выражение, составленное из двух уже введенных нами реквизитов документа и знака умножения «*»
При написании формулы мы используем идентификаторы реквизитов документа и, очевидно, они не должны повторяться среди реквизитов документа, иначе система не смогла бы однозначно определить значение какого реквизита имеется в виду в конкретном случае.
Действие этой формулы будет заключаться в том, что в реквизит «Сумма» будет занесен результат перемножения реквизитов«Количество» и «Цена».0днако это еще не все. В поле «Формула» можно указать не одну, а несколько формул, разделяя их знаком «;». Эти формулы будут вычисляться последовательно слева направо. Поэтому- после формулы, вычисляющей реквизит «Сумма», мы можем указать формулудлявычисления реквизита«НДС». Причем в этой формуле мыужеможем использовать значение реквизита «Сумма», так как к этому моменту оно уже будет вычислено.
Итак, поставьте знак «;» и запишите такую формулу:
НДС=Сумма/120*20. В поле «Формула» в итоге должна получиться строка:
Сумма=Количество*Цена;НДС=Сумма/120*20.После ввода формулы следует нажать кнопку «ОК" в палитре инструментов для подтверждения ее ввода (рис.).
Рекомендации. Далее имеет смысл проверить работу введенных нами формул. Для этого нужно запустить«1С:Предприятие», ввести новый документ«Поступление материалов» (или открыть уже введенный) и убедиться, что программа сама будет рассчитывать значение реквизитов «Сумма» и«НДС» по введенным нами формулам: ввести в документ новую строку, указать количество поступившего материала и после ввода цены удостовериться, что колонки «Сумма» и «НДС» заполнились автоматически.
Очевидно, вы обратили внимание, что, несмотря на то, что значения в колонках «Сумма» и «НДС» многострочной части документа вычисляются автоматически, все равно приходится нажимать клавишу ««Enter»», чтобы подтвердить ввод значений в этих колонках и затем начать ввод новой строки, например, нажав клавишу «Ins».
Рис. Окно свойств поля ввода с формулой автоматического расчета.
Как уже говорилось выше, документ«Поступление материалов» будет оформляться, вероятнее всего, на основе документа поставщика. Поэтому автоматическое вычисление значений в колонках «Сумма» и «НДС» (помимо того, что это существенно ускоряет ввод) будет применяться, скорее всего, для контроля правильности составления документа поставщиком. Но, как показывает практика, все-таки ошибки в документах встречаются значительно реже, чем верные данные, и редактирование значений в колонках «Сумма» и«НДС»понадобится лишь в тех редких случаях, когда поставщик по какой-либо причине укажет в своем документе неверные суммы. Вот здесь и придется исправить те значения, которые программа вычислила сама.
Возникает вопрос: «А нельзя ли сделать так, чтобы после ввода количества и цены сразу начать вводить новую строку?» Для этого вызовите палитру свойств для колонки «Сумма». Перейдите к закладке«Дополнительные». На этой закладке существует флажок«Пропускать при вводе». Включите его, щелкнув по нему мышью, и нажмите кнопку «ОК» палитры инструментов, чтобы подтвердить сделанные изменения.
Теперь ввод новой строки документа будет выполняться следующим образом: после ввода значения в колонку«Цена» и нажатия клавиши ««Enter»» курсор сразу перейдет в колонку «НДС», пропустив колонку «Сумма». Ячейка в колонке «НДС» будет переключена в режим редактирования, в ней появится мигающий курсор, и можно будет начать ввод числа.
Подчеркиваем, что условие«Пропускать при вводе» выполняется только при вводе новой строки. Если редактируется существующая строка, то все работает обычным образом: при нажатии ««Enter»» ячейка переключается в режим редактирования, повторное нажатие ««Enter»» выключит режим редактирования, но курсор останется на месте, никакого перехода не будет. Однако мы решили, что удобно будет при вводе документа также пропускать и колонку «НДС». Поэтому и для данного реквизита необходимо включить флажок«Пропускать привводе». Проделайте это самостоятельно.
Теперь осталось организовать так, чтобы ввод новой строки в документ начинался после ввода цены в текущую строку и нажатия ««Enter»». Эта возможность устанавливается в свойствах табличной части документа. Откройте палитру свойств табличной части, дважды щелкнув мышью любое ее место, кроме заголовков колонок, и включите флажок«Автоматический ввод новой строки» и «ОК».
Рекомендации. Проверьте, как работает программа, измененная нами в режиме«1С: Предприятие». После запуска программы введите новый документ«Поступление материалов»(в отредактированном пользовательском интерфейсе это удобно сделать, выбрав пункт«Поступление материалов» из меню «Документы» главного меню«1С Предприятия») или откройте для редактирования один из существующих документов. После внесенных нами изменений ввод многострочной части документа будет происходить следующим образом:
• колонки «№..»,«Материал», «Количество» и «Цена» будут заполняться, как и раньше;
• после заполнения колонки«Цена» и нажатия клавиши ««Enter»» в колонки «Сумма» и «НДС» будут внесены вычисленные значения;
• сразу после этого в многострочную часть документа будет введена новая строка, курсор будет помещен вячейку вколонке «№», которая будет переключена в режим редактирования.
Примечание. Единственное неудобство - после ввода последней строки документа будет добавлена новая строка, и для отказа от ее ввода придется нажать клавишу «Esc».