Файл: Знакомство с платформой 1С: Предприятие 8.3.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 874

Скачиваний: 13

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рис. 183. Окно конструктора движения регистров

Щелчком на кнопке «OK» сформируем процедуру проведения документа (листинг 4.2).

Листинг 4.2. Процедура проведения документа ПоступлениеТоваров

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

// регистр КоличествоТоваров Приход

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

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

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

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

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

Движение.Товар = ТекСтрокаПереченьТоваров.Товар;

Движение.Филиал = Филиал;

Движение.Количество = ТекСтрокаПереченьТоваров.Количество;

КонецЦикла;

// регистр РасчетыСФирмами Расход

Движения.РасчетыСФирмами.Записывать = Истина;

Движение = Движения.РасчетыСФирмами.Добавить();

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

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

Движение.Фирма = Фирма;

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

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

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

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

В результате действий конструктора мы получим новую процедуру проведения документа ПродажаТоваров (листинг 4.3).

Листинг 4.3. Процедура проведения документа ПродажаТоваров

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


// регистр КоличествоТоваров Расход

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

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

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

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

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

Движение.Товар = ТекСтрокаПереченьТоваров.Товар;

Движение.Филиал = Филиал;

Движение.Количество = ТекСтрокаПереченьТоваров.Количество;

КонецЦикла;

// регистр ПродажиПоФилиалам

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

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

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

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

Движение.Филиал = Филиал;

Движение.Менеджер = Менеджер;

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

КонецЦикла;

// регистр РасчетыСФирмами Приход

Движения.РасчетыСФирмами.Записывать = Истина;

Движение = Движения.РасчетыСФирмами.Добавить();

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

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

Движение.Фирма = Фирма;

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

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

Теперь можно перейти в режим 1С: Предприятие и заново провести имеющиеся документы по продаже товаров.

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

Рис. 184. Вкладка «Командный интерфейс» формы документа ПродажаТоваров

Теперь перейдем в режим 1С:Предприятие и посмотрим, к чему привели наши действия. Так, если в списке документов выбрать и открыть конкретный документ ПродажаТоваров, то мы увидим ссылку Расчеты с фирмами, позволяющую просмотреть движения по регистру РасчетыСФирмами (рис. 185).

Рис. 185. Добавление в форму документа ссылки для перехода к регистр

Документ ВыпискаБанка

Перейдём к процессу погошения возможных задолжностей.

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


Итак, создадим документ ВыпискаБанка. Во вкладке «Данные» нужно разместить две табличные части:

  • ПриходСредств
  • РасходСредств

В каждом их них по два реквизита:

  • Фирма (тип данных — СправочникСсылка.Фирмы)
  • Сумма (тип данных — число)

Теперь перейдём на вклвдку «Движения» Движения для формирования движений по регистру РасчетыСФирмами (рис. 186).

Рис. 186. Вкладка «Движения» окна редактирования документа ВыпискаБанка

Здесь воспользуемся кнопкой Конструктор движений (рис. 187). Так как долг перед нами уменьшается – Расход.

Рис. 187. Формирование полей для таблицы ПриходСредств

И добавим ещё одно движение по этому регистру (рис. 188)

Рис. 188. Формирование полей для таблицы РасходСредств

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

Листинг 4.4. Процедура проведения документа ВыпискаБанка

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

// регистр РасчетыСФирмами Расход

Движения.РасчетыСФирмами.Записывать = Истина;

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

Движение = Движения.РасчетыСФирмами.Добавить();

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

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

Движение.Фирма = ТекСтрокаПриходСредств.Фирма;

Движение.Сумма = ТекСтрокаПриходСредств.Сумма; КонецЦикла;

// регистр РасчетыСФирмами Приход

Движения.РасчетыСФирмами.Записывать = Истина;

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

Движение = Движения.РасчетыСФирмами.Добавить();

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

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

Движение.Фирма = ТекСтрокаРасходСредств.Фирма;

Движение.Сумма = ТекСтрокаРасходСредств.Сумма;

КонецЦикла;

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

На рис. 189 показан результат наших действий.

Рис. 189. Форма списка регистра Расчеты с фирмами

Автоматизация расчета суммы по табличной части документа

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


Рис. 190. Вкладка «Прочее» окна редактирования документа ПродажаТоваров

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

Рис. 191. Окно «Модуль объекта» документа «ПродажаТоваров»

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

Рис. 192. Окно со списком процедур и функций обработки событий

Наиболее часто используется связанное с документом событие ОбработкаПроверкиЗаполнения. В этом случае мы можем проверить корректность заполнения реквизитов документа и, если они заполнены неправильно, выдать об этом сообщение пользователю. Ещё в этом случае значению переменной Отказ в процедуре следует присвоить значение Истина.

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

Рис. 193. Документ ПродажаТоваров

При этом мы поработаем с коллекцией объектов. Универсальная коллекция — это упорядоченная последовательность элементов одинаковой структуры. Количество элементов в универсальной коллекции произвольно.

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

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


Рис. 194. Выбор процедуры обработки события ПередЗаписью

Листинг 4.5. Процедура обработки события ПередЗаписью

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

СуммаТЧ=0;

Для Каждого СтрТабЧасти Из ПереченьТоваров Цикл

СуммаТЧ= СуммаТЧ+ СтрТабЧасти.Сумма;

КонецЦикла;

СуммаПоДокументу= СуммаТЧ;

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

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

Теперь можно перейти в режим 1С:Предприятие и убедиться, что данная доработка автоматически фиксирует общую сумму по всему документу (рис. 195).

Рис. 195. Автоматизация заполнения поля Сумма по документу

Отчет по взаиморасчетам с фирмами

Сейчас мы будем оформлять долги и задолжности в виде отчёта основываясь на регистре РасчетыСФирмами, где автоматически фиксируются эти данные.

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

Рис. 196. Окно конструктора запросов

На вкладке «Объединения/Псевдонимы» зададим более понятные псевдонимы полей (рис. 197), после чего сформируем текст запроса (листинг 4.6).

Рис. 197. Вкладка Объединения/Псевдоним

Листинг 4.6. Запрос для извлечения информации из регистра РасчетыСФирмами

ВЫБРАТЬ

РасчетыСФирмамиОстатки.Фирма,

РасчетыСФирмамиОстатки.СуммаОстаток КАК Долг

ИЗ РегистрНакопления.РасчетыСФирмами.Остатки КАК РасчетыСФирмамиОстатки

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

Рис. 198. Окно выбора полей для отчета

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