Имя: Пароль:
1C
1С v8
v8: Проблема с запросом при формировании ПФ
0 Валидатор
 
18.07.13
15:27
вот запрос:
ВЫБРАТЬ
   ПланЗакупокСоставПлана.Номенклатура.Артикул КАК НоменклатураАртикул,
   ПланЗакупокСоставПлана.Номенклатура КАК Номенклатура,
   ПланЗакупокСоставПлана.Количество,
   ПланЗакупокСоставПлана.Цена КАК Цена,
   ПланЗакупокСоставПлана.ттДатаИзвещения КАК ДатаИзвещения,
   ПланЗакупокСоставПлана.Ссылка.ДатаПланирования,
   ПланЗакупокСоставПлана.ЕдиницаИзмерения.Код,
   ПланЗакупокСоставПлана.ЕдиницаИзмерения.Наименование,
   ПланЗакупокСоставПлана.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК МинимальныеТребования,
   ПланЗакупокСоставПлана.ттСпособЗакупки КАК СпособЗакупки,
   ВЫБОР
       КОГДА ПланЗакупокСоставПлана.Ссылка.КПЗ = ИСТИНА
           ТОГДА "да"
       ИНАЧЕ "нет"
   КОНЕЦ КАК Закупка,
   ВЫБОР
       КОГДА ЕСТЬNULL(ПланЗакупокСоставПлана.Номенклатура.Артикул, "") = ""
           ТОГДА ""
       ИНАЧЕ ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 1, 2) + "." + ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 3, 2) + "." + ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 5, 100)
   КОНЕЦ КАК Артикул,
   &Параметр,
   ПланЗакупокСоставПлана.НомерСтроки
ПОМЕСТИТЬ втПараметр
ИЗ
   Документ.ПланЗакупок.СоставПлана КАК ПланЗакупокСоставПлана
ГДЕ
   ПланЗакупокСоставПлана.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ттРегионПоставки.кодОКАТО,
   ттРегионПоставки.Наименование,
   втПараметр.НоменклатураАртикул,
   втПараметр.Номенклатура,
   втПараметр.Количество,
   втПараметр.Цена,
   втПараметр.ДатаИзвещения,
   втПараметр.ДатаПланирования,
   втПараметр.ЕдиницаИзмеренияКод,
   втПараметр.ЕдиницаИзмеренияНаименование,
   втПараметр.МинимальныеТребования,
   втПараметр.СпособЗакупки,
   втПараметр.Закупка,
   втПараметр.Артикул,
   втПараметр.Параметр,
   втПараметр.НомерСтроки КАК НомерСтроки
ИЗ
   втПараметр КАК втПараметр
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ттРегионПоставки КАК ттРегионПоставки
       ПО втПараметр.Параметр = ттРегионПоставки.Подразделение

УПОРЯДОЧИТЬ ПО
   НомерСтроки

Данный запрос отрабатывает, и дальше можно формировать ПФ, НО, если в РС ттРегионПоставки нет данных, то ПФ будет пустая,так как результат запроса не вернет значений никаких. Вот как сделать, что если в РС нет данных, то ПФ все равно формировалась, только без данных этого РС?
1 Mitriy
 
18.07.13
15:29
стесняюсь спросить... кто такая ПФ?
2 Валидатор
 
18.07.13
15:29
Печатная Форма
3 Mitriy
 
18.07.13
15:30
Левое соединение...
4 Валидатор
 
18.07.13
15:30
Вот код процедуры целиком:
Процедура СформироватьПечатнуюФорму ()
   ТабДок = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");
   Шапка = Макет.ПолучитьОбласть("Шапка");
   План = Макет.ПолучитьОбласть("План");
   Строка = Макет.ПолучитьОбласть("Строка");
   Отступ = Макет.ПолучитьОбласть("Отступ");
   Подписи = Макет.ПолучитьОбласть("Подписи");
   
   Шапка.Параметры.Подразделение = СсылкаНаОбъект.Подразделение;
   ТабДок.Вывести(Шапка);
   ТабДок.Вывести(План);
   
   ПолучениеКода = СтрЗаменить(СсылкаНаОбъект.Подразделение.ПолныйКод(), "/", Символы.ПС);
   НаименованиеПодразделения = Справочники.Подразделения.НайтиПоКоду(ПолучениеКода);
   
   
   
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ПланЗакупокСоставПлана.Номенклатура.Артикул КАК НоменклатураАртикул,
   |    ПланЗакупокСоставПлана.Номенклатура КАК Номенклатура,
   |    ПланЗакупокСоставПлана.Количество,
   |    ПланЗакупокСоставПлана.Цена КАК Цена,
   |    ПланЗакупокСоставПлана.ттДатаИзвещения КАК ДатаИзвещения,
   |    ПланЗакупокСоставПлана.Ссылка.ДатаПланирования,
   |    ПланЗакупокСоставПлана.ЕдиницаИзмерения.Код,
   |    ПланЗакупокСоставПлана.ЕдиницаИзмерения.Наименование,
   |    ПланЗакупокСоставПлана.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК МинимальныеТребования,
   |    ПланЗакупокСоставПлана.ттСпособЗакупки КАК СпособЗакупки,
   |    ВЫБОР
   |        КОГДА ПланЗакупокСоставПлана.Ссылка.КПЗ = ИСТИНА
   |            ТОГДА ""да""
   |        ИНАЧЕ ""нет""
   |    КОНЕЦ КАК Закупка,
   |    ВЫБОР
   |        КОГДА ЕСТЬNULL(ПланЗакупокСоставПлана.Номенклатура.Артикул, """") = """"
   |            ТОГДА """"
   |        ИНАЧЕ ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 1, 2) + ""."" + ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 3, 2) + ""."" + ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 5, 100)
   |    КОНЕЦ КАК Артикул,
   |    &Параметр,
   |    ПланЗакупокСоставПлана.НомерСтроки
   |ПОМЕСТИТЬ втПараметр
   |ИЗ
   |    Документ.ПланЗакупок.СоставПлана КАК ПланЗакупокСоставПлана
   |ГДЕ
   |    ПланЗакупокСоставПлана.Ссылка = &Ссылка
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ттРегионПоставки.кодОКАТО,
   |    ттРегионПоставки.Наименование,
   |    втПараметр.НоменклатураАртикул,
   |    втПараметр.Номенклатура,
   |    втПараметр.Количество,
   |    втПараметр.Цена,
   |    втПараметр.ДатаИзвещения,
   |    втПараметр.ДатаПланирования,
   |    втПараметр.ЕдиницаИзмеренияКод,
   |    втПараметр.ЕдиницаИзмеренияНаименование,
   |    втПараметр.МинимальныеТребования,
   |    втПараметр.СпособЗакупки,
   |    втПараметр.Закупка,
   |    втПараметр.Артикул,
   |    втПараметр.Параметр,
   |    втПараметр.НомерСтроки КАК НомерСтроки
   |ИЗ
   |    втПараметр КАК втПараметр
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ттРегионПоставки КАК ттРегионПоставки
   |        ПО втПараметр.Параметр = ттРегионПоставки.Подразделение
   |
   |УПОРЯДОЧИТЬ ПО
   |    НомерСтроки";    
   Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
   Запрос.УстановитьПараметр("Параметр", НаименованиеПодразделения);
   Результат = Запрос.Выполнить();
   
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Номер = 0;
   
   
   
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Номер = Номер + 1 ;
       Строка.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
       Строка.Параметры.Порядковый = Номер;
       Строка.Параметры.Закупка = ВыборкаДетальныеЗаписи.Закупка;
       Строка.Параметры.Артикул = ВыборкаДетальныеЗаписи.Артикул;
       Строка.Параметры.Количество = ВыборкаДетальныеЗаписи.Количество;
       Строка.Параметры.Сумма = ВыборкаДетальныеЗаписи.Цена;
       Строка.Параметры.ОКДП = ВыборкаДетальныеЗаписи.НоменклатураАртикул;
       Строка.Параметры.ЕдОКЕИ = ВыборкаДетальныеЗаписи.ЕдиницаИзмеренияКод;
       Строка.Параметры.ОКАТОРегион = ВыборкаДетальныеЗаписи.КодОкато;
       Строка.Параметры.НаименованиеРегион = ВыборкаДетальныеЗаписи.Наименование;
       Строка.Параметры.Требования = ВыборкаДетальныеЗаписи.МинимальныеТребования;
       Строка.Параметры.ЕдНаименование = ВыборкаДетальныеЗаписи.ЕдиницаИзмеренияНаименование;
       Строка.Параметры.СпособЗакупки = ВыборкаДетальныеЗаписи.СпособЗакупки;
       Строка.Параметры.ДатаПланирования = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=ММММ-кк-гггг");
       Строка.Параметры.ДатаИзвещения = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=ММММ-кк-гггг");
       ТабДок.Вывести(строка);
   КонецЦикла;
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    ОтветственныеЛицаСрезПоследних.ФизическоеЛицо
   |ИЗ
   |    Документ.ПланЗакупок КАК ПланЗакупок
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтветственныеЛица.СрезПоследних КАК ОтветственныеЛицаСрезПоследних
   |        ПО ПланЗакупок.Подразделение.Ссылка = ОтветственныеЛицаСрезПоследних.СтруктурнаяЕдиница.Ссылка
   |ГДЕ
   |    ПланЗакупок.Ссылка = &Ссылка";
   Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
   
   Результат = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Подписи.Параметры.Начальник = ВыборкаДетальныеЗаписи.ФизическоеЛицо;
       Подписи.Параметры.Дата = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy") ;
   КонецЦикла;
   
   ТабДок.Вывести(Отступ);    
   ТабДок.ОтображатьСетку = Ложь;    
   ТабДок.Вывести(Подписи);
   ТабДок.Показать();    
КонецПроцедуры
5 Валидатор
 
18.07.13
15:32
спс
6 Deon
 
18.07.13
15:32
уже ж сказали - Левое соединение
7 Deon
 
18.07.13
15:32
Почему все так любят эту стремную переменную "Строка"?
8 Mitriy
 
18.07.13
15:36
(7) потому что для иного нужна фантазия...
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший