Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 19:01

Программное изменение родителя элемента справочника

Автор Golickoff, 24 мар 2015, 16:28

0 Пользователей и 1 гость просматривают эту тему.

cska-fanat-kz

ваша настырность не может не радовать ;)
тем не менее настоятельно рекомендую отбросив гордыню куда подальше проанализировать код, который я вам привел.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Golickoff

cska-fanat-kz, не знаю что бы я без вас делал. Ещё раз огромное спасибо, всё работает. Завтра с утра буду тестировать.
Процедура КнопкаВыполнитьНажатие(Кнопка)
Если Номенклатура.ЭтоГруппа = Ложь Тогда
Объект = Номенклатура.ПолучитьОбъект();
    Если ЭтаФорма.ЭлементыФормы.МераИзмерения.Значение = Справочники.МерыИзмерения.НайтиПоНаименованию("Штуки") Тогда
         Объект.МераИзмерения = Справочники.МерыИзмерения.НайтиПоНаименованию("Штуки");
         ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");
    Иначе
      Объект.МераИзмерения = Справочники.МерыИзмерения.НайтиПоНаименованию("Вес");
      ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("кг");
    КонецЕсли;
Объект.БазоваяЕдиницаИзмерения = ЕдиницаИзмерения;
БазоваяЕдиницаСсылка = Объект.БазоваяЕдиницаИзмерения;
    БазоваяЕдиницаОбъект = БазоваяЕдиницаСсылка.ПолучитьОбъект();
    БазоваяЕдиницаОбъект.Владелец = Номенклатура.Ссылка;
    БазоваяЕдиницаОбъект.Записать();
    Объект.Записать();
Иначе
Выборка = Справочники.Номенклатура.Выбрать(Номенклатура);
Пока Выборка.Следующий() Цикл
НомОбъект = Выборка.Ссылка.ПолучитьОбъект();
    Если ЕдиницыИзмерения = Справочники.МерыИзмерения.НайтиПоНаименованию("Штуки") Тогда
        НомОбъект.МераИзмерения = Справочники.МерыИзмерения.НайтиПоНаименованию("Штуки");
        НаименованиеЕдИзм = "Штуки";
        ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
    Иначе
        НомОбъект.МераИзмерения = Справочники.МерыИзмерения.НайтиПоНаименованию("Вес");
        НаименованиеЕдИзм = "Вес";
        ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("166");
    КонецЕсли;
   
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЕдиницыИзмерения.Ссылка
        |ИЗ
        |    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
        |ГДЕ
        |    ЕдиницыИзмерения.Владелец = &Номенклатура
        |    И ЕдиницыИзмерения.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору
        |    И ЕдиницыИзмерения.Наименование = &Наименование";
   
    Запрос.УстановитьПараметр("ЕдиницаПоКлассификатору", ЕдиницаПоКлассификатору);
    Запрос.УстановитьПараметр("Наименование", НаименованиеЕдИзм);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
   
    РезультатЗапроса = Запрос.Выполнить();
   
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
        НомОбъект.БазоваяЕдиницаИзмерения = ВыборкаДетальныеЗаписи.Ссылка;
    Иначе   
        НоваяЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
        НоваяЕдиницаИзмерения.Владелец = Выборка.Ссылка;
        НоваяЕдиницаИзмерения.Наименование = НаименованиеЕдИзм;
        НоваяЕдиницаИзмерения.ЕдиницаПоКлассификатору = ЕдиницаПоКлассификатору;
       
        Попытка
       
            НоваяЕдиницаИзмерения.Записать();
       
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;
       
        НомОбъект.БазоваяЕдиницаИзмерения = НоваяЕдиницаИзмерения.Ссылка;
    КонецЕсли;
   
    Попытка
   
        НомОбъект.Записать();
   
    Исключение
        Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

а что изменилось в ветке "тогда"???
снова ВАШ вариант!
который НЕправильный!!
умываю руки.... :trhregerhg:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги: родитель 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск