Справочники
Справочники хранят в себе одинаковые по структуре данные. Например, справочник товаров или справочник должностей. Справочники это ссылочный тип данных, на любой элемент справочника можно сослаться, в документах, константах или вообще в каких либо реквизитах.
Структура справочника
Справочник обычно описываются следующим набором данных:
Предопределенные реквизиты
У каждого справочника есть номер и наименование. В принципе их можно отключить, указав длину 0. Так же код может быть числовым или текстовым, если код текстовый для удобства сортировки система дополняет код лидирующими нулями на всю длину кода, например если у справочника указана длина кода 9 и справочнику был присвоен код 3 то система дополнит нулями до такого вида: "000000003". Также в случае если имеется распределенная база в код обычно добавляется префикс той базы в которой был создан элемент, например: "ЦН0000003". Нужно учитывать эту особенность если вы соберетесь указывать числовой код, этот объект не сможет корректно работать в распределенной базе. У справочника есть и другие предопределенные реквизиты:
Иерархичность.
Иерархия это способность выводить справочник в виде дерева. Эта возможность бывает очень удобной, в случаях когда в справочнике содержится много информации. В таких случаях бывает полезно разложить номенклатуру "по полочкам". При включении иерархичности у справочника, добавляются два стандартных реквизита ЭтоГруппа и Родитель . Манипулируя значением реквизита Родитель, можно переназначать родителей элемента. Строится иерархия на группах, в эти группы могут входить другие элементы или другие группы. Аналогию можно провести с проводником windows или с большинством файловых систем если вам будет удобно: есть папки в которых могут быть как файлы так и папки в которых в свою очередь тоже могут быть и файлы и папки итд. Иерархия может работать и без групп. То есть родителями могут выступать другие элементы справочника. Такой вид иерархии называется иерархия элементов. Если мы настроили иерархию, у нас появляется возможность настраивать, для какого типа могут использоваться реквизиты, для групп, элементов, или и для того и для другого. Иерархия настраивается на закладке Иерархия свойств справочника.
Подчиненность
Подчиненность это возможность сделать несколько записей одного справочника уникальными для одной записи другого справочника (если вы знакомы с основами реляционных баз даных, это связь, один ко многим ) . Например: у одного контрагента, может быть много договоров, но это будут только его договора, у второго контрагента будет свой набор договоров. В этом случае справочник договоры подчинен справочнику контрагенты. Подчинение справочника реализовано предопределенным реквизитом Владелец , следовательно у одной конкретно взятой записи справочника, может быть только один владелец. В то же время у одного справочника может быть несколько владельцев. Владельцами могут быть не только справочники, а также планы обмена, планы видов характеристик, планы счетов, планы видов расчета. Также можно указать вид объекта для подчинения, доступны элементы, группы или и то и другое. Если для справочника определены подчиненные справочники и у элемента справочника не назначена основная форма, то при открытии элемента этого справочника в режиме предприятия, в управляемых формах система автоматически добавит панель для открытия подчиненных справочников с фильтром на поле владелец по текущему элементу. Такое поведение можно настроить и на уже существующих формах. (скрин)
Ввод по Строке
При выборе ссылочных данных в 1С есть возможность выбрать элемент справочника или документ, набирая ключевые реквизиты объекта который мы хотим найти, выглядит это следующим образом: пользователь, набирает «масло моторное» в поле ввода с типом "Справочник.Номенклатура" и нажимает ввод. 1С находит все записи которые начинаются с названия со слов "масло моторное" и показывает их в виде выпадающего списка под полем где пользователь вводил текст. Такой же ввод возможен и для документов. Это поведение системы можно настроить на закладке «Формы». Там есть поле Ввод по строке , по умолчанию для справочников указана возможность поиска по коду и наименованию, но туда можно добавить и свои реквизиты, для того, что бы добавить этот реквизит, он должен быть индексирован и реквизит должен быть примитивного типа.
Предопределенные элементы справочников.
Предопределенные элементы справочников определяются в конфигураторе на закладке Прочие . При создании элемента указывается имя и наименование предопределенного элемента. Имя и будет являться идентификатором для обращения к этому предопределенному элементу, поэтому к имени предъявляются такие же требования как и к другим идентификаторам(не может начинаться с числа, нельзя использовать пробелы и тд). Наименование может быть любым, его пользователь и увидит в справочнике и сможет его при желании изменить. Пользователь не может изменить имя который был указано при создании этого элемента, зато он может удалить предопределенный элемент.(надо бы найти номер релиза когда это стало возможным). Обращение к предопределенным элементам происходит так:
Таким образом, очень удобно ссылаться на предопределенные элементы из встроенного языка или опираться на них при построении каких то условий. Предопределенные элементы справочников можно использовать в схемах СКД и запросах.
Важно. Контроль за удалением предопределенных элементов лежит на плечах разработчиков, а не платформы.
Для предопределенных элементов справочников, стандартный реквизит Предопределенный имеет значение Истина. Это свойство которое доступно только на чтение, но это не означает, что нельзя "обычный" элемент справочника сделать предопределенным и наоборот. В последних релизах 8.3FIXME(Надо узнать в каких именно), появилась возможность переопределять предопределенные элементы изменяя свойство ИмяПредопределенныхДанных . Например, вот так можно сделать элемент не предопределенным:
И наоборот указав в свойстве ИмяПредопределенныхДанных имя предопределенного элемента справочника, можно сделать его предопределенным. У иерархических справочников возможно указывать предопределенные группы. Предопределенные элементы нельзя создавать у подчиненных справочников. В пользовательском режиме предопределенный элемент отличается, от обычного, следующим образом(показать скрин).
Подсказка. Предопределенные элементы часто используют для того, что бы избавиться в коде от конструкций вида: НайтиПоКоду и НайтиПоНаименованию . Использование этих методов считается дурным тоном, так как наименование и код справочника достаточно часто изменяются. Обычно поступают следующим образом: Создают справочник, например Настройки с единственным реквизитом Значение . После этого в конфигураторе добавляют предопределенный элемент с нужным названием а в режиме 1с Предприятие, задают его значение. Теперь вместо того что бы писать в коде:
или что еще хуже
Можно просто указать:
Классы для работы со справочниками.
Все классы справочника можно увидеть в ветке Прикладные объекты –> Справочники .
Cправочники это элементы которые хранятся в базе данных, считается очевидным, что обращение к любому из классов возможно только на сервере.
Справочник менеджер
Справочник менеджер – можно получить с помощью переменных глобального контекста:
Этот класс служит для:
Получать пустые ссылки:
И много еще разных возможностей которые можно наблюдать в синтаксис помощнике в ветке: Прикладные объекты – >Справочники – СправочникМенеджер.<ИмяСправочника>
Справочник ссылка
Справочник ссылка – самый часто используемый тип. Используется для чтения данных справочника. Его можно получить с помощью НайтиПоНаименованию , НайтиПоКоду и др методов класса СправочникМенеджер . Так же его можно получить с помощь класса Выборка и этот тип данных хранится в реквизите Cсылка объекта класса Справочник объект . В этом классе нам доступны все реквизиты справочника, табличные части и все стандартные реквизиты. Абсолютно все свойства этого класса нам доступны только на чтение. Для того что бы изменять реквизиты справочника нам нужен класс Справочник Объект . Получить его можно с помощью метода Получить Объект() .
Справочник Объект
Класс Справочник Объект отличается от класса Справочник Ссылка не многим, основная его функция обеспечить возможность изменения элемента справочника. Запись происходит с помощью метода Записать()
Справочник Выборка
Справочник Выборка получается с помощью методов Выбрать и Выбрать Иерахически он позволяет обойти элементы справочника в цикле, с помощью метода Следующий() .
Популярные приемы работы со справочниками
Поиск по наименованию.
Несмотря на то, что неоднократно рассматривается поиск элемента справочника по наименованию, "зашивать" в код значения из базы данных считается дурным тоном.
Для поиска по наименованию используется функция НайтиПоНаименованию() . Для использования этого метода необходимо указать наименование по которому будет происходить поиск. Если поиск должен проходить по точному соответствию с указанной строкой то вторым параметром, нужно указать Истина, иначе поиск будет проходить по первым буквам указанного шаблона поиска, то есть если в качестве строки для поиска указать "Слон" то под шаблон попадут и "Слон" и "Слон игрушечный" и "Слонопотам". Поиск можно ограничить определенной группой, если справочник иерархический или владельцем, если справочник подчиненный. Если значение не найдено, метод вернет пустую ссылку того типа справочника для которого производился поиск.
Поиск по коду
Для поиска по коду используется функция НайтиПоКоду() . Для использования этого метода необходимо в параметре "Код" указать код, по которому будет производиться поиск. Если в качестве кода указывается полный путь с учетом иерархии (уровни справочника разделяются символом "/"), то второй параметр поиск по полному коду, необходимо установить в Истина. Например: Номенклатура "Слонопотам" с кодом "001142" находится в папке "Мягкие Игрушки" с кодом "000826" которая находится в папке "Игрушки" с кодом 000375. Тогда можно найти ее с помощью вот такой строки
Или можно искать сразу:
Поиск можно ограничить определенной группой, если справочник иерархический или владельцем, если справочник подчиненный. Если значение не найдено, метод вернет пустую ссылку того типа справочника для которого производился поиск. Поиск может осуществляться и по реквизиту с помощью одноименного метода, главное условие реквизит должен быть индексирован.
Выборка
Выборка позволяет обходить в цикле элементы справочника. Для иерарахических справочников доступна выборка по родителю, для подчиненных по владельцу. Для любого вида справочника возможно указать отбор, которому будут соответствовать элементы в выборке и поле по которому выборка будет упорядочена. Работает выборка следующим образом:
При использовании метода Следующий() в классе выборка, текущим устанавливается следующий элемент из текущей выборки. Если в выборка спозиционировалась на определенном элементе, она возвращает Истина, иначе Ложь. Для класса Справочник Выборка доступны все поля и табличные части, которые определены для текущего справочника, а так же есть свойство Ссылка которое позволяет получить ссылку на текущий элемент справочника из выборки. Для того что бы при выборке учитывалась иерархия справочника, необходимо использовать метод ВыбратьИерархически() .
Программное создание элементов справочника
Элементы и группы справочников, можно создавать и не посредственно из программного кода. Для этого используется следующий код:
Группа справочника создается аналогично с помощью метода СоздатьГруппу() В том случае, если у справочника установлено свойство Автонумерация код указывать не нужно, он устанавливается автоматически.
Проверка переменной с типом СправочникСсылка на заполненность
Иногда возникает необходимость проверить заполнено ли значение с типом «Справочник.Ссылка». Такая необходимость может возникнуть, когда реквизит какого либо объекта имеет тип «Справочник.Ссылка» или когда вы например ищете элемент справочника по коду или наименованию, или в ряде других случаев, когда метод возвращает пустую ссылку на справочник. Есть несколько способов это сделать:
Только для сервера
Проверка элемента справочника на вхождение в какую либо группу или подчинение элементу
Когда мы говорим о проверке подчиненности, необходимо понимать, что все методы справедливы не только для групп, но и для элементов, если у справочника установлен вид иерархии "Иерархия элементов". Здесь возможно несколько вариантов: если у нас есть группа и нам необходимо знать если ли именно в ней и нигде иначе определенный элемент справочника, то можно сравнить предопределенный реквизит Родитель нужного нам элемента справочника с ссылкой на группу, например:
Если справочник многоуровневый и нужно знать есть ли элемент в этой группе или где то в подчинненых группах то можно воспользоваться методом "ПринадлежитЭлементу()" этот метод вернет Истина если элемент содержится в текущей или любой подчиненной группе. Например в этом случае
условие будет истинным.
СправочникСсылка <> СправочникОбъект
При работе со справочниками очень важно понимать, что во всех реквизитах, выборках и тд, мы чаще всего работаем с типом СправочникСсылка и этот тип позволяет получить любую информацию которая находится в его реквизитах, но не поддерживает запись. Для изменения реквизитов справочника и записи следует использовать тип СправочникОбъект. Преобразовать ссылку в объект можно с помощью метода ПолучитьОбъект() Например:
Проверка на то что ссылка является ссылкой на справочник
Проверить то что справочник является ссылкой можно очень просто, с помощью одной строки:
Где СсылкаНаЭлементСправочника проверяемая ссылка, эта строка вернет Истина если проверяемая ссылка является ссылкой на какой либо элемент справочника.
Использование стандартных реквизитов для хранения сущностей на примере базовой версии Бухгалтерии 8
Базовые версии 1С 8 более доступны по цене, однако, при этом имеют ряд ограничений, которые «всплывают», как только клиент захочет доработать тот или иной функционал программы. Один из таких сюрпризов – это отсутствие поддержки работы с расширениями 1С. Заметим, тем не менее, что фирма «1С» планирует в новых релизах (начиная с 8.3.19) платформы разрешить базовым версиям 1С 8 работать с расширениями при определённых ограничениях.
Пока же такой механизм отсутствует, решение задачи, требующей создания и хранения сущностей в базовой конфигурации может быть нетривиальным.
Предположим, в выставляемом покупателю счёте в каждой строке с вместе номенклатурой, ценой и прочим, нам, а, вернее, бухгалтеру, хотелось бы хранить такие свойства продаваемого товара, как длину, ширину и количество этого товара в штуках, применительно лишь к этому, возможно, уникальному, заказу. Это сочетание размеров, например, полотно, отрезается по заказу клиента и в дальнейшем может не повториться. Где хранить эти данные?
Регистр сведений, как и расширение недоступны в базовой версии Бухгалтерии 8, использование дополнительных реквизитов не подойдёт, ведь размеры задаются не как свойства номенклатуры как таковой, а как свойства товара именно при его продаже.
2. Как найти и использовать стандартный реквизит?
В таком случае стоит обратить внимание на стандартные реквизиты, которые предлагает программа, в нашем случае это базовая версия 1С 8 Бухгалтерия предприятия 3.0: нет ли среди них «бесхозных», которые могли бы нам подойти? Проанализировав, как используются реквизиты табличной части Товары документа Счёт на оплату покупателю (с помощью консоли запросов, например), можно заметить, что среди прочих есть стандартный реквизит Содержание (строка в 1000 символов), который используется только если добавленная в список номенклатура является услугой, если же это товар (т.е. НЕ Номенклатура.Услуга), то строка Содержание не используется! Что ж, 1000 символов нам вполне достаточно для хранения данных о свойствах товара.
Для работы с этим стандартным реквизитом документа требуется сделать одно подготовительное действие, а именно вытащить его на форму документа <Ещё → Изменить форму…>, разместив в удобном месте и задав достаточную длину поля ввода (рис.1).
Рисунок 1. Покажем реквизит на форме
Далее, и это важный момент – организация хранения и доступа к данным внутри стандартного реквизита в 1С Бухгалтерия, в данном случае – строки в 1000 символов. Следует определить формат записи нескольких данных в строку. Например, число, означающее длину будет начиная с такой-то позиции внутри строки, или же будет некий признак, означающий, что перед нами именно ширина, например подстрока «Ширина, мм:». Если не предусматривается заполнения новых данных в специальном окне, то необходимо довести до пользователя информацию о том, каков формат строки.
№ Заказа: Э-515 Ширина, мм: 1559 Высота, мм: 1050 Кол-во, шт.: 2
Рисунок 2. Заполнение реквизита несколькими значениями
Остаётся написать обработку, которая будет извлекать числа из этой строки (сама строка при этом, может формироваться и автоматически, например, при загрузке из файла электронной таблицы), вычислять площадь, новое значение Количества и Суммы, словом, то, что в отличной от базовой версии мы бы сделали в обработчике события ПриИзменении.
Таким способом в базовой версии 1С 8.3 Бухгалтерия можно разместить новые данные, не создавая новых сущностей, а используя только имеющиеся стандартные реквизиты. Конечно, следует уделять внимание вопросу безопасного кода в контексте корректного преобразования строки в число или наоборот, помнить о проблеме пробелов и спецсимволов, а также, уже пользователю – контролировать, чтоб избранный нами реквизит использовался по назначению и не был перезаписан вдруг какими-то другими данными. Это можно назвать недостатком использования «бесхозных» реквизитов для хранения данных о свойствах товара.
Что такое реквизит в 1с
В 1С Управление Нашей Фирмой есть возможность создавать дополнительные реквизиты — поля и справочники для ввода данных без программиста. Ссылки на добавление реквизитов есть во многих карточках и документах — карточка контрагента, карточка номенклатуры, заказ покупателя и т. п.
Дополнительные реквизиты могут использоваться в вспомогательных целях, таких как переменные в формулах динамических спецификаций.
Возможность использовать доп. реквизиты в 1С Управление Нашей Фирмой включается при установке программы, но если у вас эта функция отсутствует, то включить ее можно в разделе «Настройки» по ссылке «Общие настройки»
Рис 1. Включение модуля Дополнительных реквизитов в 1С Управление Нашей Фирмой
Для просмотра дополнительных реквизитов, а также для их создания и редактирования, необходимо в «Общих настройках» пройти по ссылке «Дополнительные реквизиты».
Рис 2. Журнал Дополнительные реквизиты в 1С Управление Нашей Фирмой
Журнал состоит из шапки с управляющими кнопками — «Добавить», «Копировать» и «Вставить», а также двух окон — в левом окне находится иерархический список групп (папок) реквизитов и в правом окне показываются дополнительные реквизиты, которые относятся в выделенной папке.
Для добавления реквизита необходимо нажать на кнопку «Добавить» и выбрать один из двух вариантов — «Новый» и «Из другого набора»
Рис 3. Кнопка «Добавить» в журнале Дополнительные реквизиты в 1С Управление Нашей Фирмой
Начнем обзор с создания нового реквизита.
1. Создание нового реквизита
Для создания нового реквизита в журнале «Дополнительные реквизиты» нажимаем кнопку «Добавить» и выбираем вариант «Новый».
Откроется карточка создания Дополнительного реквизита.
Рис 4. Карточка создания Дополнительного реквизита в 1С Управление Нашей Фирмой
Поле «Наименование»
В первую очередь необходимо заполнить поле «Наименование» — наименование реквизита должно четко его идентифицировать, так как на его основании будет заполнено поле «Идентификатор для формул» и поле «Имя» в блоке «Для разработчиков», которое используется для программного обращения к данному реквизиту.
Поле «Тип значения»
В строке «Тип значения» необходимо выбрать значение из раскрывающегося списка, который открывается нажатием на кнопку с тремя точками в правой части строки.
Рис 5. Карточка выбора Типов значений карточки Дополнительного реквизита в 1С Управление Нашей Фирмой
Часть элементов справочника «Типы значений» понятна большинству пользователей — Дата, Валюта и т. п., а часть значений будет понятна специалистам или опытным пользователям — рассмотрим эти значения подробно с примерами использования доп. реквизитов в карточке номенклатуры.
Типы значений дополнительных реквизитов в 1С: Управление Нашей Фирмой
1)Булево
Булево — имеет только 2 значения: да/нет, истина/ложь и т. п.
Рис 6. Вариант карточки Дополнительного реквизита при выборе типа значений Булево в 1С Управление Нашей Фирмой
В карточке Номенклатуры этот тип данных может выглядеть как Чек-бокс с галочкой.
Рис 7. Вариант карточки Номенклатуры при выборе типа значений Булево в 1С Управление Нашей Фирмой.
Мы можем изменить формат отображения нажав на ссылку «Формат по умолчанию» в карточке доп. реквизита справа от поля «Тип значения»
Рис 8. Конструктор форматной строки при выборе типа значений Булево в 1С Управление Нашей Фирмой.
Клик по ссылке откроет форму «Конструктор форматной строки». В ней нам нужен список из двух значений «Представление значения булево Ложь» и «Представление значения булево Истина» — если галочки перед строками снять, то останется первый вариант с чек-боксом.
В поле со значениями мы можем выбрать из трех вариантов Ложь/Истина, Да/Нет, Выключено/Включено или ввести собственное значение как в примере (см. Рис. 11).
В результате изменения формата в карточке номенклатуры этот реквизит будет выглядеть как текстовое поле с выбором значения, но на выбор будет выводиться только два значения.
Рис 9. Дополнительный реквизит с типом Булево с собственными значениями в карточке номенклатуры в 1С Управление Нашей Фирмой.
2)Строка
Строка — самый простой тип значений, который позволяет вводить любой набор символов. К строке не привязан справочник значений, поэтому в ней нет повторного выбора ранее введенной информации.
При выборе Типа значения в форме «Редактирование типа данных» в нижней части формы в зависимости от типа данных появляются дополнительные настройки.
Рис 10. Настройки отображения данных дополнительных реквизитов в 1С Управление Нашей Фирмой.
В типе значений «Строка» в нижней части расположены настройки длины строки: Длина — количество символов, Вариант изменения длины строки — «Переменная» (в зависимости от количества введенных символов) и «Фиксированная», а также чек-бокс для галочки «Неограниченная» — снимает все ограничения по количеству вводимых символов.
После выбора этого Типа значения в карточке Дополнительного реквизита появятся три дополнительных варианта выбора отображения реквизита — «Однострочное поле ввода», «Многострочное поле ввода» — при выборе данного варианта активируется параметр «Количество строк», который позволяет ограничить количество строк ввода.
Рис 11. Дополнительные параметры Дополнительных реквизитов с типом Строка в 1С Управление Нашей Фирмой.
3)Дополнительное значение
Дополнительное значение — раскрывающийся список, в котором значения могут быть внесены заранее или добавляться в процессе работы.
Рис 12. Создание Дополнительного реквизита с типом значения Дополнительное в 1С Управление Нашей Фирмой.
Галочка «Выводить в виде гиперссылки» позволяет отображать этот тип значений в документе в двух вариантах: без галочки — как раскрывающийся список, а с галочкой — как гиперссылка
Вариант без галочки:
Рис 13. Дополнительный реквизит с типом значения Дополнительное в карточке номенклатуры в 1С Управление Нашей Фирмой.
Для выбора значения нажимаем на стрелочку в правой части поля и появляется форма значения, в которой переходим по ссылке «Показать все» или «+(создать)».
При установленной галочке значение выводится, как ссылка, а для его изменения необходимо нажать на карандаш (справа от строки).
Рис 14. Гиперссылка дополнительного реквизита в карточке номенклатуры в 1С Управление Нашей Фирмой.
Ниже выбора варианта отображения, располагается табличная форма с двумя вкладками — «Главное» и «Значения».
Во вкладке «Главное» заполняем поля по необходимости — более подробно рассмотрим поля ниже.
Во вкладке «Значения» содержится список значений, присвоенных данному реквизиту.
Рис 15. Вкладка «Значения» в карточке дополнительного реквизита в 1С Управление Нашей Фирмой.
Значения можно ввести в этой вкладке с помощью кнопки «Создать» или после в процессе работы, как показано на Рис. 13.
Кнопка «Еще» раскрывает список дополнительных действий по управлению списком.
Рис 16. Список действий кнопки «Еще» во вкладки «Значения» карточки дополнительного реквизита в 1С Управление Нашей Фирмой.
Под полем списка значений располагается чек-бокс «Значения дополнительно характеризуются весовым коэффициентом» — после установки этой галочки каждому значению можно добавить числовое значение, которое позволяет дополнительно сортировать значения в отчетах или при выборе, также можно его использовать в других целях. В списке значений добавится колонка «Весовой коэффициент».
Рис 17. Весовые коэффициенты значений в карточке дополнительного реквизита в 1С Управление Нашей Фирмой.
Значения можно сгруппировать — кнопка «Создать группу» позволяет создавать группы (папки) значений.
4)Число
Этот тип значений ограничен только числовыми значениями.
В настройке отображения этого реквизита при его выборе программа выдает два поля: «Длина» — количество вводимых символов, «Точность» — количество символов после запятой, а также чек-бокс для галочки «Неотрицательное» — установленная галочка не дает ввести отрицательное число.
Рис 18. Настройки дополнительного реквизита при выборе типа значений в 1С Управление Нашей Фирмой.
Остальные Типы значений и их настройка более понятны пользователям и не имеют дополнительных настроек поэтому не будем их рассматривать.
Рассмотрим остальные элементы карточки «Дополнительный реквизит» общие для всех типов.
5)Составной тип данных
Составной тип данных находится в верней части формы выбора. Установка галочки позволяет создать поле, при нажатии на которое программа попросит у пользователя самостоятельно выбрать тип вводимых данных.
После установки галочки в чек-боксе «Составной тип данных» в списке появляется возможность выбора нескольких значений — например:
В заказе покупателя вы хотите отобразить Агента, человека, который нашел данный заказ -сторонний человек или сотрудник предприятия.
Создаем дополнительный реквизит с названием «Агент». А при выборе типа значений устанавливаем галочки: «Составной тип данных», «Контрагент», «Сотрудник».
Рис 19. Составной тип данных дополнительного реквизита в 1С Управление Нашей Фирмой.
В Заказе покупателя находим созданный реквизит «Агент» и нажимаем на три точки в правой части поля и, в открывшейся форме, нажимаем на нужный тип данных — Сотрудник или Контрагент
Рис 20. Поле с составным дополнительным реквизитом в 1С Управление Нашей Фирмой.
Выбор поля дает доступ к нужному справочнику «Контрагенты» или «Сотрудники».
В конце месяца можно отсортировать заказы по контрагентам и сотрудникам, начислить комиссионное вознаграждение контрагентам или премию сотрудникам.
Ссылка «Виден»
Позволяет настроить видимость реквизита в зависимости от настроенных условий.
У товара, в редких случаях, кроме основного цвета могут быть элементы с другим цветом.
Создаем два дополнительных реквизита — один реквизит с типом «Булево», а второй с типом «Строка».
В настройках реквизита с типом «Строка» нажимаем на ссылку «Виден» — откроется форма «Видимость дополнительного реквизита», в которой мы настраиваем условия видимости — нажимаем на кнопку «Добавить условия» и в табличной части заполняем строку из трех ячеек:
«Реквизит» — двойной клик на ячейку активирует ее, а клик на кнопку с тремя точками в правой части ячейки откроет дополнительную форму «Выбор реквизита» со списком доступных реквизитов, в котором кроме реквизитов программы есть дополнительные реквизиты, введенные нами. Выбираем доп. реквизит «Дополнительный цвет».
Рис 21. Настройка условий видимости дополнительного реквизита в 1С Управление Нашей Фирмой.
«Вид сравнения» — двойной клик откроет список выбора вида сравнения — равно, не равно, заполнено, не заполнено и т. п.
«Значение» — двойной клик откроет список значений выбранного реквизита, выбираем кликом нужное значение
В примере у нас получилось условие: Если в реквизите «Дополнительный цвет» установлена галочка, то реквизит «дополнительная гамма цветов» становится виден.
Рис 22. Видимость дополнительного реквизита в 1С Управление Нашей Фирмой.
Ссылка «Доступен»
Эта ссылка позволяет настроить доступность реквизита, также, как ссылка «Виден», но в отличии от нее реквизит виден всегда, но активен при определенном условии.
Чек-бокс (Галочка) «Заполнять обязательно»
При установленной галочке данный реквизит становится обязательным к заполнению, а ссылка справа позволяет настроить условие, при котором этот параметр будет действовать — настраивает аналогично предыдущим ссылкам «Виден» и «Доступен».
Поле «Идентификатор для формул»
Заполняется автоматически, но возможна ручная корректировка.
Рис 23. Карточка дополнительного реквизита 1С Управление Нашей Фирмой.
С права от поля расположена кнопка со стрелкой для перезаполнения поля на основании строки «Наименование».
Поле «Всплывающая подсказка»
Это поле позволяет выводить нужную информацию — наименование или инструкцию по заполнению реквизита, которая будет появляться при наведении на реквизит.
Поле «Комментарий»
В это поле можно занести любую информацию для внутреннего пользования по этому реквизиту.
На этом обзор работы с новой карточкой «Дополнительный реквизит» заканчиваем и переходим к рассмотрению копирования дополнительных реквизитов.
2. Копирование реквизита «Из другого набора»
В журнале «Дополнительные реквизиты» нажимаем кнопку «Добавить» и выбираем второй вариант — «Из другого набора».
Откроется форма «Добавление дополнительного реквизита»
Рис 24. Добавление Дополнительного реквизита из другого набора в 1С Управление Нашей Фирмой
Форма «Добавления Дополнительного реквизита» очень похожа на журнал «Дополнительные реквизиты» с некоторыми отличиями — отсутствуют верхние кнопки управления и в правой части добавлены поля
— «Тип значения» — показывает, какого типа значения присутствуют в выбранном варианте,
— «Всплывающая подсказка» — необходимо ввести текст, который будет появляться при наведении на реквизит мышкой,
а также два поля «Заголовок формы значения» и «Заголовок формы выбора значения» — текст, который будет выводиться на заголовках указанных форм.
Заполнили поля и нажимаем в нижнем правом углу желтую кнопку «Далее».
Откроется новая страница с выбором варианта добавления реквизита
Рис 25. Выбор варианта добавления Дополнительного реквизита из другого набора в 1С Управление Нашей Фирмой
Добавить реквизит как есть — реквизит будет показываться в папке копирования, но это будет тот же реквизит. Реквизит в программе один, но входит в две группы, о чем нас извещает ссылка в нижней части вкладки «Главное».
Рис 26. Разделение общего Дополнительного реквизита в 1С Управление Нашей Фирмой
При нажатии на ссылку откроется список групп реквизитов, в которых присутствует этот реквизит.
Для разделения реквизитов в самостоятельные параметры необходимо нажать кнопку «Изменить» справа от ссылки. В открывшейся форме необходимо выбрать один из двух вариантов: «Реквизит со своим списком значений» или «Общий реквизит» — в первом варианте будет полное разделение реквизитов на самостоятельные единицы, а во втором случае все останется так как есть.
Во вкладке «Значения» присутствует похожая ссылка и кнопка «Изменить», но уже для разделения списка значений.
Сделать копию реквизита по образцу (с общим списком значений) —будет создан новый реквизит, отдельный от копируемого, но с общим списком значений.
Вариант разделения аналогично с предыдущим вариантом, но ссылка и кнопка изменить есть только во вкладке «Значения».
Сделать копию реквизита — копируются тип реквизита и значения, а наименование вводим самостоятельно. В этом случае создается реквизит полностью независимый от копируемого.
Выбираем вариант копирования и нажимаем на кнопку «Далее» в нижнем правом углу.
При выборе варианта копирования «Добавить реквизит как есть» реквизит создается сразу. В вариантах «Сделать копию реквизита по образцу» и «Сделать копию реквизита» программа откроет карточку создания Дополнительного реквизита для заполнения полей «Наименование» и «Идентификатор для формул», так как в отличии от первого варианта копирования будут созданы новые реквизиты.
На этом обзор Дополнительных реквизитов заканчиваем.
Если остались вопросы пишите нам на почту mail@rps-1c.ru или звоните на телефон(он же WhatsApp) +7-923-158-67-74
Протестируйте 1С Управление Нашей Фирмой бесплатно 30 дней — https://rps-1c.ru/1capp/arenda_fresh.html
Специалисты РПС-Учет консультируют и обучают методологии работы в 1С Управление Нашей Фирмой. Для подключения техподдержки РПС-Учет или запроса консультации заполните форму:
Третий модуль: Работа с документами
Документ на платформе «1С:Предприятие 8» – это специальный вид объектов
конфигурации, предназначенный для отражения в системе событий, произошедших в
хозяйственной жизнедеятельности предприятия, и соответствует общепринятому понятию документа. Объект «Документ» однозначно определяется своим видом, номером и датой. Дата документа хранится в формате дата и время с точностью до секунды. В системе может быть создано произвольное количество различных видов документов.
Для отражения в системе факта выплаты денежных средств создадим новый
вид документов. Операция по созданию нового вида документа происходит аналогично созданию нового справочника – в окне дерева объектов конфигурации правой
кнопкой мышки на ветке «Документы» вызываем контекстное меню и выбираем
пункт «Добавить». В открывшемся окне необходимо задать «Имя» документа, т.е.
его вид. На это имя налагаются все те же ограничения, что и на имена остальных
объектов конфигурации. Назовем создаваемый документ «РасходДенег», а в качестве
«Синонима» укажем «Списание денежных средств» (рис.8.1). Далее необходимо
определить структуру нашего документа, которая задается набором его реквизитов.
Рис. 8.1. – Документ «РасходДенег»
В зависимости от назначения все реквизиты документа можно разделить на те,
для которых значение единственное, и те, значения которых являются списком. Соответственно, реквизиты документа делятся на реквизиты документа (шапки документа) и реквизиты табличной части документа (или нескольких табличных частей
документа). Например, обычно в приходной накладной указывается поставщик и перечень поступивших от него товаров. В таком случае, поставщик будет являться реквизитом шапки документа (или просто реквизитом документа), а товар – реквизитом
табличной части документа.
Для нашего нового документа списания денежных средств будем считать, что
заказчику удобнее работать с каждым платежом по отдельности, следовательно, в
этом случае документ будет иметь только реквизиты документа (и не будет иметь
табличную часть документа).
Рис. 8.2 – Настройка нумерации документа «РасходДенег»
Как мы уже говорили, для документа всегда существуют реквизиты «Дата» и
«Номер». В окне редактирования документа «РасходДенег» на закладке «Нумерация» необходимо задать следующие свойства, относящиеся к его дате и номеру
(рис.8.2):
«Автонумерация» – данный флаг включает автоматическое формирование
номера документа при его создании. Впоследствии номер может быть изменен.
«Длина номера» – максимальное количество символов, которое может занимать номер документа.
«Контроль уникальности» – этот флаг включает автоматический контроль
системой номера документа. В случае нарушения правил нумерации системой будет
выдано соответствующее предупреждение.
«Тип номера» – определяет тип данных номера документа. Это может быть
число или строка. С одной стороны, удобно, когда документы нумеруются по порядку, но бывает необходимо задавать не только числовой порядковый номер, но и буквенный префикс документа. В таком случае весь номер надо определить как строковый, т.е. практически то же самое, что и с кодом справочника.
«Периодичность» – обычно нумерация документов идет не сквозная, а в
пределах какого-то временного интервала, чаще всего года. Для реализации этого в
системе предусмотрен соответствующий механизм. Предусмотрены следующие варианты периодичности номеров:
непериодический;
в пределах года;
в пределах квартала;
в пределах месяца;
в пределах дня.
Для документа «РасходДенег» установим длину номера в 6 знаков и периодичность как «В пределах года».
Согласно поставленной перед нами задаче, необходимо вести учет взаиморасчетов с контрагентами в разрезе договоров (это надо учесть в нашем создаваемом документе). Кроме того, документ «РасходДенег» должен позволить нам выплачивать
деньги не только поставщикам, но и сотрудникам нашей организации. Для реализации этих требований необходимо создать новые реквизиты документа «РасходДенег». Нам потребуется создать три реквизита:
«Контрагент»,
«Договор»,
«Сумма».
Рис. 8.3. – Тип реквизита Контрагент
На закладке «Данные», точно так же, как это делалось и для справочника, добавляем новые реквизиты (рис 8.3). Зададим «Имя» реквизита, его тип и, в случае
необходимости, дополнительные настройки типа, например длину строки или точность числа. Поскольку в системе уже хранится информация о контрагентах и договорах, то и тип реквизитов «Контрагент» и «Договор» необходимо указать «СправочникСсылка.Контрагенты» и «СправочникСсылка.Договоры» соответственно. Для
реквизита «Сумма» потребуется не только указать тип «Число», но и «Точность»,
чтобы можно было корректно заносить суммы поступивших денег – в нашем случае
длина будет 10, точность 2. Кроме того, чтобы иметь возможность выплатить денежные средства не только контрагентам, но и сотрудникам, необходимо для реквизита
«Контрагент» поставить галочку «Составной тип данных» и ссылки на «СправочникСсылка.Контрагенты» и «СправочникСсылка.Сотрудники».
Точно так же, как и при работе со справочником, пользователь работает не
напрямую с объектом «Документ», а посредством экранной формы. Соответственно,
при работе с одним документом используется «Форма документа» (пример на рис.
8.4), а для работы с несколькими документами данного вида используется «Форма
списка» (пример рис. 8.5). Создадим эти формы далее.
Рис. 8.4. – Форма документа «Списание денежных средств»
Рис. 8.5. – Форма списка «Списание денежных средств»
В том случае, когда автоматически создаваемая форма не устраивает, имеется
возможность создать соответствующую форму в конфигураторе, используя ранее
рассмотренный механизм работы с формами. Создайте форму списка как показано на
рис. 8.6. Однако, некоторые настройки внешнего вида и поведения формы можно
указать, не создавая саму форму.
Рис. 8.6. – Документ «Расход денег»
Для того, чтобы в форме документа осуществлялся подбор только тех договоров, которые относятся к выбранному контрагенту, необходимо сделать следующую
настройку (рис. 8.7). В свойствах реквизита «Договор» необходимо установить связь
параметров выбора с «Контрагентом», который должен являться владельцем для
«Договора». Выполните эти настройки как показано на рис. 8.7.
Рис. 8.7. – Связь параметров выбора
Внесите в пользовательском режиме в программу следующие документы по
расходу денег (таблица 8.1). В тех строках, в которых столбец «Договор» не заполнен, выбирайте сотрудника, а не контрагента. Все внесенные документы должны быть проведены.
Таблица 8.1. Список документов «Списание денежных средств»
Широкие возможности по настройке списка предоставлены пользователю
непосредственно в режиме «1С:Предприятие». Для этой цели в форме списка документа необходимо нажать кнопку «Еще» и в открывшемся меню выбрать пункт
«Настройка списка». После этого, последовательно заполняя настройки по закладкам
(рис. 8.8 – рис. 8.12) пользователь может добиться того, чтобы список отображалась
наиболее удобным для него способом (рис. 8.13). Отображение вашего списка документов будет аналогично тому, как показано на рис. 8.13, однако, состав документов может отличаться.
Самостоятельно выполните все эти действия.
Рис. 8.8. – Настройка списка
Рис. 8.9. – Редактирование полей группировки динамического списка
Рис. 8.10. – Редактирование элемента условного оформления вкладка «Оформление»
Рис. 8.11. – Редактирование элемента условного оформления вкладка «Условие»
Рис.8.12. – Редактирование элемента условного оформления вкладка «Оформляемые
поля»
Рис.8.13. – «Списание денежных средств»
Следует отметить, что частично настройки списка автоматически сохраняются
платформой для каждого пользователя. Сохраняется условное оформление и условия
отбора, но сам отбор при этом отключается. При необходимости сохранения остальных настроек разработчику необходимо предпринять дополнительные действия.
Самостоятельно. Создайте документ «ПриходДенег» (синоним «Поступление денежных средств»), используя состав реквизитов из таблицы 8.2. Сначала внесите реквизиты в новый документ, потом создайте форму документа с автоматическим размещением на нем созданных реквизитов.
Таблица 8.2. Состав реквизитов документа «ПриходДенег»
Обратите внимание, что пользователь имеет возможность (в определенных пределах) изменить внешний вид формы самостоятельно (Рис. 8.15 и Рис. 8.16). Для этого необходимо выбрать пункт меню «Изменить форму» из выпадающего списка, сформированного при нажатии на кнопку «Еще». Посмотрите возможность указанных настроек, но не применяйте их по отношению к форме указанного документа.
В пользовательском режиме для созданного справочника «Валюта» создайте три валюты: Рубль, Евро и Доллар.
В нашем случае необходимо не просто настроить внешний вид формы документа, а сделать ее интерактивной – зависимой от выбранных пользователей параметров (реквизитов) документа.
Откройте форму документа в «Конфигураторе» и разместите на нем реквизиты согласно рис.8.14, используя группы элементов и их свойства. Так как реквизиты плательщика имеют смысл только в случае безналичной оплаты, то сделаем так, чтобы они были не видны во всех остальных случаях. Для того, чтобы удобнее было прятать реквизиты, сгруппируйте их согласно рис.8.17.
Рис. 8.14. – Создание документа «Поступление денежных средств»
Рис. 8.15. – Изменение формы
Рис. 8.16. – Настройка формы
До сих пор все формы, которые были рассмотрены, имели статичный внешний
вид, который был задан в конфигураторе, однако внешний вид формы может изменяться в зависимости от ситуации.
Рис. 8.17. – Группирование реквизитов
Чтобы реквизиты исчезали, когда меняется способ оплаты, задействуем обработчик события «ПриИзменении» для способа оплаты (рис. 8.18). Кроме того, для
самой формы документа создадим обработчик события «ПриОткрытии» (рис. 8.19).
Рис. 8.18. – Задействование обработчика события «ПриИзменении»
Рис. 8.19. – Создание события «ПриОткрытиии»
Текст процедур обработчиков событий в модуле формы документа «ПриходДенег» представлен ниже (для более удобного восприятия данный программный код
не оптимизирован для работы в режиме тонкого клиента). Обратите внимание на номер группы на форме документа – возможно, в вашем программном коде необходимо будет указать другой номер группы.
&НаКлиенте
Процедура СпособОплатыПриИзменении(Элемент)
Элементы.Группа4.Видимость= НоваяВидимость (Объект.СпособОплаты);
КонецПроцедуры
&НаСервере
Функция НоваяВидимость (Способ)
Если Способ = Перечисления.СпособОплаты.Безналичные Тогда
Воз=Истина;
Иначе
Воз=Ложь;
КонецЕсли;
Возврат Воз;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Элементы.Группа4.Видимость=НоваяВидимость(Объект.СпособОплаты);
КонецПроцедуры
В результате для пользователя в режиме «1С:Предприятие» внешний вид
формы будет изменяться динамически, в зависимости от действий пользователя
(рис.8.20) и выбором им разных способов оплаты.
Рис. 8.20. – Форма документа «Поступление денежных средств»
Табличная часть документа
Как уже было сказано ранее, для хранения не одного, а произвольного количество однотипных значений, мы должны использовать табличную часть. Ранее мы уже
создавали табличные части для справочника «Сотрудники», для документов табличные части создаются аналогичным образом. Для каждого документа может быть
определено произвольное количество табличных частей, каждая из которых может
содержать произвольное количество реквизитов.
Создайте новый документ «ПриходнаяНакладная». При создании накладной
обратите особое внимание на типы значений и связи элементов «Договор» и «Контрагент» между собой (посмотрите, как мы делали аналогичную связь в ранее созданных документах).
Для документа «ПриходнаяНакладная» необходимо создать табличную часть
«Товары» с реквизитами «Номенклатура», «Количество», «Цена» и «Сумма» с типами значений «СправочникСсылка.Номенклатура», «Число» 10 с точностью 3 и «Число» 10 с точностью 2 соответственно. Создание табличной части документа идентично созданию табличной части справочника. На закладке «Данные» в соответствующем окне с помощью контекстного меню создается табличная часть, а потом и ее
реквизиты (рис. 8.21).
Рис. 8.21. – Документ «Приходная накладная»
Для документа «Приходная накладная» форма будет отличаться (от ранее
созданных форм документов «Приход денег» и «Расход денег») наличием табличной
части. При работе с формой документа нам необходимо будет вывести итог колонки
«Сумма» в табличной части.
Для автоматического расчета суммы в каждой строчке табличной части необходимо задействовать обработчики событий «При изменении» для количества и цены (рис. 8.22). Хотя результат этих обработчиков должен быть одинаков, для удобства приведено два разных способа написания этого действия.
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.Сумма =
Элементы.Товары.ТекущиеДанные.Цена *
68
Элементы.Товары.ТекущиеДанные.Количество;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
СтрокаРасчета = Элементы.Товары.ТекущиеДанные;
СтрокаРасчета.Сумма = СтрокаРасчета.Цена * СтрокаРасчета.Количество;
КонецПроцедуры
Рис. 8.22. – Добавления события для реквизита «ТоварыКоличество»
Для того чтобы пользователь мог видеть не только сумму по каждой строке,
но и общую сумму документа, в свойствах таблицы «Товары» на закладке «Использование» укажем, что необходимо выводить «Подвал» (рис. 8.23).
Рис. 8.23. – Окно свойства
После чего в свойствах поля «Сумма» укажем параметр «Путь к данным подвала» как «ИтогСумма» (рис. 8.24).
Рис. 8.24. Форма документа «Приходная накладная»
Введите в пользовательском режиме документ «Приходная накладная» согласно рис. 8.25 с целью проверить работоспособность нашего программного кода.
Рис. 8.25. – Документ «Приходная накладная»
Самостоятельно. Создайте в конфигураторе документ «Расходная накладная» согласно таблице 8.3.
Таблица 8.3. Состав реквизитов документа «РасходнаяНакладная»
Документ «РасходнаяНакладная» имеет более сложную структуру, чем рассмотренный ранее документ «ПриходнаяНакладная», поэтому задействуем еще ряд
механизмов для облегчения работы пользователя.
Во-первых, для того, чтобы в табличную часть «Товары» пользователь мог
подбирать только товары, а в табличную часть «Услуги», соответственно, услуги, в
свойствах реквизитов установим параметры выбора (Рис. 8.26). То есть, в табличной
части «Товары» для реквизита «Номенклатура» в параметре выбора вам необходимо
указать «Отбор.Услуга(Ложь)». А в табличной части «Услуги» для реквизита «Услуга» в параметре выбора вам необходимо указать «Отбор.Услуга(Истина)».
Во-вторых, поскольку пользователь уже указал для каждого товара ставку
НДС, по которой товар должен продаваться, то желательно эту ставку автоматически
подставлять в документ. Для этого далее будем использовать обработчик события
«ПриИзменении» для номенклатуры в таблице «Товары».
В-третьих, необходимо произвести расчет суммы НДС, согласно указанной
ставке. Поскольку ставка НДС это ссылка на элемент справочника, то операция
умножения над ней не выполнится, поэтому мы будем обращаться к реквизиту
«Ставка», который мы ранее создали в справочнике «СтавкиНДС».
Кроме того, чтобы в форме списка пользователь мог видеть общую сумму документа, необходимо рассчитать реквизит «СуммаДокумента», для чего воспользуемся обработчиком события «ПередЗаписью». Это событие будем обрабатывать не
для формы, а для самого объекта, поэтому текст процедуры обработчика события будет находиться в модуле документа.
Рис. 8.26. – Свойства реквизита номенклатура
Самостоятельно создайте форму документа с автоматическим размещением
всех реквизитов на ней. После этого создайте процедуры модуля формы, привязывая
их к соответствующим событиям элементов табличной части «Товары».
Ниже приведен программный код в модуле формы документа:
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
СтрокаРасчета = Элементы.Товары.ТекущиеДанные;
СтрокаРасчета.Всего = СтрокаРасчета.Сумма+ СтрокаРасчета.СуммаНДС;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
СтрокаРасчета = Элементы.Товары.ТекущиеДанные;
СтавкаЧисло = ПолучитьСтавку(СтрокаРасчета.СтавкаНДС);
СтрокаРасчета.СуммаНДС = СтрокаРасчета.Сумма * СтавкаЧисло;
ТоварыСуммаНДСПриИзменении(Элемент);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСтавку(СтавкаНДС)
Возврат СтавкаНДС.Ставка / 100;
КонецФункции
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТоварыСтавкаНДСПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
СтрокаРасчета = Элементы.Товары.ТекущиеДанные;
СтрокаРасчета.Сумма = СтрокаРасчета.Цена * СтрокаРасчета.Количество;
ТоварыСуммаПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТоварыЦенаПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
СтрокаРасчета = Элементы.Товары.ТекущиеДанные;
СтрокаРасчета.СтавкаНДС =
ПолучитьСтавкуТовара(СтрокаРасчета.Номенклатура);
ТоварыСтавкаНДСПриИзменении(Элемент);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСтавкуТовара(Товар)
Возврат Товар.СтавкаНДС;
КонецФункции
Еще раз проверьте, что все необходимые модули формы привязаны к
соответствующим событиям элементов формы табличной части «Товары». Для
проверки: у вас должны быть созданы события «ПриИзменении» для следующих
элементов текущей табличной части: «СуммаНДС», «СтавкаНДС», «Сумма», «Цена»,
«Количество» и «Номенклатура». То есть всего должно быть создано 6 обработчиков
событий для указанных шести элементов. Остальные процедуры являются
вспомогательными и используются процедурами обработчиков событий.
Что касается табличной части «Услуги», то по реквизитному составу она у нас
проще табличной части «Товары». Кроме того, ставка НДС на товары всегда
одинаковая, поэтому мы не будем ее хранить в документе, а станем получать в
момент расчета суммы НДС и поля «Всего». Таким образом, для табличной части
«Услуги» нам необходимо создать только одно событие – для поля элемента
«УслугиСумма» создать в событии «ПриИзменении» процедуру
«УслугиСуммаПриИзменении» и написать там следующий программный код:
&НаКлиенте
Процедура УслугиСуммаПриИзменении(Элемент)
СтрокаРасчета = Элементы.Услуги.ТекущиеДанные;
СтрокаРасчета.СуммаНДС = ПолучитьСтавку(ПолучитьСтавкуТовара
(СтрокаРасчета.Услуга))*СтрокаРасчета.Сумма;
СтрокаРасчета.Всего = СтрокаРасчета.Сумма+ СтрокаРасчета.СуммаНДС;
КонецПроцедуры
Обратите внимание, что мы воспользовались некоторыми процедурами,
созданными для табличной части «Товары», а также использовали вложенность
процедур одну в другую. Этим самым мы познакомились с еще большими
возможностями языка платформы «1С:Предприятие 8».
Теперь откройте модуль объекта текущего документа (это можно сделать на
закладке Прочее – Модуль объекта) и напишите там следующий программный код:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента = Товары.Итог(«Всего»)+Услуги.Итог(«Всего»);
КонецПроцедуры
Создадим печатную форму для документа «Расходная накладная». Чтобы
пользователь мог формировать печатную форму документа, воспользуемся конструктором печати. Вызов конструктора осуществляется на закладке «Макеты» по
кнопке «Конструкторы» (Рис. 8.27). Далее, следуя инструкциям конструктора (Рис.
8.28 – Рис. 8.33), необходимо заполнить все необходимые поля.
Рис. 8.27. – Макет документа «Расходная накладная»
Рис. 8.28. – Конструктор печати
Рис. 8.29. – Выбор реквизитов печати в шапке
Рис. 8.30. – Выбор реквизитов табличной части «Товары»
Рис. 8.31. – Выбор реквизитов табличной части «Услуги»
Рис. 8.32. – Выбор реквизитов для печати в подвале
Рис.8.33. – Выбор группы, в которую будет входить команда
В результате работы конструктора будет создан новый макет (рис. 8.34), новая
команда и автоматически сформируется следующий программный код в модуле
команды и модуле менеджера:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполнения
Команды)
// <<_КОНСТРУКТОР_ПЕЧАТИ(Печать)
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок, ПараметрКоманды);
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
//>>
КонецПроцедуры
&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды)
Документы.РасходнаяНакладная.Печать(ТабДок, ПараметрКоманды);
КонецПроцедуры
Процедура Печать(ТабДок, Ссылка) Экспорт
// <<_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.РасходнаяНакладная.ПолучитьМакет(«Печать»);
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| РасходнаяНакладная.Дата,
| РасходнаяНакладная.Договор,
| РасходнаяНакладная.Контрагент,
| РасходнаяНакладная.Номер,
| РасходнаяНакладная.Сотрудник,
| РасходнаяНакладная.СуммаДокумента,
| РасходнаяНакладная.Товары.(
| НомерСтроки,
| Номенклатура,
| Количество,
| Цена,
| Сумма,
| СтавкаНдс,
| СуммаНдс,
| Всего
| ),
| РасходнаяНакладная.Услуги.(
| НомерСтроки,
| Услуга,
| Сумма,
| СуммаНдс,
| Всего
| )
|ИЗ
| Документ.РасходнаяНакладная КАК РасходнаяНакладная
|ГДЕ
| РасходнаяНакладная.Ссылка В (&Ссылка)»;
Запрос.Параметры.Вставить(«Ссылка», Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть(«Заголовок»);
Шапка = Макет.ПолучитьОбласть(«Шапка»);
ОбластьТоварыШапка = Макет.ПолучитьОбласть(«ТоварыШапка»);
ОбластьТовары = Макет.ПолучитьОбласть(«Товары»);
ОбластьУслугиШапка = Макет.ПолучитьОбласть(«УслугиШапка»);
ОбластьУслуги = Макет.ПолучитьОбласть(«Услуги»);
Подвал = Макет.ПолучитьОбласть(«Подвал»);
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьТоварыШапка);
ВыборкаТовары = Выборка.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
ТабДок.Вывести(ОбластьТовары,
ВыборкаТовары.Уровень());
КонецЦикла;
ТабДок.Вывести(ОбластьУслугиШапка);
ВыборкаУслуги = Выборка.Услуги.Выбрать();
Пока ВыборкаУслуги.Следующий() Цикл
ОбластьУслуги.Параметры.Заполнить(ВыборкаУслуги);
ТабДок.Вывести(ОбластьУслуги,
ВыборкаУслуги.Уровень());
КонецЦикла;
Подвал.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Подвал);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//>>
КонецПроцедуры
Рис. 8.34. – Макет печати «Расходная накладная»
Кроме того, в форме списка и в форме документа на командной панели должна появиться кнопка «Печать» (Рис. 8.35), нажатие на которую в пользовательском режиме позволяет получить печатную форму документа.
Рис. 8.35. – Появление кнопки «Печать» на панели
Внесите в пользовательском режиме три документа согласно данным из
таблицы 8.4.