Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
SpiritAT
3 / 3 / 3
Регистрация: 02.09.2011
Сообщений: 107
#1

Как перенести продублировать данные из справочника.ЕдиницыИзмерения.Ссылка в справочник КлассификаторЕдиницИзмерения.Ссылка - 1С

01.10.2013, 22:21. Просмотров 1745. Ответов 27
Метки нет (Все метки)

Ну вапрос таков есть два справочника 1)КлассификаторЕдиницИзмерения и 2) ЕдиницыИзмерения нужна сделать так что бы у них были индоинтичные данные. Пробовал КлассификаторЕдиницИзмерения = ЕдиницыИзмерения он ругнулся на то что Преобразование значения к типу Число не может быть выполнено. Подскажите как правелно нужно сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2013, 22:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как перенести продублировать данные из справочника.ЕдиницыИзмерения.Ссылка в справочник КлассификаторЕдиницИзмерения.Ссылка (1С):

1с 7.7 Ссылка В Справочник Не Только На Наименование
Простите за дублирование топика. Какой-то ФаталЕррор при отправке задублировал....

Ссылка На Реквизит Табличной Части Справочника?
Здравствуйте, дорогие коллеги! Вопрос у меня такой - возможно ли в колонку...

Ссылка на реквизит табличной части справочника?
Здравствуйте, дорогие коллеги! Вопрос у меня такой - возможно ли в колонку...

Ссылка картинки из справочника в макет печати
Добрый вечер! Извини что если не правильно написал заголовок) Есть 2...

Перенести данные в документ из справочника
Приветствую. Есть вопрос. Есть справочник наменований с реквизитами: код,...

СправочникСсылка.<Имя справочника> и СправочникСсылка.<Имя справочника>.Ссылка
Я что-то запутался и не вижу разницы - оба ссылаются на элемент справочника. ...

27
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
01.10.2013, 22:33 #2
Цитата Сообщение от SpiritAT Посмотреть сообщение
индоинтичные
Нет такого слова...

Цитата Сообщение от SpiritAT Посмотреть сообщение
Пробовал КлассификаторЕдиницИзмерения = ЕдиницыИзмерения
Пробовал где? И что значит "КлассификаторЕдиницИзмерения = ЕдиницыИзмерения". Вы это в коде обработки написали? Или что?
0
SpiritAT
3 / 3 / 3
Регистрация: 02.09.2011
Сообщений: 107
02.10.2013, 08:38  [ТС] #3
Да писал. и написал ошибку ту которую он мне ответел. Мне нада что бы данные из справочника ЕдиницыИзмерения столбца наименование были такие же как и в справочнике КлассификаторЕдиницИзмерения столбца наименование

Добавлено через 2 часа 1 минуту
Сделал так но он почему то не сохраняет данные
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЕдиницыИзмерения.ЕдиницаПоКлассификатору,
        |   ЕдиницыИзмерения.Наименование,
        |   ЕдиницыИзмерения.Ссылка
        |ИЗ
        |   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения";
 
    Результат = Запрос.Выполнить();
 
    ВыборкаДЗ = Результат.Выбрать();
 
    Пока ВыборкаДЗ.Следующий() Цикл
    ЕдинИзм=ВыборкаДЗ.Ссылка.ПолучитьОбъект();
    ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору;
    ЕдинИзмКлас=ЕдинИзм.Скопировать();
    Попытка
    ЕдинИзмКлас.Записать();
    Исключение
    Предупреждение("Не удалось записать объект """ + Объект + """!
                   |" + ОписаниеОшибки(), 60);
КонецПопытки;
 
Сообщить(ЕдинИзмКлас);
    КонецЦикла;
0
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
02.10.2013, 09:24 #4
Если нужно перезаполнить наименование единицы измерения, на основании классификатора, то нужно делать так:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЕдиницыИзмерения.ЕдиницаПоКлассификатору,
        |   ЕдиницыИзмерения.Наименование,
        |   ЕдиницыИзмерения.Ссылка
        |ИЗ
        |   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения";
 
    Результат = Запрос.Выполнить();
 
    ВыборкаДЗ = Результат.Выбрать();
 
    Пока ВыборкаДЗ.Следующий() Цикл
    ЕдинИзм=ВыборкаДЗ.Ссылка.ПолучитьОбъект();
    ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору;
    ЕдинИзм.Наименование=ЕдинИзмКлас.Наименование;
    Попытка
    ЕдинИзм.Записать();
    Исключение
    Предупреждение("Не удалось записать объект """ + Объект + """!
                   |" + ОписаниеОшибки(), 60);
КонецПопытки
;

Сообщить(ЕдинИзмКлас);
КонецЦикла;
0
SpiritAT
3 / 3 / 3
Регистрация: 02.09.2011
Сообщений: 107
02.10.2013, 09:48  [ТС] #5
ЕдинИзм.Наименование=ЕдинИзмКлас.Наименование; моленько не подходит так(( он затерает данные на пустые а мне нужно на оборот))
0
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
02.10.2013, 10:17 #6
Цитата Сообщение от SpiritAT Посмотреть сообщение
ЕдинИзм.Наименование=ЕдинИзмКлас.Наименование; моленько не подходит так(( он затерает данные на пустые а мне нужно на оборот))
Желание думать совсем отсутствует?
1C
1
2
3
4
5
6
7
8
9
10
Пока ВыборкаДЗ.Следующий() Цикл
    ЕдинИзм=ВыборкаДЗ.Ссылка;
    ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект();
    ЕдинИзмКлас.Наименование=ЕдинИзм.Наименование;
    Попытка
    ЕдинИзмКлас.Записать();
    Исключение
    Предупреждение("Не удалось записать объект """ + Объект + """!
                   |" + ОписаниеОшибки(), 60);
КонецПопытки
0
Algoritmer
155 / 95 / 24
Регистрация: 07.03.2013
Сообщений: 490
Записей в блоге: 1
02.10.2013, 10:22 #7
Цитата Сообщение от SpiritAT Посмотреть сообщение
ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору; ЕдинИзмКлас=ЕдинИзм.Скопировать();
возможно вот так:
ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект();
ЕдинИзмКлас=ЕдинИзм.Скопировать();
0
SpiritAT
3 / 3 / 3
Регистрация: 02.09.2011
Сообщений: 107
02.10.2013, 10:29  [ТС] #8
Ты не поверишь я пробовал вот так ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект(); и он выкидывает ошибку {Форма.Форма.Форма(20)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект();
по причине:
Элемент не выбран!
так как он наткнулся на пустоту или отсутствие какого либо элемента. я как раз пытаюсь заменить эту пустоту на данные из столбца ЕдинИзм=ВыборкаДЗ.Ссылка;

Добавлено через 1 минуту
у меня это поле пустое ЕдиницаПоКлассификатору мне его надо заполнить

Добавлено через 30 секунд
и ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект () не прокатывает из за этого
0
Algoritmer
155 / 95 / 24
Регистрация: 07.03.2013
Сообщений: 490
Записей в блоге: 1
02.10.2013, 10:32 #9
1C
1
2
3
4
Если не ВыборкаДЗ.ЕдиницаПоКлассификатору.Пустая() тогда
   ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект ();
 // и все остальное тоже здесь
конецесли;
0
SpiritAT
3 / 3 / 3
Регистрация: 02.09.2011
Сообщений: 107
02.10.2013, 10:45  [ТС] #10
Цитата Сообщение от Algoritmer Посмотреть сообщение
1C
1
2
3
4
Если не ВыборкаДЗ.ЕдиницаПоКлассификатору.Пустая() тогда
   ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект ();
 // и все остальное тоже здесь
конецесли;
да но если я правельно понимаю условие когда он доходит до пустого значения он его минует дальше верно. А мне надо его заменять на значение из ЕдинИзм
0
Algoritmer
155 / 95 / 24
Регистрация: 07.03.2013
Сообщений: 490
Записей в блоге: 1
02.10.2013, 11:04 #11
Сложно понять, что ты именно хочешь. Но предположу, что у тебя есть ЕдиницыИзмерения и для них нужно проставить классификаторы
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ     
        |   ЕдиницыИзмерения.Наименование,
        |   ЕдиницыИзмерения.Ссылка
        |ИЗ
        |   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения";
 
    Результат = Запрос.Выполнить();
 
    ВыборкаДЗ = Результат.Выбрать();
 
    Пока ВыборкаДЗ.Следующий() Цикл
    ЕдинИзм=ВыборкаДЗ.Ссылка.ПолучитьОбъект();
    если ЕдинИзм.ЕдиницаПоКлассификатору.Пустая() тогда
          //проверим есть ли такая в справочнике чтоб не плодить дубликаты
      ЕдинИзмКласСсыл=Справочники.ЕдиницыИзмеренияПоКлассификатору.НайтиПоНаименованию(ЕдинИзм.Наименование); 
      если ЕдинИзмКласСсыл.Пустая() тогда
           ЕдинИзмКлас=справочники.ЕдиницыИзмерения.СоздатьЭлемент();
          иначе
           ЕдинИзм.ЕдиницаПоКлассификатору=ЕдинИзмКласСсыл;
       ЕдинИзм.Записать();
           Продолжить;  
          конецесли;
 
    иначе
          ЕдинИзмКлас=ЕдинИзм.ЕдиницаПоКлассификатору.ПолучитьОбъект();
    конецесли;    
    ЕдинИзмКлас.Наименование=ЕдинИзм.Наименование;
    ЕдинИзмКлас.Записать();
    ЕдинИзм.ЕдиницаПоКлассификатору=ЕдинИзмКлас.ссылка; //или ссылка() точно не помню
    Попытка
        ЕдинИзм.Записать();
    Исключение
     Предупреждение("Не удалось записать объект """ + Объект + """!
                   |" + ОписаниеОшибки(), 60);
    КонецПопытки
Добавлено через 30 секунд
Писал в блокноте. Возможны опечатки
0
SpiritAT
3 / 3 / 3
Регистрация: 02.09.2011
Сообщений: 107
02.10.2013, 11:54  [ТС] #12
ВЕрно

Добавлено через 12 секунд
Это и нада сделать
0
Algoritmer
155 / 95 / 24
Регистрация: 07.03.2013
Сообщений: 490
Записей в блоге: 1
02.10.2013, 12:33 #13
Цитата Сообщение от SpiritAT Посмотреть сообщение
ВЕрно

Добавлено через 12 секунд
Это и нада сделать
Мой код Вам помог?
0
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
02.10.2013, 12:46 #14
Algoritmer, Вы бы не давали глупых советов:
Цитата Сообщение от Algoritmer Посмотреть сообщение
ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект();
ЕдинИзмКлас=ЕдинИзм.Скопировать();
Во второй строчке переменная ЕдинИзмКлас вместо типа СправочникОбъект.КлассификаторЕдиницИзмерения, становится СправочникОбъект.ЕдиницыИзмерения. И Вы задваиваете единицу измерения номенклатуры.
1
Algoritmer
155 / 95 / 24
Регистрация: 07.03.2013
Сообщений: 490
Записей в блоге: 1
02.10.2013, 13:10 #15
Fenomen, строка "ЕдинИзмКлас=ЕдинИзм.Скопировать()" была у автора темы. Я не пользуюсь ф-ей скопировать() вот и подумал, что происходит то, что нужно.
Нужно так: ЕдинИзмКлас.Заполнить(ЕдинИзм);
или так: ЕдинИзмКлас.(имя поля)=ЕдинИзм.(имя поля);

Добавлено через 46 секунд
Цитата Сообщение от Fenomen Посмотреть сообщение
Вы бы не давали глупых советов
Из-за одной ошибки совет не становится глупым. В целом, приведенный мной подход правильный.

Добавлено через 20 секунд
Цитата Сообщение от Fenomen Посмотреть сообщение
И Вы задваиваете единицу измерения номенклатуры
Обоснуйте
0
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
02.10.2013, 13:58 #16
Цитата Сообщение от Algoritmer Посмотреть сообщение
Обоснуйте
Что обосновывать? Вы своим предложением попробовать вот так:
1C
1
2
ЕдинИзмКлас=ВыборкаДЗ.ЕдиницаПоКлассификатору.ПолучитьОбъект (); 
ЕдинИзмКлас=ЕдинИзм.Скопировать();
Задваиваете единицу измерения. Почему я уже описал выше.
0
SpiritAT
3 / 3 / 3
Регистрация: 02.09.2011
Сообщений: 107
02.10.2013, 15:11  [ТС] #17
Цитата Сообщение от Algoritmer Посмотреть сообщение
Мой код Вам помог?
Нет не помог((

Добавлено через 40 минут
Подскажите почему вы пишете ЕдинИзмКлас.Наименование=ЕдинИзм.Наименование; у ЕдинИзмКлас нет поля Наименование. ЕдиницаПоКлассификатору мне нужно заполнить это поле из Наименование
0
Algoritmer
155 / 95 / 24
Регистрация: 07.03.2013
Сообщений: 490
Записей в блоге: 1
02.10.2013, 15:21 #18
Fenomen, Вы, вижу, то что после этого я писал не читали. Первое сообщение ошибочное в теме нашли и за него зацепились. А то что после этого диалог в теме продолжался Вы как бы не заметили. В коде, к-рый я привел в сообщении 11 функции скопировать() нет вообще и там ничего не задваивается

Добавлено через 2 минуты
Цитата Сообщение от SpiritAT Посмотреть сообщение
Нет не помог((

Добавлено через 40 минут
Подскажите почему вы пишете ЕдинИзмКлас.Наименование=ЕдинИзм.Наименование; у ЕдинИзмКлас нет поля Наименование. ЕдиницаПоКлассификатору мне нужно заполнить это поле из Наименование
Откуда я знаю, что есть у вашего ЕдинИзмКлас. Вы ни конфигурацию не указали, ни перечня полей объектов не привели. Задавать вопросы, это тоже искусство. Если хотите чтоб Вам помогли - овладейте им.
1
SpiritAT
3 / 3 / 3
Регистрация: 02.09.2011
Сообщений: 107
02.10.2013, 15:31  [ТС] #19
Не ругайтесь. Конфигурация 8,2 УПП перечень полей в ЕдиницыИзмерения= ЕдиницаПоКлассификатору которое нужно заполнить из ЕдиницыИзмерения=Наименование

Добавлено через 1 минуту
другие поля нам не нужны
0
Algoritmer
155 / 95 / 24
Регистрация: 07.03.2013
Сообщений: 490
Записей в блоге: 1
02.10.2013, 16:14 #20
SpiritAT, вот так всё работает. Писал в УТП, но думаю отличий нет:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Перем ЕдинПоКлассоб;
    Запрос=Новый Запрос("ВЫБРАТЬ
                        |   ЕдиницыИзмерения.Ссылка КАК ЕдиницаИзмерения,
                        |   ЕдиницыИзмерения.Наименование КАК НаименованиеЕИ,
                        |   ЕдиницыИзмерения.ЕдиницаПоКлассификатору
                        |ИЗ
                        |   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения");
    Выборка=Запрос.Выполнить().Выбрать();
    пока Выборка.Следующий() Цикл 
        если СокрЛП(Выборка.НаименованиеЕИ)=СокрЛП(Выборка.ЕдиницаПоКлассификатору.Наименование) Тогда 
            Продолжить;
        КонецЕсли;  
        ЕИОбъект=Выборка.ЕдиницаИзмерения.ПолучитьОбъект();
        //Если Выборка.ЕдиницаПоКлассификатору.пустая() тогда
        ЕдПоКлСсылка=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(Выборка.НаименованиеЕИ);
        если ЕдПоКлСсылка.Пустая() Тогда 
            ЕдинПоКлассоб=Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();
            ЕдинПоКлассоб.Наименование=Выборка.НаименованиеЕИ;
            ЕдинПоКлассоб.НаименованиеПолное=Выборка.НаименованиеЕИ;
            ЕдинПоКлассоб.Записать();               
            ЕИОбъект.ЕдиницаПоКлассификатору=ЕдинПоКлассоб.Ссылка;
        Иначе 
            ЕИОбъект.ЕдиницаПоКлассификатору=ЕдПоКлСсылка;
        КонецЕсли;
        ЕИОбъект.Записать();
        //Иначе 
        //  ЕдинПоКлассоб=Выборка.ЕдиницаПоКлассификатору.ПолучитьОбъект();
        //  ЕдинПоКлассоб.Наименование=Выборка.НаименованиеЕИ;
        //  ЕдинПоКлассоб.НаименованиеПолное=Выборка.НаименованиеЕИ;
        //  ЕдинПоКлассоб.Записать();
        //КонецЕсли;    
    КонецЦикла;
Добавлено через 4 минуты
Если расскомментировать закомментированные строки, то существующие единицы в классификаторе, на которые ссылаются ЕдиницыИзмерения будут перетираться. Думаю Вам это не нужно. Оставьте их зелёненькими
1
02.10.2013, 16:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2013, 16:14
Привет! Вот еще темы с решениями:

Как перенести элемент справочника в другую группу программно
Необходимо при проведении приказа на отчисление, переносить студента в папку...

Как понять Районы.Ссылка
Как понять Районы.Ссылка

Добавить в справочник строку из другого справочника
Здравствуйте. Есть Справочник1 и Справочник2, созданы копированием один...

Програмно вызвать справочник.форму списка на опр эл справочника
В 8.1 как сделать по кнопке открытие формы списка спозиционированном на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru