Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перенос выбраного элемента справочника
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Vanquish
Есть Обработка ПереносЭлемента. На форму добавлен реквизит Элемент (тип СправочникСсылка.Контрагенты), и реквизит Группа(тип СправочникСсылка.Контрагенты).
Необходимо при выборе элемента справочника на поле реквизита, по нажатию кнопки, перенести выбраный элемент в выбраную групу справочника из второго поля реквизита.

Вот код, к сожалению, не отрабатывает, и не сильно понятно почему. Просьба откликнутся.


Процедура КнопкаВыполнитьНажатие(Кнопка)
предупреждение("При Выполнении нажатия");
СтандартнаяОбработка = Ложь;

Форма2 = Обработки.а.ПолучитьФорму(ЭтаФорма.ЭлементыФормы.Элемент.Данные);

Форма1 = Обработки.а.ПолучитьФорму(фФорма.ЭлементыФормы.Группа.Данные);
Выборка = Справочники.Контрагенты.Выбрать();
     Пока Выборка.Следующий() Цикл;
      Если (НЕ Выборка.ЭтоГруппа) И (НЕ ЗначениеЗаполнено(Выборка.Родитель)) Тогда        
          форма2= Выборка.ПолучитьОбъект();
          Форма2.Родитель=Форма1;
Форма2.Записать();

    КонецЕсли;
    КонецЦикла;

КонецПроцедуры
Vofka
А зачем форму записывать? Нужно записывать элемент с типом "справочник.контрагенты"
Vanquish
Цитата(Vofka @ 21.03.11, 13:36) необходимо зарегистрироваться для просмотра ссылки
А зачем форму записывать? Нужно записывать элемент с типом "справочник.контрагенты"


а ,если, не затруднит, вы не могли бы навесьти пример.
Vofka
Родитель = ЭлементыФормы.Родитель // здесь выбрана группа
Выборка = Справочники.Контрагенты.Выбрать()
Пока Выборка.Следущий() Цикл
   Объект = Выборка .ПолучитьОбъект();
   Объект.Родитель = Родитель;
   Объект.Записать();
КонецЦикла;


На работоспособность не проверял, писал сразу сюда.
Ziam
Я правильно задачу понял?
Котнтрагенту на форме (тип СправочникСсылка.Контрагенты) нужно поменять родителя на Группа(тип СправочникСсылка.Контрагенты)?
Vanquish
Цитата(Ziam @ 21.03.11, 13:49) необходимо зарегистрироваться для просмотра ссылки
Я правильно задачу понял?
Котнтрагенту на форме (тип СправочникСсылка.Контрагенты) нужно поменять родителя на Группа(тип СправочникСсылка.Контрагенты)?

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

но в целом правильно, я перечитал
Vanquish
я не много переработал, но всё равно пока не раблотает (

Поле2 = ЭлементыФормы.Группа.Значение.Родитель; // здесь выбрана группа
Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл;
    Если (НЕ Выборка.ЭтоГруппа) И (НЕ ЗначениеЗаполнено(Выборка.Родитель)) Тогда;    
   Объект = Выборка .ПолучитьОбъект();
   Объект.Родитель = Поле2;
   Объект.Записать();
    КонецЕсли;    
    КонецЦикла;
Ziam
Я не понимаю зачем вам цикл?
Вот моя обработка.
На форме создал два поля ввода типа СправочникСсылка.Контрагенты: Контрагент, Группа.
В Свойствах полей ввода указали свойство ВыборГруппИЭлементов в то, что надо, чтоб не напутали (защита от дурака).
Обработчик нажатия на кнопку такой:
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Если Контрагент.Родитель <> Группа Тогда
        КонтрагентОбъект = Контрагент.ПолучитьОбъект();
        КонтрагентОбъект.Родитель = Группа;
        КонтрагентОбъект.Записать();
    КонецЕсли;
КонецПроцедуры


З.Ы. Проверку на заполнение реквизитов, тоже можете добавить.
Ziam
Это ж можно и в форме элемента справочника сделать.
logist
Цитата(Vanquish @ 21.03.11, 13:13) необходимо зарегистрироваться для просмотра ссылки
Поле2 = ЭлементыФормы.Группа.Значение.Родитель; // здесь выбрана группа

Это только мне кажется, что данный код выбирает родителя родителя?
Ziam
Вроде ЭлементыФормы.Группа.Значение.Родитель = Группа.Родитель в пределах модуля формы. Хотя не проверял.
З.Ы. Это не код, а предположение ))) Выделять не буду.
logist
Цитата(Ziam @ 21.03.11, 13:30) необходимо зарегистрироваться для просмотра ссылки
Вроде ЭлементыФормы.Группа.Значение.Родитель = Группа.Родитель в пределах модуля формы. Хотя не проверял.

Ну я тогда прав? - код выбирает родителя группы а не саму группу, а у группы возможно нет родителя, поэтому ничего не происходит.
Vanquish
Цитата(logist @ 21.03.11, 14:46) необходимо зарегистрироваться для просмотра ссылки
Ну я тогда прав? - код выбирает родителя группы а не саму группу, а у группы возможно нет родителя, поэтому ничего не происходит.

а как, тогда, будет правильно написать выбор группы, напишите пожалуйста.
Ziam
Мой вариант пробуйте. Проверял на УТП 8.2
Vanquish
Спасибо, большое, заработал )
Vofka
Vanquish, необходимо зарегистрироваться для просмотра ссылки
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.