Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как скопировать данные из одного реквизита справочника в другой          
lolmatrix Подменю пользователя
сообщение 26.12.19, 11:13
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 113
Спасибо сказали: 1 раз
Рейтинг: 1

Здравствуйте уважаемые программисты, подскажите пожалуйста начинающему специалисту, как скоприрорвать данные из одного реквизита справочника в другой есть два о справочника Должности и ДолжностиСКодами, в обоих есть наименование должности а код заполнен только во втором. как скопировать этот самый код из Должности в ДолжностиСКодами, заранее благодарен(в типовой конфигурации) хочу расширением сделать

lolmatrix Подменю пользователя
сообщение 26.12.19, 12:20
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 113
Спасибо сказали: 1 раз
Рейтинг: 1

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

Но встает вопрос как добавить в запросе условие где если не найден, тосообщить не найден

sava1 Подменю пользователя
сообщение 26.12.19, 12:36
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

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


судя по коду - не надо.

lolmatrix Подменю пользователя
сообщение 26.12.19, 13:20
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 113
Спасибо сказали: 1 раз
Рейтинг: 1

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

sava1,
поясните , пожалуйста, что не так в моем коде

sava1 Подменю пользователя
сообщение 26.12.19, 13:38
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

не надо - это про Расширение.

по коду -
запрос - выборка из справочникаБезКодов+левое соединение справочника с кодами
прошли по выборке - получили объект - записали.

Спасибо сказали: lolmatrix,

lolmatrix Подменю пользователя
сообщение 26.12.19, 13:50
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 113
Спасибо сказали: 1 раз
Рейтинг: 1

sava1 @ Сегодня, 14:38 * ,
Спасибо, а как если не расширением, временно

sava1 Подменю пользователя
сообщение 26.12.19, 13:59
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

внешней обработкой

Спасибо сказали: lolmatrix,

fly Подменю пользователя
сообщение 26.12.19, 14:51
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 234
Спасибо сказали: 51 раз
Рейтинг: 48

lolmatrix @ Сегодня, 13:50 * ,
Есть Инструменты разработчика - где то на просторах инета можно скачать,
можете через этот инструмент пробовать, для текой задачи очень даже подходит.

Anderson Подменю пользователя
сообщение 26.12.19, 16:33
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 89
Из: Одесса
Спасибо сказали: 11 раз
Рейтинг: 13.4

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

Больше так не делай. Цикл в цикле очень плохой подход. Если запросом, то учи соединения. А если просто, то выведи нужный справочник в таблицу и воспользуйся универсальной обработкой загрузки табличных документов.

Спасибо сказали: lolmatrix,

lolmatrix Подменю пользователя
сообщение 27.12.19, 6:55
Сообщение #10

Завсегдатай
****
Группа: Пользователи
Сообщений: 113
Спасибо сказали: 1 раз
Рейтинг: 1

fly @ Вчера, 15:51 * ,
подскажите, пожалуйста, чем он подходит и подробней про этот инструмент я в нем не совсем разобрался, в чем его преимущество

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


lolmatrix @ Сегодня, 7:40 * ,
Теперь встал вопрос как вывести в таблицу те должности соответствие которым не найдены во втором справочнике

Petre Подменю пользователя
сообщение 27.12.19, 9:43
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

QUOTE (Anderson @ 26.12.19, 16:33) *
Цикл в цикле очень плохой подход.

Чем плох цикл в цикле? Возможно вы хотели сказать "запрос в цикле"?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

lolmatrix Подменю пользователя
сообщение 27.12.19, 10:50
Сообщение #12

Завсегдатай
****
Группа: Пользователи
Сообщений: 113
Спасибо сказали: 1 раз
Рейтинг: 1

В результате этого запроса много пустых строк, как их убрать, пожалуйста подскажите

fly Подменю пользователя
сообщение 27.12.19, 17:36
Сообщение #13

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 234
Спасибо сказали: 51 раз
Рейтинг: 48

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

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


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


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

Основное - это сразу в пользовательском режиме 1с можно делать обратки, которые в обычно требовали создания внешней обработки.
так же есть тот же консоль запросов, но более удобный - можно видеть результаты Временных таблиц и т.д. - чтоб посмотреть почему данные так сформировались в итоговой.
и прочие вещи

Сообщение отредактировал fly - 27.12.19, 16:38

Спасибо сказали: lolmatrix,

lolmatrix Подменю пользователя
сообщение 28.12.19, 11:12
Сообщение #14

Завсегдатай
****
Группа: Пользователи
Сообщений: 113
Спасибо сказали: 1 раз
Рейтинг: 1

fly @ Вчера, 18:36 * ,
часть полей теперь имеет тип null, как программно изменить тип на строковой

sava1 Подменю пользователя
сообщение 28.12.19, 11:51
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

IsNULL(ИмяПоля,"") как Поле

Спасибо сказали: lolmatrix,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 0:59
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!