Имя: Пароль:
1C
1С v8
v8: Выбрать из справочника
0 DenSpb
 
14.07.11
11:11
У регистра сведений "Пакеты подключений" два измерения - "Пакет" и "Город". Хочу выбрать элементы из справочника пакетов, у которых в регистре сведений у родителя есть записи по городу. Если записи нет, то город = ПустаяСсылка. Набираю вот такое запрос. Он дает не ту выборку. В чем ошибка?
Запрос.Текст = "ВЫБРАТЬ
|    ПакетыПодключений.Ссылка КАК ПакетПодключения,
|    ПакетыПодключений.Город КАК Город,
|    ПакетыПодключений.Родитель КАК Родитель,
|    1 КАК Поле1,
|    ВложенныйЗапрос.Город КАК ГородВРегистре
|ИЗ
|    Справочник.ПакетыПодключений КАК ПакетыПодключений
|        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|        ПакетыПодключенийСрезПоследних.ПакетПодключения КАК ПакетПодключения,
|        ПакетыПодключенийСрезПоследних.Город КАК Город
|        ИЗ
|        РегистрСведений.ПакетыПодключений.СрезПоследних КАК ПакетыПодключенийСрезПоследних) КАК ВложенныйЗапрос
|        ПО (ВложенныйЗапрос.Город = ПакетыПодключений.Город)
|            И ПакетыПодключений.Ссылка = ВложенныйЗапрос.ПакетПодключения
|ГДЕ
|    ПакетыПодключений.Родитель <> ЗНАЧЕНИЕ(Справочник.ПакетыПодключений.ПустаяСсылка)
|ИТОГИ
|    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Поле1)
|ПО
|    Родитель";
1 DenSpb
 
14.07.11
11:18
Либо такой запрос:
Запрос.Текст = "ВЫБРАТЬ
|    ПакетыПодключений.Ссылка КАК ПакетПодключения,
|    ПакетыПодключений.Город КАК Город,
|    ПакетыПодключений.Родитель КАК Родитель,
|    1 КАК Поле1,
|    ПакетыПодключенийСрезПоследних.Город КАК ГородВРегистре
|ИЗ
|    Справочник.ПакетыПодключений КАК ПакетыПодключений
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПакетыПодключений.СрезПоследних КАК ПакетыПодключенийСрезПоследних
|        ПО (ПакетыПодключенийСрезПоследних.Город = ПакетыПодключений.Город)
|            И ПакетыПодключений.Ссылка = ПакетыПодключенийСрезПоследних.ПакетПодключения
|ГДЕ
|    ПакетыПодключений.Родитель <> ЗНАЧЕНИЕ(Справочник.ПакетыПодключений.ПустаяСсылка)
|ИТОГИ
|    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Поле1)
|ПО
|    Родитель";
2 butterbean
 
14.07.11
11:19
я нихрена не понял, но соединять по-моему надо было по Родитель, а не по Ссылка
3 Mort
 
14.07.11
11:19
Вопрос непонятный. Даже не хочется вникать.
4 Eugene_life
 
14.07.11
11:21
(0) а отобрать никак из регистра?
5 DenSpb
 
14.07.11
11:25
Суть такая: Есть справочник пакетов. Цена пакета
для каждого города разлчиная, раньше цену пакетов хранили в реквизите пакета. Сейчас решили сделать один пакет для всех городов, а цены перенести в Регистр сведений. Соответсвенно создали новые пакеты. Для них в регистре сведенй указали цены в зависимости от города. Следующий этап для каждого пакета(где раньше стояла цена) уазать головной пакет. Далее надо удалаить все пакеты. которые оказались подчиненные. Соотвественно я должен выбрать говоловные пакеты и для каждого подчиненного проверить есть ли запись в регистре(т.е. указали ли цены для него). Связь осуществляется по городу и родительскому пакету.
6 Mort
 
14.07.11
11:31
Иногда мне кажется, что все сложные задачи для себя придумывают сами "программисты".
Что-то вы не туда копаете.
7 DenSpb
 
14.07.11
11:32
(6) а куда надо копать?
8 DenSpb
 
14.07.11
11:47
Понял, в чем фишка была:
вместо И ПакетыПодключений.Ссылка = ПакетыПодключенийСрезПоследних.ПакетПодключения надо было
И ПакетыПодключений.Родитель.Ссылка = ПакетыПодключенийСрезПоследних.ПакетПодключения, тогда все ок:))