Часть вторая “Документы”

Автор: admin · Рубрика Блог починаючого програміста · Есть 1 комментарий

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

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

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

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

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

clip_image002[1]

clip_image004[1]

Общий вид справочника дисков.

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

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

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

Теперь создадим форму документа. Общий вид не редактируем.

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

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

Создадим новый общий модуль «ЗФ» (сокращение от «общие функции)».

clip_image006[1]

Создаем общий модуль.

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

Сама процедура выглядит так:

Процедура ПерерахунокСуми(СтрокаТабличноїЧастини) экспорт

СтрокаТабличноїЧастини.сума=СтрокаТабличноїЧастини.кть*СтрокаТабличноїЧастини.ціна;

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

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

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

clip_image008[1]

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

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

ЗФ.ПерерахунокСуми(Элементыформы.Товар.ТекущиеДанные);

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

Где ЗФ.ПерерахунокСуми() – вызов Совместного модуля ЗФ и процедуры этого модуля «ПерерахунокСумы», а Элементыформы.Товар.ТекущиеДанные это передача ссылки на данные строки табличного элемента формы «Товар».

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

Запустите «1с: Предприятие 8.1» в режиме «Предприятие» и создайте несколько Приходных накладных.

Теперь создадим документ «ПозичивПодивитись» где будут следующие реквизиты:

- Кому (соответствующий справочник «Друг»)

- Дата возвращения (тип дата)

И табличная часть Диски с колонками:

- Диски

- Количество

- Цена

- Сумма

(последние три позиции чтобы выбить деньги если не отдаст :-) )

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

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

Комментарии

  1. slespervecy каже:

    Начало хорошее. Добавил в закладки, завтра обязательно дочитаю :)



Оставить комментарий или два