Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как скопировать данные из одного реквизита справочника в другой
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
lolmatrix
Здравствуйте уважаемые программисты, подскажите пожалуйста начинающему специалисту, как скоприрорвать данные из одного реквизита справочника в другой есть два о справочника Должности и ДолжностиСКодами, в обоих есть наименование должности а код заполнен только во втором. как скопировать этот самый код из Должности в ДолжностиСКодами, заранее благодарен(в типовой конфигурации) хочу расширением сделать
lolmatrix
lolmatrix @ Сегодня, 12:13 необходимо зарегистрироваться для просмотра ссылки ,
сделал так:
    выборка =Справочники.Должности.Выбрать();
    Пока выборка.Следующий() Цикл
    ЗаполняемыйОбъект =выборка.ПолучитьОбъект();        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОКПДТР.Наименование КАК Наименование,
        |    ОКПДТР.КОДОКПДТР КАК КОДОКПДТР
        |ИЗ
        |    Справочник.ОКПДТР КАК ОКПДТР
        |ГДЕ
        |    ОКПДТР.Наименование = &Наименование";
    
    Запрос.УстановитьПараметр("Наименование", выборка.Наименование);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
     ЗаполняемыйОбъект.ОКПДТРКод = ВыборкаДетальныеЗаписи.КОДОКПДТР;
     ЗаполняемыйОбъект.Записать();
     Сообщить("Заполнен:"+" "+ЗаполняемыйОбъект.Ссылка+"Код:"+ВыборкаДетальныеЗаписи.КОДОКПДТР);
    КонецЦикла;
КонецЦикла;

Но встает вопрос как добавить в запросе условие где если не найден, тосообщить не найден
sava1
Цитата(lolmatrix @ 26.12.19, 11:13) необходимо зарегистрироваться для просмотра ссылки
в типовой конфигурации) хочу расширением сделать


судя по коду - не надо.
lolmatrix
sava1 @ Сегодня, 13:36 необходимо зарегистрироваться для просмотра ссылки ,
почему, нужно один раз коды перенести и все, я ж писал только начинаю,

sava1,
поясните , пожалуйста, что не так в моем коде
sava1
не надо - это про Расширение.

по коду -
запрос - выборка из справочникаБезКодов+левое соединение справочника с кодами
прошли по выборке - получили объект - записали.
lolmatrix
sava1 @ Сегодня, 14:38 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо, а как если не расширением, временно
sava1
внешней обработкой
fly
lolmatrix @ Сегодня, 13:50 необходимо зарегистрироваться для просмотра ссылки ,
Есть Инструменты разработчика - где то на просторах инета можно скачать,
можете через этот инструмент пробовать, для текой задачи очень даже подходит.
Anderson
lolmatrix @ Сегодня, 12:20 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(lolmatrix @ 26.12.19, 12:20) необходимо зарегистрироваться для просмотра ссылки
сделал так:
    выборка =Справочники.Должности.Выбрать();
    Пока выборка.Следующий() Цикл
    ЗаполняемыйОбъект =выборка.ПолучитьОбъект();        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОКПДТР.Наименование КАК Наименование,
        |    ОКПДТР.КОДОКПДТР КАК КОДОКПДТР
        |ИЗ
        |    Справочник.ОКПДТР КАК ОКПДТР
        |ГДЕ
        |    ОКПДТР.Наименование = &Наименование";
    
    Запрос.УстановитьПараметр("Наименование", выборка.Наименование);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
     ЗаполняемыйОбъект.ОКПДТРКод = ВыборкаДетальныеЗаписи.КОДОКПДТР;
     ЗаполняемыйОбъект.Записать();
     Сообщить("Заполнен:"+" "+ЗаполняемыйОбъект.Ссылка+"Код:"+ВыборкаДетальныеЗаписи.КОДОКПДТР);
    КонецЦикла;
КонецЦикла;

Больше так не делай. Цикл в цикле очень плохой подход. Если запросом, то учи соединения. А если просто, то выведи нужный справочник в таблицу и воспользуйся универсальной обработкой загрузки табличных документов.
lolmatrix
fly @ Вчера, 15:51 необходимо зарегистрироваться для просмотра ссылки ,
подскажите, пожалуйста, чем он подходит и подробней про этот инструмент я в нем не совсем разобрался, в чем его преимущество

Anderson @ Вчера, 17:33 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо огромное за советы сделал так:
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Должности.Ссылка КАК Долж,
        |    ЕСТЬNULL(Должности.Наименование, 0) КАК Наименование,
        |    ЕСТЬNULL(ОКПДТР.КОДОКПДТР, 0) КАК КОДОКПДТР,
        |    ЕСТЬNULL(ОКПДТР.Категория, 0) КАК Категория
        |ИЗ
        |    Справочник.ОКПДТР КАК ОКПДТР
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
        |        ПО (Должности.Наименование = ОКПДТР.Наименование)
        |ГДЕ
        |    Должности.ВведенаВШтатноеРасписание = ИСТИНА";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Если не ВыборкаДетальныеЗаписи.Долж=Неопределено и не ТипЗнч(ВыборкаДетальныеЗаписи.Долж)=Тип("Null") тогда
        Об =ВыборкаДетальныеЗаписи.Долж;
    Нужныйэлемент= Об.ПолучитьОбъект();
        Сообщить("Получил:"+Нужныйэлемент);
  
        
        Нужныйэлемент.ОКПДТРКод = ВыборкаДетальныеЗаписи.КОДОКПДТР;
         Нужныйэлемент.ОКПДТРКатегория = ВыборкаДетальныеЗаписи.Категория;
          Нужныйэлемент.Записать();
          Сообщить("Записал:"+Нужныйэлемент);
    КонецЕсли;
      
    КонецЦикла;


lolmatrix @ Сегодня, 7:40 необходимо зарегистрироваться для просмотра ссылки ,
Теперь встал вопрос как вывести в таблицу те должности соответствие которым не найдены во втором справочнике
Petre
QUOTE (Anderson @ 26.12.19, 16:33) необходимо зарегистрироваться для просмотра ссылки
Цикл в цикле очень плохой подход.

Чем плох цикл в цикле? Возможно вы хотели сказать "запрос в цикле"?
lolmatrix
В результате этого запроса много пустых строк, как их убрать, пожалуйста подскажите
fly
lolmatrix @ Сегодня, 10:50 необходимо зарегистрироваться для просмотра ссылки ,
В запросе вы выбирате все Справочник.ОКПДТР и только те которые совпадают в Справочник.Должности
поэтому у вас пустые строки....
меняйте на

Цитата
Справочник.Должности КАК Должности
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОКПДТР КАК ОКПДТР
ПО (ОКПДТР.Наименование = Должности.Наименование)


Цитата(lolmatrix @ 27.12.19, 6:55) необходимо зарегистрироваться для просмотра ссылки
подскажите, пожалуйста, чем он подходит и подробней про этот инструмент я в нем не совсем разобрался, в чем его преимущество


начнете пользоваться - найдете преимущества, а может и нет.
это не реклама, это просто то чем пользуюсь часто, посоветовали и реально помогает.

Основное - это сразу в пользовательском режиме 1с можно делать обратки, которые в обычно требовали создания внешней обработки.
так же есть тот же консоль запросов, но более удобный - можно видеть результаты Временных таблиц и т.д. - чтоб посмотреть почему данные так сформировались в итоговой.
и прочие вещи
lolmatrix
fly @ Вчера, 18:36 необходимо зарегистрироваться для просмотра ссылки ,
часть полей теперь имеет тип null, как программно изменить тип на строковой
sava1
IsNULL(ИмяПоля,"") как Поле
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.