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

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

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

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