Вход | Регистрация

1С:Предприятие ::

Метки: 

ОбработкаЗаполнения(<ДанныеЗаполнения>)

Я
   Mikhail Volkov
 
01.04.18 - 18:05
В документе есть реквизит справочник. В структуру <ДанныеЗаполнения> этого справочника можно документ добавить, как?
 
  Рекламное место пустует
   RomanYS
 
1 - 01.04.18 - 19:30
Переведи.
   Darych
 
2 - 01.04.18 - 19:46
(1)+1 нажрался-спи
   Zhuravlik
 
3 - 02.04.18 - 01:48
ОбъектСправочника.Заполнить(ДокументИлиСтруктураСДаннымиИлиЧтоУгодно);
   Mikhail Volkov
 
4 - 02.04.18 - 04:54
(3) Но где ДокументИлиСтруктураСДаннымиИлиЧтоУгодно указать? Из документа открывается форма списка справочника с заданными параметрами отбора по документу. В форме списка пользователь не нашел ничего подходящего, создает новый элемент. В этот момент хотелось задать свои <ДанныеЗаполнения>, точнее поправить их. Например, Владелец нового элемента справочника присутствует в <ДанныеЗаполнения>, но если он один. А если задан " в списке", то отсутствует в <ДанныеЗаполнения>.
   Mankubus
 
5 - 02.04.18 - 06:15
(4) в событии ПередНачаломДобавления
   Mikhail Volkov
 
6 - 02.04.18 - 15:58
(5) Спс, в спСписокПередНачаломДобавления() не учитывался случай, когда отбор задан списком. Добавил:
//если отбор установлен, будем заполнять реквизиты

Для Каждого ЭлементОтбора Из СписокСправочника.Отбор Цикл
    Если (Не обЗначениеНеЗаполнено(ЭлементОтбора.Значение)) И (ЭлементОтбора.Использование) Тогда
        Если ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке Тогда    //+МВ 02.04.2018 Если отбор задан списком, то преложим выбрать конкретное заначение

            ЗначениеИзСписка = ЭлементОтбора.Значение.ВыбратьЭлемент("Выберите из списка значение '" + ?(ПустаяСтрока(ОбъектМетаданных.Реквизиты.Найти(ЭлементОтбора.Имя)), ЭлементОтбора.Имя, ОбъектМетаданных.Реквизиты.Найти(ЭлементОтбора.Имя)) + "'");
            Если ЗначениеИзСписка <> Неопределено Тогда
                ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
                ЭлементОтбора.Значение = ЗначениеИзСписка.Значение;
            КонецЕсли;
        КонецЕсли;    //-МВ

        ИмяРеквизита = ЭлементОтбора.Имя;
        Если Найти("Код|Наименование|Владелец",ИмяРеквизита) > 0 Тогда
            НовыйЭлемент[ИмяРеквизита] = ЭлементОтбора.Значение;
            НовыйЭлемент.ОбработкаРеквизита(ИмяРеквизита);  
        Иначе
            Реквизит = ОбъектМетаданных.Реквизиты.Найти(ИмяРеквизита);
        КонецЕсли;
        Если Реквизит = Неопределено Тогда
            Продолжить;
        КонецЕсли;

По сути заменяю в отборе ВидСравнения.ВСписке на Равно, в форме списка справочника, и данные отбора переносятся в создаваемый элемент. Но полноты счастья нужно еще некоторые данные самого документа, которые отсутствуют в отборе.
Как перенести ссылку документа, из которого открывается справочник, в создаваемый элемент этого справочника?
   Вафель
 
7 - 02.04.18 - 16:08
ВладелецФормы
   Mikhail Volkov
 
8 - 02.04.18 - 17:51
(7) Открываю из списка справочника ЭтаФорма.ВладелецФормы - табличное поле, а из документа - ничего!?
   Mikhail Volkov
 
9 - 03.04.18 - 07:43
+ Открываю справочник из документа ЭтаФорма.ВладелецФормы = Неопределено! Как получить ссылку документа, из которого он открыт?
   Mikhail Volkov
 
10 - 03.04.18 - 07:55
(7) ВладелецФормы - это вроде как для подчиненных справочников?
Из справки: Если у формы есть владелец, то в свойстве ЗакрыватьПриЗакрытииВладельца устанавливается необходимость закрытия данной формы при закрытии формы-владельца.
 
  Рекламное место пустует
   Mikhail Volkov
 
11 - 03.04.18 - 11:21
Нарыл Трюки 1С http://catalog.mista.ru/public/199307/ там показан способ передачи способ передачи ссылки документа, но только в форму выбора (списка) справочника:
- в форме документа:
Процедура ДоверенностьНачалоВыбора(Элемент, СтандартнаяОбработка)
    Элемент.Подсказка = Элемент.Подсказка + "$Link$" + ЗначениеВСтрокуВнутр(Ссылка);
КонецПроцедуры

- в форме списка справочника:
Процедура ПриОткрытии()
    Если НЕ спСписокПриОткрытии(ЭтаФорма,,глСтруктураОтбора) Тогда Возврат КонецЕсли;
    //+МВ 02.04.2018 Автомобиль по ссылке заказ-наряда

    ЭлементУправления = ЭтаФорма.ВладелецФормы; 
    ТекстПодсказки = ЭлементУправления.Подсказка; 
    ПозицияСсылки = Найти(ТекстПодсказки, "$Link$"); 
    Если ПозицияСсылки > 0 Тогда 
        ЗаказНаряд = ЗначениеИзСтрокиВнутр(Сред(ТекстПодсказки, ПозицияСсылки + 6)); 
        Автомобиль = ЗаказНаряд.Автомобиль; 
        ЭлементУправления.Подсказка = Лев(ТекстПодсказки, ПозицияСсылки - 1); 
    КонецЕсли;//-МВ

    СправочникСписок.Порядок.Установить("ДатаВыдачи Возр");
    ПоказыватьУстаревшие = Ложь;
    ПоказыватьУстаревшиеПриИзменении(ЭлементыФормы.ПоказыватьУстаревшие);
КонецПроцедуры// ПриОткрытии()


А в форме самого справочника этот способ не работает... Почему?
   Mikhail Volkov
 
12 - 03.04.18 - 16:46
Напрямую в форму справочника не передать ссылку документа, только через форму списка при создании нового элемента справочника?


Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует