Имя: Пароль:
1C
1С v8
Вывод реквизита из Справочники.Контрагенты в списке Справочника Партнеры ☑
0 okosv
 
17.12.11
✎
17:07
Приветствую всех.
Платформа 1C 8.2
Конфигурация УТ
Под 1С только-только начинаю, поэтому, если есть возможность подсобите, пожалуйста.
В справочник Контрагентов добавил дополнительный реквизит (скажем NewField), который мне нужно вывести в список справочника Партнеры.
Данный реквизит может быть указан, а может быть и нет. И кроме этого у у партнера может быть несколько подчиненных контрагентов, поэтому в список нужно вывести первый существущее значение дополнительного реквизита у подчиненных контрагентов.
В форме ФормаСписка изменил исходный текст запроса на заполнение динамического списка. Исходный текст следующий:

ВЫБРАТЬ
   СправочникПартнеры.Ссылка,
   СправочникПартнеры.ПометкаУдаления,
   СправочникПартнеры.Предопределенный,
   СправочникПартнеры.Родитель,
   СправочникПартнеры.Код,
   СправочникПартнеры.Наименование,
   ...
   ...
   ...
   СправочникПартнеры.КонтактнаяИнформация
ИЗ
   Справочник.Партнеры КАК СправочникПартнеры
   ПО СправочникПартнеры.Ссылка = ВложенныйЗапрос.ПартнерСсылка
{ГДЕ СправочникПартнеры.Ссылка КАК Сегмент, СправочникПартнеры.Ссылка КАК Поиск}
[/code]

Я пытаюсь его переделать в вариант:
[code]
ВЫБРАТЬ
   СправочникПартнеры.Ссылка,
   СправочникПартнеры.ПометкаУдаления,
   СправочникПартнеры.Предопределенный,
   СправочникПартнеры.Родитель,
   СправочникПартнеры.Код,
   СправочникПартнеры.Наименование,
   ...
   ...
   ...
   СправочникПартнеры.КонтактнаяИнформация,
   (ВЫБРАТЬ ПЕРВЫЕ 1
       СправочникКонтрагенты.NewField
   ИЗ
       Справочники.Контрагенты КАК СправочникКонтрагенты
   ГДЕ
       СправочникКонтрагенты.Партнер.Ссылка = СправочникПартнеры.Ссылка И
       СтрДлина(СправочникКонтрагенты.NewField)>0
   ) КАК NewField
ИЗ
   Справочник.Партнеры КАК СправочникПартнеры
   ПО СправочникПартнеры.Ссылка = ВложенныйЗапрос.ПартнерСсылка
{ГДЕ СправочникПартнеры.Ссылка КАК Сегмент, СправочникПартнеры.Ссылка КАК Поиск}

Но выходит ошибка, помогите переделать запрос, чтобы вывести значение первого не пустого NewField подчиненных контрагентов

Спасибо.
1 catena
 
17.12.11
✎
17:49
1 с это вам не скл, она не умеет такие поля делать. Делайте левым соединением.
2 okosv
 
17.12.11
✎
19:25
(1) Левым соединением тоже пробовал
Но с учетом того что у Партнера могут быть несколько подчиненных контрагентов, как мне вывести
значение первого ну пустого NewField из подчиненных контрагентов?
Вот такой вариант левого соединения пробовал:
ВЫБРАТЬ
   СправочникПартнеры.Ссылка,
   СправочникПартнеры.ПометкаУдаления,
   СправочникПартнеры.Предопределенный,
   СправочникПартнеры.Родитель,
   СправочникПартнеры.Код,
   СправочникПартнеры.Наименование,
   СправочникПартнеры.БизнесРегион,
   СправочникПартнеры.ГруппаДоступа,
   СправочникПартнеры.ДатаРегистрации,
   СправочникПартнеры.Клиент,
   СправочникПартнеры.Комментарий,
   СправочникПартнеры.Конкурент,
   СправочникПартнеры.НаименованиеПолное,
   СправочникПартнеры.ОсновнойМенеджер,
   СправочникПартнеры.Поставщик,
   СправочникПартнеры.ПрочиеОтношения,
   СправочникПартнеры.ДополнительныеРеквизиты,
   СправочникПартнеры.КонтактнаяИнформация,
   ВложенныйЗапрос.MegaNETID
ИЗ
   Справочник.Партнеры КАК СправочникПартнеры
   ЛЕВОЕ СОЕДИНЕНИЕ
   (
       ВЫБРАТЬ
           СправочникКонтрагенты.MegaNETID,
           СправочникКонтрагенты.Партнер.Ссылка КАК ПартнерСсылка
       ИЗ
           Справочник.Контрагенты КАК СправочникКонтрагенты
   ) КАК ВложенныйЗапрос
   ПО СправочникПартнеры.Ссылка = ВложенныйЗапрос.ПартнерСсылка
{ГДЕ СправочникПартнеры.Ссылка КАК Сегмент, СправочникПартнеры.Ссылка КАК Поиск}

При таком запросе вообще данные не выходят
3 Mikhail Volkov
 
17.12.11
✎
21:04
(0) А какая цель всего этого, сопоставить партнеров к контрагентам, как договора в УТ10.3? Но в УТ11.0.7.8 вроде вернули ДоговорыКонтрагентов... правда, они уже не подчинены контрагентам?
4 okosv
 
18.12.11
✎
07:47
(3) Не сопоставить, а вывести значение первого не пустого реквизита (который я сам добавил, скажем NewField) из подчиненных контрагентов в списке Партнеров.
В простом SQL, не было бы особых проблем, вывел бы через подчиненный запрос, но в 1С, как мне сказал (а) catena (1), такие поля невозможно вывести, через левое соединение тоже не получается
и то, в варианте левого соединения сложно будет вывести первую не пустую строку из таблицы контрагентов.
Может быть динамически при формировании списка делать? Если не ошибаюсь должно было быть событие ПриВыводеСтроки для списка, но его тоже не могу найти в 8.2
5 okosv
 
18.12.11
✎
08:57
можно как нибудь решить данную проблему?
Возможно ли в 1С 8.2 написать функцию к примеру, которую можно будет использовать в запросе?
Как в T-SQL User defined function к примеру
6 catena
 
18.12.11
✎
08:59
(5)На СКД можно :)

А какой "первый"? Т.е. - любой, удовлетворяющий условиям? Тогда, например, вложеный запрос + максимум.
7 Mikhail Volkov
 
18.12.11
✎
19:27
(4) А учишься, домашнее задание делаешь - практического значения не имеет? Я вот не допру, как в УТ11 собственные контрагенты с организациями связаны, партнеры с подразделениями... нет таких РС!?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший