Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 08:17
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: УТ 10.3 - СКД - Левое соединение  (Прочитано 951 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн AIFrame

  • ****
  • Сообщений: 323
  • РЕПУТАЦИЯ: 43
  • КПД: 13%
  • Регистрация: 2015-07-22
  • Сайт: 
  • Профессия: Ученик 1С
Запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
Спр.Ссылка КАК Номенклатура,
Спр.ОтветственныйМенеджерЗаПокупки КАК ОтветственныйЗаПокупки,
Спр.Производитель КАК Производитель,
Спр.НомерГТД КАК ГТД,
Спр.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору КАК ЕХО,
Спр.ЕдиницаХраненияОстатков.Коэффициент КАК ЕХО_К,
Спр.ЕдиницаХраненияОстатков.Объем КАК ЕХО_О,
Спр.ЕдиницаДляОтчетов.ЕдиницаПоКлассификатору КАК ЕДО,
Спр.ЕдиницаДляОтчетов.Коэффициент КАК ЕДО_К,
Спр.ЕдиницаДляОтчетов.Объем КАК ЕДО_О,
ЗСО.Значение КАК Сертификат
{ВЫБРАТЬ
Номенклатура.*,
ОтветственныйЗаПокупки.*,
Производитель.*,
ГТД.*,
ЕХО.*,
ЕХО_К,
ЕХО_О,
ЕДО.*,
ЕДО_К,
ЕДО_О,
Сертификат.*}
ИЗ
Справочник.Номенклатура КАК Спр
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗСО
ПО Спр.Ссылка = ЗСО.Объект.Ссылка}
ГДЕ
ЗСО.Свойство = &ЭтоСертификат
И Спр.ВидНоменклатуры В(&ВидНоменклатуры)
И ЗСО.Объект.ВидНоменклатуры В(&ВидНоменклатуры)
{ГДЕ
Спр.Ссылка.* КАК Номенклатура,
Спр.ОтветственныйМенеджерЗаПокупки.* КАК ОтветственныйЗаПокупки,
Спр.Производитель.*,
Спр.НомерГТД.* КАК ГТД,
Спр.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.* КАК ЕХО,
Спр.ЕдиницаХраненияОстатков.Коэффициент КАК ЕХО_К,
Спр.ЕдиницаХраненияОстатков.Объем КАК ЕХО_О,
Спр.ЕдиницаДляОтчетов.ЕдиницаПоКлассификатору.* КАК ЕДО,
Спр.ЕдиницаДляОтчетов.Коэффициент КАК ЕДО_К,
Спр.ЕдиницаДляОтчетов.Объем КАК ЕДО_О,
ЗСО.Значение.* КАК Сертификат}
Подразумевается, что, согласно отбору, вывалится вся номенклатура из справочника и левым соединением допишется полем "Сертификат". На деле же я получаю только те позиции справочника, которым есть соответствие в таблице ЗСО (Значение Свойств Объекта).
В обычном запросе оно работает как надо, а вот в СКД так. В чем может быть причина?
Выводить Сертификат через ВЫБОР КОГДА?


Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Что в запросе, что в СКД по этому вопросу работает одинаково. Секция "Где" всегда накладывает огрничение на уже сформированную таблицу с данными. У вас выбираются все данные в таблицу, потом на эту общую таблицу накладывается отбор из секции "Где", что естественно приводит к тому что в итоге остаются только записи, удовлетворяющие условиям.
Вам нужно внутренним запросом выбрать ваши сертификаты, там же во внутреннем запросе отсечь ненужные и только после этого цеплять левым соединением к основному запросу.

Онлайн AIFrame

  • ****
  • Сообщений: 323
  • РЕПУТАЦИЯ: 43
  • КПД: 13%
  • Регистрация: 2015-07-22
  • Сайт: 
  • Профессия: Ученик 1С
Вам нужно внутренним запросом выбрать ваши сертификаты, там же во внутреннем запросе отсечь ненужные и только после этого цеплять левым соединением к основному запросу.
Только вы это написали, как я осознал свой косяк.
Спасибо.
ВЫБРАТЬ РАЗЛИЧНЫЕ
Спр.Ссылка КАК Номенклатура,
Спр.ОтветственныйМенеджерЗаПокупки КАК ОтветственныйЗаПокупки,
Спр.Производитель КАК Производитель,
Спр.НомерГТД КАК ГТД,
Спр.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору КАК ЕХО,
Спр.ЕдиницаХраненияОстатков.Коэффициент КАК ЕХО_К,
Спр.ЕдиницаХраненияОстатков.Объем КАК ЕХО_О,
Спр.ЕдиницаДляОтчетов.ЕдиницаПоКлассификатору КАК ЕДО,
Спр.ЕдиницаДляОтчетов.Коэффициент КАК ЕДО_К,
Спр.ЕдиницаДляОтчетов.Объем КАК ЕДО_О,
ЗСО.Сертификат
{ВЫБРАТЬ
Номенклатура.*,
ОтветственныйЗаПокупки.*,
Производитель.*,
ГТД.*,
ЕХО.*,
ЕХО_К,
ЕХО_О,
ЕДО.*,
ЕДО_К,
ЕДО_О}
ИЗ
Справочник.Номенклатура КАК Спр
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЗначенияСвойствОбъектов.Объект.Ссылка КАК Связь,
ЗначенияСвойствОбъектов.Значение КАК Сертификат
ИЗ
РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
ЗначенияСвойствОбъектов.Свойство = &ЭтоСертификат
И ЗначенияСвойствОбъектов.Объект.ВидНоменклатуры = &ВидНоменклатуры) КАК ЗСО
ПО Спр.Ссылка = ЗСО.Связь
ГДЕ
Спр.ВидНоменклатуры В(&ВидНоменклатуры)
{ГДЕ
Спр.Ссылка.* КАК Номенклатура,
Спр.ОтветственныйМенеджерЗаПокупки.* КАК ОтветственныйЗаПокупки,
Спр.Производитель.*,
Спр.НомерГТД.* КАК ГТД,
Спр.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.* КАК ЕХО,
Спр.ЕдиницаХраненияОстатков.Коэффициент КАК ЕХО_К,
Спр.ЕдиницаХраненияОстатков.Объем КАК ЕХО_О,
Спр.ЕдиницаДляОтчетов.ЕдиницаПоКлассификатору.* КАК ЕДО,
Спр.ЕдиницаДляОтчетов.Коэффициент КАК ЕДО_К,
Спр.ЕдиницаДляОтчетов.Объем КАК ЕДО_О}

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
м-м-м-да,
рассмотрим ваш первый запрос
1.настойчиво не рекомендуется к реквизиту обращаться через ссылку
ваш код
   Справочник.Номенклатура КАК Спр
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗСО
        ПО Спр.Ссылка = ЗСО.Объект.Ссылка}

будет правильнее
   Справочник.Номенклатура КАК Спр
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗСО
   ПО Спр.Ссылка = ЗСО.Объект

2. Если вы какие-то объекты сопраягли по ссылке, т.е. Ссылка1 = Ссылка2
то это значит что и все остальные данные в этих объектах так-же равны, и не надо два раза проверять одно и тоже значение
ваш код
   ЗСО.Свойство = &ЭтоСертификат
    И Спр.ВидНоменклатуры В(&ВидНоменклатуры)
    //И ЗСО.Объект.ВидНоменклатуры В(&ВидНоменклатуры) <- такая проверка абсолютно лишняя!!!

3.когда делаете реально левое соединение и хотите получить все записи из левой таблицы
то все условия на правую таблицу надо писать в разделе ПО

ваш запрос выглядел бы так, попробуйте его
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    Спр.Ссылка КАК Номенклатура,
    Спр.ОтветственныйМенеджерЗаПокупки КАК ОтветственныйЗаПокупки,
    Спр.Производитель КАК Производитель,
    Спр.НомерГТД КАК ГТД,
    Спр.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору КАК ЕХО,
    Спр.ЕдиницаХраненияОстатков.Коэффициент КАК ЕХО_К,
    Спр.ЕдиницаХраненияОстатков.Объем КАК ЕХО_О,
    Спр.ЕдиницаДляОтчетов.ЕдиницаПоКлассификатору КАК ЕДО,
    Спр.ЕдиницаДляОтчетов.Коэффициент КАК ЕДО_К,
    Спр.ЕдиницаДляОтчетов.Объем КАК ЕДО_О,
    ЗСО.Значение КАК Сертификат
{ВЫБРАТЬ
    Номенклатура.*,
    ОтветственныйЗаПокупки.*,
    Производитель.*,
    ГТД.*,
    ЕХО.*,
    ЕХО_К,
    ЕХО_О,
    ЕДО.*,
    ЕДО_К,
    ЕДО_О,
    Сертификат.*}
ИЗ
    Справочник.Номенклатура КАК Спр
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗСО
    ПО Спр.Ссылка = ЗСО.Объект
    и ЗСО.Свойство = &ЭтоСертификат
ГДЕ
    И Спр.ВидНоменклатуры В(&ВидНоменклатуры)
    //И ЗСО.Объект.ВидНоменклатуры В(&ВидНоменклатуры)
{ГДЕ
    Спр.Ссылка.* КАК Номенклатура,
    Спр.ОтветственныйМенеджерЗаПокупки.* КАК ОтветственныйЗаПокупки,
    Спр.Производитель.*,
    Спр.НомерГТД.* КАК ГТД,
    Спр.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.* КАК ЕХО,
    Спр.ЕдиницаХраненияОстатков.Коэффициент КАК ЕХО_К,
    Спр.ЕдиницаХраненияОстатков.Объем КАК ЕХО_О,
    Спр.ЕдиницаДляОтчетов.ЕдиницаПоКлассификатору.* КАК ЕДО,
    Спр.ЕдиницаДляОтчетов.Коэффициент КАК ЕДО_К,
    Спр.ЕдиницаДляОтчетов.Объем КАК ЕДО_О,
    ЗСО.Значение.* КАК Сертификат}


п.с. Вложенные/вложенные и т.д. запросы писать считается не читабельно, не оптимально 
Быбрать ...
   из ( Быбрать ...
      из ( Быбрать ...
          ...
         из ( ) ) )
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
, не оптимально 
Категорически не согласен. Читабельно/нечитабельно дело фэншуя. А по оптимальности - все зависит от конкретной задачи. Грести все под одну гребенку, типа внутрение запросы = зло, - явно не стоит.

Онлайн AIFrame

  • ****
  • Сообщений: 323
  • РЕПУТАЦИЯ: 43
  • КПД: 13%
  • Регистрация: 2015-07-22
  • Сайт: 
  • Профессия: Ученик 1С
Любопытно, т.е. объявление условия в связях с таблицей = вложенная таблица с условием.
Ладно.


Теги:
 

com-соединение: .Пустая() - Значение не является значением объектного типа (Пустая)

Автор burvladimirРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 7
Просмотров: 2929
Последний ответ 03 Фев 2015, 10:52
от Slin
Ошибка "Соединение с сервером разорвано по инициативе сервера"

Автор lone_wolfРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1467
Последний ответ 13 Ноя 2016, 09:20
от ilyay
Ошибка SDBL: Соединение с базой данных не удерживается. Отпустить контекст соединения невозможно

Автор SandiРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 10965
Последний ответ 15 Май 2015, 17:03
от Sandi
В клиент серверном режиме при подключении через com-соединение не дает создать документ

Автор LilkosРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 1275
Последний ответ 23 Май 2016, 10:58
от Lilkos
1с82 и PHP5 Организация доступа через внешнее соединение 1с из модулей PHP!

Автор Mr_Best_23rusРаздел Беседка

Ответов: 4
Просмотров: 4709
Последний ответ 15 Фев 2011, 21:23
от chuevsf

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
135 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
63 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 380
  • Точка Скрытых: 0
  • Точка Пользователей: 12
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal