Эскорт-услуги в Москве от Queens Palace


Архив

Вы сейчас просматриваете архивы рубрики «Пакеты прикладных программ».

Мар

30

Документы

Автор: admin

Документы

Документ одно из основных понятий системы «1С:Предприятие». При помощи документов организуется ввод в систему ПЕРВИЧНОЙ информации о совершаемых хозяйственных операциях.

(Забегая вперед, скажем, что данные «принятые к учету» хранятся в регистрах).

В большинстве своем документы, которые создаются в процессе настройки конфигурации, являются электронными аналогами стандартных бумажных документов, однако, использование этого типа данных может выходить далеко за рамки простой фиксации информации о хозяйственных операциях.

Дата и время наиболее важные характеристики документов, так как позволяют устанавливать временную последовательность совершения операций. Т.е. документ это объект, который характеризуется положением во времени. У документа может быть любое количество табличных частей.

Общий порядок работы при определении к конфигурации новых документов имеет много общего с определением справочников.

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

Документ «ПоступлениеТоваров»

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

Реквизиты (определяются на странице «Данные» конструктора)

•    «ВидОперации» (тип «ПеречислениеСсылка.ВидыПоступления»)

•     «Контрагент» (тип «СправочникСсылка.Контрагенты»)

•     «Договор» (тип «СправочникСсылка.ДоговораВзаиморасчетов»)

•    «СуммаДокумента» (тип «Число» длина 16, точность 2, неотрицательное)

Табличные части

Товары

Номенклатура (тип «СправочникСсылка.Номенклатура»)

•    ЕдиницаИзмерения (тип «СправочникСсылка.ЕдиницыИзмерения»)

•    Цена (тип «Число» длина 15, точность 2, неотрицательное)

•    Количество (тип «Число» длина 15, точность 3, неотрицательное)

•    Сумма (тип «Число» длина 15, точность 2, неотрицательное) Услуги

Услуга (тип «СправочникСсылка.Номенклатура»)

•    Цена (тип «Число» длина 15, точность 2, неотрицательное)

•    Количество (тип «Число» длина 5, точность 0, неотрицательное)

•    Сумма (тип «Число» длина 15, точность 2, неотрицательное)

На закладке движения в свойство «Проведение» оставим значение «Разрешить» (хотя проведение документов будем рассматривать позже).

Перейдем к закладке «Формы» и приступим к созданию форм документа. Запустив конструктор форм документов, можно увидеть состав их типов.

•    Произвольная форма это форма без основного реквизита.

•    Форма списка документа отображает список документов данного вида.

Форма  выбора  документа  используется  для  организации  диалога  выбора документа.

•    Форма документа используется для работы с отдельно взятым документом (можно   провести   некоторую   аналогию   этой  формы   с   формой  элемента справочника).

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

Форма документа

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

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

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

Далее на освободившееся место добавьте элемент управления «Панель» (с панели инструментов кнопкой D, или раздел главного меню «Форма», пункт «Вставить элемент управления»). Получится приблизительно следующее:

На рисунке показан элемент управления «Панель» сразу же после его размещения на форме. Добавьте вторую страницу в данной панели. Для этого выполните щелчок правой клавишей мыши внутри области панели и выберите в открывшемся контекстном меню пункт «Добавить страницу».

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

Откройте свойства размещенного элемента управления «Панель». Обратите внимание на группу свойств «Текущая страница»

Используя свойство «Заголовок страницы» определите у первой страницы заголовок «Товары», у второй «Услуги».

Страницу «Товары» сделайте текущей. Зайдите в раздел главного меню программы «Форма», выберите пункт «Размещение данных». В открывшемся окне отметьте табличную часть товары (обязательно раскройте саму табличную часть и отметьте все реквизиты табличной части).

Нажмите кнопку «ОК» и «нарисуйте» табличное поле внутри первой страницы панели таким образом, что бы сверху (но в рамках страницы «Товары») можно было разместить еще и командную панель.

После этого на подготовленное место поместите саму командную панель (меню «Форма», размещение элементов управления). В свойствах размещаемой командной панели управления следует отметить следующее:

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

После всех выполненных операций должно получиться что-то похожее:

Задача № 10.

Проделайте  аналогичные действия  для второй закладки  панели (разместите  на  нее табличную часть «Услуги», определите командную панель размещенной табличной частью)

Но на этом работа с диалогом еще не закончилась. Будем отображать сумму документа (значение реквизита) в элементе управления «Надпись».

Для этого данный элемент управления разместить в нужном месте диалога (справа от надписи «Сумма документа»).

Далее необходимо в его свойствах в свойство «Данные» подставить значение «СуммаДокумента» (как показано на рисунке на предыдущей странице).

В документе есть два реквизита: «Контрагент» (тип «СправочникСсылка .Контрагенты») и «Договор» (тип «СправочникСсылка.Договора»). При этом справочник «Договора» подчинен справочнику «Контрагенты». В связи с этим было бы неплохо, чтобы после выбора контрагента, при выборе договоров были доступны только договора этого контрагента. На данном этапе не будем рассматривать все последовательности выбора (первоначально договор, а потом контрагент и т.д), ограничимся этим простым случаем.

Необходимо в свойствах элемента управления (поля ввода), связанного с договорами в свойство «Связь по владельцу» установить значение «Контрагент».

Обратите внимание на то, что в форме выбора связи была выбрана страничка «Данные» (владелец будет «браться» из реквизита формы «Контрагент»). Страничка «События» используется тогда, когда необходимо привязаться именно к какому-то событию в списках (табличном поле), например «переход на другую строку» (При активизации строки) и т.д.

Обработчики событий формы документа

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

Все эти механизмы реализуются с помощью обработчиков событий формы документа. Напомним, что данные процедуры могут иметь произвольные имена, главное чтобы эти имена были указаны в соответствующих свойствах (группа «События») формы или необходимых элементов управления. Рекомендуем определение обработчиков событий начинать именно с диалога (с соответствующих свойств).

Текст процедур обработчиков событий приведен ниже:

Процедура  ТоварыНоменклатураПриИзменении(Элемент)

СтрокаТЧ=ЭлементыФормы.Товары.ТекущиеДанные;

СтрокаТЧ.ЕдиницаИзмерения=СтрокаТЧ.Номенклатура.ЕдиницаХраненияОстатков;

КонецПроцедуры

Процедура  ТоварыЕдиницаИзмеренияПриИзменении(Элемент)

СтрокаТЧ=ЭлементыФормы.Товары.ТекущиеДанные;

Измененная=СтрокаТЧ.ЕдиницаИзмерения.ЕдиницаПоКлассификатору;

База=СтрокаТЧ.Номенклатура.БазоваяЕдиницаИзмерения;

Если Измененная< >База  Тогда

Сообщить(У  выбираемой  единицы измерения  не  совпадает базовая!!!);

СтрокаТЧ.ЕдиницаИзмерения=

СтрокаТЧ.Номенклатура.ЕдиницаХраненияОстатков;

КонецЕсли;

КонецПроцедуры

Процедура  ТоварыЦенаПриИзменении(Элемент)

СтрокаТЧ=ЭлементыФормы.Товары.ТекущиеДанные;

СтрокаТЧ.Сумма=СтрокаТЧ.Цена*СтрокаТЧ.Количество;

СуммаДокумента=Товары.Итог(Сумма)+Услуги.Итог(Сумма);

КонецПроцедуры

Процедура  УслугиЦенаПриИзменении(Элемент)

СтрокаТЧ=ЭлементыФормы.Услуги.ТекущиеДанные;

СтрокаТЧ.Сумма=СтрокаТЧ.Цена*СтрокаТЧ.Количество;

СуммаДокумента=Товары.Итог(Сумма)+Услуги.Итог(Сумма);

КонецПроцедуры

Модуль объекта

Немногим ранее была настроена форма документа, и в ряде обработчиков событий был определен механизм расчета общей суммы документа. Они «прекрасно» отрабатывают, когда документ заводится интерактивно (пользователь явно выполняет определенные действия в форме). Но, а если возникнет необходимость заполнять документ программно, что тогда? Можно сумму документа рассчитывать «извне» и записывать принудительно, но можно поступить и по другому, через соответствующие обработчики событий модуля объекта (либо используя подписку на события).

Поставим перед собой задачу: «Сумма документа должна считаться ВСЕГДА, не важно интерактивно или программно записывается документ»

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

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

Напоминаем, что имя обработчика события в модуле объекта не может быть произвольным, оно должно быть именно «ПередЗаписьюО». Да и вставлять его «вручную» не стоит. Открываете форму объекта конфигурации «Документ Поступление товаров», закладка «Прочие», кнопка «Модуль объекта».

После открытия модуля документа нужно в командной панели найти кнопку «Процедуры и функции». Нажать ее и в открывшейся форме выбрать интересующее вас событие. После выбора нажать на кнопку «Перейти» (можно использовать двойной щелчок левой клавишей мыши).

Документ «РеализацияТоваров»

Новый документ в конфигурации можно завести двумя путями: создав новый, либо скопировав уже существующий. Для копирования необходимо в дереве объектов сделать текущим копируемый документ и в панели инструментов воспользоваться кнопками «Копировать» и «Вставить» (соседняя кнопка).

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

Задача № 11

Создайте путем копирования документ «РеализацияТоваров» (данный документ в первую очередь предназначен для ввода данных об операции продажи товара)

Состав данных:

Реквизиты (определяются на странице «Данные» конструктора)

•    «ВидОперации» (тип «ПеречислениеСсылка.ВидыРеализации»)

•     «Контрагент» (тип «СправочникСсылка.Контрагенты»)

•     «Договор» (тип «СправочникСсылка.ДоговораВзаиморасчетов»)

•    «СуммаДокумента» (тип «Число» длина 16, точность 2, неотрицательное)

Табличные части

Товары

Номенклатура (тип «СправочникСсылка.Номенклатура»)

•    ЕдиницаИзмерения (тип «СправочникСсылка.ЕдиницыИзмерения»)

•    Цена (тип «Число» длина 15, точность 2, неотрицательное)

•    Количество (тип «Число» длина 15, точность 3, неотрицательное)

•    Сумма (тип «Число» длина 15, точность 2, неотрицательное)

Обратите   внимание   на   отсутствие   табличной   части   «Услуги».   Поправьте   все механизмы (обработчики событий), поправьте диалог формы.

С помощью конструктора печати (на странице «Макеты» конструктора объекта конфигурации) определите печатную форму для созданного документа.

На первой странице конструктора необходимо выбрать вариант создания процедуры в модуле объекта.

После того, как пройдены все этапы создания печатной формы, создается макет, в модуле объекта определяется процедура «Печать» (обратите внимание на наличие ключевого слова «Экспорт»). Вызов процедуры на данном этапе еще не определен.

Откройте основную форму документа. В нижней командной панели (там где расположены кнопки «Ок», «Записать») определите новую кнопку «Печать».

В качестве обработчика события укажите следующую процедуру:

Процедура ОсновныеДействияФормыДействие(Кнопка)

Печать();

КонецПроцедуры

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

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

Управление видимостью элементов управления

Документ «РеализацияТоваров» может фиксировать две операции (в рамках курса):

•    Реализация   розница   (при   розничной   продаже,   т.е.   продаже   обычному покупателю физическому лицу)

•    Реализация продажа (отгрузка товара контрагенту)

Будем (в рамках курса) считать, что при оформлении розничной продажи реквизиты «Контрагент» и «Договор» заполняться не должны. И чтобы они «не мешались», будем «прятать» их.

Для этого определите в качестве обработчика события «При открытии» формы следующую процедуру:

Процедура ПриОткрытии()

ЗначениеВидимости  = Не(ВидОперации=

Перечисления.ВидыРеализации.РеализацияРозница);

ЭлементыФормы.Контрагент.Видимость=ЗначениеВидимости;

ЭлементыФормы.Договор.Видимость=ЗначениеВидимости;

КонецПроцедуры

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

Эту же процедуру определите как обработчик события «При изменении» для элемента управления «ВидОперации» (в соответствующее свойство необходимо вписать «вручную», а не выбрать, имя процедуры).

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

Проверьте полученный результат.

Задача № 12

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

Ввод на основании

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

Создайте новый документ. Определите у него имя «ПКО» (приходный кассовый ордер). Состав данных следующий:

Реквизиты.

•    ДокументОснование тип «ДокументСсылка.РеализацияТоваров»

•    «Контрагент» (тип «СправочникСсылка.Контрагенты»)

•     «Договор» (тип «СправочникСсылка.ДоговораВзаиморасчетов»)

«СуммаДокумента» (тип «Число» длина 16, точность 2, неотрицательное)

При определении основной формы документа настройте связь между контрагентом и договором.

Будем считать, что данный документ «регистрирует» прием наличных денег. Заполняется при продаже каждому контрагенту или на каждый документ, содержащий розничные продажи.

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

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

Для настройки механизма ввода на основании откройте страницу «Ввод на основании» конструктора объекта конфигурации «ПКО». Нажав кнопку командной панели «Редактировать список», расположенную над списком «Вводится на основании», определите состав «оснований» («РеализацияТоваров»).

Далее необходимо запустить конструктор ввода на основании (одноименная кнопка, расположенная на этой же закладке). В диалоге конструктора указать соответствие реквизитов документов:

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

После того как проставите необходимые соответствия и нажмете на кнопку «Ок» конструктора в модуле документа «ПКО» (объекта вводимого на основании) сформируется процедура «Обработка заполнения».

Процедура  ОбработкаЗаполнения(Основание)

//{{___КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ

//  Данный  фрагмент  построен  конструктором.

//   При  повторном использовании  конструктора,   внесенные вручную изменения   будут  утеряны!!!

Если  ТипЗнч(Основание)   = Тип(ДокументСсылка.РеализацияТоваров)

Тогда

//  Заполнение  шапки

Договор   =  Основание.Договор;

Контрагент  =  Основание.Контрагент;

ДокументОснование   =   Основание.Ссылка;

СуммаДокумента  =  Основание.СуммаДокумента; КонецЕсли;

//}}___КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ

КонецПроцедуры

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

Сравниваются в условии именно типы.

Задача № 13

Создайте документ «РКО» (расходный кассовый ордер). Состав реквизитов аналогичный документу «ПКО», но водится он на основании документа «ПоступлениеТоваров»

Мар

30

Перечисления

Автор: admin

Перечисления

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

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

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

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

Займемся первым списком.

Перечисление создается общим для всех объектов конфигурации порядком (пункт «добавить» в контекстном меню на ветви «Перечисления» объектов конфигурации).

В открывшемся окне конструктора на первой странице указывается имя («ВидыПоступления»), синоним всего списка. На второй странице определяются непосредственно сами значения списка.

В  рамках данного  задания у  перечисления  необходимо  определить  следующие значения:

•    Покупка

•    ОтветственноеХранение

•    НаКомиссию

Окно свойств при определении значения перечисления (позиции фиксированного списка), выглядит следующим образом:

Пользователь при работе с элементами перечисления будет видеть синонимы (если они определены).

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

Получить    значение    элемента    перечисления    из    программного    кода,    можно воспользовавшись строкой:

Перечисления.ВидыПоступления.НаКомиссию

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

Задача №9

Создайте новое перечисление «ВидыРеализации». Определите у него два значения:

•    РеализацияПродажа

•    РеализацияРозница

Мар

30

Справочники

Автор: admin

Справочники

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

Знакомство со справочниками начнем с создания справочника «КлассификаторЕдиницИзмерения». Для создания нового справочника необходимо выполнить щелчок правой клавишей мыши на ветви «Справочники», в открывшемся контекстном меню выбрать «Добавить».

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

Далее переходим на страничку «Данные» (другие будем рассматривать позже).

На данной страничке определяется длина кода справочника, длина наименования (максимальная длина наименования 150 символов), состав реквизитов, состав табличных частей (их количество, состав реквизитов табличной части).

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

Для данного справочника добавим один реквизит «НаименованиеПолное». Для добавления можно воспользоваться кнопкой «Добавить» командной панели, расположенной непосредственно над окном реквизитов.

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

С   большинством   из   этих   свойств   уже   приходилось   сталкиваться,   поясним следующие:

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

Индексировать. Возможные значения: Не индексировать, Индексировать, Индексировать с доп. упорядочиванием.Индексирование ускоряет сортировку и отбор по данному реквизиту (необходимо для использования ряда методов). «Индексирование с доп. упорядочиванием» отличается от «Индексировать» тем, что значения с одинаковыми индексами дополнительно упорядочиваются по основному представлению.

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

На     закладке      «Подсистемы»      необходимо      отметить      принадлежность      к соответствующим подсистемам.

Важно. Далее по ходу курса акцент на подсистемах производиться не будет. К каким подсистемам относить создаваемый объект определяйте самостоятельно.

На данной странице (нажав на соответствующую кнопку) можно перейти к тексту модуля объекта (данный модуль может содержать описание обработчиков событий, процедур, функций, переменных объявленный с ключевым словом «Экспорт», доступных в контексте объекта). Нажав на кнопку «Предопределенные» можно работать со списком так называемых предопределенных элементов (такие элементы заводятся в конфигураторе и не могут быть удалены или помечены на удаление пользователем).

Зайдите в список предопределенных элементов. Воспользуйтесь либо клавишей «Insert» либо кнопкой на панели инструментов «Добавить». Определите два предопределенных элемента «штуки» и «граммы».

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

ПредЭлем=Справочники.ИмяСправочника.ИмяПредопределенногоЭлемента;

Задача №3

Создайте справочник «ЕдинщыИзмерения». Справочник без иерархии, не имеет владельцев. У него определены следующие реквизиты:

• ЕдиницаПоКлассификатору

(тип СправочникСсылка.КлассификаторЕдинщИзмерения )

•  Вес (тип « Число», длина 15, точность 3)

• Коэффициент (тип «Число», длина 10, точность 3)

Предопределенных элементов нет

Формы справочников

Определяя объект конфигурации, вы фактически определяете структуру будущих элементов (состав данных, который будет в них храниться и т.п.). Как теперь их можно использовать в режиме 1C предприятие?

Пока не определено ни одного интерфейса работа со справочниками начинается с пункта главного меню программы «Операции/Справочники»

После этого открывается окно, в котором предлагается выбрать вид справочника:

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

Если выбран режим редактирования «В диалоге», то каждый элемент справочника будет редактироваться в отдельном окне (форме элемента). Если выбран режим «В списке», то редактирование и добавление будет производиться непосредственно в самом списке. «Обоими способами» означает, что какой из вариантов будет использоваться, уточняется в конкретной форме списка.

Формы не обязательно создавать явно. Если не предъявляются особые требования к внешнему виду, форма не обладает каким-либо специфическим поведением, то вполне можно использовать те формы, которые система создает автоматически (на лету). Но попробуем все-таки явно создать форму, форму элемента. Для этой цели воспользуемся кнопкой командной панели «Добавить», расположенной над окном форм. В открывшемся конструкторе форм справочника необходимо выбрать тип форм «Форма элемента», сделать форму основной, отметить флаги о расположении командных панелей.

Проверьте полученный результат в пользовательском режиме.

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

Задача №4

Создайте справочник «Номенклатура». Справочник без иерархии, не имеет владельцев. У него определены следующие реквизиты:

•    НаименованиеПолное (тип «Строка», дина 200, длина переменная )

•    Артикул (тип «Строка», длина 25, индексировать с доп. упорядочиванием)

•    ЕдиницаХраненияОстатков (тип «СправочникСсылка.ЕдинщыИзмерения»)

•    БазоваяЕдинщаИзмерения (тип «СправочникСсылка.Классификатор. ЕдиницИзмерения»)

•    Весовой (тип «Булево»)

•    Услуга (тип «Булево»)

•  Комментарий (тип «Строка» неограниченной длины) Предопределенных элементов нет

Определите форму списка, выбора, элемента

Посмотрите как работает справочник в пользовательском режиме.

ВАЖНО!!! Следует понимать, что мы автоматизируем «мифическую» организацию (основная задача: познакомиться с системой, а не написать полнофункциональное решение). В реальных задачах нужно очень внимательно относится в составу реквизитов, их типам (например, обычно для номенклатуры не достаточно в качестве длины наименования указывать значение 40 символов (значение по умолчанию))

Иерархия справочников

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

Для того, чтобы у справочника появилось понятие иерархии необходимо отметить флаг «иерархический справочник». Далее можно определить один из двух возможных видов иерархии:

•   Иерархия групп и элементов  (существует понятие группы и элемента,  в качестве родителя может выступать только группа)

Иерархия элементов (существует только понятие элемента, в качестве родителя может выступать элемент).

По умолчанию количество уровней иерархии не ограничено, при желании можно отметить флаг «Ограничить количество уровней иерархии» и выставить это количество.

Справочник «Номенклатура» определите как иерархический, иерархия групп и элементов, количество уровней не ограничено.

Задача №5. Создайте справочник «Подразделения». Справочник с иерархией, иерархия элементов, не имеет владельцев. У него не определен ни один реквизит. Редактируется в диалоге.

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

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

Задача №6

Создайте  справочник  «ДоговораВзаиморасчетов».   Справочник без  иерархии,   не  имеет владельцев. У него определен реквизит:

•    Комментарий (тип «Строка» неограниченной длины) Предопределенных элементов нет

Создайте   справочник   «Контрагенты».   Справочник   иерархический,   иерархия   групп   и элементов, не имеет владельцев. У него определены следующие реквизиты:

•     ОсновнойДоговор (тип «СправочникСсылка. ДоговораВзаиморасчетов»)

•    Комментарий (тип «Строка» неограниченной длины) Предопределенных элементов нет

Подчиненные справочники

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

Необходимо открыть страницу «Владельцы» конструктора справочника «ДоговораВзаиморасчетов».

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

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

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

Табличные части справочников

Модифицируем справочник «Контрагенты», а именно создадим табличную часть «Контактные Лица». Для этого откроем страницу «Данные» конструктора справочника «Контрагенты». Обратите внимание на область «касательную» табличным частям.

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

Необходимо добавить табличную часть «КонтактныеЛица» и определить у нее следующие реквизиты:

•    Контакт (тип «Строка», переменная длина 50)

•    Телефон (тип «Строка», переменная длина 20)

•    Email (тип «Строка», переменная длина 20)

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

Работа со справочником из встроенного языка

Работа со справочником из встроенного языка начинается со свойства глобального, контекста «Справочники». При обращении к данному свойству возвращается значение, которое имеет тип «СправочникиМенеджер» (множественное число).

У данного объекта столько свойств, сколько справочников определено в конфигураторе. При обращении к данному свойству можно получить значение, имеющее тип «СправочникМенеджер.ИмяСправочника» (единственное число).

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

Если выполнить метод Выбрать() объекта «СправочникМенеджер.Имя», то он вернет объект «СправочникВыборка.Имя» и т.д.

Важно помнить, что очень часто использование какого-либо метода приводит к тому, что он возвращает объект. Этот объект необходимо получить и продолжить работать (в нашем случае со справочником). Получая объект всегда необходимо знать его тип. Каждый из объектов обладает определенной специализацией.

Например,          объект,          имеющий         тип «СправочникВыборка.Имя», позволяет работать с выборкой из справочника, и только на чтение.

Объект  с  типом  значения «СправочникОбъект.Имя»  позволяет модифицировать «запись» справочника. Объект с типом значения «СправочникСсылка» позволяет работать с «записью» справочника на чтение и т.д.).

Рассмотрим прикладной пример: необходимо получить наименования из справочника «Номенклатура». Сделать это можно по разному. Например, каждый из «промежуточных» объектов можно сохранять в какой-либо переменной:

МенеджерСправочников=Справочники;

МенеджерНоменклатуры= МенеджерСправочников.Номенклатура;

Выборка= МенеджерНоменклатуры.Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(Выборка.Наименование);

КонецЦикла;

Запись можно сократить, заменив первые три строки одной, при этом получив:

Выборка =Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(Выборка.Наименование);

КонецЦикла;

1    -   сразу   получаем   выборку   справочника   (объект   имеющий   тип   значения «СправочникВыборка.Номенклатура»)

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

Если необходимо заменить все наименования справочника, то код будет выглядеть следующим образом:

Выборка   =Справочники.Номенклатура.Выбрать();

Пока  Выборка.Следующий()   Цикл

НаИзменение=  Выборка.ПолучитьОбъект();

НаИзменение.Наименование=  «Новое»;

НаИзменение.Записать();

КонецЦикла

Формирование печатных форм

Для формирования печатных форм в системе используются два объекта: «Макет» и «Табличный документ». Следует отметить, что «Макет» является объектом метаданных, чаще всего содержащим внутри себя «Табличный документ».

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

Если тоже самое выразить в терминах 1C предприятия 8, то получится следующее.

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

Более подробно будем знакомиться с процессом формирования печатных форм на примере печати справочника номенклатуры.

Предварительно необходимо (обязательно) явно определить форму списка справочника «Номенклатура».

Откройте страницу «Макеты» конструктора справочника «Номенклатура». Внизу формы необходимо нажать на кнопку «Конструкторы» и выбрать «Конструктор печати».

В  открывшемся  окне конструктора необходимо  отметить,  что  создается новая процедура в модуле формы списка. Имя процедуры «Печать».

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

На третьей закладке конструктора необходимо проставить ряд полезных флажков:

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

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

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

Далее необходимо зайти в свойства командной панели. Обратите внимание на рамку выделения элемента управления и на заголовок окна свойств, там должно быть «Свойства: Командная панель».

Измените способ выравнивания кнопок в панели на «Справа».  Далее откройте свойства «конструктора кнопки». В свойствах в свойство «Действие» выберите «Закрыть».

В свойство отображение необходимо выбрать значение «Надпись и картинка».

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

Задача № 7

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

Если правильно выполнить практикум №7, то в пользовательском режиме (при заполненном справочнике «номенклатура») при нажатии на кнопку «Печать» будет формироваться печатная форма справочника.

Рассмотрим теперь, как созданный нами механизм печати работает. Начнем с макета. Если открыть страничку «Макеты» конструктора справочника «Номенклатура», то с нее можно открыть созданный конструктором печати макет (он называется «Печать»). Выглядит он следующим образом:

В общем случае макет представляет собой таблицу, в которой определена коллекция именованных областей. Под именованной областью понимается прямоугольная область, которой в свойствах (этой области) было задано какое-либо имя.

Одним из других важных свойств у ячейки макета является свойство «Заполнение». Возможными значениями является:

•    Текст в этом случае считается, что ячейка содержит текст, не подлежащий ни какой обработке

•    Параметр в этом случае в ячейку записывается имя параметра (потом при получении   именованной   области   этому  параметру   должно   быть   явно присвоено значение).

•    Шаблон    -    содержит    конструкцию    :    текст    [ИмяПараметра!]    текст [ИмяПараметра2]

Кроме  этого  в  ячейке   (строке)   можно   определять  так  называемый   «параметр расшифровки».

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

Отображение дополнительных величин

Иногда возникает необходимость вынесения в диалог формы дополнительных (чаще всего расчетных) величин. При работе в программном комплексе «1С:Предприятие» 8 можно сказать, что форма состоит «из двух частей»: что отображается (данные) и чем отображается (элементы управления). Для того, что бы «что-то» отобразить на форме, это «что-то» должно быть представлено в «обеих частях» формы. Если отображаемая величина не хранится в базе данных, а рассчитывается, то тогда должна быть процедура, которая этот расчет производит. Мало этого, эта процедура должна быть привязана к каким либо событиям формы (по наступлению которых производится либо начальный расчет, либо перерасчет).

Познакомимся с реализацией подобных механизмов на примере отображения в форме элемента справочника «Номенклатура» коэффициента или веса выбранной единицы измерения хранения остатков.

Необходимо открыть форму элемента справочника номенклатура. Это можно сделать непосредственно из дерева объектов конфигурации, либо со страницы «Формы» конструктора справочника «Номенклатура».

Т.к. хранить коэффициент или вес в элементе справочника «Номенклатура» смысла нет, то откроем третью закладку формы элемента и определим реквизит «Показатель» (тип «Число», длина 15 точность 3).

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

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

Перечень элементов данных для элемента управления «Надпись» приведен далее

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

Начнем с определения события (событий), которые можно использовать для инициализации процедуры расчета (перерасчета). Остановимся на событии «ПриИзменении» элемента управления «ЕдиницаХраненияОстатков». Одного этого события будет мало, т.к. в этом случае процедура будет вызываться при изменении значения в элементе управления. Для того, чтобы показатель рассчитывался (и отображался) при открытии формы заполненного элемента справочника необходимо задействовать дополнительно (написать процедуру обработчик) событие «ПриОткрытии» самой формы.

Исходя из предположения, что расчет значения показателя может нам потребоваться и в других случаях (в формах других объектов) определим саму процедуру расчета в общем модуле:

Создадим общий модуль «ПоНоменклатуре» (внутри ветви «Общие» ветвь «Общие модули»).

Определим в общем модуле следующий текст функции

Функция   РасчетПоказателя (Вес, Элемент)   Экспорт

Если  Элемент. Пустая ()   Тогда

Возврат (0)

КонецЕсли;

Если  Вес   Тогда

Возврат (Элемент. Вес) ;

Иначе

Возврат (Элемент . Коэффициент) ;

КонецЕсли;

КонецФункции

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

При этом автоматически будет создано описание процедуры обработчика события (Рекомендуем действовать именно в такой последовательности, т.к. при этом процедура обработчик создается со всеми возможными в данном случае параметрами). То же самое необходимо проделать со свойством «При открытии самой формы элемента.

Далее остается дописать текст в созданные описания процедур

Процедура ЕдиницаХраненияОстатковПриИзменении(Элемент)

Показатель= ПоНоменклатуре.РасчетПоказателя (Весовой, ЕдиницаХраненияОстатков) ;

КонецПроцедуры

Процедура ПриОткрытии()

Показатель= ПоНоменклатуре.РасчетПоказателя(Весовой,ЕдиницаХраненияОстатков);

КонецПроцедуры

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

После окончания выбора возникает событие «При изменении». В соответствии, что данному событию поставлена в свойствах процедура обработчик события, она вызывается. В ней  в элемент данных записывается результат выполнения (объявленной с ключевым словом «Экспорт» в общем модуле) функции «РасчетПоказателя». При этом первый передаваемый параметр соответствует свойству «Весовой» основного реквизита (значению реквизита «Весовой»), второй значению вновь выбранной единице измерения.

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

К примеру:

Наим=Наименование; ЭлУпр=ЭлементыФормы.Наименование;

В переменную наименование будет получено значение наименования элемента справочника, например «карандаш». В переменную ЭлУпр будет получен объект, позволяющий манипулировать элементом управления (изменять цвет, шрифт, положение, размеры и т.д.).

Рассмотрим механизм работы функции:

1 Определяется функция как экспортная (наличие ключевого слова «Экспорт»), при этом   указываются   имена   параметров,   куда  будут   приниматься   передаваемые значения.

2  - Используется метод Пустая() объекта «СправочникСсылка.ЕдиницыИзмерения» для определения не передавалась ли пустая ссылка, если «Истина» то функция возвращает значение «О».

Следует отметить: как вам не хотелось в разных ситуациях возвращать из функции значения различных типов, делать это не рекомендуется (считается очень плохим стилем программирования).

3 проверяется весовой товар или нет

4 если товар весовой возвращается значение свойства «Вес»

5 если товар не весовой, возвращается значение свойства «Коэффициент».

Задача №8

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

Мар

30

Встроенный программный язык

Автор: admin

Встроенный программный язык

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

Необходимость наличия встроенного языка определена концепцией настраиваемости системы. Язык является предметно-ориентированным. Он поддерживает специализированные типы данных предметной области, определяемые конфигурацией системы. Работа с этими типами данных в языке организована с использованием объектной техники.

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

Программный код всегда помещается в «модули». Модуль в общем случае состоит из трех областей:

•    Область определения переменных

•    Область определения процедур, функций

•   Основной текст модуля (код, не включенный в тело процедур, функций). Переменные определяются с использованием ключевого слова «Перем»

Перем     А;

Имена переменных могут состоять из букв, цифр, символов подчеркивания «_». Имена не должны совпадать с зарезервированными словами и должны начинаться либо с подчеркивания, либо с буквы. Явное определение переменных не обязательно. Встроенный язык не чувствителен к регистру. После каждого оператора ставится символ «;». Встроенный язык поддерживает определение процедур, функций (для определения воспроизводимых фрагментов кода).

Процедура ИмяПроцедуры (ИмяПараметра1,.)

// текст комментария

тело процедуры

КонецПроцедуры

Функция ИмяФункции (ИмяПараметра1,)

тело функции

Возврат(ВозвращаемоеЗначение);

КонецФункции

В нем реализованы операторы ветвления (Если), циклов (Для, Для Каждого, Пока) и

т.д.

Если Условие1 Тогда

//код выполняемый в случае истинности условия «Условие1»

ИначеЕсли Условие2 Тогда

//код выполняемый в случае истинности условия «Условие2»

Иначе

//код выполняемый в остальных случаях

КонецЕсли;

Для ПеременнаяСчетчик=НачальноеЗначение По Конечное Цикл

// тело цикла

КонецЦикла;

Для Каждого ПеременнаяЦикла Из ИмяКоллекции Цикл

//тело цикла

КонецЦикла;

Пока УсловиеЦикла Цикл

//тело цикла

КонецЦикла;

Место размещения конкретного программного модуля предоставляется конфигуратором в тех точках конфигурации, которые требуют описания специфических алгоритмов функционирования. Эти алгоритмы следует оформлять в виде процедур или функций, которые будут вызваны самой системой в заранее предусмотренных ситуациях.

Виды модулей

Существуют модули различных видов:

Модуль приложения.

Модуль располагается в корневом разделе конфигурации. В нем располагаются процедуры-обработчики событий, которые инициализируются при старте и окончании работы системы, определения (в том числе с ключевым словом «Экспорт») переменных, процедур, функций доступных в ряде других модулей конфигурации (исключение составляют глобальные общие модули и общие модули со снятым флагом «Клиент»). В нем не рекомендуется реализовывать процедуры, функции, выполняющие обработку данных (необходимые расчеты).

Модуль внешнего соединения.

В модуле могут располагаться экспортируемые переменные, процедуры и функции, а также процедуры-обработчики событий «ПриНачалеРаботыСистемы()» и «ПриЗавершенииРаботыСистемы()», используемые в режиме внешнего соединения (когда к 1С:Предприятию обращаются через СОМ).

Модуль сеанса.

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

Общие модули.

Располагаются в отдельной ветви дерева метаданных. Содержат определения процедур и функций. Те из них, которые определены с использованием ключевого слова «Экспорт» доступны из всех модулей конфигурации, в том числе из модуля приложения. Общие модули могут быть глобальными, тогда обращение к процедуре, определенной в нем с ключевым словом «Экспорт» производится по имени процедуры, функции.

В другом  случае:

«ИмяОбщегоНеГлобальногоМодуля.ИмяПроцедурыФункции».

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

Если используется клиент-серверный вариант системы 1С:Предприятие, то с помощью свойств «Клиент» и «Сервер», а также указаний препроцессору (директивы #Если Сервер Тогда . И #Если Клиент Тогда) можно организовывать выполнение различных процедур и функций общих модулей на сервере приложения или на клиентском месте.

Модули объектов.

Модули располагаются в ветках конфигурации, в которых содержатся сами объекты (к ним относятся справочники, документы, отчеты, обработки и т.д).

Модули набора записей.

Модули присутствуют у регистров любого вида. В них могут быть определены предопределенные процедуры «ПриЗаписи», «ПередЗаписью».

Модули форм.

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

Контекст выполнения модуля

Каждый программный модуль связан с остальной частью конфигурации. Эта связь называется контекстом выполнения модуля. Различают два вида контекста:

Глобальный контекст. Образуется из значений свойств и методов глобального контекста функциями встроенного языка и языковыми конструкциями, переменными, процедурами и функциями программного модуля приложения, процедурами и функциями общих модулей, объявленных с помощью ключевого слова «Экспорт».

Локальный контекст модуля. Образуется тем конкретным местом конфигурации, для которого использован программный модуль. Локальный контекст определяет набор доступных только данному модулю объектов.

Следует отдельно отметить, что еще существует понятие «контекст процедуры, функции».

Работа с константами из встроенного языка

Поставим перед собой следующую задачу: при записи констант в форме констант будем проверять заполнена ли константа «НазваниеОрганизации». При запуске системы будем проверять заполнение констант, содержащих адреса. И в случае их незаполненности будем сообщать об этом.

Прежде чем приступить к решению поставленной задачи рассмотрим, какие средства предоставляет встроенный язык для работы с константами. Это можно сделать в синтакс-помощнике (его вызов размещен в разделе «Справка» главного меню программы).

В глобальном контексте есть свойство «Константы», при обращении к которому можно получить значение (объект), имеющее  тип «КонстантыМенеджер». У данного объекта столько свойств, сколько определено констант. При обращении к такому свойству можно получить объект, имеющий тип значения «КонстантаМенеджер.Имя константы». Соответствующая ветвь присутствует в синтакс помощнике. У такого объекта есть два метода:

•    Получить() позволяет прочитать значение константы

•   Установить(Значение) позволяет записать значение в константу. Пример чтения значения из константы:

Знач=Константы.НазваниеОрганизации.Получить();

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

Теперь вернемся к задаче, а именно контроль заполнения значения в константе «НазваниеОрганизации». Откройте основную форму констант (ветвь «общие» -«общие формы» имя формы).

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

Перед записью (событие возникает в форме после открытия транзакции, но перед самой записью)

При записи (событие возникает после осуществления самой записи, но перед закрытием транзакции записи)

После записи (событие возникает после закрытия транзакции)

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

В открытой форме констант откройте страницу «Диалог», откройте свойства формы (именно формы, заголовок окна свойств должен быть как на рисунке)

В нижней части окна свойств, будут расположены свойства, относящиеся к категории «События».

В этих свойствах можно указывать имена процедур обработчиков событий (на каждое свойство по одной процедуре и не вызов, а имя, без скобок и точек с запятой). Обработчики событий формы (тех событий, которые вам необходимы) должны быть обязательно описаны в модуле формы.

Если у вас в разных формах используется один и тот же обработчик события, то вы можете разместить процедуру в общем модуле указав после ее описания ключевое слово «Экспорт». Но сам обработчик события в обязательном порядке должен располагаться в модуле формы (пусть даже в его теле будет одна единственная строка: вызов процедуры общего модуля).

Найдите свойство «ПередЗаписью» и нажмите кнопку **. После этого автоматически перейдете в модуль формы. В нем необходимо прописать следующий текст:

Процедура ПередЗаписью(Отказ)

Если НазваниеОрганизации =" Тогда

Сообщить(Не введено название организации); Отказ=Истина;

КонецЕсли;

КонецПроцедуры

Строка 1 содержит начало определения процедуры. После ключевого слов «Процедура» указывается имя процедуры, в скобках указываются принимаемы параметры. Параметр отказ имеет тип «Булево», если в него записать значени «Истина», то это будет являться отказом от записи всего набора констант.

Строка 2 содержит оператор проверки условия. Значение константы проверяется н; равенство с пустой строкой.

Внимание!!! Ранее говорилось, что для чтения константы нужно использоват] конструкцию «Константы.НазваниеОрганизации.ПолучитьО». Следует понимать, чтс определение такой строки приводит к СЧИТЫВАНИЮ значения константы ж информационной базы. В данном случае в этой операции нет необходимости. При открытии формы констант это считывание уже было произведено, соответствующее значение было помещено в основной реквизит формы. «НазваниеОрганизации» это свойство основного реквизита формы, куда при открытии было считано значение соответствующей константы.

В случае истинности данного условия выполняются строки 3,4. В строке 4 определяется отказ от записи набора констант.

Строка 5 закрывает блок описания условия Строка 6 закрывает тело процедуры Условие можно было бы описать и по другому:

Процедура  ПередЗаписью(Отказ)

Если  ЭлементыФормы.НазваниеОрганизации.Значение^"  Тогда

Сообщить(Не  введено  название  организации);

Отказ=Истина;

КонецЕсли;

КонецПроцедуры

Но в этом случае производится обращение к значению самого элемента управления (обращение производится через свойство формы «ЭлементыФормы»). Следует отметить, что в общем случае рекомендуется работать со значениями через реквизиты формы, а не через значения элементов управления.

Перейдем к решению следующей подзадачи (контролю заполнения адресов).

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

«ПриНачалеРаботыСистемы» модуля приложения.

Откройте модуль приложения. Для этого выполните щелчок правой клавишей мыши на корневом элементе дерева объектов конфигурации, в открывшемся контекстном меню выберите пункт «Открыть модуль приложения»

В модуль приложение запишите определение следующей процедуры:

Процедура  ПриНачалеРаботыСистемы ()

Если  Константы.ПочтовыйАдрес.Получить()=" Или

Константы.ЮридическийАдрес . Получить ()=" Тогда

Предупреждение (Проверьте  заполнение  адресов   ,5);

КонецЕсли;

КонецПроцедуры

1    -   определение   процедуры   -   обработчика   события.   Если   при   определении обработчика  события  для  формы,   ему можно  давать  произвольное  имя,  то  в остальных случаях имя обработчика строго зафиксировано, изменять его нельзя.

2 Проверка значений констант

3 Вывод диалога с предупреждением.

Мар

30

Принципы работы в системе 1С

Автор: admin

Принципы работы в системе 1С

Изучать основы конфигурирования и программирования в программном комплексе «1С: Предприятие 8» будем на примере написания простой конфигурации, позволяющей автоматизировать учет в некоей «мифической фирме». Эта конфигурация не будет претендовать на «законченное решение», но позволит разобраться с основными принципами работы в системе.

Постановка задачи

В данной конфигурации будут присутствовать элементы трех «участков учета»:

•    Торговля товарами

•    Бухгалтерский учет

•    Кадры, расчет зарплаты

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

Необходимо организовать хранение информации:

•    о номенклатуре товаров

•    о контрагентах нашей фирмы

•    о сотрудниках компании

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

Нам в любой момент времени необходимо иметь возможность получить следующую информацию:

•    о покупках (у кого и сколько товаров мы купили)

•    о продажах (в разрезе покупателей и проданных им товаров)

•    о сотрудниках организации

Для простоты будем считать, что у нашей фирмы один склад, торговля ведется от имени одного юридического лица, цены и стоимость товаров учитываются в одной валюте.

Итак, начнем.

Подсистемы

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

Для создания данного объекта конфигурации необходимо внутри ветви «Общие» на ветви «Подсистемы» выполнить щелчок правой клавишей мыши.

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

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

Синоним - дополнительное поле, поясняющее имя. Может формироваться системой автоматически (при определении имени «ИмяОбъекта», по нажатию на клавишу «Tab» в синоним запишется «Имя объекта»).

Комментарий - дополнительное поле, видимое пользователю в некоторых режимах.

Гиперссылка «Открыть». При нажатии на гиперссылку открывается встроенный HTML редактор, который позволяет вносить развернутое описание для данного объекта конфигурации.

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

Следует отметить, что подсистемы позволяют организовать дополнительную логическую классификацию объектов конфигурации (обычно по механизмам, которые реализуются в конфигурации). Эта классификация используется в ряде режимов работы конфигуратора, и не оказывает влияния на работу пользователей.

Как пример: просмотр дерева объектов конфигураций с установленным отбором по нжным подсистемам.

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

Константы

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

ВАЖНО!!! Константа это возможность хранения одного значения в базе данных. Это значение «едино» для всех пользователей системы в один и тот же момент времени. Когда какой-либо пользователь меняет это значение, оно меняется у всех пользователей «сразу». История изменения значений не хранится.

С точки зрения табличной модели (в этой модели база данных представляет собой набор взаимосвязанных таблиц) в системе есть одна таблица на все константы. В этой таблице столько полей, сколько констант определено в режиме конфигурирования. Так вот, в этой таблице ВСЕГДА одна запись.

Типы данных

В предыдущем разделе столкнулись с таким понятием как «тип». Какие типы данных поддерживаются в программном комплексе 1C предприятие 8. На это вопрос постараемся ответить далее:

Одним из основных свойств некоторых объектов конфигурации является «тип данных». Это свойство определяет, какого рода информацию может содержать объект конфигурации.

Различают три основных группы типов данных:

•    Примитивные типы (в их состав входят базовые типы данных)

•    Типы данных, появившиеся после определения в конфигурации объектов конфигурации.

•    «Другие» типы, не относящиеся к примитивным и «добавляемым», но поддержка которых во встроенном языке есть изначально.

К примитивным типам данных относятся:

•    Число (десятичное число). При указании типа «Число» можно указать общее количество «цифровых символов» и количество цифр после запятой (свойство «Точность»).

•    Строка (строка фиксированной, переменной или неограниченной длины). Фиксированная или переменная длина строки в первую очередь влияет на операции вычисления длины строки и сравнения строк.

•    Дата (дата, время, дата+время). Если при указании в качестве типа «Дата», в свойстве «Состав даты» выбрать «Дата», то отображаться будет указанная дата и 0 часов, 0 минут, 0 секунд. Вне зависимости от значения свойства состав  даты,   выражение   «Дата+Число»,   приведет  к  получению  даты, отстоящей от первоначальной на «Число» секунд.

•    Булево (истина или ложь)

•    Тип

•    Неопределено

•    Null.

Хочется только отметить, что Null и Неопределено, это разные типы, а не название одного и того же типа на разных языках. Можно сказать, что Null это отсутствие значения в принципе (примеры использования будут позже), Неопределенно это пустое значение, не принадлежащее ни к какому типу. Пример: у объекта системы можно определить свойство «составного» типа (либо строка, либо число). Работа с таким свойством в общем случае состоит из двух этапов. Выбор типа и только после этого ввод значения выбранного типа. Так вот, до выбора типа в этом свойстве находится «Неопределено».

К типам, появляющимся после определения в конфигурации объектов конфигурации относятся такие типы как «СправочникОбъект.Имж»„ «СправочникСсылка.Имя» и т.д. Знакомиться с множеством данных типов будем далее по ходу курса.

К «другим» типам относятся такие типы как: запрос, таблица значений, массив, хранилище значений и т.п. Подробно вдаваться в назначение и особенности данных типов на данном этапе не будем. Но хочется отметить, что большая часть из них образует коллекции. Под коллекцией можно понимать набор объектов схожей природы, которые можно «обойти» используя их индекс в коллекции, а можно используя специальную конструкцию языка:

Для Каждого ЭлементКоллекци Из Коллекция Цикл

..тело цикла

КонецЦикла;

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

Отдельное положение (можно сказать подкласс) занимают так называемые «Универсальные коллекции значений»

Универсальные коллекции значений

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

Массив

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

Объект является коллекцией значений.

МойМассив=Новый Массив (Элемент! , .N) ;

Структура

Структура представляет собой динамический набор данных коллекцию значений, каждый элемент которой состоит из пары «Ключ» и «Значение». Ключи структуры уникальны, и поэтому ими можно идентифицировать значения. Ключ структуры должен быть строковым и отвечать требованиям к именам переменных. К значениям структуры можно обращаться как к свойствам объекта, при этом ключ используется как имя свойства.

СтруктураОтбора=Новый  Структура(«Ключ!,..»,Значение!,..);

Соответствие

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

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

СоответствиеЗначений  =  Новый  Соответствие( );

Список значений

Список значений это объект позволяющий строить динамические наборы значений и манипулировать ими. Может быть наполнен значениями любых типов. Условно список значений можно представить как таблицу из четырех колонок: пометка, значение, представление, картинка. Каждое из значений характеризуется позицией в списке (индексом).

СПЗ=Новый СписокЗначений();

Таблица значений

Таблица значения объект позволяющий строить динамические наборы значений и манипулировать ими. Он может быть наполнен значениями различных типов. Может иметь любое количество колонок и быть связанным с элементом «табличное поле».

ТЗ=Новый  ТаблицаЗначений();

Дерево значений

Объект похожий на таблицу значений. Но в отличие от нее строки дерева значений могут образовывать иерархические структуры: каждая строка дерева может иметь набор подчиненных строк и т.д.

ДЗ=Новый ДеревоЗначений( );

Определение, настройка свойств констант

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

Так как данная константа по смыслу относится ко всем подсистемам, то в качестве значения свойства «Подсистемы» оставим значение «Конфигурация».

Свойство «Режим управления блокировкой данных относится к механизму транзакционных блокировок и в данном курсе не рассматривается.

Задача 2

Создать дополнительно две константы:

-        ПочтовыйАдрес  -  тип   «Строка»,   длина  100,   переменная,   относится  к корневой подсистеме

-        ЮридическийАдрес тип «Строка», длина 100, переменная, относится к корневой подсистеме

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

Выбирая в перечне какой -либо тип можно настраивать его дополнительные свойства (как показано на рисунке для текущего типа «Строка»).

При определении для константы составного типа, она все равно будет содержать значение одного типа (но одного из указанного перечня). Процесс выбора значения для константы (и не только), имеющей составной тип разбивается на два этапа:

1.   Выбор типа значения. При этом открывается список тех типов, которые были отмечены в окне редактирования типов данных. Следует отметить, что до выбора типа константа содержала бы значение, имеющее тип «Неопределено».

2.   После   выбора  типа  уже   можно   определить  значение   (оно  будет  иметь выбранный тип).

Определение форм констант

На данный момент вы уже должны были определить три константы. Но если разобраться, то вы создали три объекта конфигурации. В соответствии с этим в конфигурации появилась возможность хранить значения определенных вами типов и во встроенном языке появилась возможность работать с дополнительным набором объектов. Этого мало Необходимо как-то определить способ «взаимодействия» (интерфейс) пользователя с созданными вами константами (пользователь должен иметь возможность определить у констант значения, посмотреть установленные).

Одним из основных интерфейсных средств (средств взаимодействия с пользователем) 1C предприятия является «Форма». Упрощенно в форме можно выделить две важных составляющих:

•    Источники данных (реквизиты)

•    Элементы управления

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

Пользователь работает с данными «через» элементы управления, размещенные в форме.

Форма относится к подчиненным объектам конфигурации (хотя может определяться без связи с каким либо прикладным объектом).

Познакомимся с формой на примере определения формы констант.

Произведите щелчок правой клавишей мыши на ветви константы и в открывшемся контекстном меню выберите пункт «Создать форму констант» (как показано на рисунке).

Откроется конструктор общих форм (дело в том, что формы констант относятся к общим формам, т.е. созданные для констант формы размещаются в дереве объектов конфигурации внутри ветви «Общие», далее ветвь «Общие формы»).

Первая страница окна конструктора общих форм выглядит следующим образом:

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

При создании формы констант доступны два типа форм:

Произвольная форма. При выборе данного типа формы, будет создана форма, не привязанная ни к какому прикладному объекту, т.е. она не будет и] «предназначения» по умолчанию (несколько забегая вперед можно сказать, созданная таким образом форма не будет иметь основного реквизита).

