Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Информационные технологии и платформы разработки информационных систем

Содержание:

ВВЕДЕНИЕ

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

Глава 1. Разработка конфигурации

Выполним первую команду, с которой начинается работа с любой конфигурацией, – откроем конфигурацию с помощью пункта меню Конфигурация > Открыть конфигурацию или соответствующей кнопки на панели инструментов (рис. 1).

На экране откроется дерево объектов конфигурации.

Рис. 1. Дерево конфигурации

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

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

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

Конфигурация она представляет собой структуру описание. Она которые описывает структуру будет данных, которые в пользователь будет работы использовать в  режиме работы 1С:П редприятие. [1 с 23]

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

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

С одной представляют стороны, объекты детали конфигурации представляют  собой детали « консобирается структора», из обычно которого собирается конструкторе конфигурация. Обычно в конструкторе  сущедеталей ствует некоторый могут набор деталей. разного Детали могут длинные быть разного  вида: длинные, кои роткие, квадратные, д прямоугольные и т. д. деталей Теперь представьте,  что деталей  кажможем дого вида столько мы можем нам создавать столько, скажем сколько нам и нужно (скажем, 5 мы длинных и 3 соединять короткие). Мы  можем соединять деразличными тали между  собой различными  способами. [2 с 28]

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

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

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

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

Так же «сложн ые» объекты кон фигур ации состоят из более «пр остых», и одн и и те же «пр остые» объекты могут входить в состав сложн ых объектов. Такая стр уктур а позволяет упр остить р аботу с объектами кон фигур ации, поскольку если мы зн аем, как р аботать с каким-либо «пр остым» объектом, то в любом «сложн ом» объекте, в состав котор ого он  входит, мы будем р аботать с н им все тем же обр азом. [4 с 26]

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

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

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

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

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

Мы отойдем от такого «р азмытого» стиля изложен ия и в тех местах, где р ечь пойдет о кон фигур ации, будем использовать явн ое уточн ен ие – объект кон фигур ации спр авочн ик Сотр удн ики. Там же, где р ечь пойдет о базе дан н ых, мы будем говор ить пр осто: спр авочн ик Сотр удн ики. [1 с 45]

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

Пер ед н ачалом р аботы следует объясн ить н екотор ые пр иемы р аботы с конфигур атор ом.

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

После того как кон фигур ация откр ыта, ее состав появляется в окн е дер ева кон фигур ации (р ис. 2). Это окн о вы можете закр ыть, как любое др угое окн о Windows, пр и этом кон фигур ация остан ется откр ытой (то есть доступн ой для р едактир ован ия). Чтобы сн ова отобр азить н а экр ан е окн о дер ева кон фигур ации, следует воспользоваться коман дой мен ю Кон фигур ация > Окн о кон фигур ации. [3 с 59]

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

Рис. 2. Добавлен ие н ового объекта кон фигур ации

Втор ой способ. Вы можете воспользоваться кон текстн ым мен ю, котор ое вызывается пр и н ажатии н а пр авую клавишу мыши. Устан овите кур сор  н а ин тер есующую вас ветку объектов кон фигур ации и н ажмите пр авую клавишу мыши. В появившемся мен ю выбер ите пун кт Добавить (р ис. 3).

Р ис. 3. Добавлен ие н ового объекта кон фигур ации

Тр етий способ. Устан овите кур сор  н а ин тер есующую вас ветку объектов кон фигур ации и в коман дн ой пан ели окн а кон фигур ации н ажмите кн опку Добавить (с пиктогр аммой +), (рис. 4)

Р ис. 4. Добавлен ие н ового объекта кон фигур ации

Последн ий способ, н а н аш взгляд, н аиболее удобен , поэтому в осн овн ом мы будем использовать его.

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

Выделим в дер еве объектов кон фигур ации кор н евой элемен т Кон фигур ация и двойн ым щелчком мыши откр оем его палитр у свойств.Зададим имя кон фигур ации ПособиеДляН ачин ающих.

Соответствующий ему син он им устан авливается автоматически, н о его можн о измен ить по своему усмотр ен ию. В дальн ейшем имен н о его мы будем видеть в р абочем окн е «1С:Пр едпр иятия» (р ис. 5). [2 с 27]

Р ис. 5. Палитр а свойств кон фигур ации

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

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

Рис. 6. «Откр епим» палитр у свойств

В этом состоян ии, пр и н аведен ии кур сор а мыши н а любое др угое окн о, палитр а свойств будет свор ачиваться н а дополн ительн ую пан ель в пр авой части экр ан а (р ис. 7).

Рис. 7. Кн опка н а дополн ительн ой пан ели

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

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

Рис. 8. Вызов окн а н астр ойки коман дн ого ин тер фейса кон фигур ации

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

Р асположим сн ачала подсистемы, отр ажающие пр оизводствен н ую деятельн ость н ашей фир мы: Учет матер иалов и Оказан ие услуг, затем бухгалтер скую деятельн ость и р асчет зар платы сотр удн иков: Бухгалтер ия и Р асчет зарплаты, а затем подсистему Пр едпр иятие (р ис.9). [4 с 113]

Р ис. 9. Коман дн ый ин тер фейс

Н а следующей схеме изобр ажен о взаимодействие объектов встр оен н ого языка для р аботы с кон стан тами (р ис. 10).

Рис. 10. Объекты встр оен н ого языка для р аботы с кон стан тами

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

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

КонстантаМенеджерЗначения.<имя> – используется для доступа к константе. Любая запись константы (интерактивно в форме, объекты КонстантыНабор и КонстантаМенеджер.<имя>) создает объект этого типа и производит запись с его помощью, что обеспечивает вызов модуля и обработчиков событий этого объекта.

Ниже приведены примеры использования объектов встроенного языка для работы с константами 

1.

// Глобальный контекст

// Константы

// Пример: установить значение константы.

Константы.Бухгалтер.Установить("Сидоров Петр Иванович");

2.

// объект КонстантыМенеджер

// .

// []

// Для Каждого … Из … Цикл … КонецЦикла;

// Пример: прочитать значение константы.

Результат = Константы.ПрефиксНумерации.Получить();

Сообщить("Значение константы ПрефиксНумерации = "+ Результат);

// Пример: установить значение константы ПрефиксНумерации равным ЦБ.

Константы["ПрефиксНумерации"].Установить("ЦБ");

Сообщить("Новое значение = " + Константы["ПрефиксНумерации"].Получить());

// Пример: очистить значения всех констант.

Для Каждого ОчереднаяКонстанта Из Константы Цикл

ОчереднаяКонстанта.Установить(Неопределено);

КонецЦикла;

3.

// объект КонстантыМенеджер

// СоздатьНабор()

// Пример: установить новые значения нескольких констант.

Набор = Константы.СоздатьНабор("Руководитель, Бухгалтер");

Набор.Руководитель = "Николаев Денис Павлович";

Набор.Бухгалтер = "Николаева Людмила Сергеевна";

Набор.Записать();

4.

// объект КонстантаМенеджер.

// СоздатьМенеджерЗначения()

// Пример: вывести значения всех констант, существующих в конфигурации.

Для Каждого ОчереднаяКонстанта Из Константы Цикл

ИмяКонст = ОчереднаяКонстанта.СоздатьМенеджерЗначения().Метаданные().Имя;

ЗначениеКонст = ОчереднаяКонстанта.Получить();

Сообщить("Константа "+ ИмяКонст +" = "+ ЗначениеКонст);

КонецЦикла;

Последовательность событий при записи констант из формы констант (записать и закрыть)( Рис. 10)

Рис. 10. Последовательность событий при записи констант из формы констант

Справочники

Объекты встроенного языка для работы со справочниками

На следующей схеме изображено взаимодействие объектов встроенного языка для работы со справочниками (рис. 11).

Рис. 11. Объекты встроенного языка для работы со справочниками

Заливкой выделен  объект ман ипулир ован ия дан н ыми. Метод объекта, от котор ого идет стр елка, пр иводится в листин ге под соответствующей цифр ой (н апр имер , под цифр ой 3 пр иводится метод Н айтиПоКоду() объекта Спр авочн икМен еджер .<имя>), а объект, к котор ому идет стр елка, – это тип объекта, возвр ащаемого методом (н апр имер , Спр авочн икСсылка.<имя>).

Н иже пр иведен ы пр имер ы использован ия объектов встр оен н ого языка для р аботы со спр авочн иками (листин г 12).

Листинг 12. Пр имер ы использован ия объектов

1.

// Глобальный контекст

// Справочники

// Пример: вывести все типы ссылок на элементы справочников, существующие в конфигурации.

Массив = Справочники.ТипВсеСсылки().Типы();

Для Каждого ОчереднойТип из Массив Цикл

Сообщить(ОчереднойТип);

КонецЦикла;

2.

// объект СправочникиМенеджер

// .

// []

// Для Каждого … Из … Цикл … КонецЦикла;

// Пример: создать новую группу справочника "Номенклатура".

НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();

НоваяГруппа.Наименование = "Моя новая группа";

НоваяГруппа.Записать();

// Пример: получить ссылку на справочник "Номенклатура".

Справочники["Номенклатура"].ПолучитьСсылку();

3.

// объект СправочникМенеджер.

// НайтиПоКоду()

// НайтиПоНаименованию()

// НайтиПоРеквизиту()

// ПустаяСсылка()

// ПолучитьСсылку()

// .

// Пример: проверить, помечен ли на удаление элемент справочника "Номенклатура" с кодом 13.

Если Справочники.Номенклатура.НайтиПоКоду(13).ПометкаУдаления Тогда

Сообщить("Элемент с кодом 13 помечен на удаление");

КонецЕсли;

// Пример: является ли элемент справочника "Номенклатура" с наименованием "Услуги" группой.

Если Справочники.Номенклатура.НайтиПоНаименованию("Услуги", Истина).ЭтоГруппа Тогда

Сообщить("Элемент Услуги является группой");

КонецЕсли;

// Пример: проверить, что для всех элементов задан вид номенклатуры.

ПустаяСсылкаПеречисления = Перечисления.ВидыНоменклатуры.ПустаяСсылка();

Если Не Справочники.Номенклатура.НайтиПоРеквизиту("ВидНоменклатуры", ПустаяСсылкаПеречисления).Пустая() Тогда

Сообщить("Есть элементы, для которых не задан вид номенклатуры");

КонецЕсли;

// Пример: передать пустую ссылку в параметр метода.

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

4.

// объект СправочникМенеджер.

// Выбрать()

// ВыбратьИерархически()

// Пример: вывести список элементов, расположенных в корне справочника.

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

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

Если Не Выборка.ЭтоГруппа Тогда

Сообщить(Выборка);

КонецЕсли;

КонецЦикла;

// Пример: удалить все элементы иерархического справочника.

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

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

Выборка.Удалить();

КонецЦикла;

5.

// объект СправочникМенеджер.

// СоздатьГруппу()

// СоздатьЭлемент()

// Пример: создать новый элемент справочника "Сотрудники".

НовыйЭлемент = Справочники.Сотрудники.СоздатьЭлемент();

НовыйЭлемент.Наименование = "Смирнов Андрей Анатольевич";

// Заполнить табличную часть "ТрудоваяДеятельность".

НоваяСтрокаТабличнойЧасти = НовыйЭлемент.ТрудоваяДеятельность.Добавить();

НоваяСтрокаТабличнойЧасти.Организация = "ООО НТЦ";

НоваяСтрокаТабличнойЧасти.НачалоРаботы = Дата(2013,02,01);

НоваяСтрокаТабличнойЧасти.ОкончаниеРаботы = Дата(2013,08,31);

НоваяСтрокаТабличнойЧасти.Должность = "Программист";

НовыйЭлемент.Записать();

6.

// объект СправочникОбъект., СправочникСсылка.

// Владелец

// Родитель

// Ссылка

// Пример: запретить изменение подчиненных элементов, если у

// владельца установлено соответствующее свойство

// "ИзмененияЗапрещены" в модуле формы элемента справочника.

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

Если Владелец.ИзмененияЗапрещены Тогда Отказ = Истина;   

КонецЕсли;

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

7.

// объект СправочникСсылка.

// ПолучитьОбъект()

// СправочникОбъект.

// Скопировать()

// Пример: изменить наименование элемента справочника.

Элемент = Справочники.Номенклатура.НайтиПоКоду(10).ПолучитьОбъект();

Элемент.Наименование = "Мое новое наименование";

Элемент.Записать();

// Пример: заполнить справочник тестовыми данными.

Элемент = Справочники.Номенклатура.СоздатьЭлемент();

Элемент.Наименование = "Тестовый элемент";

Элемент.Записать();

Для ш = 1 по 1000 Цикл

НовыйЭлемент = Элемент.Скопировать();

НовыйЭлемент.Записать();

КонецЦикла;

8.

// объект СправочникВыборка.

// Ссылка

// Пример: заполнить табличную часть документа

// "ПриходнаяНакладная" всеми элементами из указанной группы справочника "Номенклатура".

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

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

СсылкаНаНоменклатуру = Выборка.Ссылка;

Если СсылкаНаНоменклатуру.ЭтоГруппа Тогда

Продолжить;

КонецЕсли;

НоваяСтрока = Материалы.Добавить();

НоваяСтрока.Материал = СсылкаНаНоменклатуру;

КонецЦикла;

9.

// объект СправочникВыборка.

// ПолучитьОбъект()

// Пример: пометить все элементы неиерархического справочника на удаление.

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

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

Выборка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина);

КонецЦикла;

Спр авочн ик Товар ы: Поставщики и Покупатели. Дополн ительн ые р еквизиты: Пр оизводитель, Цен а покупки, Н ацен ка (в %), Скидка (в %), Цен а пр одажи.(рис.13)

Р ис. 13 Создан ие спр авочн ика товар ы

Цен а пр одажи фор мир уется пр и вводе элемен та спр авочн ика.

Рис. 14 Окн о модуля фор мы элемен та

Р абота с докумен тами. Создаем 3 докумен та: заявка покупателя, пр иход товар а и пр одажа товар а.

Н а следующей схеме изобр ажен о взаимодействие объектов встр оен н ого языка для р аботы с докумен тами (р ис. 15).

Рис. 15. Объекты встр оен н ого языка для р аботы с докумен тами

Н иже пр иведен ы пр имер ы использован ия объектов встр оен н ого языка для р аботы с докумен тами (рис. 16).

1.

// Глобальный контекст

// Документы

// Пример: вывести все типы ссылок на элементы справочников, существующие в конфигурации.

Массив = Документы.ТипВсеСсылки().Типы();

Для Каждого ОчереднойТип из Массив Цикл

Сообщить(ОчереднойТип);

КонецЦикла;

2.

//объект ДокументыМенеджер

// .

// []

// Для Каждого … Из … Цикл … КонецЦикла;

// Пример: получить макет для печати документа "Оказание услуги".

Макет = Документы["ОказаниеУслуги"].ПолучитьМакет("Печать");

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

Для Каждого ОчереднойДокумент Из Документы Цикл

Ссылка = ОчереднойДокумент.ПолучитьСсылку();

КонецЦикла;

3.

// объект ДокументМенеджер.

// НайтиПоНомеру()

// НайтиПоРеквизиту()

// ПустаяСсылка()

// Пример: Проверить, проведен ли документ ПриходнаяНакладная с номером 3.

Если Документы.ПриходнаяНакладная.НайтиПоНомеру(3).Проведен Тогда

Сообщить("Документ с номером 3 проведен");

КонецЕсли;

// Пример: Проверить, что во всех документах ПриходнаяНакладная заполнен реквизит Склад.

ПустаяСсылкаСклада = Справочники.Склады.ПустаяСсылка();

Если Не Документы.ПриходнаяНакладная.НайтиПоРеквизиту("Склад", ПустаяСсылкаСклада).Пустая() Тогда

Сообщить("Есть документы, у которых не заполнен реквизит Склад");

КонецЕсли;

4.

// объект ДокументМенеджер.

// Выбрать()

// Пример: Выбрать все документы ПриходнаяНакладная за текущий месяц.

Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));

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

Сообщить(Выборка);

КонецЦикла;

5.

// объект ДокументМенеджер.

// СоздатьДокумент()

// Пример: Создать новый документ ПриходнаяНакладная.

НовыйДокумент = Документы.ПриходнаяНакладная.СоздатьДокумент();

НовыйДокумент.Дата = ТекущаяДата();

НовыйДокумент.Склад = Справочники.Склады.Основной;

// Заполнить табличную часть Материалы

НоваяСтрокаТабличнойЧасти = НовыйДокумент.Материалы.Добавить();

НоваяСтрокаТабличнойЧасти.Материал = Справочники.Номенклатура.НайтиПоКоду(6);

НоваяСтрокаТабличнойЧасти.Количество = 10;

НоваяСтрокаТабличнойЧасти.Цена = 22.5;

НоваяСтрокаТабличнойЧасти.Сумма = 225;

НовыйДокумент.Записать();

6.

// объект ДокументОбъект., объект ДокументСсылка.

// Ссылка

// Пример: в модуле объекта вызвать процедуру проверки заполнения реквизитов документа.

Если Не ПроверитьЗаполнениеРеквизитов(ЭтотОбъект.Ссылка) Тогда

Сообщить("Реквизиты документа не заполнены!");

КонецЕсли;

7.

// объект ДокументСсылка., объект ДокументОбъект.

// ПолучитьОбъект()

// Скопировать()

// Пример: пометить документ на удаление.

НенужныйДокумент = Документы.ОказаниеУслуги.НайтиПоНомеру(13).ПолучитьОбъект();

НенужныйДокумент.УстановитьПометкуУдаления(Истина);

8.

// объект ДокументВыборка.

// Ссылка

// Сформировать список ссылок на все документы "ПриходнаяНакладная" за текущий месяц.

СписокНакладных = Новый СписокЗначений;

Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));

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

СписокНакладных.Добавить(Выборка.Ссылка);

КонецЦикла;

9.

// объект ДокументВыборка.

// ПолучитьОбъект()

// Пример: удалить все документы "ПриходнаяНакладная".

Выборка = Документы.ПриходнаяНакладная.Выбрать();

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

Выборка.ПолучитьОбъект().Удалить();

КонецЦикла;

Р ис. 16. Пр имер ы использован ия объектов

Докумен т Пр иход товар а включает дополн ительн ые р еквизиты в шапке докумен та: Фир ма, поставщик, Коммен тар ий; в табличн ой части: Н аимен ован ие, количество, Цен а, Сумма. (рис.17) [2 с 33]

Рис. 17 Окн о создан ия докумен та

Поле Н аимен ован ие имеет кн опку выбор а для выбор а товар а из спр авочн ика, это указывается в свойствах:

Рис.18 Окн о свойства Товар ы Н аимен ован ие

Поле Количество должн о иметь кн опку выбор а для вызова калькулятор а:

Рис.19 Окн о свойства Товар ы Количество

Зн ачен ие поля Цен а подставляется из спр авочн ика, и в модуле докумен та пр описываем пр оцедур у:

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

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

Строка. Цена=Строка. Наименование. ЦенаПокупки;

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

Пр и измен ен ии количества измен яется сумма н а это число, пр описываем эту пр оцедур у в модуле докумен та:

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

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

Строка. Сумма=Строка. КолВо*Строка. Цена;

СуммаДок=Товары. Итог ("Сумма");

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

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

Рис.20 Окн о докумен та Пр иход товар а

В модуле также пр описываем пр оцедур у пр и откр ытии:

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

Фирма=Константы. НаименованиеФирмы. Получить ();

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

Фор мир уется печатн ая фор ма докумен та виде в виде пр иходн ой н акладн ой:

Рис.21 Окн о печатн ой фор мы докумен та

Пр оцедур у пр описываем в модуле:

Пр оцедур а Печать1 (Элемен т)

ТабДок = Новый ТабличныйДокумент;

Макет = Документы. ПриходТовара. ПолучитьМакет ("Печать");

// Заголовок

Область = Макет. ПолучитьОбласть ("Заголовок");

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

// Шапка

Шапка = Макет. ПолучитьОбласть ("Шапка");

Шапка. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Шапка);

// Товары

Область = Макет. ПолучитьОбласть ("ТоварыШапка");

ТабДок. Вывести (Область);

КолВо = 0;

ОбластьТовары = Макет. ПолучитьОбласть ("Товары");

Для Каждого ТекСтрокаТовары Из Товары Цикл

ОбластьТовары. Параметры. Заполнить (ТекСтрокаТовары);

КолВо = КолВо + 1;

ТабДок. Вывести (ОбластьТовары);

КонецЦикла;

// вывод области "Всего"

Область = Макет. ПолучитьОбласть ("Всего");

Область. Параметры. ИтогСумма = Товары. Итог ("Сумма");

СуммаДок = Область. Параметры. ИтогСумма;

СуммаНДС = СуммаДок - (СуммаДок/1.18);

Область. Параметры. СуммаНДС = СуммаНДС;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

// вывод области "Сумма"

Область = Макет. ПолучитьОбласть ("Сумма");

Область. Параметры. СуммаДокумента = ЧислоПрописью (СуммаДок,, "Рубль, рубля, рублей, м, копейка, копейки, копеек, ж");

Область. Параметры. КолВо = КолВо;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

ТабДок. ОтображатьСетку = Ложь;

ТабДок. Защита = Ложь;

ТабДок. ТолькоПросмотр = Ложь;

ТабДок. ОтображатьЗаголовки = Ложь;

ТабДок. Показать ();

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

Докумен т Заявка Покупателя включает дополн ительн ые р еквизиты в шапке докумен та: Фир ма, Покупатель, Коммен тар ий; в табличн ой части: Н аимен ован ие, Количество, Цен а, Сумма. Поле Н аимен ован ие должн о иметь кн опку выбор а для выбор а товар а из спр авочн ика, поле Количество должн о иметь кн опку выбор а для вызова калькулятор а. Зн ачен ие поля Цен а должн о подставляться из спр авочн ика. Сумма в стр оке должн а р ассчитываться автоматически. Под табличн ой частью должн а выводиться итоговая сумма по всем стр окам. Должн а фор мир оваться печатн ая фор ма докумен та в виде Счета.

Рис. 22 Окн о печатн ой фор мы докумен та

Процедура Печатъ (Элемент)

ТабДок = Новый ТабличныйДокумент;

Макет = Документы. ЗаявкиПокупателя. ПолучитьМакет ("Печать");

// Заголовок

Область = Макет. ПолучитьОбласть ("Заголовок");

ТабДок. Вывести (Область);

// Шапка

Шапка = Макет. ПолучитьОбласть ("Шапка");

Шапка. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Шапка);

// Товары

Область = Макет. ПолучитьОбласть ("ТоварыШапка");

ТабДок. Вывести (Область);

КолВо = 0;

ОбластьТовары = Макет. ПолучитьОбласть ("Товары");

Для Каждого ТекСтрокаТовары Из Товары Цикл

ОбластьТовары. Параметры. Заполнить (ТекСтрокаТовары);

КолВо = КолВо + 1;

ТабДок. Вывести (ОбластьТовары);

КонецЦикла;

// вывод области "Всего"

Область = Макет. ПолучитьОбласть ("Всего");

Область. Параметры. ИтогСумма = Товары. Итог ("Сумма");

СуммаДок = Область. Параметры. ИтогСумма;

СуммаНДС = СуммаДок - (СуммаДок/1.18);

Область. Параметры. СуммаНДС = СуммаНДС;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

// вывод области "Сумма"

Область = Макет. ПолучитьОбласть ("Сумма");

Область. Параметры. СуммаДокумента = ЧислоПрописью (СуммаДок,, "Рубль, рубля, рублей, м, копейка, копейки, копеек, ж");

Область. Параметры. КолВо = КолВо;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

ТабДок. ОтображатьСетку = Ложь;

ТабДок. Защита = Ложь;

ТабДок. ТолькоПросмотр = Ложь;

ТабДок. ОтображатьЗаголовки = Ложь;

ТабДок. Показать ();

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

