7.7 Как атоматически закрыть документ открытый с помощью процедуры "ОткрытьФорму" ?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Dimarik, 1 сен 2008.

  1. TopicStarter Overlay
    Dimarik
    Offline

    Dimarik

    Регистрация:
    1 сен 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Всем добрый день !!!
    Люди добрый, помогите пожалуйста, если это не трудно !!! :unsure:

    1.Предистория:
    Наша компания ведёт складской учёт в программе 1с 77 Аналит: Фармация. Бухгалтерию же ведёт
    в 1С 77 Буххгалтерский учёт. Особенность в том, что есть товары со ставками 18%, 10% и без НДС.
    Чтоб не мучится со 100000 номеклатурой ещё и в бухгалтерии, я использую там вссего 3 наименования:
    товар 10%, товар 18% и товар без НДС. Документы прихода и отгрузги товара прегружаютя соосветственно из складской базы в бухгалтерию со всей номенклатурой. Чтоб руками не обрабатывать в бухгалтерии опять все документы, т.е для автоматизации этого процесса, в процедурах
    "При открытии" документов ПоступлениеТоваров и РасходнаяНакладная дописал весчи смысл которых такой: При открытии документов он обсчитывает сначала в табличной части, сколько товара по какой ставке и сумме пришло или ушло. Затем удаляет табличную часть и создаёт новую с нужной мне номенклатурой. Сводится соответственно всё к тому что надо открыть документ и нажать кнопку ОК.

    2. Суть проблемы:
    Так как документов за налоговый период очень много пытаюсь автоматизировать этот процесс написав документ (обработку) смысл которого сводится к тому, что он должен выбрать к примеру документы
    (непроведённые) ПоступлениеТоваров в определённом периоде, автоматически открыть их
    чтоб вступили изменения описанные в пункте 1, и провести их.
    Форма документа:
    С даты ...... по .......
    Кнопки выполнить и закрыть.
    Модуль документа:
    Код:
    Процедура Выполнить()
    Перем БИ;
    
    Если Дата1 <= Константа.ДатаЗапретаРедактирования Тогда
    Предупреждение("Нельзя обрабатывать документы с датой, более ранней, чем дата запрета редактирования документов!");
    Возврат;
    КонецЕсли;	
    
    Док = СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(Дата1,Дата2);
    
    Пока Док.ПолучитьДокумент() = 1 Цикл
    //Событие    = "";
    //Объект     = "";
    //Категория  = 0;
    
    Состояние("Обработка "+Док.ДатаДок);
    
    Если Док.Вид() = "ПоступлениеТоваров" <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>
    
    Докум = Док.ТекущийДокумент();
    
    ОткрытьФорму(Докум);
    
    Если ОткрытьФорму(Докум) = 1 Тогда
    Сообщить ("Форма открыта: " + Докум);
    Форма.Закрыть();
    //Вот сдесь он закрывает у меня форму документа который используется т.е. обработку,
    //А НУЖНО ЧТОБ ЗАКРЫЛ И ПРОВЁЛ ДОКУМЕНТ ПОСТУПЛЕНИ ТОВАРОВ !!!!!!!!!!
    
    //Докум.Закрыть();
    //Докум.Форма.Закрыть();
    
    
    Если ОткрытьФорму(Докум) = 0 Тогда
    Сообщить ("Форма НЕ ОТКРЫТА !!!: " + Докум);
    Иначе
    Сообщить ("!!! ФОРМА ОТКРЫТА !!!: " + Докум);
    КонецЕсли;
    
    глПриПроведении(Докум);  
    
    ИначеЕсли ОткрытьФорму(Докум) = 0 Тогда
    Сообщить ("Форма не открыта !!!: " + Докум);
    Конецесли;
    
    Док.Записать();			
    // СДЕСЬ ОН ПИШЕТ ЧТО ДОКУМЕНТ ЗАБЛОКИРОВАН т.к. ОТКРЫТ !!!!
    // КАК ЕГО ЗАКРЫТЬ ????????????????????????????????			
    //Если Док.ПометкаУдаления() = 1 Тогда
    //Иначе
    //	Сообщить("Проведение "+Док);
    //	Если Док.Провести() = 0 Тогда
    //		Возврат;
    //	КонецЕсли;
    //КонецЕсли;
    
    КонецЕсли;
    
    КонецЦикла;
    
    КонецПроцедуры
    //_____________________________________________________________________________
    Процедура ПриОткрытии()
    
    Дата1 = НачалоПериодаБИ();
    Дата2 = КонецПериодаБИ(); 
    
    КонецПроцедуры
    

    КАК ЗАКРЫТЬ ДОКУМЕНТ ПОСТУПЛЕНИЕ ТОВАРОВ ОТКРЫТЫЙ С ПОМОЩЬЮ ПРОЦЕДУРЫ
    "ОткрытьФорму(Текущий документ)" ????????????????????????

    ПОЖАЛУЙСТА ПОМОГИТЕ !!!!!!
  2. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    как много букоф...
    зачем тебе открывать документ, а потом его закрывать? ты не можешь просто в обработку поставить нужный кусок кода из процедуры ПриОткрытии()?
  3. TopicStarter Overlay
    Dimarik
    Offline

    Dimarik

    Регистрация:
    1 сен 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1




    Спасибо, хорошая мысль !!!
    Могу сделать так согласен.
    Но документ, получается из модуля другого документа закрыть нельзя ????????


    С Уважением,
    Дмитрий.
  4. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Можно, при открытии передается параметр "Контекст".
    С ним можно работать из открывающего модуля как со ссылкой на документ: созранить, сменить значения реквизитов, сохранить и даже закрыть :)
  5. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Например, при открытии существующего документа:
    создаем переменную, и при необходимости присваеваем ей значение. Передаем параметром <КонтекстФормы>.

    В документе это значение будет доступно как значение реквизита "Форма.Параметр".

    В вызывающем модуле этой переменной будет присвоенно значение контекста открытого документа.

    Удачных экспериментов.

Поделиться этой страницей