Форма констант. При выборе данного типа формы будет создана фо «привязанная» к константам (основным назначением данной формы б; являться предоставление пользователю возможности работать с константам

Флаг «Назначить форму основной» определяет, что данная форма будет явля формой «по умолчанию» для констант (у констант может быть определено множе< форм, но основной может быть только одна).

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

Флаги «Командная панель формы сверху, снизу» позволяют размещать (отказаться от размещения) соответствующих командных панелей в создаваемой форме.

После нажатия на кнопку «Далее» можно перейти ко второй странице конструктора.

В нашем случае в столбце «Реквизиты» размещаются константы, а справа указываются типы элементов формы, которые будут использоваться для работы с ними. Перечень доступных типов элементов формы зависит от типа значений константы.

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

После нажатия на кнопку «Готово» откроется созданная форма констант

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

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

ВАЖНО!!! Стремитесь при каждом изменении увидеть эффект от проделанной работы в режиме 1С:Предприятие. Один из вариантов: проведя какие-либо изменения в режиме конфигурирования, переходите в режим отладки (будет произведен запуск пользовательского режима) по кнопке «F5», либо по команде главного меню конфигуратора Отладка/Начать отладку (либо продолжить отладку, если вы уже запустили систему в режиме отладки).

Посмотреть на созданную вами форму констант (если она определена как основная), и заодно определить значения в константах, можно выполнив команду главного меню пользовательского режима «Операции/Константы».

Мар

30

Классификация объектов конфигурации

Автор: admin

Объекты системы

При открытой конфигурации в окне конфигурации вы можете добавлять, корректировать существующие объекты конфигурации.

Следует отметить что в «1С:Предприятие 8» можно выделить две группы объектов:

•    Объекты конфигурации. Именно с объектами этой группы приходится иметь дело в процессе конфигурирования.  Они располагаются в  окне конфигурации. Объект конфигурации обладает набором свойств (их состав определяется видом объекта), методов у таких объектов нет. Очень часто объекты   конфигурации   являются   «электронными»   аналогами   реально существующих объектов прикладной области.

•    Объекты встроенного языка. Эти объекты используются при написании алгоритмов    обработки   информации.    Часть   из    них  поддерживается встроенным языком  изначально,  часть  появляется  после добавления  в конфигурацию объекта конфигурации.

Можно сказать, что в общем случае добавление одного объекта конфигурации (это производится в окне конфигурации) приводит к тому, что во встроенном языке появляется «поддержка» нескольких «программных» объектов. Например, добавление справочника «Номенклатура» приводит к тому, что можно в языке можно оперировать значениями следующих типов: «СправочникСсылка.Номенклатура», «СправочникОбъект.Номенклатура», «СправочникСписок.Номенклатура» и т.д.

Но тут важно понимать, что объекты конфигурации и объекты, доступные из встроенного языка, это абсолютно разные вещи. Создавая объект конфигурации в большинстве случаев, вы изменяете структуру физических таблиц базы данных, т.е. определяете структуру конфигурации. Объекты доступные из встроенного языка позволяют уже манипулировать данными (экземплярами объектов, структура которых определяется настройкой соответствующих объектов конфигурации).

Классификация объектов конфигурации

Объекты конфигурации представляют собой как раз те «строительные элементы», из которых будет создаваться конфигурация. Все они образуют несколько основных групп:

•    Общие   объекты. Группа   вспомогательных   объектов   конфигурации,   с помощью которых осуществляется создание конфигурации, механизмов взаимодействия пользователей с учетными данными.

•    Прикладные объекты. Их перечень можно увидеть на первом уровне дерева метаданных (исключая группу «Общие»).

•    Подчиненные   объекты. К   таким    объектам   относятся    «Реквизиты», «Табличные части» и т.д.

Общие объекты

Можно сказать, что к данным объектам конфигурации относятся те объекты, которые расположены внутри ветви «Общие» дерева объектов конфигурации.

Прикладные объекты

К объектам данной группы относятся объекты следующих видов:

-        Константы. Предназначены    для    хранения     постоянных, условно-постоянных величин.

-       Справочники. Списки однородных элементов данных. Используются для хранения нормативно-справочной информации.

-        Планы  видов характеристик. Предназначены для описания множеств однотипных объектов аналитического учета.

-        Документы. Служат для ввода информации о совершаемых операциях в системе.

-        Журналы   документов. Служат  для   отображения   списков  документов различного вида.

-       Перечисления. Списки значений, задаваемых на этапе конфигурирования.

-        Планы видов расчета. Предназначены для описания множеств однотипных объектов механизмов расчета.

-       Отчеты. Средство получения выходной информации.

-      Обработки.   Используются   для   выполнения   различных   действий   над информационной базой.

-      Планы счетов. Совокупность синтетических счетов.

-       Регистры сведений. Служат для хранения информации, состав которой развернут по определенной комбинации значений и при необходимости развернут во времени.

-      Регистры накопления. Служат для накопления информации по значениям и   оборотам  числовых   величин   в   комбинации  определенных  разрезов (измерений).

-        Регистры расчетов. Служат для накопления информации о периодических расчетах.

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

-       Бизнес-процессы. Предназначены для объединения отдельных операций в цепочки взаимосвязанных действий, приводящих к достижению конкретной цели.

-        Задачи. Позволяют   вести   учет   заданий   по   исполнителям   и   служат отражением продвижения бизнес-процессов по точкам маршрута.

Подчиненные объекты

В   зависимости   от   вида   объекта   конфигурации   он   может   иметь   различные подчиненные группы объектов.

Приведем перечень подчиненных объектов:

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

-       Табличные  части  -  наборы  дополнительной  информации   об   объекте, представленные в виде таблиц.

-        Реквизиты табличных частей состав табличной части объекта, доступны только в пределах табличной части объекта.

-        Формы    -    используются    для    ввода,    просмотра    и    редактирования информации.

-       Макеты  - табличные  документы,   предназначенные  для   формирования печатных форм объекта.

-        Графы графы журнала документов.

-       Измерения для регистров это объекты конфигурации, в разрезе которых учитываются данные в регистре.

-       Ресурсы данные, учитываемые в регистре.

Мар

30

Введение

Автор: admin

Введение

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

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

Функционирование системы делится на два процесса:

•    конфигурирование   (описание   модели   предметной   области   средствами, предоставляемыми системой)

•    исполнение (обработка данных предметной области).

На этапе конфигурирования система оперирует такими универсальными понятиями (объектами), как «Документ», «Справочник», «Реквизит», «Форма» и другие. Совокупность этих понятий и определяет концепцию системы. В свою очередь процесс конфигурирования распадается на несколько составляющих. Это «визуальное» создание структуры конфигурации, форм диалогов, выходных документов, интерфейсов, наборов прав пользователей (ролей) и написание программ на встроенном языке «1С:Предприятия» для обработки различных используемых данных.

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

В процессе исполнения система уже оперирует конкретными понятиями, описанными на этапе конфигурирования (справочниками товаров и организаций, накладными и т.д.).

При работе пользователя в режиме «1С:Предприятие» обработка информации выполняется как штатными средствами системы, так и с использованием алгоритмов, созданных на этапе конфигурирования.

Введение в учетную задачу

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

На рабочем столе компьютера была создана книга под названием «Учет», первая страница была названа «Поставщики» и в ней появилась первая таблица:

А В С D Е F
Наименование Контактное лицо Телефон Адрес Условия

покупки

Условия

доставки

ОООВсе Петя 1000001 ул. Далекая 6 3 дня отсрочка самовывоз
ООО Всегда Саныч 2006572 ул. Близкая 8 после продажи самовывоз
ЗАО Иногда Иван Петрович 3123454 не знаю полная оплата доставляют сами

Теперь перед тем как связаться с конкретным поставщиком, достаточно взглянуть в табличку и вся информация моментально «вспоминается».

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

А В С D
Поставщик Срок Валюта Сумма
ООО Все в среду руб 250000
ООО Всегда после продажи руб 700000

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

А В С D Е F G H
Наименование Контактное

лицо

Телефон Адрес Условия

покупки

Условия

доставки

Пост Пок
ООО Все Петя 1000001 ул. Далекая 6 3 дня отсрочка самовывоз *
ОООВсегда Саныч 2000002 ул. Близкая 8 после продажи самовывоз * *
ЗАО Иногда Иван Петрович 3123454 не знаю полная оплата доставляют сами *

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

Контрагент Срок Валюта Сумма
ООО Все в среду руб -250000
ООО Всегда после продажи руб -700000
ООО Удивим завтра руб 10000

Дела пошли в гору, объемы продаж и соответственно закупок возрастали. В какой-то момент возникла необходимость ведения складского учета (нужно по телефону быстро ответить на вопрос: «сколько какого товара есть в наличии?»).

Для решения этой задачи была сделана следующая табличка:

Наименование Единица

измерения

Цена покупки Количество
Товар №1 штука 12 15
Товар №2 кг 75 21
Товар №3 набор из Зх штук 800 4

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

Шаг №1. Ввести понятие «тип цен». Один и тот же товар в зависимости от типа цен может иметь разную цену.

Наименование Основной Со скидкой Почти даром
Товар №1 40 20 13
Товар №2 150 100 76
Товар №3 999 900 S01

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

В итоге получилось:

Контрагент Название

договора

Тип цен Валюта Условия

оплаты

Условия

доставки

Пост Пок
ООО Хотим много Основной Обычный руб 3 дня отсрочка мы доставляем *
ООО Хотим много Редкий Со скидкой руб полная оплата самовывоз *
ООО Мы вместе Основной Со скидкой руб полная оплата самовывоз *
ООО Всегда Основной Почти даром USD после продажи мы доставляем *
ЗАО Иногда Основной Обычный руб полная оплата самовывоз *

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

Наименование Контактное лицо Телефон Адрес
ООО Все Петя 1000001 ул Далекая 6
ООО Всегда Саныч 2000002 ул. Близкая 8
ЗАО Иногда Иван Петрович 31234545 не знаю

Так же нужно модифицировать таблицу с долгами (по взаиморасчетам):

Контрагент Договор Сумма
ООО Все Основной -250000
ООО Всегда Основной -700000
ООО Удивим Основной 10000

Время идет, бизнес развивается. К нашему учетному механизму хочется задавать все больше и больше вопросов. На текущий момент по сути это большая записная книжка, в которой делаются пометки «на память». Чем сложнее она становится, тем сложнее с ней работать. Купив какой-либо товар нужно не забыть ввести корректировки в таблицу остатков (тоже самое нужно сделать и при продаже). Для того чтобы получить информацию о каком-либо контрагенте нужно уже посмотреть данные нескольких таблиц. Хочется уже заниматься анализом своего дела, получать информацию об объемах продаж, покупок и т.п.

Неправильно говорить, что во всем виновата программа (возможно просто не хватает знаний по ней.) ), но поищем что-нибудь другое. Желательно чтобы в выбранном программном комплексе была возможность ведения справочной информации (перечни товаров, контрагентов, типов цен и т.п.). Можно было вводить данные о совершенных операциях (поступлениях товара, его продажах). Не корректировать остатки при поступлении товара вручную (и остатки по взаиморасчетам в том числе), а просто ввести информацию о закупленном товаре (а остатки изменятся автоматически) и т.п. Из программного комплекса желательно иметь возможность получения данных по остаткам товара, оборотам продаж в разрезе покупателей и т.п. Вот с этой точки зрения и посмотрим на 1C Предприятие.

Фактически 1C Предприятие это система, уже специализирующаяся на решении подобных учетных задач. В ней все сделано для того, чтобы разработчику конкретного решения было проще создать свою учетную базу данных.

Посмотрим на это..

История пропаганды СССР, США, Третьего рейха, и других стран в широком объёме представлена на сайте propagandahistory.ru