1С Предприятие. Практика программирования на платформе v7

  73c64bed     

Создание нового вида документов


Упражнение 13. Создадим документ «Приход» (Приходная накладная), который будет отражать хозяйственную операцию оприходования оборудования. В дальнейшем при проведении он будет изменять состояние регистра остатков и бухгалтерских итогов, а также формировать записи журнала расчетов,.

VIII Документы и журналы документов__________________________________________ 91

Выберем пункт «Новый элемент» из меню «Действия» главного меню Конфигуратора. Если снят флаг использования конструкторов (см. рис.) на экране появляется окно с заголовком «Документ Новый 1».

Как и в других окнах с полями ввода, в данном окне можно переме-щаться с помощью мышки или клавиш Tab и Shift+Tab.

Свойства документа

Прежде всего, для нового вида документов нужно указать идентификатор. Идентификатором объекта является некоторая уникальная последовательность символов. Если введенный Вами идентификатор совпадет с идентификатором уже существующего документа, то программа сама предупредит вас об этом. Зададим нашему документу идентификатор «Приход» и синоним - Приходная накладная. Далее можно посмотреть на различные свойства документа, установленные системой при его создании и изменить те из них, которые Вас не устраивают. Необходимо отнести Документы данного вида к определенному журналу. Щелкнув мышью в по-ле выбора «Журнал», Вы можете выбрать один из существующих журналов. Это означает, что документы дан-ного вида будут вводиться и просматриваться в этом журнале. В процессе конфигурирования можно создавать и новые Журналы. Если Вы работаете на платформе V7.5 и хотите для вновь созданного Документа определить соответствующий новый журнал, то сначала создайте этот журнал (пустой) или выберите для вновь созданного документа журнал «Прочие», создайте новый журнал и переопределите журнал в документе, на платформе V7.7. с помощью конструктора документов можно создать новый

92_______________________ 1С: Предприятие.Практика программирования на платформе V7

журнал в процессе создания нового документа. Создадим журнал «Оборудование» для данного типа документа.




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

Для документа можно установить несколько свойств, относящихся к его нумерации. Большинство из них уже сразу имеют значения, подходящие для создаваемого документа. Свойство периодичности номеров определяет, через какой период система начнет автоматически нумерацию документов данного вида с единицы. При создании нового типа документов в данном поле стоит значение «По всем данного вида». Это значит, что номера документов данного вида все время будут расти. Если щелкнуть мышкой в поле выбора «Периодичность» и выбрать вариант «В пределах года», то документы, введенные в новом году, система автоматически начнет нумеровать с единицы. Так же как и для справочников, для документов можно определить или изменить префикс авто нумерации методом ПрефиксАвтоНумерации (?,""), а также с помощью следующих методов документа:

ПрефиксНомера(<Префикс>) позволяет установить новый префикс номера для документа.

Возвращает строковое значение текущего префикса документа (на момент до исполнения метода).



Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.

УстановитьНовыйНомер(<Префикс>) позволяет установить новый номер документа с заданным

префиксом.

<Префикс> - строка с префиксом номера документа.

Для сквозного контроля уникальности номеров документов разных видов можно создать Нумератор в дереве «Документы», в котором, на закладке Нумератор, задаются свойства нумерации документов.

Контроль уникальности. Если эта опция включена, то при вводе нового документа его номер проверяется на уникальность в пределах, установленных в реквизите «Периодичность». После завершения периода, установленного в реквизите «периодичность», нумерация документов начнется с 1.

Упражнение 14. Создадим нумератор - «ПоОборудованию», для нумерации документов, участвующих в движении оборудования, и зададим контроль уникальности в нумераторе, чтобы наши документы имели единую нумерацию.





VIII Документы и журналы документов__________________________________________ 93



После этого можно определить нумерацию документа по нумератору, указав его в поле нумератор свойств документа.



Проведение документов

Признак «Разрешить проведение» указывает системе, что данный документ можно не только сохранить в электронном виде и распечатать, но и создать документом записи в учетных базах. Если признак не установлен, то у документа не будет модуля документа, в котором описывается алгоритм его проведения.

