Имя: Пароль:
1C
1С v8
Помогите с запросом, пожалуйста
0 ded20ded
 
27.04.13
10:40
Очень редко пишу на 1С, но хотелось бы все таки научится

Есть регистр Закупки у него есть Измерения = ДокументЗакупки
из документа хотелось бы вытащить все серии номенклатуры

Конфа Больничная аптека

// Функция формирует отчет по мониторингу цен ЖНВЛС
//
Функция СформироватьОтчет(ДатаНачала, ДатаОкончания, Организация)
   
   ТабДокумент = Новый ТабличныйДокумент;
   
   Макет = ПолучитьМакет("Макет");
   
   Запрос = Новый Запрос;
   
   ТекстЗапроса =
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Закупки.Организация                                КАК Организация,
   |    Закупки.Номенклатура                                КАК Номенклатура,
   |    Закупки.Контрагент                                    КАК Контрагент,
   |    Закупки.Контрагент.Представление                    КАК Поставщик,
   |    Закупки.Номенклатура.ЭлементКАТ.ФирмаПроизводитель    КАК Производитель,
   |    Закупки.Номенклатура.ЭлементКАТ.ДействующееВещество КАК ДействующиеВеществаМНН,
   |    Закупки.Номенклатура.ЭлементКАТ.НаименованиеПолное    КАК ТорговоеНаименование,
   |    Закупки.ЦенаПроизводителя                            КАК ЦенаПроизводителя,
   //изм__________
   //|    Закупки.ДокументЗакупки                            КАК ДокументЗакупки,
   //изм__________
   |    ВЫБОР
   |        КОГДА Закупки.Номенклатура.Упаковка = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмеренияНоменклатуры.ПустаяСсылка)
   |            ТОГДА Закупки.КоличествоОборот
   |        ИНАЧЕ Закупки.КоличествоОборот * ВЫБОР
   |                КОГДА Закупки.Номенклатура.Упаковка.ТипБазовойЕдиницыУпаковки = Закупки.Номенклатура.БазоваяЕдиницаИзмерения.ТипЕдиницы
   |                    ТОГДА Закупки.Номенклатура.БазоваяЕдиницаИзмерения.Коэффициент
   |                КОГДА Закупки.Номенклатура.Плотность = 0
   |                    ТОГДА 0
   |                КОГДА Закупки.Номенклатура.БазоваяЕдиницаИзмерения.ТипЕдиницы =
   |                        ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмеренияНоменклатуры.Весовая)
   |                    ТОГДА Закупки.Номенклатура.БазоваяЕдиницаИзмерения.Коэффициент / Закупки.Номенклатура.Плотность
   |                КОГДА Закупки.Номенклатура.БазоваяЕдиницаИзмерения.ТипЕдиницы =
   |                        ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмеренияНоменклатуры.ЕдиницаОбъема)
   |                    ТОГДА Закупки.Номенклатура.БазоваяЕдиницаИзмерения.Коэффициент * Закупки.Номенклатура.Плотность
   |                ИНАЧЕ 0 // ошибка!!!
   |            КОНЕЦ / Закупки.Номенклатура.Упаковка.Коэффициент
   |    КОНЕЦ                                            КАК Количество,
   |    Закупки.СтоимостьОборот                        КАК Стоимость,
   |    Закупки.НДСОборот                                КАК НДС
   |ИЗ
   |    РегистрНакопления.Закупки.Обороты(
   |            &ДатаНачала,
   |            &ДатаОкончания,
   |            ,
   |            Организация = &Организация
   |                И (НЕ ЦенаПроизводителя = 0)
   |          //%УСЛОВИЯ%
   |        ) КАК Закупки
   |ГДЕ
   |    Закупки.Номенклатура.ЭтоЛекарственноеСредство";
   
   Если ЗначениеЗаполнено(ПодразделениеОрганизации) Тогда
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//%УСЛОВИЯ%",  "И ПодразделениеОрганизации = &ПодразделениеОрганизации
                                                               |//%УСЛОВИЯ%");
   КонецЕсли;
   Если ЗначениеЗаполнено(Контрагент) Тогда
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//%УСЛОВИЯ%",  "И Контрагент = &Контрагент
                                                               |//%УСЛОВИЯ%");
   КонецЕсли;
   Если ЗначениеЗаполнено(ИсточникФинансирования) Тогда
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//%УСЛОВИЯ%",  "И ИсточникФинансирования = &ИсточникФинансирования
                                                               |//%УСЛОВИЯ%");
   КонецЕсли;
   
   Запрос.Текст = ТекстЗапроса;
   
   Запрос.УстановитьПараметр("ДатаНачала"        , ?(ДатаНачала = Дата('00010101000000'), ДатаНачала, Новый Граница(НачалоДня(ДатаНачала), ВидГраницы.Включая)));
   Запрос.УстановитьПараметр("ДатаОкончания"    , ?(ДатаОкончания = Дата('00010101000000'), ДатаОкончания, Новый Граница(КонецДня(ДатаОкончания), ВидГраницы.Включая)));
   Запрос.УстановитьПараметр("Организация"        , Организация);
   Запрос.УстановитьПараметр("Контрагент"        , Контрагент);
   Запрос.УстановитьПараметр("ПодразделениеОрганизации", ПодразделениеОрганизации);
   Запрос.УстановитьПараметр("ИсточникФинансирования"    , ИсточникФинансирования);
   
   РезультатЗапроса = Запрос.Выполнить();
   
   ОбластьЗаголовка = Макет.ПолучитьОбласть("Заголовок");
   
   // Выведем заголовок.
   СведенияОПокупателе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(Организация, ДатаОкончания);
   
   ОбластьЗаголовка.Параметры.ПредставлениеОрганизации    =    ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе);
   ОбластьЗаголовка.Параметры.Организация    = Организация;
   ОбластьЗаголовка.Параметры.Период        = ПредставлениеПериода(ДатаНачала, ?(ДатаОкончания = Дата('00010101000000'), ДатаОкончания, КонецДня(ДатаОкончания)) , "ФП = Истина");
   ТабДокумент.Вывести(ОбластьЗаголовка);
   
   
   ///////////////////////////////////////////////////////////////////////////////
   // ВЫВОД ШАПКИ ТАБЛИЦЫ
   
   Выборка = РезультатЗапроса.Выбрать();
   
   ОбластьШапки = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ТабДокумент.Вывести(ОбластьШапки);
   
   ///////////////////////////////////////////////////////////////////////////////
   // ВЫВОД СТРОК ТАБЛИЦЫ
   
   СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
   
   Пока Выборка.Следующий() Цикл
       
       СтрокаТаблицы.Параметры.Заполнить(Выборка);
       
       ЦенаБезНДС    = Окр((Выборка.Стоимость - Выборка.НДС) / ?(Выборка.Количество = 0, 1, Выборка.Количество), 2);
       ЦенаСНДС    = Окр(Выборка.Стоимость / ?(Выборка.Количество = 0, 1, Выборка.Количество), 2);
       
       Наценка = ЦенаБезНДС / ?(Выборка.ЦенаПроизводителя = 0, ЦенаБезНДС, Выборка.ЦенаПроизводителя);
       ПроцентНаценки =  Окр((Наценка - 1)  * 100, 2);
       
       СтрокаТаблицы.Параметры.ЦенаПроизводителя    = ФормированиеПечатныхФорм.ФорматСумм(Выборка.ЦенаПроизводителя);
       СтрокаТаблицы.Параметры.ЦенаБезНДС            = ФормированиеПечатныхФорм.ФорматСумм(ЦенаБезНДС);
       СтрокаТаблицы.Параметры.ЦенаСНДС            = ФормированиеПечатныхФорм.ФорматСумм(ЦенаСНДС);
       СтрокаТаблицы.Параметры.ОптоваяНадбавка    = ПроцентНаценки;
   
       
       ТабДокумент.Вывести(СтрокаТаблицы);
       
   КонецЦикла;
   
   ///////////////////////////////////////////////////////////////////////////////
   // ВЫВОД ПОДВАЛА
   
   Область = Макет.ПолучитьОбласть("Подвал");
   ТабДокумент.Вывести(Область);    
   
   Возврат ТабДокумент;
   
КонецФункции
1 Balabass
 
27.04.13
10:45
Это никто читать не будет. По существу давай.
В консолью пользовался?
2 ded20ded
 
27.04.13
10:48
найти для управляемого не могу
3 Ник второй
 
27.04.13
10:48
(0) Пригласи специалиста.
4 Ник второй
 
27.04.13
10:48
(2) Ну дык открой в не управляемом
5 Escander
 
27.04.13
10:49
(2) запусти в режиме обычного только для того что-бы открыть консоль... хотя и для УФ их должно уже быть полно... помнится spec8 делал такую