Докумен т Пр одажа товар а включает дополн ительн ые р еквизиты в шапке докумен та: Фир ма, Покупатель, Коммен тар ий; в табличн ой части: Н аимен ован ие, Количество, Цен а, Сумма. Поле Н аимен ован ие должн о иметь кн опку выбор а для выбор а товар а из спр авочн ика, поле Количество должн о иметь кн опку выбор а для вызова калькулятор а. Зн ачен ие поля Цен а должн о подставляться из спр авочн ика. Сумма в стр оке должн а р ассчитываться автоматически. Под табличн ой частью должн а выводиться итоговая сумма по всем стр окам. Должн а фор мир оваться печатн ая фор ма докумен та в виде р асходн ой н акладн ой. В печатн ых фор мах всех докумен тов р ассчитывается и указывается сумма Н ДС, общее количество н аимен ован ий товар а и сумма пр описью. Докумен ты должн ы иметь возможн ость записи без пр оведен ия и с пр оведен ием.

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

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

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

Строка. Цена=Строка. Наименование. ЦенаПокупки;

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

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

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

Строка. Сумма=Строка. КолВо*Строка. Цена;

СуммаДок=Товары. Итог ("Сумма");

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

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

Фирма=Константы. НаименованиеФирмы. Получить ();

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

Процедура Печать (Элемент)

ТабДок = Новый ТабличныйДокумент;

Макет = Документы. ПродажаТовара. ПолучитьМакет ("Печать");

// Заголовок

Область = Макет. ПолучитьОбласть ("Заголовок");

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

// Шапка

Шапка = Макет. ПолучитьОбласть ("Шапка");

Шапка. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Шапка);

// Товары

Область = Макет. ПолучитьОбласть ("ТоварыШапка");

ТабДок. Вывести (Область);

КолВо = 0;

ОбластьТовары = Макет. ПолучитьОбласть ("Товары");

Для Каждого ТекСтрокаТовары Из Товары Цикл

ОбластьТовары. Параметры. Заполнить (ТекСтрокаТовары);

КолВо = КолВо + 1;

ТабДок. Вывести (ОбластьТовары);

КонецЦикла;

// вывод области "Всего"

Область = Макет. ПолучитьОбласть ("Всего");

Область. Параметры. ИтогСумма = Товары. Итог ("Сумма");

СуммаДок = Область. Параметры. ИтогСумма;

СуммаНДС = СуммаДок - (СуммаДок/1.18);

Область. Параметры. СуммаНДС = СуммаНДС;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

// вывод области "Сумма"

Область = Макет. ПолучитьОбласть ("Сумма");

Область. Параметры. СуммаДокумента = ЧислоПрописью (СуммаДок,, "Рубль, рубля, рублей, м, копейка, копейки, копеек, ж");

Область. Параметры. КолВо = КолВо;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

ТабДок. ОтображатьСетку = Ложь;

ТабДок. Защита = Ложь;

ТабДок. ТолькоПросмотр = Ложь;

ТабДок. ОтображатьЗаголовки = Ложь;

ТабДок. Показать ();

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

Печатн ая фор ма в виде р асходн ой н акладн ой.

Рис. 23 Окн о печатн ой фор мы докумен та

Докумен т Пр одажа товар а фор мир уется н а осн ован ии докумен та Заявка покупателя. Пр оцедур а пр описывается в модуле объекта докумен та Пр одажа и стр оится с помощью кон стр уктор а:

Процедура ОбработкаЗаполнения (ДанныеЗаполнения, СтандартнаяОбработка)

Если ТипЗнч (ДанныеЗаполнения) = Тип ("ДокументСсылка. ЗаявкиПокупателя") Тогда

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

Покупатель = ДанныеЗаполнения. Покупатель;

СуммаДок = ДанныеЗаполнения. СуммаДок;

Фирма = ДанныеЗаполнения. Фирма;

Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения. Товары Цикл

НоваяСтрока = Товары. Добавить ();

НоваяСтрока. КолВо = ТекСтрокаТовары. КолВо;

НоваяСтрока. Наименование = ТекСтрокаТовары. Наименование;

НоваяСтрока. Сумма = ТекСтрокаТовары. Сумма;

НоваяСтрока. Цена = ТекСтрокаТовары. Цена; КонецЦикла;

КонецЕсли;

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

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

Докумен т Пр иходТовар а:

Процедура ОбработкаПроведения (Отказ, Режим)

// регистр ОстаткиТовара Приход

Движения. ОстаткиТовара. Записывать = Истина;

Движения. ОстаткиТовара. Очистить ();

Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения. ОстаткиТовара. Добавить ();

Движение. ВидДвижения = ВидДвиженияНакопления. Приход;

Движение. Период = Дата;

Движение. Товары = ТекСтрокаТовары. Наименование;

Движение. Контрагент = Поставщик;

Движение. Сумма = ТекСтрокаТовары. Сумма;

Движение. КолВо = ТекСтрокаТовары. КолВо;

КонецЦикла;

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

Докумен т ЗаявкаПокупателя:

Процедура ОбработкаПроведения (Отказ, Режим)

// регистр ОстаткиТовара Приход

Движения. ОстаткиТовара. Записывать = Истина;

Движения. ОстаткиТовара. Очистить ();

Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения. ОстаткиТовара. Добавить ();

Движение. ВидДвижения = ВидДвиженияНакопления. Приход;

Движение. Период = Дата;

Движение. Контрагент = Покупатель;

Движение. Товары = ТекСтрокаТовары. Наименование;

Движение. Сумма = ТекСтрокаТовары. Сумма;

Движение. КолВо = ТекСтрокаТовары. КолВо;

КонецЦикла;

Докумен т Пр одажаТовар а:

Процедура ОбработкаПроведения (Отказ, Режим)

// регистр ОстаткиТовара Расход

Движения. ОстаткиТовара. Записывать = Истина;

Движения. ОстаткиТовара. Очистить ();

Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения. ОстаткиТовара. Добавить ();

Движение. ВидДвижения = ВидДвиженияНакопления. Расход;

Движение. Период = Дата;

Движение. Товары = ТекСтрокаТовары. Наименование;

Движение. Контрагент = Покупатель;

Движение. Сумма = ТекСтрокаТовары. Сумма;

Движение. КолВо = ТекСтрокаТовары. КолВо;

КонецЦикла;

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

Р абота с жур н алами докумен тов. Создаем 2 жур н ала: Докумен ты по закупкам и Докумен ты по пр одажам. Жур н алы должн ы включать дополн ительн ые р еквизиты Кон тр аген т и Сумма по докумен ту. [3 с 118]

Р абота с отчетами. Создаем 4 отчета: Пр айс-лист, Остатки товар ов н а складе, Отчет по закупкам и Отчет по пр одажам. Отчёт Остатки товар ов н а складе должен  иметь возможн ость детализации по отдельн ым товар ам. Отчёты по закупкам и пр одажам должн ы фор мир оваться за пер иод с детализацией по кон тр аген там. Существует н еобходимость осуществлен ия сложн ой обр аботки дан н ых, котор ую очен ь сложн о получить, н епоср едствен н о р аботая со спр авочн иками, докумен тами, р егистр ами и жур н алами, для выполн ен ия такой обр аботки существует механ изм запр осов. Запр осы мы используем пр и создан ии отчета Остатки, а остальн ые создаем с помощью схемы компон овки дан н ых.

Рис. 24 Окн о отчета Пр айс - лист

Рис. 25 Окн о отчета Отчет по закупкам

Рис. 26 Окн о отчета Отчет по пр одажам

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

Процедура КнопкаСформироватьНажатие (Кнопка)

ТабДок = Новый ТабличныйДокумент;

Макет = ЭтотОбъект. ПолучитьМакет ("Макет");

ОбластьМакета = Макет. ПолучитьОбласть ("Шапка");

ОбластьМакета. Параметры. ТекущаяДата = ТекущаяДата ();

ТабДок. Вывести (ОбластьМакета);

Запрос = Новый Запрос;

Если Товары. Наименование <> "" Тогда

Запрос. Текст = "

|Выбрать

| ОстаткиТовараОстатки. Товары,

| ОстаткиТовараОстатки. Товары. Наименование КАК Наименование,

| ОстаткиТовараОстатки. КолВоОстаток КАК Количество

| Из

| РегистрНакопления. ОстаткиТовара. Остатки КАК ОстаткиТовараОстатки

| Где

| ОстаткиТовараОстатки. Товары В (&Товары)

|";

Иначе

Запрос. Текст = "

|ВЫБРАТЬ

| ОстаткиТовараОстатки. Товары,

| ОстаткиТовараОстатки. Товары. Наименование КАК Наименование,

|ОстаткиТовараОстатки. КолВоОстаток КАК Количество

| Из

| РегистрНакопления. ОстаткиТовара. Остатки КАК ОстаткиТовараОстатки

|";

КонецЕсли;

Запрос. УстановитьПараметр ("Товары", Товары);

Результат = Запрос. Выполнить ();

Выборка = Результат. Выбрать ();

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

ОбластьМакета = Макет. ПолучитьОбласть ("Товар");

ОбластьМакета. Параметры. Товар = Выборка. Наименование;

ОбластьМакета. Параметры. Количество = Выборка. Количество;

ТабДок. Вывести (ОбластьМакета);

КонецЦикла;

ТабДок. Показать ();

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

Р ис. 27 Окн о отчета Остатки

Создан ие пользователей.

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

Для р аботы с кон фигур ацией мы создали двух пользователей. Пер вый пользователь - Иван ов (Админ истр атор ) с полн ыми пр авами и ин тер фейсом, а втор ой - Петр ов (мен еджер ) с огр ан ичен н ыми пр авами (н ельзя р едактир овать кон стан ты) и с огр ан ичен н ым ин тер фейсом (н ет пун кта Опер ации в главн ом мен ю). [4 с 124]

Глава 2. Разработка управляемого приложения

Измен яем свойство кон фигур ации Осн овн ой р ежим запуска н а "Упр авляемое пр иложен ие". Создаем подсистемы Закупки и Пр одажи, и опр еделяем состав объектов каждой подсистемы.

Рис. 28 Окн о подсистемы

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

Рис. 29 Окн о р абочего стола

Рис. 30 Окн о подсистемы Закупки

Рис. 31 Окн о подсистемы Пр одажи

Сфор мир уем отчет по закупкам в упр авляемом пр иложен ии.

Рис. 32 Окн о отчета

Глава 3. Р еализация бизнес - процесса "Продажа товара"

Р ежим запуска "Обычн ое пр иложен ие". Создаем спр авочн ики Сотр удн ики (дан н ые: Иван ов, Петр ов, Сидор ов), Подр азделен ия (дан н ые: отдел пр одаж, склад), Р оли Исполн ителей (дан н ые: кладовщик, пр одавец, р уководитель отдела). В фор ме докумен та Заявка покупателя создаем р еквизит ОплатаСчета.

Создаем р егистр  сведен ий Р егистр Адр есации.

Рис. 33 Окн о р егистр а

Опр еделяем пар аметр  сеан са Текущий исполн итель.

Рис. 34 Окн о свойства

Создаем объект кон фигур ации Задача.

Рис. 35 Окн о свойства задачи

В модуле объекта опр еделяем обр аботчики событий.

Процедура ПередВыполнением (Отказ)

Если ДатаВыполнения = '00010101' Тогда

ДатаВыполнения = ТекущаяДата ();

КонецЕсли; Если Исполнитель. Пустая () Тогда

Исполнитель = ПараметрыСеанса. ТекущийИсполнитель;

КонецЕсли;

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

Процедура ПриВыполнении ()

Сообщить ("Задача выполнена: "+""""+Наименование+"""");

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

Процедура ПриЗаписи ()

Если ЭтоНовый () Тогда

Сообщить ("Сформирована задача: "+""""+Наименование+"""");

Сообщить ("Исполнитель"+Исполнитель);

Сообщить ("Подразделение"+подразделение);

КонецЕсли;

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

Создаем объект кон фигур ации бизн ес - пр оцесс "Пр одажа товар а".

Рис. 36 Окн о свойства бизн ес - пр оцесса

Создаем кар ту мар шр ута.

Рис. 37 Окн о кар ты мар шр ута

Пр оцедур ы описываем в модуле объекта:

Процедура СтартПередСтартом (ТочкаМаршрутаБизнесПроцесса, Отказ)

НужноЗаписать = Ложь;

ЕСЛИ Счет. Пустая () ТОГДА

СчетОбъект = Документы. ЗаявкиПокупателя. СоздатьДокумент ();

СчетОбъект. Дата = ТекущаяДата ();

СчетОбъект. Записать ();

Счет = СчетОбъект. Ссылка;

НужноЗаписать = Истина;

КОНЕЦЕСЛИ;

ЕСЛИ РасходнаяНакладная. Пустая () ТОГДА

РасходнаяНакладнаяОбъект = Документы. ПродажаТовара. СоздатьДокумент ();

РасходнаяНакладнаяОбъект. Дата = ТекущаяДата ();

РасходнаяНакладнаяОбъект. Записать ();

РасходнаяНакладная = РасходнаяНакладнаяОбъект. Ссылка;

НужноЗаписать = Истина;

КОНЕЦЕСЛИ;

ЕСЛИ НужноЗаписать ТОГДА

Записать ();

КОНЕЦЕСЛИ;

СООБЩИТЬ ("Старт бизнес-процесса: " + """" + ЭтотОбъект. МетаДанные (). Синоним+"""");

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

Процедура СчетОплаченПроверкаУсловия (ТочкаМаршрутаБизнесПроцесса, Результат)

Результат = Счет. ОплатаСчета;

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

Процедура ВыпискаСчетаОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)

Счет. ПолучитьФорму ("ФормаДокумента"). Открыть ();

СтандартнаяОбработка=Ложь;

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

Процедура ВыпискаСчетаПередИнтерактивнымВыполнением (ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)

Если Счет. Товары. Количество () =0 тогда

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

КонецЕсли;

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

Процедура ВыпискаНакладнойОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)

РасходнаяНакладная. ПолучитьФорму ("ФормаДокумента"). Открыть ();

СтандартнаяОбработка=Ложь;

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

Процедура ВыпискаНакладнойПередИнтерактивнымВыполнением (ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)

Если РасходнаяНакладная. Товары. Количество () =0 тогда

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

КонецЕсли;

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

Процедура ОтгрузкаСоСкладаОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)

РасходнаяНакладная. ПолучитьФорму ("ФормаДокумента"). Открыть ();

СтандартнаяОбработка=Ложь;

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

Процедура НормальноеЗавершениеПриЗавершении (ТочкаМаршрутаБизнесПроцесса, Отказ)

Сообщить ("Завершение бизнес-процесса: "+""""+ЭтотОбъект. Метаданные (). Синоним+"""");

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

Процедура НетПриЗавершении (ТочкаМаршрутаБизнесПроцесса, Отказ)

Сообщить ("Досрочное завершение бизнес-процесса: "+""""+ЭтотОбъект. Метаданные (). Синоним+"""");

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

В модуле обычн ого пр иложен ия опр еделяем пр оцедур ы:

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

ПараметрыСеанса. ТекущийИсполнитель=Справочники. Сотрудники. НайтиПоКоду (ИмяПользователя ());

ПодключитьОбработчикОповещения ("ОбработчикОповещения");

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

Процедура ОбработчикОповещения (ИмяСобытия, Параметр, Источник) Экспорт

Если ИмяСобытия="ЗаписьСчета" Тогда

Запрос=Новый Запрос;

Запрос. УстановитьПараметр ("Парам", Источник. Ссылка);

Запрос. Текст="ВЫБРАТЬ

|Задача. Ссылка

|Из

|БизнесПроцесс. ПродажаТовара КАК ПродажаТовара ЛЕВОЕ СОЕДИНЕНИЕ Задача. Задача. ЗадачиПоИсполнителю КАК Задача

|ПО ПродажаТовара. Ссылка=Задача. БизнесПроцесс

|ГДЕ (Задача. Выполнена=Ложь) и (ПродажаТовара. Счет=&Парам)";

Выборка=Запрос. Выполнить (). Выбрать ();

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

ТекущаяЗадача=Выборка. Ссылка. ПолучитьОбъект ();

Если ТекущаяЗадача. ТочкаМаршрута=БизнесПроцессы. ПродажаТовара. ТочкиМаршрута. ВыпискаСчета Тогда

ФормаСчета=ТекущаяЗадача. БизнесПроцесс. Счет. ПолучитьФорму ();

Если ФормаСчета. Открыта () =Истина Тогда

Если Вопрос ("Пометить задачу"""+ТекущаяЗадача. Наименование+"""как выполненную?",РежимДиалогаВопрос. ДаНет) =КодВозвратаДиалога. Да Тогда

ТекущаяЗадача. ВыполнитьЗадачу ();

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Если ИмяСобытия="Списание" Тогда

Запрос=Новый Запрос;

Запрос. УстановитьПараметр ("Парам", Источник. Ссылка);

Запрос. Текст="ВЫБРАТЬ

|Задача. Ссылка

|Из

|БизнесПроцесс. ПродажаТовара КАК ПродажаТовара ЛЕВОЕ СОЕДИНЕНИЕ Задача. Задача. ЗадачиПоИсполнителю КАК Задача

|ПО ПродажаТовара. Ссылка=Задача. БизнесПроцесс

|ГДЕ (Задача. Выполнена=Ложь) и (ПродажаТовара. РасходнаяНакладная=&Парам)";

Выборка=Запрос. Выполнить (). Выбрать ();

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

ТекущаяЗадача=Выборка. Ссылка. ПолучитьОбъект ();

Если ТекущаяЗадача. ТочкаМаршрута=БизнесПроцессы. ПродажаТовара. ТочкиМаршрута. ВыпискаНакладной Тогда

ФормаДокумента=ТекущаяЗадача. БизнесПроцесс. РасходнаяНакладная. ПолучитьФорму ();

Если ФормаДокумента. Открыта () =Истина Тогда

Если Вопрос ("Пометить задачу"""+ТекущаяЗадача. Наименование+"""как выполненную?",РежимДиалогаВопрос. ДаНет) =КодВозвратаДиалога. Да Тогда

ТекущаяЗадача. ВыполнитьЗадачу ();

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

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

В модуле фор мы докумен та Заявка покупателя и Пр одажа товар а пр описываем пр оцедур у Пр иЗаписи для оповещен ия:

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

Оповестить ("ЗаписьСчета",, ЭтотОбъект);

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

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

Оповестить ("Списание",, ЭтотОбъект);

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

Р ис. 38 Окн о выполн ен н ого пр оцесса [3 с 66]

Глава 4. Анализ данных в системе 1С 8.3

Вводим в базу н е 15 н овых докумен тов, по р азн ому сочетая гр уппу товар ов. Создаем отчет Статистика, выполн яющий ан ализ дан н ых типа "Общая статистика". В модуле отчета пр описываем пр оцедур у:

Процедура КнопкаСформироватьНажатие (Кнопка)

Анализ = Новый АнализДанных;

Анализ. ТипАнализа = Тип ("АнализДанныхОбщаяСтатистика");

запрос = Новый Запрос;

Запрос. Текст = "Выбрать

|ОстаткиТовара. Товары,

|ОстаткиТовара. КолВо

|Из

егистрНакопления. ОстаткиТовара КАК ОстаткиТовара";

Анализ. ИсточникДанных = Запрос. Выполнить ();

РезультатАнализа = Анализ. Выполнить ();

Построитель = Новый ПостроительОтчетаАнализаДанных ();

Построитель. Макет = Неопределено;

Построитель. ТипАнализа = Тип ("АнализДанныхОбщаяСтатистика");

ТабДок = Новый ТабличныйДокумент;

Построитель. Вывести (РезультатАнализа, ТабДок);

ТабДок. Показать ();

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

Р ис. 39 Окн о отчета

Создаем отчет ПоискАссоциаций, выполн яющий ан ализ дан н ых типа "Поиск ассоциаций". Пр оцедур у пр описываем в модуле:

Процедура КнопкаСформироватьНажатие (Кнопка)

Анализ = Новый АнализДанных;

Анализ. ТипАнализа =Тип ("АнализДанныхПоискАссоциаций");

Запрос = Новый Запрос;

Запрос. Текст = "Выбрать

|ОстаткиТовара. Регистратор,

| ОстаткиТовара. Товары

|Из

егистрНакопления. ОстаткиТовара КАК ОстаткиТовара";

Анализ. ИсточникДанных = Запрос. Выполнить ();

Анализ. Параметры. ТипОтсеченияПравил. Значение = ТипОтсеченияПравилАссоциации. Избыточные;

РезультатАнализа = Анализ. Выполнить ();

Построитель = Новый ПостроительОтчетаАнализаДанных ();

Построитель. Макет = Неопределено;

Построитель. ТипАнализа = Тип ("АнализДанныхПоискАссоциаций");

ТабДок = Новый ТабличныйДокумент;

Построитель. Вывести (РезультатАнализа, ТабДок);

ТабДок. Показать ();

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

Р ис. 40 Окн о отчета

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

Процедура КнопкаСформироватьНажатие (Кнопка)

Анализ = Новый АнализДанных;

Анализ. ТипАнализа =Тип ("АнализДанныхПоискПоследовательностей");

Запрос = Новый Запрос;

Запрос. Текст = "Выбрать

|ОстаткиТовара. Контрагент,

|ОстаткиТовара. Товары,

|ОстаткиТовара. Период

|Из

егистрНакопления. ОстаткиТовара КАК ОстаткиТовара";

Анализ. ИсточникДанных = Запрос. Выполнить ();

Анализ. НастройкаКолонок. Период. ТипКолонки = ТипКолонкиАнализаДанныхПоискПоследовательностей. Время;

РезультатАнализа = Анализ. Выполнить ();

Построитель = Новый ПостроительОтчетаАнализаДанных ();

Построитель. Макет = Неопределено;

Построитель. ТипАнализа = Тип ("АнализДанныхПоискПоследовательностей");

ТабДок = Новый ТабличныйДокумент;

Построитель. Вывести (РезультатАнализа, ТабДок);

ТабДок. Показать ();

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

Рис. 41 Окно отчета [1 с 122]

ЗАКЛЮЧЕНИЕ

Система 1С: Пр едпр иятие - ун ивер сальн ая система, вместе с кон фигур ацией пр едставляет готовое к использован ию пр огр аммн ое обеспечен ие для автоматизации деятельн ости пр едпр иятия.

В Ходе кур совой р аботы мы р аботали с зн акомыми для н ас объектами, это спр авочн ики, докумен ты, кон стан ты, р егистр ы н акоплен ия, а также позн акомились с н овыми - бизн ес - пр оцессами, задачами, р егистр  сведен ий. Позн акомились с р аботой пр огр аммы н е только в р ежиме запуска "Обычн ое пр иложен ие", н о и в р ежиме "Упр авляемого пр иложен ия", котор ый отличается большим удобством использован ия ин тер фейса.

В отличие от 1С 7.7 восьмая вер сия н амн ого фун кцион альн ее и пр още, удобн ее как для пользователя, так и для р азр аботчика.

СПИСОК ИСПОЛЬЗУЕМОЕЙ ЛИТЕРАТУР Ы

  1. Чистов П.А. Сбор н ик задач по р азр аботке н а платфор ме 1С:Пр едпр иятие (1С:Enterprise)/ М.: ООО "1С-Паблишин г", 2020. -  137 с.
  2. Хр усталева Е. Ю. Электр он н ый ан алог издан ия "Р асшир ен ия кон фигур аций. Адаптация пр икладн ых р ешен ий с сохр ан ен ием поддер жки в облаках и н а земле. Р азр аботка в системе 1С:Пр едпр иятие 8.3. Издан ие 2/М.: ООО "1С-Паблишин г", 2018. – 287 с.
  3. Р адчен ко  М.Г. 1С:Пр огр аммир ован ие для н ачин ающих. Детям и р одителям, мен еджер ам и р уководителям. Р азр аботка в системе "1С:Пр едпр иятие 8.3"/М.: ООО "1С-Паблишин г", 2017. – 780 с.
  4. В.В. Р ыбалка Hello, 1C! Пр имер  быстр ой р азр аботки пр иложен ий н а платфор ме 1С:Пр едпр иятие 8.3. Вер сия 3/М.: ООО "1С-Паблишин г", 2014.- 417 с.