Необходима помощь в создании документа на основании (по кнопке с формы другого документа).

1. Pilot741 21.06.18 08:50 Сейчас в теме
Конфигурация на платформе 77

Необходима помощь в создании документа на основании (по кнопке с формы другого документа).

Ситуация такая:

Есть документ 1 (док1). На форме этого документа расположена кнопка «создать Счет». По нажатии кнопки «создать счет» открывается форма нового документа 2 (док2), с заполненными реквизитами из ДОК1 (основание).
Так же Док2 может создаваться без основания (док1).

Необходимо сделать так, чтобы при создании Док2 на основании Док1 (по кнопке из формы Док1), создавался новый документ Док2 или открывался уже созданный Док2, если такой есть.

Сейчас у меня (по кнопке из формы Док1) создается сколько угодно Док2.

Как выполнить эту проверку, чтобы не создавалось куча дубликатов введенного на основании документа Док2 (основание Док1)?


1.В Модуле Док1 на кнопке процедура - Процедура ОткрытьСчет()

Процедура ОткрытьСчет()
  ОткрытьФорму("Документ.Счет",,ТекущийДокумент());
  КонецПроцедуры;


2.В Модуле Док2:

Процедура ВводНаОсновании(ДокОсн)
	глЗаполнитьШапкуНаОсн(Контекст, ДокОсн);
	ДокументОснование = ДокОсн;
	ДатаДок= ДокОсн.ДатаДок;
	контрагент = ДокОсн.Контрагент;
	Договор = ДокОсн.Договор;
	
            ДокОсн.ВыбратьСтроки();
	Пока ДокОсн.ПолучитьСтроку() = 1 Цикл
		НоваяСтрока();
		Докт = ДокументОснование;
		Товар = ДокОсн.Номенклатура;
		Количество = ДокОсн.Количество;
		ЕдиницаИзмерения = ДокОсн.Товар.ЕдиницаИзмерения;
		ЦенаБезНДС = ДокОсн.Цена;
		СуммаБезНДС = ДокОсн.Сумма;
	КонецЦикла;
			
	НомерКПП = ДокОсн.НомерКПП;

КонецПроцедуры // ВводНаОсновании()
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. пользователь 21.06.18 11:31
Сообщение было скрыто модератором.
...
3. пользователь 21.06.18 11:32
Сообщение было скрыто модератором.
...
4. корум 287 21.06.18 11:37 Сейчас в теме
6. Pilot741 21.06.18 13:28 Сейчас в теме
(4) как мне это должно помочь? прочитала, ничего полезного по вопросу не обнаружила.
7. корум 287 21.06.18 14:41 Сейчас в теме
(6) а вообще что-то непонятное в постановке задачи.
Есть уже записанный документ Док1, в нем кнопка.
По кнопке проверяется
1. флаг. Если взведен, просим переоткрыть док1 и работать дальше.
если нет - смотрим по структуре подчиненности, есть ли уже созданный док2.

Есть док2 в структуре, открываем док2.
Если в структуре ничего нет:
-заполняем док2, !! записываем его.
-взводим флаг на форме док1.
8. Pilot741 21.06.18 15:24 Сейчас в теме
(7) мне необходимо реализовать механизм как у документов Реализация продукции - Счет фактура. (видела в конфигурации ПУБ)

в док-те реализация есть кнопка Создать Счет-фактуру.
9. корум 287 21.06.18 15:36 Сейчас в теме
(8)
так откройте ПУБ, посмотрите в обработчике кнопки, копипаст в помощь.
12. Pilot741 22.06.18 08:35 Сейчас в теме
(9) не хотела лезть в гл.модуль.
думала, может можно обойтись документом.
14. корум 287 22.06.18 09:30 Сейчас в теме
(12) можно всё в документе написать, не трогая глобальник.
11. kudlach 12 21.06.18 15:49 Сейчас в теме
(8) ну, так сама же и нашла ответ. Теперь просто сделай.
5. корум 287 21.06.18 11:37 Сейчас в теме
что за странные косяки с премодерацией??
10. kudlach 12 21.06.18 15:48 Сейчас в теме
Посмотри в типовых конфигурациях как это делается со Счет-фактурой в форме документа реализации.
Это именно то что тебе нужно.
13. Pilot741 22.06.18 08:35 Сейчас в теме
(10) не хотела лезть в гл.модуль.
думала, может можно обойтись документом.
15. Mar12 22.06.18 09:38 Сейчас в теме
Отработка кнопки - на проведенный документ выдачи ссуды делает рко, если сделан по кнопке вываливается список доков рко
если поможет - на здоровье.
Перем ТекЗнач; 
	Если Проведен()=0 Тогда
		Предупреждение("Проведите документ ссуды! РКО не сформирован!");
		Возврат;
	КонецЕсли;
ТекДок=ТекущийДокумент();
    Спис=СоздатьОбъект("СписокЗначений");
	ДокПодч=СоздатьОбъект("Документ");
	ДокПодч.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент());
	Пока ДокПодч.ПолучитьДокумент()=1 Цикл
		Если ДокПодч.Вид()="РасходныйОрдер" Тогда
			РКО=ДокПодч.ТекущийДокумент();
			Спис.ДобавитьЗначение(ДокПодч.ТекущийДокумент(),""+РКО.НомерДок+" от "+РКО.ДатаДок);
		КонецЕсли;	
	КонецЦикла;
	Если Спис.РазмерСписка()>0 Тогда
		Если Спис.РазмерСписка()=1 Тогда
			ТекЗнач=Спис.ПолучитьЗначение(1,);
			ОткрытьФорму(ТекЗнач,,);
		Иначе
			Если Спис.ВыбратьЗначение(ТекЗнач,,,,1)=1 Тогда
				ОткрытьФорму(ТекЗнач,,);	
			КонецЕсли;
		КонецЕсли;
	Иначе
		ОткрытьФорму("Документ.РасходныйОрдер",,ТекДок);
	КонецЕсли;	
Показать


ну и если счет нужен по любому - добавить проверку на наличие дока при закрытии формы.
16. пользователь 04.07.18 23:09
Сообщение было скрыто модератором.
...
17. dvk09 2 05.07.18 03:00 Сейчас в теме
Как то так:
Процедура ОткрытьСчет()
	Документы = СоздатьОбъект("Документ");
	Документы.ВыбратьПодчиненныеДокументы( , , ТекущийДокумент());
	Пока Документы.ПолучитьДокумент() = 1 Цикл
		Если Документы.Вид() = "Счет" Тогда
			Ответ = Вопрос("Счет уже был введен ранее. Открыть его?","Да+Нет",60);
			Если Ответ = "Да" Тогда
				ОткрытьФорму(Документы.ТекущийДокумент());
			КонецЕсли;
			Возврат;
		КонецЕсли;
	КонецЦикла;
	ОткрытьФорму("Документ.Счет",,ТекущийДокумент());
КонецПроцедуры;

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот