14:29 Задача 1.3 Оперативный учет | |
партию для списания в расходной мы теперь указываем в табличной части документа. об учетной политике в задании не слова поэтому списывать товар будем по средней и отчеты у нас стали посложнее 1)в приходной в модуле объекта пишем след код: тут попробуем загрузить данные в регистр сразу из таб части документа Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) // Вставить содержимое обработчика. СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма"); КонецПроцедуры Процедура ОбработкаПроведения(Отказ, РежимПроведения) // Вставить содержимое обработчика. Движения.ОстаткиНоменклатуры.Записывать = Истина; Запрос = Новый ЗАпрос; Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура, | ПриходнаяНакладнаяСписокНоменклатуры.Количество, | ПриходнаяНакладнаяСписокНоменклатуры.Сумма, | ПриходнаяНакладнаяСписокНоменклатуры.Ссылка КАК Партия, | ПриходнаяНакладнаяСписокНоменклатуры.Ссылка.Дата КАК Период |ИЗ | Документ.ПриходнаяНакладная.СписокНоменклатуры КАК ПриходнаяНакладнаяСписокНоменклатуры |ГДЕ | ПриходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка | И ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры"; Запрос.УстановитьПараметр("Ссылка",Ссылка); Запрос.УстановитьПараметр("ВидНоменклатуры",Перечисления.ВидыНоменклатуры.Товар); Движения.ОстаткиНоменклатуры.Загрузить(Запрос.Выполнить().Выгрузить()); КонецПроцедуры В Расходной накладной: в таб часть СписокНоменклатуры добавляем колонку Партия с целкой на документы Приходная накладная. в модуле объекта пишем след код: Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) // Вставить содержимое обработчика. СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма"); КонецПроцедуры Процедура ОбработкаПроведения(Отказ, РежимПроведения) // Вставить содержимое обработчика. Движения.ОстаткиНоменклатуры.Записывать = Истина; Движения.Продажи.Записывать = Истина; Движения.ОстаткиНоменклатуры.Записать(); Движения.Продажи.Записать(); Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры"); ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры; ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; Блокировка.Заблокировать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Партия, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество |ПОМЕСТИТЬ Док |ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры |ГДЕ | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Партия |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Док.Номенклатура, | Док.Партия, | Док.Сумма, | Док.Количество, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток |ИЗ | Док КАК Док | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки( | &МоментВремени, | (Номенклатура, Партия) В | (ВЫБРАТЬ | Док.Номенклатура, | Док.Партия | ИЗ | Док)) КАК ОстаткиНоменклатурыОстатки | ПО Док.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура | И Док.Партия = ОстаткиНоменклатурыОстатки.Партия"; Запрос.УстановитьПараметр("Ссылка",Ссылка); Запрос.УстановитьПараметр("МоментВремени",МоментВремени()); Выборка = Запрос.Выполнить().Выбрать(); ПОка Выборка.Следующий() цикл НЕхватка = Выборка.Количество - Выборка.КоличествоОстаток; Если НЕхватка>0 И Выборка.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Недостаточно " +НЕхватка + " единиц " + Выборка.номенклатура; Сообщение.Сообщить(); Отказ = Истина; Продолжить; конецЕсли; СуммаСписания = 0; Если Выборка.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар тогда Движение = Движения.ОстаткиНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Номенклатура = Выборка.Номенклатура; Движение.Партия = Выборка.Партия; Движение.Количество = Выборка.Количество; СуммаСписания = Выборка.СуммаОстаток * (Выборка.Количество/Выборка.КоличествоОстаток); Движение.Сумма = СуммаСписания; Движение.Период = Дата; конецЕсли; Движение = Движения.Продажи.Добавить(); Движение.Номенклатура = Выборка.Номенклатура; Движение.Стоимость = СуммаСписания; Движение.Количество = Выборка.Количество; Движение.Сумма = Выборка.Сумма; Движение.Период = Дата; конецЦИкла; КонецПроцедуры Отчеты Остатки такой же как в задачах 11 1.2 Продажи пишем такой запрос: ВЫБРАТЬ ПродажиОбороты.Номенклатура, ПродажиОбороты.СуммаОборот, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот ПОМЕСТИТЬ Продажи ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПродажиОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МИНИМУМ(РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Дата) КАК ДатаМин, МАКСИМУМ(РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Дата) КАК ДатаМакс, РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РасходнаяНакладнаяСписокНоменклатуры.Ссылка) КАК КоличествоОтгрузок ПОМЕСТИТЬ Отгрузки ИЗ Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры ГДЕ РасходнаяНакладнаяСписокНоменклатуры.Номенклатура В (ВЫБРАТЬ Продажи.Номенклатура ИЗ Продажи) СГРУППИРОВАТЬ ПО РасходнаяНакладнаяСписокНоменклатуры.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Номенклатура, Продажи.СуммаОборот, Продажи.КоличествоОборот, Продажи.СтоимостьОборот, ВЫБОР КОГДА Отгрузки.КоличествоОтгрузок = 1 ТОГДА "Разовая" ИНАЧЕ РАЗНОСТЬДАТ(Отгрузки.ДатаМин, Отгрузки.ДатаМакс, ДЕНЬ) / Отгрузки.КоличествоОтгрузок КОНЕЦ КАК Интервал, РАЗНОСТЬДАТ(Отгрузки.ДатаМакс, &КОнецПериода, ДЕНЬ) КАК Срок ИЗ Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ Отгрузки КАК Отгрузки ПО (Отгрузки.Номенклатура = Продажи.Номенклатура) 2) в закладке вычисл поля пишем выражение путь к данн Прибыль выыраж СуммаОборот - СтоимостьОборот заголовок Прибыль 3)Ресурсы выбираем все возможные 4)Параметры НачПериода КонПериода с типом дата 5) группировки Детальные записи задача решена. | |
|
Всего комментариев: 0 | |