Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебники 80246

.pdf
Скачиваний:
3
Добавлен:
01.05.2022
Размер:
1.57 Mб
Скачать

Рис. 42. Установка события «ПриИзменении»

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

«ОК».

Листинг 1. Событие «ПриИзменении» колонки «Количество»

&НаКлиенте Процедура СоставКоличествоПриИзменении(Элемент)

//Получим строку которую меняем ТекДанные = Элементы.Состав.ТекущиеДанные;

//Проверим тип данных Если НЕ ТекДанные = Неопределено Тогда

ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена; ТекДанные.СуммаНДС = ПроцентНДС(ТекДанные.СтавкаНДС) *

ТекДанные.Цена / 100; ТекДанные.Всего = ТекДанные.Сумма + ТекДанные.СуммаНДС;

КонецЕсли;

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

&НаСервере Функция ПроцентНДС(СсылкаНаСтавкуНДС)

Возврат СсылкаНаСтавкуНДС.ПроцентНДС; КонецФункции // ПроцентНДС()

39

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

Товар; Количество; Цена; СтавкаНДС.

Сумма по документу будет считаться автоматически. Т.к. система 1С:Предприятие версии 8.2 и выше

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

Листинг 2. Событие «ПриИзменении» колонки «Товар».

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

//Получим строку которую меняем ТекДанные = Элементы.Состав.ТекущиеДанные;

//Проверим тип данных Если НЕ ТекДанные = Неопределено Тогда

//Получим значения товара ДанныеТовара = ВернутьДанныеТовара(ТекДанные.Товар);

ТекДанные.ЕдиницаИзмерения = ДанныеТовара.ЕдиницаИзмерения; ТекДанные.Цена = ДанныеТовара.Цена; ТекДанные.СтавкаНДС = ДанныеТовара.НДС;

ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена; ТекДанные.СуммаНДС = ПроцентНДС(ТекДанные.СтавкаНДС) *

ТекДанные.Цена / 100; ТекДанные.Всего = ТекДанные.Сумма + ТекДанные.СуммаНДС;

КонецЕсли;

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

&НаСервере Функция ВернутьДанныеТовара(СсылкаНаТовар)

СтруктураДанных = Новый Структура; СтруктураДанных.Вставить("Цена", СсылкаНаТовар.ЦенаОптовая); СтруктураДанных.Вставить("НДС", СсылкаНаТовар.СтавкаНДС);

40

СтруктураДанных.Вставить("ЕдиницаИзмерения", СсылкаНаТовар.ЕдиницаИзмерения);

Возврат СтруктураДанных;

КонецФункции // ВернутьДанныеТовара()

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

7. Написать процедуры «ПриИзменении»: Цена, СтавкаНДС.

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

Листинг 3. Предопределенная процедура обработки проведения Приходной накладной

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

Сч19_3 = ПланыСчетов.Учебный.НДСПоПриобретеннымМПЗ; Сч41_1 = ПланыСчетов.Учебный.ТоварыНаСкладах; Сч60_1 = ПланыСчетов.Учебный.РасчетыСПоставщикамиВРублях; Сч68_3 = ПланыСчетов.Учебный.НДС;

//Проверим заполнение реквизитов Если Контрагент.Пустая() Тогда

Сообщить("Не выбран контрагент! ""Документ приходная накладная"" №" + Номер + " от " + Дата + " не проведен!");

Отказ = Истина; Возврат;

КонецЕсли;

41

Если Склад.Пустая() Тогда Сообщить("Не выбран склад! ""Документ приходная

накладная"" №" + Номер + " от " + Дата + " не проведен!"); Отказ = Истина; Возврат;

КонецЕсли;

//Проводки Движения.Хозрасчетный.Записывать = Истина;

Для Каждого ТекСтрокаСостав Из Состав Цикл Если ТекСтрокаСостав.Сумма > 0 Тогда

Движение = Движения.Хозрасчетный.Добавить();

Движение.СчетДт = Сч41_1; Движение.СчетКт = Сч60_1; Движение.Период = Дата; Движение.Сумма = ТекСтрокаСостав.Сумма;

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

Движение.Содержание = "Поступили товары";

 

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Т

овары]

= ТекСтрокаСостав.Товар;

 

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.С

клады]

= Склад;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.К онтрагенты] = Контрагент;

КонецЕсли; КонецЦикла;

//Ниже следуют проводки по всему документу Сумма_НДС = Состав.Итог("СуммаНДС");

Если Сумма_НДС > 0 Тогда

//1. Выделяем НДС Движение = Движения.Хозрасчетный.Добавить(); Движение.СчетДт = Сч19_3; Движение.СчетКт = Сч60_1; Движение.Период = Дата;

Движение.Сумма = Сумма_НДС; Движение.Содержание = "Выделен НДС по пост, товарам";

42

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.К онтрагенты] = Контрагент;

//2. Производим зачет НДС Движения.Хозрасчетный.Записывать = Истина; Движение = Движения.Хозрасчетный.Добавить(); Движение.СчетДт = Сч68_3; Движение.СчетКт = Сч19_3; Движение.Период = Дата; Движение.Сумма = Сумма_НДС;

Движение.Содержание = "Зачтен НДС по пост, товарам";

КонецЕсли;

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

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

Далее следует создание проводок. Проводки, говоря условно, будут двух типов; по каждой строке табличной части документа и по всему документу в целом. По каждой строке будет создана отдельная проводка, отражающая поступление товара на склад (Д41.1 — К60.1 сумма каждой проводки равна значению колонки «Сумма»). По всему документу оформляются две проводки (Д19.3 — К60.1 и Д68.3 — К19.3 на сумму НДС).

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

43

Рис. 43. Установка видимости движений по регистрам

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

Проверить:

1)вся ли информация из справочника по выбранному товару перенесена в табличную часть правильно;

2)правильно ли выполнены все вычисления;

3)происходит ли пересчет при помощи соответствующих процедур после редактирования числовых реквизитов табличной части;

4)правильно ли функционируют все кнопки управления;

44

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

11. Провести накладную, нажав ОК. Строка в журнале документов, соответствующая данному документу, должна иметь слева пиктограммку с зеленой «птичкой», что означает проведенность документа. Нажмите ссылку «Хозрасчётный» в форме документа и проверьте правильность выполненных проводок (рис. 45).

Рис. 44. Приходная накладная в режиме пользователя 1С:Предприятие

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

45

ЛАБОРАТОРНАЯ РАБОТА № 5

СОЗДАНИЕ ШАБЛОНА ВЫХОДНОЙ ПЕЧАТНОЙ ФОРМЫ. ПЕЧАТЬ ДОКУМЕНТА

1. ЦЕЛЬ РАБОТЫ

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

2. КОММЕНТАРИИ ПО ВЫПОЛНЕНИЮ РАБОТЫ Создание выходной печатной формы

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

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

1.Создание экземпляра объекта типа «ТабличныйДокумент» при помощи конструктора Новый ТабличныйДокумент.

2.Привязка его к некоторому шаблону печатной формы

46

при помощи метода «ТабличногоДокумента» ПолучитьМакет().

3.Вывод области из шаблона в таблицу готового отчета методом ВывестиОбласть().

4.Необязательно: назначение опций вывода выходной таблицы.

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

Конфигуратор системы 1С:Предприятие включает набор

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

Настройка шаблона выходных печатных форм при помощи встроенного редактора таблиц

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

Действия с областями. Для создания новой области необходимо выполнить следующие действия:

1.Выделить в таблице включаемые в секцию строки или столбцы.

2.Выбрать в главном меню команду Таблица → Имена

Назначить имя для секции.

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

47

Рис. 46. Задание имени создаваемой области Тем же способом производится и создание вложенных

областей, т.е. таких, которые целиком принадлежат какойлибо другой области.

Область можно добавить или удалить с помощью команд из меню Таблица → Имена …

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

(рис. 47).

Рис. 47. Панель свойств ячейки. Вкладка Текст. Панель свойств разбита на шесть вкладок. Самыми

важными с функциональной точки зрения являются вкладки Основная и Макет.

Макет. Содержит следующие опции:

Заполнение - раскрывающийся список для выбора варианта обработки содержимого ячейки при трансляции.

48

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]