|
Как лучше (опять УФ) заполнить не указанный реквизит справочника | ☑ | ||
---|---|---|---|---|
0
e2e4
30.06.15
✎
21:02
|
Опять головой ап стенку...Нелегко сразу перейти к УФ!
Еще одна стандартная задача: если при записи контрагента не заполнен реквизит ОсновнойДоговор - создать новый договор (если у текущего к-та вообще нет договоров) и присвоить его этому реквизиту. &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если НЕ ЗначениеЗаполнено(ТекущийОбъект.ОсновнойДоговор) Тогда ВыборкаДоговоров = Справочники.ДоговорыКонтрагентов.Выбрать(, ТекущийОбъект.Ссылка); Если ВыборкаДоговоров.Следующий() Тогда НайденныйДоговор = ВыборкаДоговоров.Ссылка; Иначе НайденныйДоговорОбъект = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); НайденныйДоговорОбъект.Наименование = "Основной договор"; НайденныйДоговорОбъект.Владелец = ТекущийОбъект.Ссылка; НайденныйДоговорОбъект.Записать(); НайденныйДоговор = НайденныйДоговорОбъект.Ссылка; КонецЕсли; ТекущийОбъект.ОсновнойДоговор = НайденныйДоговор; КонецЕсли; КонецПроцедуры Почти:) работает - в реквизите появляется "Основной договор", но после закрытия и повторного открытия он снова пустой. В типовых погляжу...но там еще много чего, что перегружает восприятие - а хочется какого-то четкого осознания, почему вышеприведенный вариант не фунциклирует. И - может, тут будет кошернее замутить ПередЗаписью в модуле МЕНЕДЖЕРА справочника?? |
|||
1
фобка
30.06.15
✎
21:06
|
ПередЗаписью() в модуле объекта
|
|||
2
RomanYS
30.06.15
✎
21:06
|
кошернее в обработке проверки заполнения модуля объекта (или подписка) ИМХО
Не работает потому что, отрабатывает после записи |
|||
3
e2e4
30.06.15
✎
21:23
|
(1) (2) похоже, но тут грабли с еще не записанным контрагентом (когда-то на просторах инета читал про такое). Вылетает: Значение поля "Владелец" не заполнено или заполнено неверно.
Чем лечить? |
|||
4
RomanYS
30.06.15
✎
21:27
|
(3) Что-то ты мутишь: как ты создал договор, если контрагент еще не записан?
Скрины давай и точные тексты ошибок |
|||
5
фобка
30.06.15
✎
21:29
|
(3) ага, установитьссылку() или типа того есть метод
|
|||
6
RomanYS
30.06.15
✎
21:33
|
*(4) я туплю, ты же контрагента записываешь.
Тогда да, УстановитьСсылкуНового |
|||
7
e2e4
30.06.15
✎
21:53
|
(6) таак... вот тут по этому поводу вроде внятно:
http://soft.crimea.com/public/306974/ Но я правильно понимаю, что ПередЗаписью тут не подходит? Никак не укладывается в голове: если мы уже начали записывать нового контрагента интерактивно - мы же не сможем для него УстановитьСсылкуНового? Только для нового договора сможем создать ссылку - а весь затык как раз в том, чтобы задать Владельца договору. ...Спать пора, в общем............ |
|||
8
Garykom
гуру
30.06.15
✎
22:04
|
ТС совет почитать про HTML, HTTP, CSS, AJAX, JS и прочие PHP...
сразу станет понятнее что такое в 1С клиент-сервер и УФ, понятно будет что можно, а что нельзя и почему |
|||
9
Garykom
гуру
30.06.15
✎
22:08
|
(8)+ к примеру можно ли в любом строковом реквизите любого объекта (справочника или документа) использовать к примеру
Наименование = "Иванов"+Символ(0)+"Петров": 1) в обычных формах; 2) в управляемых формах? |
|||
10
RomanYS
30.06.15
✎
22:15
|
(7) всё там правильно, ровно твой случай.
Перед записью проверяй, что объект новый, и устанавливай ссылку нового для Контрагента. Договор ты запишешь и ссылка уже будет. Единственно есть(может быть) риск, что потом (например, при записи) ты откажешься от записи контрагента и договор "зависнет" с битым родителем |
|||
11
Stim
30.06.15
✎
22:20
|
а почему нельзя записать
ОсновнойДоговор = НайденныйДоговор; вместо ТекущийОбъект.ОсновнойДоговор = НайденныйДоговор; |
|||
12
RomanYS
30.06.15
✎
22:25
|
+(10) можно сделать наоборот: перед записью контрагента в договор ставить ссылку на не созданный договор. А при записи проверять существование договора и при отсутствии - создавать (владелец на этот момент уже записан)
|
|||
13
Garykom
гуру
30.06.15
✎
22:25
|
(0) простейшим образом задачка решается через 2-ю запись контрагента или иначе предварительную запись
и да лучше проверку на записанность (новый) контрагента понятно делать |
|||
14
e2e4
30.06.15
✎
22:28
|
(11) дык сервер не знает, кто такой "ОсновнойДоговор"
(13) да, с двумя записями вариант находил - но хочется совершенства)) (12) спасибо, буду рыть. Всем спокойной ночи!) |
|||
15
e2e4
30.06.15
✎
22:31
|
и, да - в типовой 3.0 похоже такой плюшки нет:) там надо ручками создать договор - и он привяжется к к-ту.
В общем-то, и нормально)) мне кажется, в моей формулировке задача имеет чисто академический интерес - практически же, такой финт требуется как в ситуациях у товарища по ссылке в (7), а не при интерактивном создании к-та...... |
|||
16
Stim
30.06.15
✎
22:54
|
(14) а причем здесь сервер? Заполняйте реквизит в модуле объекта
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |