|
СКД. Срез последних(но не совсем) для каждого поля в отдельности | ☑ | ||
---|---|---|---|---|
0
Wefast
20.07.17
✎
08:11
|
Есть отчет. Формируется на какой то месяц.
Показывает кол-во произведенного товара и сколько он стоит. Я делю одно на другое и получаю себестоимость товара ед. Но бывает так, что в этом месяце продукция не производилась, а производилась в любой другой месяц. Мне нужно если за текущий месяц ничего не производилось, найти ближайший месяц в котором эта продукция выводилась и посчитать себестоимость. Такое вообще возможно? Да данные я получаю из регистра накопления, обороты. |
|||
1
mehfk
20.07.17
✎
08:15
|
Возможно.
|
|||
2
Wefast
20.07.17
✎
08:26
|
(1) как?
|
|||
3
catena
20.07.17
✎
08:27
|
Отдельным запросом.
|
|||
4
Wefast
20.07.17
✎
08:40
|
Я правлю типовой отчет. Вот его вывод. В какой момент я могу отловить результат скд, перебрать его рассчитав значение поля где пусто и подсунуть компоновщику этот резульат?
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) ПриКомпоновкеРезультатаУНФ(КомпоновщикНастроек, СхемаКомпоновкиДанных, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка); КонецПроцедуры Процедура ПриКомпоновкеРезультатаУНФ(КомпоновщикНастроек, СхемаКомпоновкиДанных, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт СтандартнаяОбработка = Ложь; НастройкиОтчета = КомпоновщикНастроек.Настройки; ДополнительныеСвойства = НастройкиОтчета.ДополнительныеСвойства; ПараметрыОтчета = ОтчетыУНФ.ПараметрыФормированияОтчета(НастройкиОтчета); Если ДополнительныеСвойства.Свойство("АдресСхемы") И ЭтоАдресВременногоХранилища(ДополнительныеСвойства.АдресСхемы) Тогда СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(ДополнительныеСвойства.АдресСхемы); Иначе ОтчетыУНФ.СтандартизироватьСхему(СхемаКомпоновкиДанных); ОтчетыУНФ.ДобавитьВычисляемыеПоля(СхемаКомпоновкиДанных); КонецЕсли; УправлениеНебольшойФирмойОтчеты.УстановитьМакетОформленияОтчета(НастройкиОтчета); УправлениеНебольшойФирмойОтчеты.ВывестиЗаголовокОтчета(ПараметрыОтчета, ДокументРезультат); ПараметрыФормирования = Новый Структура; ПараметрыФормирования.Вставить("ГруппировкаКолонок", ?(ДополнительныеСвойства.Свойство("ГруппировкаКолонок"), ДополнительныеСвойства.ГруппировкаКолонок, "ГруппировкаКолонок")); ПараметрыФормирования.Вставить("Сравнение", ?(ДополнительныеСвойства.Свойство("Сравнение"), ДополнительныеСвойства.Сравнение, "Сравнение")); Если ТипЗнч(ПараметрыФормирования.Сравнение)=Тип("ПеречислениеСсылка.Периодичность") Тогда ПараметрыФормирования.Вставить("Сравнение", "ДинамическийПериод"); КонецЕсли; ПараметрыФормирования.Вставить("ПорядокГруппировок", Новый Массив); ПараметрыФормирования.Вставить("ПорядокГруппировокЗаполнен", Ложь); ПараметрыФормирования.Вставить("СтруктураПолейСравнения", Новый Структура); Если ДополнительныеСвойства.Свойство("ИспользоватьСравнение") И ДополнительныеСвойства.ИспользоватьСравнение Тогда УправлениеНебольшойФирмойОтчеты.НастроитьДинамическийПериод(СхемаКомпоновкиДанных, ПараметрыОтчета); ОтчетыУНФ.ОбновитьПоляСравнения(СхемаКомпоновкиДанных, НастройкиОтчета, ПараметрыФормирования); КонецЕсли; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки); //Создадим и инициализируем процессор компоновки ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; Если ДополнительныеСвойства.Свойство("ВнешниеНаборыДанных") И ЭтоАдресВременногоХранилища(ДополнительныеСвойства.ВнешниеНаборыДанных) Тогда ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ПолучитьИзВременногоХранилища(ДополнительныеСвойства.ВнешниеНаборыДанных), ДанныеРасшифровки, Истина); Иначе ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина); КонецЕсли; //Создадим и инициализируем процессор вывода результата ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); //Обозначим начало вывода ПроцессорВывода.НачатьВывод(); ТаблицаЗафиксирована = Ложь; ДокументРезультат.ФиксацияСверху = 0; //Основной цикл вывода отчета ОбластиКУдалению = Новый Массив; Пока Истина Цикл //Получим следующий элемент результата компоновки ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда //Следующий элемент не получен - заканчиваем цикл вывода Прервать; Иначе // Зафиксируем шапку Если Не ТаблицаЗафиксирована И ЭлементРезультата.ЗначенияПараметров.Количество() > 0 И ТипЗнч(КомпоновщикНастроек.Настройки.Структура[0]) <> Тип("ДиаграммаКомпоновкиДанных") Тогда ТаблицаЗафиксирована = Истина; ДокументРезультат.ФиксацияСверху = ДокументРезультат.ВысотаТаблицы; КонецЕсли; //Элемент получен - выведем его при помощи процессора вывода ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); Если ДополнительныеСвойства.Свойство("Сравнение") И ТипЗнч(ДополнительныеСвойства.Сравнение)=Тип("ПеречислениеСсылка.Периодичность") Тогда ОтчетыУНФ.ВывестиКартинкиВЭлементРезультата(ЭлементРезультата, ДанныеРасшифровки, ДокументРезультат, ПараметрыФормирования); КонецЕсли; КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); Если (ПараметрыОтчета.Свойство("ВыводитьЗаголовок") И ПараметрыОтчета.ВыводитьЗаголовок) Тогда ДокументРезультат.ФиксацияСверху = 0; КонецЕсли; Если (ДополнительныеСвойства.Свойство("ФиксироватьКолонки") И ДополнительныеСвойства.ФиксироватьКолонки) Тогда ДокументРезультат.ФиксацияСлева = ОтчетыУНФ.СтрокФиксироватьСлева(КомпоновщикНастроек); КонецЕсли; Для каждого Область Из ОбластиКУдалению Цикл ДокументРезультат.УдалитьОбласть(Область, ТипСмещенияТабличногоДокумента.ПоВертикали); КонецЦикла; ОтчетыУНФ.ВыполнитьОперацииПослеФормирования(ДокументРезультат, ПараметрыФормирования); КонецПроцедуры |
|||
5
catena
20.07.17
✎
08:46
|
(4)вариант исправить схему не рассматривается?
|
|||
6
mehfk
20.07.17
✎
08:47
|
(2) Написать запрос.
|
|||
7
Wefast
20.07.17
✎
09:01
|
(5) рассматировается. В любом случае встает вопрос как.
Прицепить еще один регистр но с другими параметрами периода я понимаю как. Но как сделать так, чтобы если в предыдущем месяце нет данных он брать из пред предущего и так далее не понимаю. А ведь для одной позиции это может быть в прошлом месяце, а для другой - в начале года |
|||
8
Wefast
20.07.17
✎
09:01
|
(6) в каком месте и какой? Зачем ты это пишешь, если это не помогает?
|
|||
9
mehfk
20.07.17
✎
09:02
|
(8) Что тебе не помогает? Давая я за тебя напишу запрос.
|
|||
10
catena
20.07.17
✎
09:12
|
(7)Не надо период. Надо максимальную дату движения.
|
|||
11
Wefast
20.07.17
✎
09:25
|
(10) не понимаю. Ну не укажу я период - он возьмет все данные(или скорее подставит стандартный период что используется в СКД). Как для каждой строчки получить свое значение?
В ресурсах может написать что то вроде выбор когда поле есть null тогда выбор запрос.сумма из регистр(какие то параметры) Конец Но вроде такое не работает. В любом случае как узнать последнее движение и взять обороты за месяц? (9) какой запрос то? в скд то? ну у меня и вопрос конкретный. Как для каждого поля получить данные за разный период. И куда этот запрос который эти данные получает - вставить? Как новый набор, соединением\объединением, или в какое то условие. Или после вывода какой то запрос делать, тогда где какой и что с ним потом делать. |
|||
12
Wefast
20.07.17
✎
09:28
|
https://drive.google.com/file/d/0B_qmjl0rbxwceU1DaGt3M3MwX0k/view?usp=sharing
вот ссылка на отчет если вдруг что |
|||
13
mehfk
20.07.17
✎
10:13
|
Пригласи программиста 1с.
|
|||
14
Wefast
20.07.17
✎
10:38
|
(13) я он и есть.
|
|||
15
mehfk
20.07.17
✎
11:03
|
Это ошибочное мнение.
|
|||
16
catena
20.07.17
✎
11:10
|
(12)Сколько платишь?
|
|||
17
Wefast
20.07.17
✎
11:34
|
(15) Если тебе нечего написать по делу, то я бы попросил показывать всем свое непомерное эго в другом месте. Спасибо.
(16) ни сколько конечно же. Если бы я хотел чтобы за меня сделали, я бы пошел на соответствующий сайт. Мне же нужна помощь, направление. А советы вроде возьми и сделай. Или пригласи какого то специалиста в вакууме, будто специалист рождается со всеми знаниями мне не нужны. |
|||
18
catena
20.07.17
✎
11:37
|
(17)Тебе дали направление - берешь максимальную дату движения и от нее пляшешь.
|
|||
19
mehfk
20.07.17
✎
11:42
|
(17) по делу в (13)
|
|||
20
Wefast
20.07.17
✎
12:01
|
(18) да, вроде то что нужно.
Сначала получаю последнюю запись. Выбор МАКСИМУМ(Рег.Период), Рег.Номенклатура ИЗ Регистр.МойРегистр как Рег Сгруппировать по Рег.Номенклатура Потом соединяю с этим же регистром и делаю связь по периоду и номенклатуре. Тем самым я получаю значение ресурсов. В итоге я получаю последние значения номенклатуры из регистра. (19) см (14) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |