Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание расходной накладнойСодержание книги
Поиск на нашем сайте
На одном из складов есть некоторое количество товара. Пришло время создать расходную накладную. Во многом она у нас будет повторять приходную. Похожий набор полей шапки, только вместо поля "Поставщик" мы введем поле "Покупатель". Номер документа у нас будет зависеть не от бухгалтерии контрагента, а от нашей. Расходная накладная будет располагаться в уже существующем журнале "Накладные". Данные по документу расходная накладная можно свести в таблицу:
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; просмотров: 221; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.008 с.) |