Признак «Оперативный учет» указывает системе, что данный документ может создать записи движений по регистрам, в которых ведётся оперативный учёт в различных разрезах: товаров, мат. ценностей, взаиморасчётов, учёт партий товаров. Алгоритм движений по документу описывается в модуле документа в предопределённой процедуре ОбработкаПроведения().

Признак «Бухгалтерский учет», который становится доступным, если системе установлена компонента «Бухгалтерский учет» и создан хотя бы пустой объект типа «ПланСчетов», указывает системе, что данный документ может иметь бухгалтерскую операцию, запи-сывать проводки, и, таким образом, отражать в бухгалтерском учете, ту хозяйственную операцию, которую введенный документ описывает. При этом в нижней части окна редактирования становится доступен признак «Создавать Операцию по документу». Для простых документов рекомендуется оставить предложенное значение «Всегда». В этом случае документы данного вида всегда будут иметь операцию. Другие значения признака «Создавать Операцию по документу» позволяют регулировать создание бухгалтерской операции по документу. Например, если установить значение «Только при проведении», бухгалтерская операция будет записываться по документу только в процессе проведения документа. Эти возможности используются при большом количестве документов и в сложных Конфигурациях. Алгоритм бухгалтерской операции также описывается в модуле документа в предопределённой процедуре ОбработкаПроведения(). Само по себе, включение документа в журнал операций влияет только на возможность просмотра журнала.



Если установлен признак «Расчет»,- документы данного вида смогут создавать записи журнала расчётов в процессе проведения документа.

Создание структуры Документа

Для того, чтобы документ мог содержать полезную информацию, характерную Именно для данного документа, мы должны определить в окне редактирования

94_______________________ 1С:Предприятие. Практика программирования на платформе V7

набор реквизитов. Для ввода нового реквизита следует нажать кнопку «Новый» в группе «Реквизиты шапки».

Можно создать несколько общих реквизитов, которые будут характерны для любого вида документов - и существующих, и созданных в последствии.

Упражнение 15. Создадим общий реквизит - «Основание», тип значения -«Документ», который позволит любой документ сделать подчиненным другому документу.

Для этого откроем дерево метаданных на ветви «Документы» - «Общие реквизиты» - меню «Действие» - «Новый элемент». При этом на экране появляется окно палитры свойств - «Свойства реквизита». Далее новый общий реквизит документов вводится аналогично реквизиту справочника.



В структуре документа следует отражать только те данные, которые будут использоваться. В окне настройки вида документа расположены два поля: для ввода реквизитов шапки и для ввода реквизитов табличной части.

Реквизиты шапки могут хранить только одно значение, по каждому документу данного типа. В нашем примере, так как реквизиты «ДатаДок», «НомерДок» и «Основание» вводятся системой автоматически, другие реквизиты шапки нам не потребуются.

Кроме этого, в документе может присутствовать одна табличная часть. Реквизиты табличной части могут хранить множество значений, по каждому документу данного типа вводиться, соответственно, для каждой строки документа.

Если имеется бланк документа (накладной, счета), то из него видно, какие реквизиты будут относиться к табличной части, то есть являться колонками в многострочной части документа.

Ввод нового реквизита табличной части.

Упражнение 16. Создадим реквизиты табличной части - «Оборудование», тип значения   -   «Справочник.Оборудование»,   «Ед»,   тип  значения -



V///. Документы и журналы документов_________________________________________ 95_

«Справочник.Единицы», «Количество», «НовЦена» и «Сумма» », тип значения - Число. В реквизите «Сумма» на закладке «Дополнительные» установите флажок «Итог по колонке».

Для ввода нового реквизита в табличную часть следует нажать кнопку «Новый» в группе «Реквизиты табличной части». Ввод реквизита в табличную часть ничем не отличается от ввода других реквизитов. Конфигуратор позволяет вводить новые или редактировать существующие реквизиты в окне «Метаданные». Для этого в «дереве метаданных» щелкните левой кнопкой мыши плюс «+» слева от нужного документа, появятся две ветви «Шапка» и «Табличная часть», установите курсор на нужную ветвь и щелкните правую кнопку мыши, появится меню, в котором первым пунктом стоит «Новый Реквизит».



Щелкнем левой кнопкой мыши пункт меню «Новый Реквизит». В появившейся палитре свойств в поле «Идентификатор» укажем «Оборудование». По умолчанию новому реквизиту присваивается тип «Строка», выберем тип значения «Справочник.Оборудование» ниже в списке. Аналогично создадим реквизит «Единица» типа «Справочник. Единицы».

Аналогично введем числовые реквизиты «Количество», «НовЦена» и «Сумма» -, для реквизита «Сумма» на закладке «Дополнительные» палитры свойств установим флаг «Итог по колонке».

Только те реквизиты табличной части документа, для которых установлен флаг «Итог по колонке», могут быть выбраны для показа в графе журнала документов, также по этим реквизитам можно будет получить итоговую сумму, вызвав метод «Итог(«Сумма»);».

Укажем для числовых реквизитов длину и точность. «Цену» и «Сумму» будем вводить с копейками.

96_______________________ 1С:Предприятие. Практика программирования на платформе V7

Редактирование формы документа

Упражнение 17. Создадим Форму для интерактивного редактирования документа аналогично тому, как мы создавали формы для справочников.

Нажмите кноп-ку «Форма» в окне редактирования документа или установите курсор на нужный документ в «Дереве метаданных», щелкните правой кнопкой мыши и, в появившемся меню, выберите пункт «Редактировать форму».





Система предложит выбрать из списка с пометками существующие реквизиты документа для ввода в форму,



\/III. Документы и журналы документов_________________________________________ 97

после нажатия кнопки «Вставить» будет открыто окно редактора форм с введенными реквизитами документа.



Справочник Единицы у нас подчиненный, поэтому при выборе его значения необходимо определить значение элемента справочника владельца, для этого на закладке дополнительные панели свойств заполним поле «Связан с» ссылкой на элемент справочника владельца - «Оборудование», который выбирается в строке табличной части документа.



Метод Итог(<"ИмяРеквизита">) возвращает сумму значений реквизита по всем строкам табичной части документа.<ИмяРеквизита> - имя реквизита табличной части документа (в кавычках).

Метод  можно использовать только для реквизитов табличной части документов с установленным свойством 'Итог по колонке'.

98_______________________ 1С:Предприятие. Практике программирования на платформе V7

Для большинства видов метаданных определены методы, позволяющие установить или получить название (идентификатор) и получить пользовательское представление (синоним) вида метаданных в виде строки, как они заданы в конфигураторе.

Метод Вид(<Название>) позволяет установить или считать текущее название вида объекта метаданных. Возвращает текущее название вида объекта метаданных.<Название> - строка с названием вида объекта метаданных. Если параметр не задан - метод просто возвращает текущее название. Метод ПредставлениеВида() позволяет получить пользовательское представление вида объекта метаданных, как оно задано в конфигураторе.Возвращает строковое значение, содержащее пользовательское представление вида объекта метаданных.

Для вставки реквизитов в уже сформированную форму документа в главном меню нужно выбрать последовательно пункты «Вставить» - «Реквизиты». В верхней части диалога выбора реквизитов для вставки (см. рисунок выше) располага-ются реквизиты шапки. Уже вставленные реквизиты отмечены галочкой и серым цветом. Отметьте курсором в списке нужный реквизит. Для этого нужно щелкнуть мышкой в его название, чтобы оно оказалось отмечено выделенным цветом. Целесообразно также отметить, щелкнув мышкой, флажок «Вставлять имя», чтобы при вставке реквизита в диалоге автоматически размещалась и подпись реквизита в виде синонима или идентификатора. Теперь нужно щелкнуть мышкой кнопку «Вставишь». При этом, диалог закрывается и курсор мыши принимает специальный вид, показывающий, что сейчас будет производиться вставка реквизитов в окно диалога.



Покажем в табличной части документа коэффициент выбранной единицы измерения и цену оборудования на дату документа - реквизиты формы «Кф» и «СтЦена» типа Текст. Поместим колонку «Кф» после реквизита «Единица», а «СтЦена» перед реквизитом «НовЦена». Зададим в панели свойств соответствующие заголовки и идентификаторы реквизитам формы.







На закладке Дополнительные панели свойств зададим формулу, по которой будут вычисляться значения в этой колонке.

VIII. Документы и журналы документов_________________________________________ 99_

Так как мы задали идентификаторы реквизитам формы, то по этим идентификаторам мы сможем обращаться к значениям этих реквизитов, в контексте формы документа.

Введём алгоритм вычисления реквизита «Сумма» в формулу реквизита «Количество», чтобы после его ввода выполнилась формула расчета суммы. В нашем случае формула будет выглядеть так:

Сумма=Количество*Кф*НовЦена;

Действие этой формулы будет заключаться в том, что в реквизит «Сумма» будет занесено значение выражения справа от знака равно. После ввода формулы следует нажать кнопку «Обновить» в палитре свойств, для подтверждения ее ввода.

Эту же формулу можно внести в поля «Единица» и «НовЦена», чтобы при Редактировании этих полей сумма обновлялась автоматически. Для удобства Редактирования строки документа можно в поле «Оборудование» прописать операторы для ввода значений по умолчанию:

Количество=1; НовЦена=СтЦена;

Теперь, чтобы после ввода новой цены и количества сразу начать вводить новую строку, вызовите палитру свойств для колонки «Сумма», дважды Щелкнув в заголовок колонки «Сумма», затем перейдите к закладке

100______________________ 1С:Предприятие. Практика программирования на платформе V7

«Дополнительные» и включите флажок «Пропускать при вводе», щелкнув по нему мышью, нажмите кнопку «ОК» палитры свойств, чтобы подтвердить сделанные изменения. Чтобы ввод новой строки в документ начинался после ввода цены в текущую строку и нажатия Enter, откройте палитру свойств табличной части, дважды щелкнув мышью любое ее место, кроме заголовков колонок и включите флажок «Автоматический ввод новой строки». (Для этого щелкните мышью этот флажок и нажмите кнопку «ОК», чтобы подтвердить сделанные изменения.)





Теперь нам не потребуется вводить значения в ко-лонку «Сумма» - программа делает это автоматически. Если необходимо отредактировать вычисленные значения, это можно сделать, поместив курсор в требуемую ячейку и нажав кла-вишу Enter. Заметим, что условие «Пропускать при вводе» срабатывает только при вводе новой строки: если выполняется редактирование существующей строки, то все работает обычным образом: при нажатии Enter ячейка переключается в режим редактирования, повторное нажа-тие Enter выключит режим редактирования, но курсор останется на месте - никакого перехода не будет.

Установим признак «Пропускать при вводе» для колонки «N», содержащей номер строки документа. В этом случае после ввода новой строки колонка «N» будет пропущена, а в режим редактирования будет переключена следующая ячейка в строке для ввода значения, в этой ячейке автоматически откроется соответствующий справочник, журнал, калькулятор или календарь в зависимости от типа реквизита.

Заметим, что в 7.7 при установленном флажке автонумерации строк в свойствах документа редактировать номер строки вручную нельзя, для этого существуют стрелки на панели инструментов.

Теперь зададим заголовок окна диалога. При создании диалога документа заголовок был оставлен пустым, поэтому при работе с этим документом в режиме запуска «1С:Предприятие» заголовок будет формироваться программой автоматически из идентификатора; кроме этого, в заголовок будет добавлен номер документа (или слово «Новый», если вводится новый документ). Для задания заголовка окна диалога следует вызвать палитру

VIII. Документы и журналы документов_________________________________________ 101

свойств диалога, дважды щелкнув мышью в пустое серое пространство диалога. В поле «Заголовок» закладки «Общие» палитры свойств следует ввести текст, который будет выводиться в заголовке окна диалога и нажать кнопку «ОК», чтобы подтвердить произведенные изменения.

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

В некоторых случаях у пользователей возникает потребность сортировки строк документов по некоторому значению отличному от введенного номера строки.

Кроме того, в модуле формы документа отсутствует возможность изменения номеров строк. Для решения данной задачи можно предложить сортировать строки документа в процессе печати. Для этого целесообразно использовать список значений. (В 7.7 существует метод документов сортироватьстроки (<колонки>) для сортировки строк документа по значениям некоторых реквизитов табличной части.) Вначале в список значений заносятся в качестве значений номера строк документа. При этом в качестве представлений значений указывается строковое значение, которое будет определять порядок сортировки, например, наименование товара. Далее список значений сортируется представлению штатным методом. После этого организуется цикл печати по списку значений. Причем позиционирование строки документа выполняется по полученному из списка значений номеру.


Содержание раздела