Необходима помощь в создании документа на основании (по кнопке с формы другого документа).
Конфигурация на платформе 77
Необходима помощь в создании документа на основании (по кнопке с формы другого документа).
Ситуация такая:
Есть документ 1 (док1). На форме этого документа расположена кнопка «создать Счет». По нажатии кнопки «создать счет» открывается форма нового документа 2 (док2), с заполненными реквизитами из ДОК1 (основание).
Так же Док2 может создаваться без основания (док1).
Необходимо сделать так, чтобы при создании Док2 на основании Док1 (по кнопке из формы Док1), создавался новый документ Док2 или открывался уже созданный Док2, если такой есть.
Сейчас у меня (по кнопке из формы Док1) создается сколько угодно Док2.
Как выполнить эту проверку, чтобы не создавалось куча дубликатов введенного на основании документа Док2 (основание Док1)?
1.В Модуле Док1 на кнопке процедура - Процедура ОткрытьСчет()
2.В Модуле Док2:
Необходима помощь в создании документа на основании (по кнопке с формы другого документа).
Ситуация такая:
Есть документ 1 (док1). На форме этого документа расположена кнопка «создать Счет». По нажатии кнопки «создать счет» открывается форма нового документа 2 (док2), с заполненными реквизитами из ДОК1 (основание).
Так же Док2 может создаваться без основания (док1).
Необходимо сделать так, чтобы при создании Док2 на основании Док1 (по кнопке из формы Док1), создавался новый документ Док2 или открывался уже созданный Док2, если такой есть.
Сейчас у меня (по кнопке из формы Док1) создается сколько угодно Док2.
Как выполнить эту проверку, чтобы не создавалось куча дубликатов введенного на основании документа Док2 (основание Док1)?
1.В Модуле Док1 на кнопке процедура - Процедура ОткрытьСчет()
Процедура ОткрытьСчет()
ОткрытьФорму("Документ.Счет",,ТекущийДокумент());
КонецПроцедуры;
2.В Модуле Док2:
Процедура ВводНаОсновании(ДокОсн)
глЗаполнитьШапкуНаОсн(Контекст, ДокОсн);
ДокументОснование = ДокОсн;
ДатаДок= ДокОсн.ДатаДок;
контрагент = ДокОсн.Контрагент;
Договор = ДокОсн.Договор;
ДокОсн.ВыбратьСтроки();
Пока ДокОсн.ПолучитьСтроку() = 1 Цикл
НоваяСтрока();
Докт = ДокументОснование;
Товар = ДокОсн.Номенклатура;
Количество = ДокОсн.Количество;
ЕдиницаИзмерения = ДокОсн.Товар.ЕдиницаИзмерения;
ЦенаБезНДС = ДокОсн.Цена;
СуммаБезНДС = ДокОсн.Сумма;
КонецЦикла;
НомерКПП = ДокОсн.НомерКПП;
КонецПроцедуры // ВводНаОсновании()
ПоказатьПо теме из базы знаний
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Печатные формы КС-2 и КС-3 в "1С:Бухгалтерия 3.0"
- ЗУП 2.5 КОРП: Заполнение документа "Корректировка записей регистров накопления" на основании любого документа
- Загрузка чеков ФНС в документы 1С:БП, 1С:УНФ, 1С:ERP, 1С:КА и 1С:УТ
- РеСольДо - редактор строк документов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6) а вообще что-то непонятное в постановке задачи.
Есть уже записанный документ Док1, в нем кнопка.
По кнопке проверяется
1. флаг. Если взведен, просим переоткрыть док1 и работать дальше.
если нет - смотрим по структуре подчиненности, есть ли уже созданный док2.
Есть док2 в структуре, открываем док2.
Если в структуре ничего нет:
-заполняем док2, !! записываем его.
-взводим флаг на форме док1.
Есть уже записанный документ Док1, в нем кнопка.
По кнопке проверяется
1. флаг. Если взведен, просим переоткрыть док1 и работать дальше.
если нет - смотрим по структуре подчиненности, есть ли уже созданный док2.
Есть док2 в структуре, открываем док2.
Если в структуре ничего нет:
-заполняем док2, !! записываем его.
-взводим флаг на форме док1.
Отработка кнопки - на проведенный документ выдачи ссуды делает рко, если сделан по кнопке вываливается список доков рко
если поможет - на здоровье.
ну и если счет нужен по любому - добавить проверку на наличие дока при закрытии формы.
если поможет - на здоровье.
Перем ТекЗнач;
Если Проведен()=0 Тогда
Предупреждение("Проведите документ ссуды! РКО не сформирован!");
Возврат;
КонецЕсли;
ТекДок=ТекущийДокумент();
Спис=СоздатьОбъект("СписокЗначений");
ДокПодч=СоздатьОбъект("Документ");
ДокПодч.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент());
Пока ДокПодч.ПолучитьДокумент()=1 Цикл
Если ДокПодч.Вид()="РасходныйОрдер" Тогда
РКО=ДокПодч.ТекущийДокумент();
Спис.ДобавитьЗначение(ДокПодч.ТекущийДокумент(),""+РКО.НомерДок+" от "+РКО.ДатаДок);
КонецЕсли;
КонецЦикла;
Если Спис.РазмерСписка()>0 Тогда
Если Спис.РазмерСписка()=1 Тогда
ТекЗнач=Спис.ПолучитьЗначение(1,);
ОткрытьФорму(ТекЗнач,,);
Иначе
Если Спис.ВыбратьЗначение(ТекЗнач,,,,1)=1 Тогда
ОткрытьФорму(ТекЗнач,,);
КонецЕсли;
КонецЕсли;
Иначе
ОткрытьФорму("Документ.РасходныйОрдер",,ТекДок);
КонецЕсли;
Показатьну и если счет нужен по любому - добавить проверку на наличие дока при закрытии формы.
Как то так:
Процедура ОткрытьСчет()
Документы = СоздатьОбъект("Документ");
Документы.ВыбратьПодчиненныеДокументы( , , ТекущийДокумент());
Пока Документы.ПолучитьДокумент() = 1 Цикл
Если Документы.Вид() = "Счет" Тогда
Ответ = Вопрос("Счет уже был введен ранее. Открыть его?","Да+Нет",60);
Если Ответ = "Да" Тогда
ОткрытьФорму(Документы.ТекущийДокумент());
КонецЕсли;
Возврат;
КонецЕсли;
КонецЦикла;
ОткрытьФорму("Документ.Счет",,ТекущийДокумент());
КонецПроцедуры;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот