Вход | Регистрация

1С:Предприятие ::

Метки: 

Как заполнить табличную часть документа контрагентами из справочника?

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

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









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

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

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




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

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

        НоваяСтрока.Контрагент = ВыборкаДетальныеЗаписи.Ссылка
        
    КонецЦикла;


Список тем форума
Рекламное место пустует   Рекламное место пустует
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует