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

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


 ! 

необходимо зарегистрироваться для просмотра ссылки: 5
 
logist
Цитата(Orion-PS @ 03.05.18, 21:58) необходимо зарегистрироваться для просмотра ссылки
необходимо, чтобы происходило следующее: если документ на основании уже создан, он открывается. Если документ еще не создан, открывается форма для его создания.

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

Цитата(Orion-PS @ 03.05.18, 21:58) необходимо зарегистрироваться для просмотра ссылки
Кстати, по умолчанию, кнопка для создания документа на основании размещается именно в списке основных документов, а не на форме конкретного документа, что было бы логичнее.

Кнопки создания на основании размещаются и в списке и на форме, если у вас не так, значит вы что-то делаете не так.
Orion-PS
Цитата(logist @ 04.05.18, 1:57) необходимо зарегистрироваться для просмотра ссылки
если у вас не так, значит вы что-то делаете не так

Это понятно, иначе я не задавал бы этот вопрос. Хотелось бы понять, что именно не так?

Основная проблема в том, что даже в книжках сведения приводятся по принципу "Два пишем (рассказываем самые общие сведения), три - в уме (об остальном читатель пусть догадывается сам, не догадался - его проблемы).
Например, совершенно очевидно, что основной документ (М) и документ на основании (S) должны быть связаны. То, что указывается в конфигураторе при создании документов M и S на вкладке "Ввод на основании", соответственно, в разделах "Вводится на основании" и "Является основанием для" - этого достаточно для организации необходимых связей или нет? Похоже, что нет.

А формы управляемые, используется 1С 8.3.12.

LOGIST, если у вас есть какой-нибудь реальный пример, в котором реализована вышеназванная возможность, приведите, пожалуйста...
logist
Цитата(Orion-PS @ 04.05.18, 5:52) необходимо зарегистрироваться для просмотра ссылки
этого достаточно для организации необходимых связей или нет? Похоже, что нет.

Нет, не достаточно. "Ввод на основании" это лишь механизм платформы который отображает кнопку и запускает выполнение процедуры ОбработкаЗаполнения. Саму связь вы прописываете самостоятельно, путем добавления необходимых реквизитов.

необходимо зарегистрироваться для просмотра ссылки
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    СуществующееОснование = ФункцияКотораяВернетИмеющийсяДокумент(РеквизитФормыСДокументомОснованием);
    Если Не СуществующееОснование.Пустая() Тогда
        КакойТоОбщийМодуль.ОткрытьИмеющеесяОснование(ЭтаФорма, СуществующееОснование);
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ФункцияКотораяВернетИмеющийсяДокумент(Основание)
    Возврат Документы.ИмяДокументаОснования.НайтиПоРеквизиту("ИмяРеквизитаОснования", Основание);
КонецФункции


#Область КакойТоОбщийМодуль
Процедура ОткрытьИмеющеесяОснование(Форма, СуществующееОснование) Экспорт
    Форма.Закрыть();
    ПоказатьЗначение(,СуществующееОснование);
КонецПроцедуры
#КонецОбласти
хакерок
Orion-PS @ Вчера, 21:58 необходимо зарегистрироваться для просмотра ссылки ,
создайТЕ запрос к базе данных который даст ВАМ ссылку на созданный документ и ВАША задача будет почти решена.

 ! 

необходимо зарегистрироваться для просмотра ссылки: 1
 
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.