Имя: Пароль:
1C
1C 7.7
v7: Помогите написать запрос
,
0 ketonija
 
11.05.13
22:38
У справочника Номенклатура есть подчиненный справочник "Поставщики" в котором прописываются реквизиты типа "Контрагент","НазваниеПоставщика","АртикулПоставщика" и т.п. Нужно сделать выборку товаров из документов, например "РасходнаяНакладная" за указанный период, получив в строке группировки такие колонки: Номенклатура, НазваниеПоставщика, Количество. Поставщик (реквизит "Контрагент" в справочнике "Поставщики" задается конкретный, если для товара такого поставщика в справочнике "Поставщики" нет, то в поле "НазваниеПоставщика" ничего не выводится). Количество есть сумма всех количеств по расходным накладным для каждого товара. Интуитивно догадываюсь что надо делать встроенный запрос по справочнику "Поставщики" и задавать связь результата с запросом по расходным накладным через реквизит "номенклатура", но как это сделать в 7-ке не знаю.
1 lals
 
12.05.13
00:02
Группировка (1) Номенклатура
Группировка (2) Поставщик
"пустые" поставщики будут сгрупированы по данной номенклатуре в одну строку,
"непустые" будут соответственно отображены
2 lals
 
12.05.13
00:04
+(1) Но если в накладной он явно не указан, а в подчиненном справочнике для каждой номенклатуры может быть несколько поставщиков то не взлетит
3 ketonija
 
12.05.13
00:57
В расходной накладной поставщик не указан, в подчиненном справочнике для номенклатуры несколько разных поставщиков. Я пока додумался только до такого варианта:
   ВыбНачПериода = НачГода(ДатаДок);
   ВыбКонПериода = ДатаДок;
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Товар = Документ.РасходнаяНакладная.Товар.ТекущийЭлемент, Справочник.Поставщик.Владелец.ТекущийЭлемент;
   |Количество = Документ.РасходнаяНакладная.Количество;
   |Поставщик = Справочник.Поставщик.ТекущийЭлемент;
   |Функция КоличествоСумма = Сумма(Количество);
   |Группировка Товар упорядочить по Товар.Наименование без групп;
   |Группировка Поставщик упорядочить по Поставщик.Контрагент, Поставщик.Цена, Поставщик.Артикул без групп;
   |"//}}ЗАПРОС
   ;

   УдалитьСтроки();
   Пока Запрос.Группировка(1) = 1 Цикл
       Первая = 1;
       Пока Запрос.Группировка(2) = 1 Цикл
           Если Первая = 1 Тогда
               КоличествоЗаказа = Запрос.КоличествоСумма;
               Первая = 0;
           КонецЕсли;
           
           Если ПустоеЗначение(Запрос.ЗначениеУпорядочивания(2,1)) = 1 Тогда
               Продолжить;
           КонецЕсли;
           Если    (Запрос.ЗначениеУпорядочивания(2,1) = Контрагент) И (КоличествоЗаказа > 0) Тогда
               НоваяСтрока();
               Поставщик = Запрос.Поставщик;
               Товар = Запрос.Товар;
               ЦенаСНДС = Запрос.ЗначениеУпорядочивания(2,2);
               Количество = КоличествоЗаказа;
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;    

Возможно есть другой, более простой способ решения, но этот вариант хоть и с извращением, но вроде работает.
4 Cthulhu
 
12.05.13
01:27
это не только в 7-ке - "не знаю".
это - "не знаю" как оно вообще должно выглядеть. и даже не солько "не знаю", сколько "думать не умею".
5 m-serg74
 
12.05.13
02:28
(3) т.е. правильность с точки зрения учета не важна, главное чтобы все заполнено было пох чем?
6 ketonija
 
12.05.13
04:22
(5), мне нужно на 7-ке написать запрос аналогичный запросу на 8-ке, который приведу ниже

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

СГРУППИРОВАТЬ ПО
   РеализацияТоваровУслугТовары.Номенклатура,
   ВложенныйЗапрос.Ссылка,
   ВложенныйЗапрос.Цена

УПОРЯДОЧИТЬ ПО
   РеализацияТоваровУслугТовары.Номенклатура.Наименование

Вроде все должно быть ясно: нужен перебор в цикле номенклатуры с итоговым количеством по документам и расшифровками по цене и другим атрибутам, что хранятся в подчиненном справочнике "поставщик". Код из (3) дает эту информацию не одной строкой, а несколькими, поэтому результат нужно собирать из разных строк. Я хочу получить результат одной строкой, как в 8-ке.
7 m-serg74
 
12.05.13
08:52
(6) в 8 ке это как в Вашем запросе прокатит? если у номенклатуры несколько поставщиков?
8 ketonija
 
12.05.13
09:57
(7) конечно, прежде чем постить запрос я проверил его работу в консоли запросов. Отражается информация только по тому поставщику, который задан через параметры запроса.
9 zak555
 
12.05.13
10:00
(6) зачем вложенный запрос ?
10 zak555
 
12.05.13
10:02
(3) что за конфа ?
11 ArthurGlobus
 
12.05.13
18:42
Здравствуйте!
Помогите пожалуйста с написанием запроса.

Дана таблица с 3-мя физическими лицами и вариантом оплаты в каждом месяце.
 

С помощью языка запросов T-SQL или 1С (по желанию), написать запрос, возвращающий следующие данные(оплаты три раза подряд по каждому физическому лицу):
12 ketonija
 
13.05.13
18:13
(11), 3 раза подряд - это 3 месяца подряд? Результат нужен в таком виде?
Январь Иванов 1000
Январь Петров 1000
Январь Сидоров 1000
Февраль Иванов 1100
Февраль Петров 1100
Февраль Сидоров 1100
Март Иванов 1200
Март Петров 1200
Март Сидоров 1200
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой