1с создание конфигурации. Выбор площадки для будущего функционала программы

Построена простая конфигурация учета движения картриджей для лазерной техники в организации с использованием платформы 1С Предприятие 8.3 и интерфейса "Такси". Учитывается движение каждого картриджа (покупка, заправка, восстановление, ремонт, установка в принтер и пр.) и расход средств по каждому картриджу. Основная цель - освоить разработку приложений на базе платформы 1С Предприятие 8.3 на примере построения работоспособного и полезного приложения.

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

Работаю в отделе IT крупной организации с большим количеством лазерных принтеров и МФУ. Учет движения картриджей для них является актуальной задачей и требованием руководства.

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

Заправка тонером, восстановление, ремонт картриджей осуществляется сторонней организацией. Необходимо учитывать движение каждого картриджа, то есть покупку, заправку тонером, восстановление, ремонт, установку в конкретный принтер (МФУ), текущее местоположение, списание и пр. Кроме того надо учитывать затраты по каждому картриджу (расходы на покупку, заправку тонером и пр. в разрезе поставщиков).

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

План реализации.

Используем платформу 1С Предприятие 8.3 как самую современную на текущий момент.

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

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

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

НоменклатураКартриджей

Картриджи

НоменклатураКартриджейЦены

Принтеры

Номенклатура Принтеров

Поставщики

Документы:

ПоступлениеКартриджей

ЗаменаКартриджа

СписаниеКартриджей

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

ДаНет

СостояниеКартриджей

ПричиныЗаменыКартриджей

Регистры сведений:

КартриджиЗамена

Регистры накоплений:

КартриджиОплата

Алгоритм работы.

Основным «действующим лицом» является список имеющихся картриджей (Справочник Картриджи ). Изначально список заполняется документом ПоступлениеКартриджей НоменклатураКартриджей . При покупке картриджа значение реквизит Состояние в документе выбирается как Новый . Цена покупки определяется по справочнику НоменклатураКартриджейЦены натекущую дату СерийныйНомер ). Реквизит Местоположение определяется как «Склад» .

Учет заправок, восстановления, ремонта и пр. существующих уже картриджей осуществляется также документом ПоступлениеКартриджей . Тип картриджей определяется по справочнику НоменклатураКартриджей . Состояние картриджа определяется из перечисления СостояниеКартриджей . Цена работы (заправка, восстановление) определяется по справочнику НоменклатураКартриджейЦены . Уникальность картриджа определяется его серийным номером (реквизит СерийныйНомер ).

При проведении документа ПоступлениеКартриджей в табличную часть ЗаменаКартриджей справочника Картриджи добавляется строка с реквизитами текущего документа и у соответствующих картриджей (с серийным номером из документа) в справочнике Картриджи меняется значение реквизитов Состояние и Местоположение .

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

Учет замены картриджа в конкретном принтере (справочник Принтеры ) осуществляется документом ЗаменаКартриджа . В документе указывается текущий принтер. Уникальность принтера определяется реквизитом СерийныйНомер . Указывается устанавливаемый и заменяемый картридж (серийные номера картриджей).

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

Кроме того, в регистр КартриджиЗамена заносится движение по данному документу.

Списание картриджей осуществляется отдельным документом СписаниеКартриджей .

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

Реализация.

Приступим собственно к конфигурированию.

Создадим пустую базу в конфигураторе, назовем ее гордо «Айтишник» и организуем подсистему Учет картриджей . Не буду описывать по шагам, как это сделать, поскольку по данному вопросу книг хватает.

Сначала добавим перечисления: ДаНет , СостояниеКартриджей и ПричиныЗаменыКартриджей , которые нам понадобятся в дальнейшем. Состав перечислений виден на Рис.2

Сконфигурируем простые справочники НоменклатураКартриджей и НоменклатураПринтеров.

Реквизиту ТипКартриджа в справочнике НоменклатураПринтеров присвоим тип ссылка на справочник НоменклатураКартриджей (Рис.3). Не забываем, что все сформированные нами объекты конфигурации надо включить в состав подсистемы УчетКартриджей .

В справочнике Принтеры несколько реквизитов имеют тип ссылки:

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

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

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

Наконец, для учета поступления картриджей заводим регистр накопления КартриджиОплата с измерениями, ресурсами и реквизитами (Рис.10).

В закладке Регистраторы указываем наш документ ПоступлениеКартриджей . Сохраняем конфигурацию.

Возвращаемся по дереву объектов в документ ПоступлениеКартриджей . На закладке Движение выбираем регистр КартриджиОплата , запускаем Конструктор движений и заполняем поле Выражение значениями реквизитов документа (Рис.11).

Жмем ОК и попадаем в Модуль объекта программный код (Рис.12).

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

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

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

При поступлении заправленного тонером (восстановленного, отремонтированного и пр.) картриджа считается, что картридж с таким номером уже есть в справочнике Картриджи , и в этом случае при проведении документа ПоступлениеКартриджей, добавляется строкав Табличную частьЗаправки и меняются значения реквизитов Местонахождение и Состояние у текущего картриджа. Добавленный в Модуль объекта код показан на Рис.13.

Теперь можно провести первую пробу работоспособности программы. В Предприятие создаем документ ПоступлениеКартриджей (Рис.14). Нажимаем кнопку Провести и закрыть . Переходим в справочник Картриджи и видим, что в нем появилась строчка с реквизитами купленного картриджа с пустой табличной частью(Рис.15).

Откроем регистр КартриджиОплата (пункт в меню Регистр оплаты картриджей ) и увидим там аналогичную строку.

Создаем и проводим второй документ ПоступлениеКартриджей с тем же картриджем, но заправленным (Рис.16).

Переходим в справочник Картриджи и видим, что у заведенного нами картриджа добавилась строчка в табличной части Заправки и изменился реквизит Состояние (Рис.17).

Ура! Программа работает!

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

Это будет позднее, а сейчас займемся заменой картриджей - создадим документ ЗаменаКартриджа и соответствующий регистр сведений КартриджиЗамена .

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

Для учета замены картриджей заводим для разнообразия регистр сведений (не регистр накоплений) КартриджиЗамена с измерениями и реквизитами (Рис.19). Получилось пока без ресурсов как-то.

В закладке Регистраторы указываем наш документ ЗаменаКартриджа .

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

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

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

// используемые справочники

Принтеры = Справочники.Принтеры;

Картриджи = Справочники.Картриджи;

// конец вставки используемые справочники

// регистр КартриджиЗамена

Движения.КартриджиЗамена.Записывать = Истина ;

Для Каждого ТекСтрокаНоменклатураДокумента Из НоменклатураДокумента Цикл

Движение = Движения.КартриджиЗамена.Добавить();

Движение.НоменклатураКартриджей = НоменклатураКартриджа;

Движение.СнятКартриджНомер = ТекСтрокаНоменклатураДокумента.СнятКартриджНомер;

Движение.УстановленКартриджНомер=

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

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

Движение.ПринтерИнвентарныйНомер =

Движение.ТипКартриджа = ТекСтрокаНоменклатураДокумента.ТипКартриджа;

Движение.ЗаменаКтоДелал = ЗаменаКтоДелал;

Движение.ПричинаЗамены = ТекСтрокаНоменклатураДокумента.ПричинаЗамены;

// изменяем справочник Принтеры

СтрокаНаименования = ТекСтрокаНоменклатураДокумента.ПринтерСерийныйНомер;

Тогда ТекущийОбъект =

Принтеры.НайтиПоРеквизиту("СерийныйНомер",СтрокаНаименования).ПолучитьОбъект();

ТекущийОбъект.НомерКартриджаСейчас =

ТекСтрокаНоменклатураДокумента.УстановленКартриджНомер;

НоваяСтрока = ТекущийОбъект.ЗаменаКартриджей.Добавить();

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

НоваяСтрока.ВидКартриджа = ТекСтрокаНоменклатураДокумента.ТипКартриджа;

НоваяСтрока.НомерУстановленногоКартриджа =

ТекСтрокаНоменклатураДокумента.УстановленКартриджНомер;

НоваяСтрока.НомерСнятогоКартриджа =

ТекСтрокаНоменклатураДокумента.СнятКартриджНомер;

НоваяСтрока.КтоЗаменил = ЗаменаКтоДелал;

НоваяСтрока.ПричинаЗамены = ТекСтрокаНоменклатураДокумента.ПричинаЗамены;

ТекущийОбъект.Записать();

КонецЕсли;

// изменяем справочник Картриджи - установленный картридж

СтрокаНаименования = ТекСтрокаНоменклатураДокумента.УстановленКартриджНомер;

тогда ТекущийОбъект =

Строка = " ";

Строка = Строка + МодельПринтера + " " +

ТекСтрокаНоменклатураДокумента.ПринтерСерийныйНомер + " " +

ТекСтрокаНоменклатураДокумента.ПринтерИнвентарныйНомер;

ТекущийОбъект.МестоНахождения = Строка;

ТекущийОбъект.Записать();

КонецЕсли;

// снятый картридж

СтрокаНаименования = ТекСтрокаНоменклатураДокумента.СнятКартриджНомер;

Тогда ТекущийОбъект =

Картриджи.НайтиПоРеквизиту("Номер",СтрокаНаименования).ПолучитьОбъект();

ТекущийОбъект.МестоНахождения = "Склад";

ТекущийОбъект.Состояние = Перечисления.СостояниеКартриджа.Пустой;

ТекущийОбъект.Записать();

КонецЕсли;

// конец изменения справочников

КонецЦикла;

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

Для проверки заполняем и проводим документ ЗаменаКартриджа (Рис.21) . Заходимв справочник Принтеры и видим, что у выбранного принтера добавилась строка в табличную часть Заправки с реквизитами проведенного нами документа и реквизит НомерКартриджаСейчас принял значение номера установленного картриджа (Рис.22).

В справочнике Картриджи у картриджа, установленного в принтер, в реквизит Местоположение записались данные текущего принтера (Рис.23) . И кроме того в регистр сведений КартриджиЗамена записалось движение по документу (Рис.24)

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

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

Естественно требуется доработка функциональности, добавление отчетов, исправление ошибок и отладка. Об этом в следующей части статьи.

Полная версия статьи приведена в файле Часть1.doc

Сегодняшняя наша статья написана человеком, которого Вы, уважаемые читатели, уже знаете по . Его зовут Павел Гришенков.

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

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

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

В помещении воцарилась тишина. Она стала особенно гнетущей, когда кто-то додумался посмотреть в Интернете значение слова - ХОЗРАСЧЕТ (ведение хозяйства какого-нибудь предприятия, производства на основе хозяйственной самостоятельности, самофинансирования, самоокупаемости и рентабельности). Так их маленькое «ООО», обслуживающее только компании из агрохолдинга, существовать не могло.

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

На общем срочном собрании программу «Excel» с макросами, как и прочие инструменты из пакета «Microsoft Office», отбросили сразу. Эти программные продукты позволяли быстро разработать необходимые бланки, но как их эффективно обрабатывать и учитывать за несколько месяцев или лет подряд не знал никто?

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

Итак, запускаем 1С и добавляем новую информационную базу

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


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

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

Для нашего случая потребуется насколько таких объектов.


Рассмотрим подробнее механизм создания справочника на примере «Сотрудник»



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

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



Здесь отмечаем, что в справочнике будет присутствовать иерархия групп и элементов. Это необходимо для того, чтобы разнести ФИО сотрудников по организациям или отделам.

Вкладка «Данные».



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

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

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

Вот такой у меня получился результат.



Возвращаемся вновь в конфигуратор.

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

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



Для будущей конфигурации потребуется два документа: «Заявка» и «Акт выполненных работ ». Второй рассмотрим подробнее.

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



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



В дальнейшем, чтобы упростить работу с конфигурацией и частично автоматизировать заполнение документов, можно выбирать значения цен на услуги IT-отдела из созданного периодического регистра сведений . Также следует обратить внимание на закладку «Модуль».

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

Благодаря коду можно, скажем, заставить программу при каждом изменении значений "Количества" или "Цены" на оказываемые услуги автоматически пересчитывать поле "Сумма". Но пока что оставим эту закладку пустой и, запустив отладку, перейдем в 1С:Предприятие.



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



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

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

Вот так работает конструктор движения документа. Движение документа - это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые этим документом.



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



После этого, в 1С:Предприятие при проведении каждого документа ("Акт выполненных работ" и "Заявка") будут формироваться соответствующие записи.



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

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



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

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



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

Все, можно запускать 1С:Предприятие в режиме отладки.



P.S. Для тех, кто заинтересовался написанием конфигурации на платформе 1С, прикладываю .

В работе программиста 1С нередки требования по разработке конфигураций с нуля. Это не сложно. Чтобы убедиться в этом — проверим на собственном опыте.

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

Самостоятельное создания базы 1С с нуля

1. Создадим папку на диске, например C:\1C\myUt.

4. После входа слева открывается окно дерева конфигурации (если не открылось — вернитесь к предыдущему пункту).

5. Откроем свойства конфигурации (правой кнопкой на строке Конфигурация, пункт Свойства).

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

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

8. В поле Краткая информация введем «Мой склад и управление торговлей. Редакция 1.». Это описание конфигурации. То же скопируем в поле Подробная информация.

9. В поле Заставка нажмите Открыть. Он предложит Вам выбрать картинку для заставки. Формат — .jpg. Размер 195х70 пикселей.

10. В поле Поставщик впишите свое имя. В поле версия — значение «1.0».

11. Остальные значения оставим по умолчанию. Нажмите сохранить (Файл / Сохранить) и обновить (Конфигурация / Обновить конфигурацию базы данных).

12. Мы только что создали основу конфигурации 1С с нуля. Конечно большое количество настроек предстоит впереди, но мы справимся.

До встречи в серии 2.
Удачи!

Скачать готовую базу по этой инструкции >>

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

Установка шаблона.

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

Открываем каталог с программой установки типовой конфигурации и запустим файл setup.exe.

Запустится программа установки конфигурации. Нажимаем «Далее» на начальном окне установки.

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

Дожидаемся окончания установки и нажимаем «Готово», для завершения работы мастера.

Создание новой базы данных из шаблона

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

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

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

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

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

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

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

Материал рассчитан как на начинающих разработчиков, не знакомых с системой 1С:Предприятие, так и на тех, кто уже создает или сопровождает приложения на этой платформе, в том числе на слушателей, имеющих опыт работы с версией 1С: Предприятие 7.7 или 8.1.

Главная задача курса - научить слушателей навыкам практического конфигурирования и программирования на платфороме 1С: Предприятие 8.2.

Способ обучения - дистанционный. Каждый урок содержит теоретические и практические задания для самостоятельного решения.

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

для установки эталонной базы вам понадобится платформа 1С:Предприятие 8.2 (учебная версия) или клиент 1С:Предприятие версии не ниже 8.2.15.301. Узнать версию используемого вами клиента 1С 8.2 вы можете, выбрав в главном меню в режиме Конфигуратора или 1С:Предприятие Справка - О программе...

Общее время просмотра (10 видео): 4ч 23 мин

1. Знакомство с системой. Режимы запуска системы. Знакомство с объектами системы "Перечисление" и "Справочник" .

Конфигурация - прикладное решение, разработанное на технологической платформе «1С:Предприятие».

Информационная база 1С - единое хранилище для конфигурации и данных, характеризуемое определенным адресом хранения. Возможны два варианта хранения информационной базы 1С: файловый и клиент-серверный вариант. Для использования клиент-серверного варианта дополнительно необходимо ПО сторонних разработчиков (одна из СУБД: Microsoft SQL Server, PostgreSQL, IBM DB2 или Oracle). При использовании файлового варианта хранения информационная база 1С представляет собой один файл - 1Cv8.1CD. Этот файл имеет специальный формат, поддерживаемый системой 1С:Предприятие 8. На наших уроках мы рассматривает файловый вариант хранения информационной базы. Если в данном определении используются непонятные Вам термины, то не стоит расстраиваться - более подробно данная тема будет рассматриваться на 3 уроке.

Режим запуска 1С:
"Конфигуратор" - специальном режиме запуска системы 1С:Предприятие 8.2 для разработки и модификации прикладного решения. В данном режиме разработчик определяет общую архитектуру прикладного решения и структуру данных, создает макеты и экранные формы, с помощью встроенного языка в модулях объектов задает алгоритмы поведения объектов. Второй "профессией" "Конфигуратора" является администрирование, которое включает в себя ведение списка пользователей, настройку прав доступа, резервное копирование информационной базы, мониторинг системных событий (журнал регистрации настраивается в конфигураторе; просматривается как в конфигураторе, так и в режиме 1С:Предприятии) и выполнение других действий для поддержания работоспособности системы.
"1С:Предприятие" - режим работы конечного пользователя. В данном режиме пользователь вводит данные в базу данных, формирует отчеты, печатает документы и т.д.

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

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

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

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

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

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

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

Для того чтобы установить эталонную конфигурацию Вам необходимо:

3. Запустить 1С и в окне запуска 1С нажать кнопку "Добавить".

4. Во всплывшем диалоговом окне выбрать вариант "Добавление в список существующей информационной базы". Задать название информационной базы и указать путь к каталогу с файлом конфигурации.

теоретический тест урока 1 - пройти

Разделение прикладного решения на подсистемы. Знакомство с объектом системы "Документ". Назначение табличной части Документа.

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

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

Регистры накопления. Знакомство с регистрами накопления остатков. Настройка рабочего стола. Знакомство с объектом конфигурации Форма.

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

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

Существует два вида регистров накопления: регистры накопления остатков и регистры накопления оборотов.

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

Чем хорош регистр накопления?:

Имеет конструктор для описания изменений в регистре при проведении документов (не пишем код руками);
- позволяет получить нужные итоги на любой момент времени или документ;
- "помнит" какие именно изменения в итоги внес тот или иной документ;
- все необходимые изменения в итогах, связанные с отменой проведения документа, изменением проведенного документа и удалением проведенного документа рассчитываются системой автоматически (если надо – можно прописать в ручную);
- обеспечивает контроль уникальности записей, хранящихся в регистре накопления. Благодаря этому в регистре накоплений не может находиться двух записей, относящихся к одной и той же строке одного и того же документа.

Движения документа - это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом.

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

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

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

У регистра накопления могут быть лишь 3 вида форм:

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

Выгрузка эталонной базы, создаваемой на 3 уроке без выполнения домашнего задания

Регистры накопления. Знакомство с регистрами накопления оборотов. Объект системы Константа. Работа с объектом конфигурации Форма.

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

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

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

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

Свойство командной панели "Источник действия" - определяет источник действий для командной панели. Можно указать "Все источники" или выбрать конкретный источник действий. Элементы управления, размещенные в форме, могут предоставлять набор действий, связанный с их собственными свойствами. Так, например, со списком можно производить различные действия по добавлению, редактированию, удалению, отбору, просмотру и другие действия. В свойстве можно указать конкретный элемент или форму, а можно выбрать в качестве источника все элементы и форму.

Директива компиляции – это инструкция, которая сообщает платформе 1С в какой среде будет исполняться данная процедура или функция. Директива всегда начинается амперсантом - знаком “&”. Если директива отсутствует, то используется директива по умолчанию – &НаСервере. Использование нескольких директив для одной процедуры (функции) невозможно.

Встроенный язык программирования 1С:Предприятие 8.2. Расположение программных модулей. Структура программных модулей. Примитивные типы данных. Базовый синтаксис языка 1С.

Программный модуль - это своеобразный «контейнер» для размещения текстов процедур и функций на встроенном языке 1С. Эти процедуры и функции вызываться системой в определенные моменты работы системы. Программные модули не имеют формальных границ своего описания типа: "Начало модуля" - "Конец модуля".

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

На уроке мы познакомились со следующими программными модулями:

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

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

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

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

Область объявления переменных размещается от начала текста модуля до первого оператора Процедура или оператора Функция или любого исполняемого оператора. В этом разделе могут находиться только операторы объявления переменных Перем.

Область описания процедур и функций размещается от первого оператора Процедура или оператора Функция до любого исполняемого оператора вне тела описания процедур или функций.

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

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

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

Объявление переменной (в явном виде) осуществляется при помощи оператора Перем. В языке 1С переменные не обязательно объявлять в явном виде. Неявным объявлением переменной является первое ее появление в левой части оператора присваивания (знак =). Тип переменной определяется типом присвоенного ей значения. В процессе исполнения программа переменная может менять свой тип (мягкая типизация), например:

Перем1 = "Иванов"; //неявное объявление переменной, тип переменной (что она хранит) Строка

Перем1 = 32; //присвоение нового значения нашей переменной, теперь она имеет тип Число

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

Свойства Общих модулей. Создание системы напоминаний. Продвинутая работа с формами. Программное описание поведения формы при взаимодействии с пользователем.

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

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

Свойства общих модулей

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

Сервер – процедуры и функции данного общего модуля могут быть выполнены на стороне сервера.

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

Клиент – процедуры и функции данного общего модуля могут быть выполнены на стороне клиента.

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

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

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

Не используется – отключение повторного использования;
на время вызова – на время выполнения определенной процедуры;
на время сеанса – пока пользователь не закрыл сеанс (не завершил работу с программой).

Первая часть урока завершается созданием формы элемента нашего справочника

2 часть урока

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

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

//установить новое значение
Объект.Срок = "2014.02.02";

Для управления свойствами реквизитов формы используется свойство Элементы:

//установить новое значение свойства
Элементы.Срок.Доступность = Истина;

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