Имя: Пароль:
1C
1С v8
Нужна помощь по запросу в 1С 8.1
0 BarteZ
 
08.11.12
10:15
Конфигурация Управление Производством ... В отчёте по нормам продукции необходимо брать количество исходя из спецификации из документа "Отчёт производства за смену" ... в данный момент берётся фактически использованное количество и запрос выглядит так ...

Запрос = Новый Запрос;    
   Запрос.УстановитьПараметр("Выпуск", Выпуск);
   Запрос.УстановитьПараметр("Продукция", Справочники.Номенклатура.НайтиПоНаименованию("Продукция").Ссылка);                        
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ОтчетПроизводстваЗаСменуПродукция.Номенклатура.Код КАК КодЕАН,
   |    ОтчетПроизводстваЗаСменуПродукция.Номенклатура КАК Имя,
   |    ОтчетПроизводстваЗаСменуПродукция.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдИзм,
   |    ОтчетПроизводстваЗаСменуПродукция.Количество КАК Количество


Количество по спецификации в документе присутствует, но оно высчитывается перемножением данных справочника спецификации и количества продукции из документа ОтчетПроизводстваЗаСмену ...
1 BarteZ
 
08.11.12
11:18
Хелп, люди добрые! Не могу сам доехать .. как через запрос вытащить позиции из справочника спецификаций и перемножить на кол-во произведённой продукции из документа ... :(
2 kyrgyz
 
08.11.12
11:23
В Каз типовой бух есть примерно такое. Если поможет вам по аналогии сделать я рад.

Функция РассчитатьРасходСырьяПоСпецификации(ОснованиеСсылка, ДокументаОснованиеТЧ, Номенклатура=Неопределено) Экспорт
   
       Запрос = Новый Запрос;
       ТекстЗапроса =
       "ВЫБРАТЬ
       |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Номенклатура,
       |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
       |    ВЫБОР
       |        КОГДА СпецификацииНоменклатуры.Количество = 0
       |            ТОГДА 0
       |        ИНАЧЕ ВЫРАЗИТЬ(ВложенныйЗапрос.КоличествоПродукции * СпецификацииНоменклатурыИсходныеКомплектующие.Количество / СпецификацииНоменклатуры.Количество КАК ЧИСЛО(15, 3))
       |    КОНЕЦ КАК Количество
       |ИЗ
       |    (ВЫБРАТЬ
       |        ДокументОснования.Спецификация КАК Спецификация,
       |        СУММА(ДокументОснования.Количество) КАК КоличествоПродукции
       |    ИЗ
       |        Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ДокументОснования
       |    ГДЕ
       |        ДокументОснования.Ссылка = &Ссылка
       |        И ДокументОснования.Спецификация <> &Спецификация";
       Если Номенклатура <> Неопределено Тогда
           Если Не Номенклатура.Пустая() Тогда
               ТекстЗапроса = ТекстЗапроса + "
               |        И ДокументОснования.Спецификация.Владелец.Ссылка = &Номенклатура";
               Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
           КонецЕсли;
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса + "
       |    
       |    СГРУППИРОВАТЬ ПО
       |        ДокументОснования.Спецификация) КАК ВложенныйЗапрос
       |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры КАК СпецификацииНоменклатуры
       |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
       |            ПО СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка = СпецификацииНоменклатуры.Ссылка
       |        ПО ВложенныйЗапрос.Спецификация = СпецификацииНоменклатуры.Ссылка";

       Запрос.Текст = ТекстЗапроса;
       Запрос.УстановитьПараметр("Ссылка", ОснованиеСсылка);
       Запрос.УстановитьПараметр("Спецификация", Справочники.СпецификацииНоменклатуры.ПустаяСсылка());
       Запрос.Текст = СтрЗаменить(Запрос.Текст, "ОтчетПроизводстваЗаСмену.Продукция", ДокументаОснованиеТЧ);

       Возврат Запрос.Выполнить();
       
   КонецФункции
3 kyrgyz
 
08.11.12
11:25
Я вот как раз хочу сделать запрос за целый месяц. расчет по спецификациям именно с документа и перемноженное на количество выхода продукции и все это просуммировать. Пока еще не придумал.
4 BarteZ
 
08.11.12
11:26
(2),Cпасибо ... буду пробовать ... вроде бы соседняя позиция в документах, а вытащить её намного сложнее ..:(
5 BarteZ
 
08.11.12
12:22
Пока как-то не особо получается:( :( :(
6 BarteZ
 
08.11.12
12:23
Запрос = Новый Запрос;    
   Запрос.УстановитьПараметр("Выпуск", Выпуск);
   Запрос.УстановитьПараметр("Продукция", Справочники.Номенклатура.НайтиПоНаименованию("Продукция").Ссылка);                        
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ОтчетПроизводстваЗаСменуПродукция.Номенклатура.Код КАК КодЕАН,
   |    ОтчетПроизводстваЗаСменуПродукция.Номенклатура КАК Имя,
   |    ОтчетПроизводстваЗаСменуПродукция.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдИзм,

|    ВЫБОР
   |        КОГДА СпецификацииНоменклатуры.Количество = 0
   |            ТОГДА 0
   |        ИНАЧЕ ВЫРАЗИТЬ(ВложенныйЗапрос.КоличествоПродукции * СпецификацииНоменклатурыИсходныеКомплектующие.Количество / СпецификацииНоменклатуры.Количество КАК ЧИСЛО(15, 3))
   |   КОНЕЦ КАК Количество

   |ИЗ
       |    ВЫБРАТЬ
       |        ДокументОснования.Спецификация КАК Спецификация,
       |        СУММА(ДокументОснования.Количество) КАК КоличествоПродукции
       |    ИЗ
       |        Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ДокументОснования
|ГДЕ
|    ОтчетПроизводстваЗаСменуПродукция.Ссылка В(&Выпуск)
   |    И ОтчетПроизводстваЗаСменуПродукция.Номенклатура В ИЕРАРХИИ(&Продукция)";    
   
   ЗапросПоНоменклатуре = Запрос.Выполнить();
   ВыборкаПоСтрокам = ЗапросПоНоменклатуре.Выгрузить();