Имя: Пароль:
1C
 
Как заполнить табличную часть документа контрагентами из справочника?
0 stg008
 
18.07.18
11:11
Запросом, который написан ниже, мы отбираем запланированные звонки по дате из регистра сведений. Как сделать так, чтобы табличная часть заполнялась десятью контрагентами из справочника, по которым еще не было звонков? Нужно сделать второй запрос с выборкой из справочника и задать пустым полям значение ЕСТЬNULL? Если это так, был бы благодарен за помощь с синтаксисом

Сама табличная часть выглядит так - https://b.radikal.ru/b12/1807/f0/f78976808750.png









Процедура ПолучитьНеОбработанныхКонтрагентовНаСервере()

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

    
    КонецЦикла;
1 lodger
 
18.07.18
11:16
ну мысль верная, соединить полным СведенияОбОбзвоне и справочник контрагентов, поставить условие ГДЕ СведенияОбОбзвоне.Регистратор ЕСТЬ NULL
можно даже в запросе сразу уменьшить выборку написав ВЫБРАТЬ ПЕРВЫЕ 10
2 stg008
 
18.07.18
11:36
(1)
Спасибо) добавил, заполняется пока только номер строки, что еще упускаю?




Запрос = Новый Запрос;
    Запрос.Текст =
    
    "ВЫБРАТЬ ПЕРВЫЕ 10
    |    СведенияОбОбзвоне.Период КАК Период,
    |    СведенияОбОбзвоне.Регистратор КАК Регистратор,
    |    СведенияОбОбзвоне.НомерСтроки КАК НомерСтроки,
    |    СведенияОбОбзвоне.Активность КАК Активность,
    |    СведенияОбОбзвоне.Менеджер КАК Менеджер,
    |    СведенияОбОбзвоне.Контрагент КАК Контрагент,
    |    СведенияОбОбзвоне.КонтактноеЛицо КАК КонтактноеЛицо,
    |    СведенияОбОбзвоне.РезультатОбзвона КАК РезультатОбзвона,
    |    СведенияОбОбзвоне.ДатаПерезвона КАК ДатаПерезвона,
    |    СведенияОбОбзвоне.ТипЗвонка КАК ТипЗвонка
    |ИЗ
    |    РегистрСведений.СведенияОбОбзвоне КАК СведенияОбОбзвоне
    |        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    |        ПО СведенияОбОбзвоне.Контрагент = Контрагенты.Ссылка
    |ГДЕ
    |    СведенияОбОбзвоне.Регистратор ЕСТЬ NULL";
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НоваяСтрока = Объект.ТабличнаяЧасть.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
        
        
    КонецЦикла;
    
    
КонецПроцедуры
3 lodger
 
18.07.18
12:36
(2) убери все старые поля
возьми новые
Контрагенты.Ссылка КАК Контрагент,
Значение(КакоеТоПеречисление.Первичный) КАК ТипЗвонка

а дальше уже по образцу и подобию.
4 stg008
 
18.07.18
12:52
(3) Спасибо, сделал так
Запрос2= Новый Запрос;
    Запрос2.Текст=
    
    "ВЫБРАТЬ  ПЕРВЫЕ 5
    |    Контрагенты.Ссылка КАК Ссылка,
    |    Контрагенты.ВерсияДанных КАК ВерсияДанных,
    |    Контрагенты.ПометкаУдаления КАК ПометкаУдаления,
    |    Контрагенты.Код КАК Код,
    |    Контрагенты.Наименование КАК Наименование,
    |    Контрагенты.ФактическийАдрес КАК ФактическийАдрес,
    |    Контрагенты.Телефон КАК Телефон,
    |    Контрагенты.ЭлектронныйАдрес КАК ЭлектронныйАдрес,
    |    Контрагенты.Предопределенный КАК Предопределенный,
    |    Контрагенты.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
    |    Контрагенты.Представление КАК Представление,
    |    СведенияОбОбзвоне.Период КАК Период,
    |    СведенияОбОбзвоне.Регистратор КАК Регистратор,
    |    СведенияОбОбзвоне.НомерСтроки КАК НомерСтроки,
    |    СведенияОбОбзвоне.Активность КАК Активность,
    |    СведенияОбОбзвоне.Менеджер КАК Менеджер,
    |    СведенияОбОбзвоне.Контрагент КАК Контрагент,
    |    СведенияОбОбзвоне.КонтактноеЛицо КАК КонтактноеЛицо,
    |    СведенияОбОбзвоне.РезультатОбзвона КАК РезультатОбзвона,
    |    СведенияОбОбзвоне.ДатаПерезвона КАК ДатаПерезвона,
    |    СведенияОбОбзвоне.ТипЗвонка КАК ТипЗвонка
    |ИЗ
    |    РегистрСведений.СведенияОбОбзвоне КАК СведенияОбОбзвоне
    |        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    |        ПО СведенияОбОбзвоне.Контрагент = Контрагенты.Ссылка
    |ГДЕ
    |    СведенияОбОбзвоне.Регистратор ЕСТЬ NULL";
    РезультатЗапроса=Запрос2.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НоваяСтрока = Объект.ТабличнаяЧасть.Добавить();
        //ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
        НоваяСтрока.Контрагент = ВыборкаДетальныеЗаписи.Ссылка
        
    КонецЦикла;