Создание расходной накладной 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание расходной накладной



 

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

Расходная накладная будет располагаться в уже существующем журнале "Накладные". Данные по документу расходная накладная можно свести в таблицу:

Идентификатор: РасходнаяНакладная Журнал: Накладные Нумератор: Накладные Периодичность: Длина: Тип: Уникальность: Автонумерация: да Оперативный учет: да Может являться основанием для документа любого вида?:
Является основанием для Вводится на основании
Шапка
Реквизит Описание ТипЗначения Доп.
Покупатель Кому ушел товар С. Контрагенты  
Договор Основание отгрузки товара С. Договора  
Склад Откуда отгрузили то­вар С.Склады  
Таблица
Реквизит Описание ТипЗначения Доп.
Товар Товар С. Номенклатура  
Кол Количество в про­извольной ед. из­мерения Число 8.2 +
Ед Единица измере­ния С. Единицы  
КолО Количество в ос­новной ед. измере­ния Число 8.2 +,И
Цена Цена поставки Число 7.2 +
Сумма Сумма документа Число 15.2 +, И

 

1. Создать новый документ.

2. Заполнить свойства и реквизиты согласно таблицы.

3. Создать форму документа.

4. Редактировать форму накладной по аналогии с приходной накладной.

5. Поле реквизита "НомерДок" сделать недоступным для редактирования.

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

7. Процедуры в модуль документа занести из модуля формы приходной накладной. Только везде ЦенаП поменять на ЦенаР и поменять название процедуры "Поставщик()" на "ПокупатсльО", убрать процедуру "Цена()".

8. Текстовые поля с итогами по колонкам таблицы можно просто скопировать из формы документа "Приходная накладная".

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

9. Добавить функцию "ДатаДок()" в поле реквизита "ДатаДок".

В модуль формы добавить процедуру:

Процедура ДатаДок()

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

Пока ПолучитьСтроку()= 1 Цикл

Цена=Окр(Товар.ЦенаР.Получить(ДатаДок),2,1);

Сумма=Окр(КолО*Цена,2,1);

КонецЦикла;

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

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

10. Войти в окно редактирования свойств справочника Номенклатура.

11. Нажать [Формы списка >].

12. Выпадает список. Выбрать пункт "Редактировать".

13. Появилось окно редактирования списка форм списка справочника.

14. [Новый].

15. Ввести идентификатор "ДляПодбора". [ОК].

16. Курсор на новой форме списка "ДляПодбора".

17. Нажать [Для выбора].

18. Галочка во второй колонке переместилась, и встала напротив "ДляПодбора".

19. [Открыть].

20. В форме списка оставить только поля "Код" и "Наименование".

21. Через меню "Вставить" командой "Текст" выбрать элемент диалога текст для вставки.

22. Указать ему место для вставки в табличной части. Добавилась новая колонка. В ней будет выводиться остаток товаров на рабочую дату.

23. В свойствах этой колонки типа "Текст" написать заголовок "Ост".

24. В формулу написать функцию Ост().

25. Добавить в экранную форму поле ввода "Склад" типа С.Склады - остатки будут по конкретному складу. Это поле сделать недоступным.

26. В модуль формы списка добавить функцию:

Функция Ост()

ТекТовар=ТекущийЭлемент();

// Получаем текущий товар в строке

КолТов=Регистр.ОстаткиТоваров.СводныйОстаток(Склад,

ТекущийЭлемент()„ "Количество");

// Получаем суммарный остаток по ресурсу "Количество"

// по измерениям "Склад" и "Товар", по остальным измерениям

суммируем

Если КолТов<=0 Тогда

Возврат("");

// если товара на складе нет в поле Ост вернем пустую строку Иначе

Возврат(КолТов);

// иначе вернем количество остатка

КонецЕсли;

КонецФункции

27. Вернуться к форме документа "Расходная накладная".

28. Добавить в экранную форму кнопку.

29. Заголовок будет "Подбор", формула-Подбор().

В модуль формы добавить две процедуры:

Процедура Подбор()

// Эта процедура запускается по нажагию кнопки [Подбор] От

крыть11одбор(,,Номенклатура","ДляПодбора"); // Инициализируем

механизм подбора и указываем, что подбирать // будем из

справочника Номенклатура, используя форму списка //"ДляПодбора"

УстановитьЗначениеВПодборе("Склад", Склад);

// В форму подбора в поле "Склад" передаем значение склада из

// текущего документа

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

Процедура ОбработкаПодбора(ВыбТов)

// Предопределенная процедура, срабатывающая по событию - выбор

// элемента ВыбТов из справочника Ко-

лОст-

Ргистр.ОстаткиТоваров.СводныйОстаток(Склад,ВыбТов„"Количеств

о

"); // Проверим остаток. Если Кол0ст<~0 Тогда Возврат;

// если остаток на складе отсутствует, завершаем процедуру Коне

цЕсли;

ТабЗн 1 =СоздатьОбъект(мТаблицаЗначений"); // временная динами

ческая таблица

ТабЗн2=СоздатьОбъект("ТаблицаЗначений"); // еще одна временная

динамическая таблица

ТабЗн2.НоваяКолонка("Остаток,,.иЧисло",17,2,"Остаток", 17); // ко

лонки д. таблицы РегО=СоздатьОбъект("Регистр.ОстаткиТоваров");

РегО.УстановитьФильтр(Склад.ВыбТов); // в копии регистра остат

ков нас будут интересовать // итоги по конкретному складу и

конкретному товару

РегО.ВыгрузитьИтоги(ТабЗн 1,1,1); 7/ перегрузим итоги в д. таблицу

РегО="";

ТабЗн 1.ВыбратьСтроки(); Пока ТабЗн 1.ПолучитьСтроку()=Ч Цикл

Ост=ТабЗн 1.Количество; Если 0ст>0 Тогда // есть что проверять //

если есть остаток, мы его перенесем во вторую д. таблицу ТабЗн2. Н

оваяСтрока(); ТабЗн2-Остаток=Ост; КонецЕсли; КонецЦикла;

ТабЗн2.Свернуть(" 1 ","2"); ВыбСтрока=1;

Если ТабЗн2.ВыбратьСтроку(ВыбСтрока, СокрЛП(ВыбТов.Код)+" ("

+СокрЛП(ВыбТов.Наименование)+")")=1 Тогда НоваяСтрока(); //

создаем в документе новую строку

Товар=ВыбТов; // заполняем поле "Товар"

КолОст=ТабЗн2.ПолучитьЗначение(ВыбСтрока,"Остаток" // по вы

бранной строке получить остаток

СпрЕд=СоздатьОбъект("Справочник.Единицы");

СпрЕд.ИспользоватьВладельца(Товар); СпрЕд.ВыбратьЭлементы();

Пока СпрЕд.Г1олучитьЭлемент()=1 Цикл Если

СпрЕд.Ед='Говар.ЕдИзм Тогда Ед=СпрЕд.ТекущийЭлемент();

Прервать; КонецЕсли; КонецЦикла;

Цена=Окр(Товар.ЦенаР.Получить(ДатаДок),2,1); КолВыб=0;

Если ВвестиЧисло(КолВыб,СокрЛГ1(ВыбТов.Код)+"

кол:"+Строка(КолОст),8,2,0)= 1 Тогда // Введем нужное нам количе

ство Если КолВыб>КолОст Тогда

// сравним введенное нами количество с остатком Кол В ыб=КолОст;

КонецЕсли; Кол=КолВыб;

КолО=Окр(Кол*(Ед.Коэффициент),2,1); Сум

ма=Окр(КолО*Цена,2,1); КонецЕсли;

АктивизироватьСтроку(); // установим курсор в документе на строку,

которую мы ввели

КонецЕсли; КонецПроце дурры

 

30. Перейти к написанию модуля проведения документа.

31. Написать в модуль документа следующее:

 

Процедура Обработка!!роведения() РегОст-

СоздатьОбъект("Регистр.ОстаткиТоваров"); Если Срав

нитьТА()~-1 Тогда

// Проверяем, не проводится ли документ ранее точки ак

туальности итогов

РегОст.ВремснныйРасчет(I);

РассчитатьРегистрыНа(ТекущийДокумент());

КонецЕсли;

// Проверка на наличие на остатке ВыбратьСтроки(); Фла

гОтказа- 0;

Пока (ПолучитьСтроку()>0) Цикл

Остат-

РегОст.СводныйОстаток(Склад,Товар,,"Количество");

Если Остат<КолО Тогда

Сообщить("Нет товара № "

+СокрЛП(Товар,Код)+7"

ь" в колич. "' КолО) " (имеется 'Остат+")");

ФлагОтказа=-1;

КонецЕсли;

КонецЦикла;

// аналогичную часть кода см. в отчете ОстаткиНаСкладе

Если ФлагОтказа-1 Тогда

НеПроводитьДокумент();

Возврат;

КонецЕсли;

// Это см. документы Приход/Расход денег

// По регистру взаиморасчетов Ре

гистр.Взаиморасчеты.Контрагент = Покупатель; Регистр.

Взаиморасчеты. Договор = Договор; Ре

гистр.Взаиморасчеты.Сумма = Итог("Сумма"); Ре

гистр.Взаиморасчеты.ФлагДвижения = 2; Ре

гистр.Взаиморасчеты. ДвижениеРасходВыполнить(); Ес

ли

Конст-

нта.МетодСписания=Перечисление.МетодСписания.ФИ

ФО Тогда // Здесь будет записана методика списания по

FIFO ИначеЕсли Кон

станта.МетодСиисания=Перечисление.МетодСписания.

ЛИФО Тогда

// Здесь будет записана методика списания по LIFO Инна

чеЕсли Кон

станта.МетодСписания=Перечисление.МетодСписания.

По_среднему Тогда

// Здесь будет записана методика списания по-среднему

КонецЕсли;

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

32. Начнем описание методик с FIFO;

33. Вместо строки "// Здесь будет записана методика списания по FIFO" написать:

// Здесь будет записана методика списания по FIFO ТабЗн 1

=СоздатьОбъект("ТаблицаЗначений"); // временная таблица

ТабЗн2~СоздатьОбъект(" Табл ицаЗ начений"); // еще одна

временная таблица

ТабЗ н2. НоваяКолонка("Партия","Документ.Приходная

Накладная");

ТабЗн2.НоваяКолонка("КоличествоП","Число", 14,2);

ТабЗн2.НоваяКолонка("СуммаП","Числоп,19,2);

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

Пока ПолучитьСтроку()= ^ Цикл

КолВыб=КолО;

РегОст.УстановитьФильтр(Скл ад. Товар); РегОст.Вы груз итьИтоги(

ТабЗ нК 1); // см. операцию подбора ТабЗн 1.Свернуть("3","4,5");

// а здесь интересно: Структура ТабЗн! после выгрузки будет

аналогична

// структуре регистра. Реквизит "Партия" в регистре стоит на 3-ой

// позиции, значит и колонка "Партия" - 3-ая, Колонки "Количество"

// и "СуммаП" - соответственно 4-ая и 5-ая

ТабЗн 1.ВыбратьСтроки();

Пока ТабЗн 1.ПолучитьСтроку()=1 Цикл

Г1рт=ТабЗн1.Партия;

Ост-ТабЗн 1.Количество;

Сум-ТабЗн 1.СуммаП;

Если 0ст>0 Тогда // есть что проверять

ТабЗн2.НоваяСтрока();

ТабЗ н2. Партия=Прт;

' ГабЗ 112. Кол ичествоП=Ост;

ТабЗ н2. Сум маП=Су м;

КонецЕсли;

КонецЦикла;

// Заполняем промежуточную таблицу ТабЗн].Очистить();

// Удаляем все записи и колонки из ТабЗн 1 ТабЗн2. Сортировать^" 1

+", ]);

// Сортируем по документам в порядке возрастания даты (FIFO)

// Более ранние партии вверху

ГабЗн2.ВыбратьСтроки();

Пока ТабЗн2.ПолучитьСтроку()=1 Цикл

Ост=ТабЗн2.КоличествоП;

Сум=ТабЗн2.СуммаП;

ЦенаПП-Окр(Сум/Ост,2,1);

// определяем цену текущей партии

Парт-ТабЗн2.Партия;

// а вот и сама партия

Если КолВыб>Ост Тогда // Ост

// требуемое количество больше, чем остатки в текущей партии, //

здесь спишем сколько есть, а что осталось, из более поздней //

партии

Регистр.ОстаткиТоваров.Склад - Склад;

Регистр.ОстаткиТоваров.Товар = Товар;

Регистр.ОстаткиТоваров.Партия = Парт;

Регистр.ОстаткиТоваров.Количество - Ост;

Регистр.ОстаткиТоваров.СуммаП ~ Окр(ЦенаПП*Ост,2,1);

Регистр.ОстаткиТоваров.СуммаД - Окр(Цена*Ост,2,1);

Регистр.ОстаткиТоваров.ФлагДвижения = 1;

Регистр.ОстаткиТоваров.ПривязыватьС'троку(НомерСтроки);

Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить():

// Про обороты не забыть! Регистр.ОборотыТоваров.Склад = Склад;

Регистр.Обороты Товаров.Товар = Товар; Регистр.Обороты

Товаров.Количество = Ост; Регистр.Обороты Товаров.СуммаУ –

Окр(ЦенаПП*Ост,2,1); Регистр.Обороты Товаров.ФлагДвижения = 1;

Регистр.Обороты Товаров.ПривязыватьСтроку(НомерСтроки);

Регистр.ОборотыТоваров. ДвижениеВыполнить(); Кол В

ыб=КолВыб-Ост;

// это сколько остатков нам не хватает до полного счастья Иначе

// В партии товара больше, чем мы запрашиваем.

// Списываем сколько запрашиваем

Если КолВыб>0 Тогда // КолВыб

Регистр.ОстаткиТоваров.Склад = Склад;

Регистр.Остатки Товаров.Товар - Товар;

Регистр.ОстаткиТоваров.Партия = Парт;

Регистр.ОстаткиТоваров.Количество = КолВыб;

Регистр.ОстаткиТоваров.СуммаП = Окр(ЦенаПП*КолВыб,2,1);

Регистр.ОстаткиТоваров.СуммаД = Окр(Цена*КолВыб,2,1);

Регистр.ОстаткиТоваров.ФлагДвижения = 1;

Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки);

Регистр.ОстаткиТоваров. ДвижениеРасходВыполнить();

Регистр.Обороты Товаров.Склад - Склад;

Регистр.Обороты Товаров.Товар = Товар;

Регистр.Обороты Товаров.Количество = КолВыб;

Регистр.Обороты Товаров.СуммаУ = Окр(ЦенаПП*КолВыб,2,1);

Регистр.Обороты Товаров.ФлагДвижения = 1;

Регистр. Обороты Товаров. ПривязыватьСтроку(НомерСтроки);

Регистр.Обороты Товаров. ДвижениеВыполнить();

КолВыб=КолВыб-Ост;

КонецЕсли;

КонецЕсли;

КонецЦикла;

ТабЗн2. Удал итьСтроки();

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

// Готовим ее под следующую строку документа

КонецЦикла;

34. Теперь опишем методику списания по LIFO..

35. Вместо строки "// Здесь будет записана методика списания по LIFO" напишем:

// Здесь будет записана методика списания по LIFO

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

Пока ПолучитьСтроку()=1 Цикл

КолСпис=КолО;

Запрос-"";

ТекстЗапроса—"':

Если ИтогиАктуальны()=0 Тогда

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

|Период с ДатаДок по ДатаДок;"; КонецЕсли;

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

|РсгСклад=Регистр.ОстаткиТоваров.Склад;

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

|РегПартия=Регистр.ОстаткиТова ров. Партия;

|РегКолич=Регистр.ОстаткиТоваров. Количество;

|РегСумма=Регистр.Остатк-нТоваров.СуммаП;

(Группировка РегПартия Упорядочить по РегПар

тия.ДатаДок;

|Функция КолКопОст=КонОст(РегКолич);

|Функция СумКонОст=КонОст(РегС'умма);

|Условие (РегСклад=Склад);

|Условие (РегТовар=Товар);

Запрос~СоздатьОбъект("Запрос");

Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

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

1 1е11роводнтьДокумент();

Возврат;

КонецЕсли;

Пока Запрос.Группировка("РегПартия",-])=1 Цикл // В мето

де Группировка флаг -I указывает, что сортировка по за­просу

// идет в порядке убывания. Более поздние документы идут

первыми

Если КолСпис=0 Тогда

Прервать;

КонецЕсли;

ПартияСписания=Запрос. РегПартия; Если За

прос.КолКонОст>КолСпис Тогда С писывать=КолС п ис;

Стои-

мость~Окр((Запрос.СумКонОст/Запрос.КолКонОст)*Списыв

ать,2,1); Иначе Если Запрос. КолКонОст=КолСпис Тогда

Списы вать= Кол С п ис

Стоимость=Запрос. Су мКонОст;

ИначеЕсли Запрос.КолКонОст<КолСпис Тогда

Списывать=Запрос.КолКонОст;

Стоимость=Запрос.СумКонОст;

КонецЕсли;

Кол С пис—КолСпис-С писывать;

Регистр.ОстаткиТоваров.Склад = Склад;

Регистр.ОстаткиТоваров.Товар» Товар;

Регистр.ОстаткиТоваров.Партия» ПартияСписания;

Регистр.ОстаткиТоваров.Количество = Списывать;

Регистр. ОстаткиТоваров. СуммаП = Стоимость;

Регистр.ОстаткиТоваров.СуммаД = Окр(Цена*Списывать,2Д);

Регистр.ОстаткиТоваров.ФлагДвижения = 1;

Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки);

Регистр.ОстаткиТоваров. ДвижениеРасходВыполнить();

Регистр.Обороты Товаров.Склад = Склад;

Регистр.Обороты Товаров.Товар = Товар;

Регистр. ОборотыТоваров.Количество = Списывать;

Регистр.ОборотыТоваров.СуммаУ = Стоимость;

Регистр.ОборотыТоваров.ФлагДвижения = 1;

Регистр.ОборотыТоваров.ПривязыватьСтроку(НомерСтроки);

Регистр.ОборотыТоваров. ДвижениеВыполнить();

КонецЦикла;

КонецЦнкла;

36. Теперь опишем алгоритм списания по-среднему:

//Здесь будет записана методика списания по-среднему ВыбратьСт

роки(); Пока ПолучитьСтроку() = ] Цикл

КолОст=РегОст.СводныйОстаток(Склад,Товар„"Количество"); // По

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

ресурсу

СумОст=РегОст.СводныйОстаток(Склад,Товар„"СуммаП"); Це

нОст=Окр(Су мОст/К олОст,2,1);

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

// А это, что-бы заполнить хоть чем-нибудь измерение "Партия" Ре

гистр.ОстаткиТоваров.Склад = Склад; Ре

гистр.ОстаткиТоваров.Товар = Товар; Ре

гистр.ОстаткиТоваров.Партия = Парт; Ре

гистр.ОстаткиТоваров.Количество

= КолО; Регистр.ОстаткиТоваров.СуммаП = Окр(ЦенОст*КолО,2,1);

Ре

гистр.ОстаткиТоваров.СуммаД = Окр(Цена*КолО,2,1);

Регистр.Остатки Товаров.ФлагДвижения = 1;

Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки);

Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();

Регистр.Обороты Товаров.Склад = Склад;

Регистр.ОборотыТоваров.Товар = Товар;

Регистр.Обороты Товаров.Количество = КолО;

Регистр.Обороты Товаров.СуммаУ = Окр(ЦенОст*КолО,2Л);

Регистр.Обороты Товаров.Флаг Движения = 1;

Регистр.Обороты Товаров. ПривязыватьСтроку(НомерСтроки);

Регистр.ОборотыТоваров. ДвижениеВыполнитьО;

КонецЦикла;

37. Подредактировать журнал "Накладные".

38. Изменить содержимое графы "Кол".

39. Добавить в выбранные значения графы "Доку- мент.РасходнаяНакладная.КолО".

40. Аналогично поступить и с графой "Сумма".

Документ "Расходная накладная" создан! Необходимо его проверить в работе. И посмотреть, как будет списываться товар при разных способах.

 

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

 

10.1. Создание отчета "ОбороткаПоДолгам"

 

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

 

1. Создать новый отчет "ОбороткаПоДолгам".

2. Добавить поле ввода ДатаН - тип Дата, формула ДатаН().

3. Добавить поле ввода ДагаК — тип Дата, формула ДатаК().

4. Прописать процедуры в модуле формы:

Процедура ДатаН() ДатаК=П о луч ить Дату Т А(); Если

ДатаН>ДатаК Тогда ДатаН=ДатаК; КонецЕсли; КонецПроцедуры //

Процедура ДатаК() Если ДатаК<ДатаН Тогда ДатаК=ДатаН;

ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда

ДатаК=ПолучитьДатуТА();

КонецЕсли;

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

Процедура Сформировать()

Запрос=СоздатьОбъект("Запрос");

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

|Период с ДатаН по ДатаК;

|Контр = Регистр.Взаиморасчеты.Контрагент;

|Догов = Регистр.Взаиморасчеты.Договор;

|Сумма «в Регистр.Взаиморасчеты.Сумма;

|Флаг = Регистр.Взаиморасчеты.ФлагДвижения;

|Функиия СуммаНачОст = НачОст(Сумма);

|Функция СуммаПриходТов = Приход(Сумма) когда(Флаг=1);

|Функция СуммаРасходТов = Расход(Сумма) когда(Флаг=2);

|Функция СуммаРасходДен = Расход(Сумма) когда(Флаг=3);

[Функция СуммаПриходДен = Приход(Сумма) когда(Флаг=4);

^Функция СуммаКонОст = КонОст(Сумма);

[Группировка Контр упорядочить по Контр.Код;

[Группировка Догов;";

Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

Сообщить("Запрос не выполнен");

Возврат;

КонецЕсли;

Таб=Соз датьОбъе кт(" Табл и ца"); Таб. И с х о дная Табл и ца("

Табл и ца"); ИтНачОст=Запрос.СуммаНачОст;

ИтПри\Тов=Запрос.СуммаПриходТов;

ИтРасхДен=Запрос.СуммаРасходДен;

ИтРасхТов=Запрос.СуммаРасходТов;

ИтПрихДен-Запрос.СуммаПриходДен;

ИтКонОст=Запрос.СуммаКонОст;

// для итогов перед началом прохода по группировкам получаем

// значения функций для всей выборки сразу

Таб.ВывестиСекцию("Шапка");

Пока Запрос.Группировка(1)=1 Цикл

Контра-Запрос. Контр;

НачОст=Занрос.СуммаНачОст;

ПрихТов-Запрос.СуммаПриходТов;

РасхДен=Запрос.СуммаРасходДен;

РасхТов~ Запрос.СуммаРасходТов;

Г1рихДен=Запрос.СуммаПриходДен;

КонОст=Запрос.СуммаКонОст;

Если Контра.ЭтоГруппа()=1 Тогда

Таб.ВывестиСекцию("Группа");

Иначе

Таб.ВывестиСекцию("Контра");

Пока Запрос.Груипировка(2)=1 Цикл

Дог=Запрос..Догов;

НачОст=Запрос.СуммаНачОст;

ПрихТовЗапрос.СуммаПриходТов;

РасхДен-Запрос.СуммаРасходДен;

РасхТов=Запрос.СуммаРасходТов;

ПрихДен Запрос.СуммаПриходДен;

КонОст=Запрос.СуммаКонОст;

Габ.ВывестиСекцию("Дог");

КонецЦикла;

КонецЕсли;

КонецЦикла;

Таб. ВывестиСекцию("Итого"); Габ.'ГолькоПросмотр(1);

Таб.ПараметрыСтраницы(1,100,1); Таб. Показать("");

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

5. Создать шаблон печатной формы.

6. Сохранить конфигурацию.

 

10.2. Создание отчета "ОбороткаПоСкладу"

 

1. Создать новый отчет "ОбороткаПоСкладу".

2. Добавить поле ввода ДатаН — тип Дата, формула ДатаН().

3. Добавить поле ввода ДатаК - тип Дата, формула ДатаК().

4. Добавить поле ввода Склад - тип С.Склады.

5. Прописать процедуры в модуле формы:

Процедура ДатаН()

ДатаК=ПолучитьДатуТА();

Если ДатаН>ДатаК Тогда

ДатаН=ДатаК;

КонецЕсли;

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

//--—

Процедура ДатаК() Если ДатаК<ДатаН Тогда ДатаК> ДатаН;

ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда

ДатаК=ПолучитьДатуТА();

КонецЕсли;

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

Процедура Сформировать()

Если Склад.Выбран()=0 Тогда

Сообщить("Не выбран склад");

Возврат;

КонецЕсли;

Запрос-СоздатьОбъект("Запрос");

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

|Период с ДатаН по ДатаК;

|Скл = Регистр.ОстаткиТоваров. Склад;

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

|Количество = Регистр.ОстаткиТоваров.Количество;

|ФлагДвижения = Регистр.ОстаткиТоваров.ФлагДвижения;

|Функция КолНачОстС = НачОст(Количество);

[Функция КолПриходК = Приход(Количество) ко-

гда(ФлагДвижения=1);

|Функция КолРасходК = Расход(Количество) ко-

гда(ФлагДвижения=1);

|Функция КолКонОстС = КонОст(Количество); |Группировка Товар

упорядочить по Товар.Код;

 

|Условие(Скл=Склад);";

Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

Сообщить("3апрос не выполнен");

Возврат;

КонецЕсли;

Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("");

Таб.ВывестиСекцию("Шапка"); ИгНачОстС = Запрос.КолНачОстС;

ИтПриходК = Запрос. КолПриходК; ИтРасходК =

Запрос.КолРасходК; ИгКонОстС = Запрос. КолКо нОстС; Пока

Запрос.Группировка("Товар")~"1 Цикл ГТов=Запрос. Товар;

НачОстС = Запрос.КолНачОстС; ПриходК = Запрос.КолПриходК;

РасходК = Запрос.КолРасходК; КонОстС ~ Запрос.КолКонОстС;

Если ТТов.ЭтоГруппа()— 1 Тогда Тов=СокрЛП(ТТов.

Наименование); Таб.ВывестиСекцию("Группа"); Иначе

Тов=СокрЛП(ТТов.Код)+" ("+СокрЛП(ТТов.Наименованис)+")";

НачОстС ~ Запрос.КолНачОстС;

ПриходК = Запрос.КолПриходК;

РасходК = Запрос.КолРасходК;

КонОстС = Запрос.КолКонОстС;

I аб.ВывестиСекцию("Товар");

КонецЕсли;

КонецЦикла;

Таб.ВывестиСекцию("Итого");

Таб.ТолькоПросмотр(1);

Таб.Парам етрыСтраницы(1,100,1);

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

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

 

6. Создать шаблон печатной формы.

7. Сохранить изменения в конфигурации.

8. Загрузить 1С:Предприятие.

9. Создать несколько новых документов, провести старые и посмотреть, что выдадут отчеты.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-10; просмотров: 126; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.63.87 (0.25 с.)