Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 126; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.63.87 (0.25 с.) |