Имя: Пароль:
1C
1C 7.7
v7: Запрос. Как связать данные справочника и данные регистра ?
,
0 DenisSol
 
16.05.12
10:21
Добрый день.
Подскажите как можно написать Запрос в конфигурации “Торговля и Склад ред. 9.2” системы 1С Предприятие 7.7.
Задача: В отчет “Продажи” необходимо вывести группировку “Категории”.
Есть Справочник “Категории Контрагентов”  подчинен справочнику контрагенты.
Запрос в отчете обращается только к Регистру.ПартииТоваров. В регистре есть измерение Контрагент.

ТекстЗапроса="
|ПЕРИОД С ДатаНачала По ДатаКонца;
|Фирма     = Регистр.ПартииТоваров.Фирма;
|Поставщик = Регистр.ПартииТоваров.Поставщик;    

Как можно связать значения регистра с элемента справочника  “Категории Контрагентов” ?
1 yam
 
16.05.12
10:22
если категорий много, какую выводить надо?
2 Voronve
 
16.05.12
10:23
|Поставщик = Регистр.ПартииТоваров.<Твой идентификатор категории в регистре>.Владелец;
3 DenisSol
 
16.05.12
10:24
(1) Группировать
4 DenisSol
 
16.05.12
10:26
(2) В регистре на прямую нет ссылки на справочник “Категории Контрагента”. Владелец Контрагент.
5 Voronve
 
16.05.12
10:28
(4) Собстна, в этом случае, шарясь по регистру ПартииТоваров как хочешь получить категории партии ? Может ссылка на категорию есть в справочнике партий ?
6 yam
 
16.05.12
10:31
(3) Сама постановка задачи неправильна.  Какая структура регистра партии товаров?
7 DenisSol
 
16.05.12
10:34
(5)Нет. Ссылки на элемент справочника “Категорию контрагента” к сожалению  в партии нет. В регистре есть только контрагент, у контрагента подчиненные справочник  “Категорию контрагента”.  А вот как получить уже не знаю… как вариант

|Категория = Справочники.КатегорииКонтрагента.ТекущийЭлемент();
|Поставщик = Регистр.ПартииТоваров.Поставщик;  
|Условие(Категория.Владелец() = Поставщик)

Не проверял но думаю не отработает
8 Voronve
 
16.05.12
10:35
(7) не сработает. нужна или ссылка в регистре или ссылка в справочнике.
9 DenisSol
 
16.05.12
10:40
(6) Весь запрос


ТекстЗапроса="
|ПЕРИОД С ДатаНачала По ДатаКонца;
|Фирма            = Регистр.ПартииТоваров.Фирма;
|Товар            = Регистр.ПартииТоваров.Товар;
|Емкость    = Регистр.ПартииТоваров.Товар.Емкость;
|МнЕмк    = Регистр.ПартииТоваров.Товар.МножительЕмкости;
|Крепость=Регистр.ПартииТоваров.Товар.Крепость;
|ВидТовара = Регистр.ПартииТоваров.Товар.Префикс;
|Отечественный    = Регистр.ПартииТоваров.Товар.Происхождение;
|Алкогольный    = Регистр.ПартииТоваров.Товар.Алкогольный;
|Производитель    = Регистр.ПартииТоваров.Товар.Производитель;
|Валюта    = Регистр.ПартииТоваров.Товар.ВалютаУчета;
|Покупатель= Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Клиент,
|Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Клиент;
|
|Плательщик= Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Клиент.ОснЮрЛицо,
                           |Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Клиент.ОснЮрЛицо;
                           
|ГПокупатель    = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Клиент.Родитель,
                           |Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Клиент.Родитель;
           
|Агент            = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Договор.Агент,
|Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Договор.Агент;

       |Склад            = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Склад,
                             |Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Склад;
           
       |Поставщик        = Регистр.ПартииТоваров.Поставщик;
       //ИИВ 28.01.04
       |Район            = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Клиент._Местоположение,
                             |Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Клиент._Местоположение;
       //
       |Поставка        = Регистр.ПартииТоваров.Поставка;
       |ПрихДокумент    = Регистр.ПартииТоваров.ПрихДокумент;
       |ТекДок            = Регистр.ПартииТоваров.ТекущийДокумент;
       |ОстатокТовара    = Регистр.ПартииТоваров.ОстатокТовара;
       |Стоимость        = Регистр.ПартииТоваров.Стоимость;
       |СтоимостьНП    = Регистр.ПартииТоваров.СтоимостьНП;
       |СуммаНДС        = Регистр.ПартииТоваров.НДСРасхода;
       |НДС            = Регистр.ПартииТоваров.НДС;
       |НП                = Регистр.ПартииТоваров.НП;
       |Оборот            = Регистр.ПартииТоваров.Оборот;
       |КодОперации    = Регистр.ПартииТоваров.КодОперации;";

   ЧислоГруппировок=0;
   Для Н=1 По ПорядокГруппировки.РазмерСписка() Цикл
       ЧислоГруппировок = ЧислоГруппировок + ДобавитьГруппировку(ТекстЗапроса, Н);
   КонецЦикла;

   Если ЧислоГруппировок=0 Тогда
       ТекстЗапроса=ТекстЗапроса+"
           |Группировка Товар Без групп;";
       СписокГруппировок.ДобавитьЗначение("Товар");
   КонецЕсли;

   ТекстЗапроса=ТекстЗапроса+"
       |Группировка Валюта;";
   
   СписокГруппировок.ДобавитьЗначение("Валюта");

   ТекстЗапроса=ТекстЗапроса+"
       |Функция РасхОстатокТовара    = Расход(ОстатокТовара    );
       |Функция ПрихОстатокТовара    = Приход(ОстатокТовара    );
       |Функция РасхСтоимость        = Расход(Стоимость        );
       |Функция ПрихСтоимость        = Приход(Стоимость        );
       |Функция РасхСтоимостьНП    = Расход(СтоимостьНП    );
       |Функция ПрихСтоимостьНП    = Приход(СтоимостьНП    );
       |Функция ПрихНДС            = Приход(НДС            );
       |Функция РасхНДС            = Расход(НДС            );
       |Функция ОборотТовара        = Сумма(Оборот            );
       |Функция НДСТовара            = Сумма(СуммаНДС        );
       |Функция НалогПродаж        = Сумма(НП                );
       
       |Условие (Фирма            = ВыбФирма                );
       |Условие (Не(Оборот            = 0                       ));
       |Условие (КодОперации        В КодыОперацийПродажи    );
       |";
10 пипец
 
16.05.12
10:40
(7) чистый васьмерошник ?
11 DenisSol
 
16.05.12
10:42
(8) Другого варианта нет ? или использовать ТаблицуЗначений
12 Voronve
 
16.05.12
10:43
(11) У контрагента в карточке есть ссылка на справочник категории ?
13 пипец
 
16.05.12
10:43
(11) или список значений , но реквизит а не ссылку
14 DenisSol
 
16.05.12
10:43
(10) На счет знания языка программирования ? Знаю и 7.7. Полезно узнать мнение тех кто знает больше.
15 DenisSol
 
16.05.12
10:46
(12)Такого реквизита как пример ОсновнаяКатегирияКонтрагента, нет. Есть только подчиненный справочник. Если такую связь  невозможно реализовать запросом, перейду к реквизиту.
16 Voronve
 
16.05.12
10:47
(15) Если и в документах нет категории, то швах. Реализовывай через "ОсновнаяКатегирияКонтрагента"
17 Конфигуратор1с
 
16.05.12
10:48
(15)как вариант делаем запрос к справочнику категории получаем контрагент категория выгружаем в тз, после этогоделаем запрос к регистру дозаполняем тз. Тз сворачиваем.
18 DenisSol
 
16.05.12
10:50
Большое спасибо ВСЕМ за ваши ценные советы.
19 Ёпрст
 
16.05.12
10:51
(0) В чорном запросе никак
Можно только условие наложить или условие на вычисление функции и всё.
Переменную, а тем более группировку не слепишь.

А вот в прямом запросе можно всё.
20 DenisSol
 
16.05.12
10:54
(19) Можно чут чуть по подробнее про прямой Запрос
21 Ёпрст
 
16.05.12
10:55
22 Ёпрст
 
16.05.12
10:55
23 yam
 
16.05.12
11:15
ага, сейчас он прям освоит прямые запросы))
24 Ёпрст
 
16.05.12
11:17
всё может быть, мот он dba developer