Имя: Пароль:
1C
1С v8
Где запрос хранится в СКД
0 sidalexsandr
 
29.06.18
11:09
Где хранится текст запроса отчета написанного на СКД?
1 PiotrLoginov
 
29.06.18
11:17
по умолчанию - в "основной" схеме отчета (в макете соответствующего типа). Можно открыть макет и посмотреть запрос на вкладке "Наборы данных"
2 NuclearWinter
 
29.06.18
11:19
А где вы его ищите? Странный вопрос.
Итоговый текст запроса может отличаться от указанного в схеме СКД
3 sidalexsandr
 
29.06.18
11:22
(2) Нашел в модуле отчета
4 sidalexsandr
 
29.06.18
11:23
Ошибка в запросе. Вот запрос:
ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |    ТоварыНаСкладахОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
    |    ТоварыНаСкладахОстатки.Качество КАК Качество,
    |    ТоварыНаСкладахОстатки.Склад КАК Склад,
    |    ТоварыНаСкладахОстатки.КоличествоОстаток
    |   МестаХраненияНоменклатуры.МестоХранения
    |ПОМЕСТИТЬ Остатки
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки(#УсловиеДата, ) КАК ТоварыНаСкладахОстатки
    |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
    | ПО ТоварыНаСкладахОстатки.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Склад,
    |    СерияНоменклатуры,
    |    Номенклатура,
    |    ХарактеристикаНоменклатуры,
    |    Качество




Выдает ошибку
{ВнешнийОтчет.ОтчетСебестоимостьПартийНаСкладах.МодульОбъекта(159)}: Ошибка при вызове метода контекста (Выполнить)
    РезультатЗапроса = Запрос.Выполнить();
по причине:
{(8, 4)}: Неправильный псевдоним "МестаХраненияНоменклатуры.МестоХранения"
<<?>>МестаХраненияНоменклатуры.МестоХранения
5 AllJoke
 
29.06.18
11:24
Запятая:

    ТоварыНаСкладахОстатки.КоличествоОстаток,
    |   МестаХраненияНоменклатуры.МестоХранения
6 sidalexsandr
 
29.06.18
13:05
(5) Спасибо
7 sidalexsandr
 
29.06.18
13:07
Теперь в отчете если щелкаю МестоХранения то появляется значение не определено.

Вот текст программы по заполнению ТЗ:
РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаСклад = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаСклад.Следующий() Цикл
        ВыборкаНоменклатура = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыборкаНоменклатура.Следующий() Цикл
            ВыборкаХарактеристикаНоменклатуры = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаХарактеристикаНоменклатуры.Следующий() Цикл
                ВыборкаСерияНоменклатуры = ВыборкаХарактеристикаНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                Пока ВыборкаСерияНоменклатуры.Следующий() Цикл
                    ВыборкаКачество = ВыборкаСерияНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                    Пока ВыборкаКачество.Следующий() Цикл
                        ВыборкаДетальныеЗаписи = ВыборкаКачество.Выбрать();
                        КоличествоОстаток = ВыборкаКачество.КоличествоОстаток;
                        НетПартии = Истина;
                        Пока ВыборкаДетальныеЗаписи.Следующий() И КоличествоОстаток > 0 Цикл
                            НоваяСтрока = ТЗ.Добавить();
                            ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
                            КоличествоВПартии = Мин(КоличествоОстаток, ВыборкаДетальныеЗаписи.КоличествоПриход);
                            Если КоличествоВПартии <> 0 Тогда
                                Если КоличествоВПартии = ВыборкаДетальныеЗаписи.КоличествоПриход Тогда
                                    СтоимостьВПартии = ВыборкаДетальныеЗаписи.СтоимостьПриход;
                                Иначе
                                    СтоимостьВПартии = КоличествоВПартии * ВыборкаДетальныеЗаписи.СтоимостьПриход / ВыборкаДетальныеЗаписи.КоличествоПриход;
                                КонецЕсли;
                            Иначе
                                СтоимостьВПартии = 0;
                            КонецЕсли;
                            НоваяСтрока.КоличествоВПартии = КоличествоВПартии;
                            НоваяСтрока.СтоимостьВПартии = СтоимостьВПартии;
                            НоваяСтрока.ЦенаВПартии = ?(КоличествоВПартии = 0, 0, СтоимостьВПартии / КоличествоВПартии);
                            НоваяСтрока.СуммаПоПрайсу = КоличествоВПартии * ВыборкаДетальныеЗаписи.ЦенаПоПрайсу;
                            КоличествоОстаток = КоличествоОстаток - КоличествоВПартии;
                        КонецЦикла;
                        
                        Если КоличествоОстаток > 0 Тогда
                            ЦенаСредняяСебестоимость = ПолучитьЦенуСредняяСебестоимость(ВыборкаКачество);
                            НоваяСтрока = ТЗ.Добавить();
                            ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаКачество);
                            НоваяСтрока.Партия = "Стоимость по документу установки цен";
                            НоваяСтрока.КоличествоВПартии = КоличествоОстаток;
                            НоваяСтрока.ЦенаВПартии = ЦенаСредняяСебестоимость;
                            НоваяСтрока.СтоимостьВПартии = ЦенаСредняяСебестоимость * КоличествоОстаток;
                            НоваяСтрока.СуммаПоПрайсу = КоличествоОстаток * ВыборкаКачество.ЦенаПоПрайсу;
                        КонецЕсли;
                        
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    
    НаборДанных = Новый Структура("ТЗ", ТЗ);
    
    КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет, НаборДанных, ДанныеРасшифровки);
    ПроцессорВывода = новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
8 sidalexsandr
 
29.06.18
14:36
Дописал // Заполнить МестоХранения
                            НоваяСтрока.МестоХранения = ВыборкаНоменклатура.МестоХранения;
                            НоваяСтрока.КоличествоВПартии = КоличествоВПартии;
                            НоваяСтрока.СтоимостьВПартии = СтоимостьВПартии;
                            НоваяСтрока.ЦенаВПартии = ?(КоличествоВПартии = 0, 0, СтоимостьВПартии / КоличествоВПартии);
                            НоваяСтрока.СуммаПоПрайсу = КоличествоВПартии * ВыборкаДетальныеЗаписи.ЦенаПоПрайсу;
                            КоличествоОстаток = КоличествоОстаток - КоличествоВПартии;
                        КонецЦикла;
9 sidalexsandr
 
29.06.18
14:37
Дописано НоваяСтрока.МестоХранения = ВыборкаНоменклатура.МестоХранения;
10 HomoAlbus
 
29.06.18
14:39
(7) Вот за такие простыни у нас чулане закрывают пока неотрефакторишь
11 sidalexsandr
 
29.06.18
14:41
(10) Согласен с тобой. Писал не я поэтому такая простынь.
12 sidalexsandr
 
29.06.18
14:42
(9) Выдает ошибку:
{ВнешнийОтчет.ОтчетСебестоимостьПартийНаСкладах.МодульОбъекта(190)}: Поле объекта не обнаружено (МестоХранения)
                            НоваяСтрока.МестоХранения = ВыборкаНоменклатура.МестоХранения;
13 HomoAlbus
 
29.06.18
14:48
(12) В твоей таблице значений ТЗ нет такой колонки либо в выборке ее нет
14 sidalexsandr
 
29.06.18
15:12
(13) Исправил, написал в запросе |   Остатки.МестоХранения,
15 sidalexsandr
 
29.06.18
15:12
Отчет стал работать, но МестоХранения пустое
16 sidalexsandr
 
29.06.18
15:46
Подниму