Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> ПередЗаписью создать элемент подчиненного справочника.          
logist Подменю пользователя
сообщение 15.08.11, 21:28
Сообщение #1

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

В модуле справочника пишу такое: (спр.БлаБла является подчиненным текущему)
Процедура ПередЗаписью()
   Если ЭтоНовый() Тогда
      Спр = Справочники.БлаБла.СоздатьЭлемент();
      Спр.Владелец = Ссылка;
      ...
      Спр.Записать();
   КонецЕсли
КонецПроцедуры

Выдает ошибку что "Владелец" не заполнено или заполнено не верно.
Я так догадываюсь, что ПередЗаписью - Ссылка еще пустая? (пробовал ПриЗаписи, но тогда ЭтоНовый = Ложь).
Как тогда такое можно соорудить - при создании элемента справочника нужно создать еще и элемент подчиненного справочника. Хотя бы ткните пальцем где курить, а то я чето догадываюсь что ответ рядом smile.gif)
Спасибо.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

MATEVI Подменю пользователя
сообщение 15.08.11, 23:04
Сообщение #2

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата
MaxMart пишет:
А ссылку на владельца можно получить только после записи элемента. То есть нужно использовать обработчик события ПриЗаписи, когда контрагент уже записан! Но в нем не получается установить Основное контактное лицо


Оказывается, платформа 8.2 предоставляет средства, позволяющие обойти это препятствие. Основное контактное лицо можно установить "по частям".
СправочникМенеджер имеет метод
ПолучитьСсылку()
Этот метод, примененный без параметров, позволяет сформировать новую уникальную ссылку.

В процедуре "ПередЗаписью" справочника "Контрагенты" вызываем этот метод следующим образом:
БудущаяСсылкаКЛ = Справочники.КонтактныеЛицаКонтрагентов.ПолучитьСсылку();


Так получаем ссылку на будущий элемент справочника "Контактные лица". Раз ссылка получена, можно установить реквизит:
ОсновноеКонтактноеЛицо = БудущаяСсылкаКЛ;


Дальнейший код будет располагаться уже в процедуре "ПриЗаписи", поэтому переменная БудущаяСсылкаКЛ должна быть объявлена как переменная модуля.
В процедуре "ПриЗаписи" создаем новый объект-справочник "Контактные лица" и устанавливаем его реквизиты, в т.ч. владельца, т.к. контрагент уже записан:

НовыйКЛОбъект = Справочники.КонтактныеЛицаКонтрагентов.СоздатьЭлемент(); 
НовыйКЛОбъект.Владелец = ЭтотОбъект.Ссылка;

.......................................... (прочие реквизиты)

А теперь "соединяем две части". Для этого используем метод СправочникОбъекта УстановитьСсылкуНового().
Этот метод "Устанавливает значение для нового (созданного и еще не записанного) объекта, которое будет назначено при записи в качестве ссылки" (синтакс-помощник). Т.е. в качестве параметра нужно передать ту самую ссылку, которая была создана ранее:

НовыйКЛОбъект.УстановитьСсылкуНового(БудущаяСсылкаКЛ);


Теперь объект готов для записи:
НовыйКЛОбъект.Записать();


Следует отметить, что если по каким-то причинам запись не удастся, то будет отменена также и запись контрагента, что особенно приятно.

Наконец, последний штрих. Дело в том, что объект ЭтотОбъект (записываемый контрагент) содержит ссылку на контактное лицо, а объект НовыйКЛОбъект в реквизите Владелец содержит ссылку на ЭтотОбъект. Такие связки не очищаются автоматически после окончания процедуры, поэтому вспомогательный объект надо уничтожить принудительно:

НовыйКЛОбъект = Неопределено;


[необходимо зарегистрироваться для просмотра ссылки]

Сообщение отредактировал MATEVI - 15.08.11, 23:06

Спасибо сказали: kivals, logist,

logist Подменю пользователя
сообщение 15.08.11, 23:29
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

MATEVI, спасибо. Я пошел путем по проще, в ПередЗаписью записал в переменную ЭтоНовый, и в ПриЗаписи ее проверил. Может это и не научно, но .... smile.gif


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 12:18
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!