7.7 Нужна помочь по 2 вопросам плиз )

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

  1. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    1. Как программно из обработки провести(Записать) документ в введенный на основании?
    т.е. если например:
    //
    Конт="";
    ОткрытьФорму("Документ.Реализация",Конт,ДокументОснование);
    //
    и потом как этот документ открывшийся записать(Провести) ?
    2. Как на форме перебрать все элементы формы программно ?

    [warn="Внимание. Читаем правила!"]http://www.1c-pro.ru/index.php?act=announce&id=8
    Одна тема - один вопрос[/warn]
  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    1. Конт.Записать();
    2. В 1С нельзя, только с использованием ВК.
  3. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Конт.записать(); - программа ругается :
    Конт.Записать();
    {C:\DOCUMENTS AND SETTINGS\МЕРФИ\РАБОЧИЙ СТОЛ\ОТКАТ.ERT(555)}: Данная команда не может выполняться в формуле элемента диалога!
  4. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Нужно вызывать процедуру не из элемента диалога, а при нажатии кнопки.

    ЗЫ (процедуру открытия формы документа)
  5. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Всмысле ? )
    я пробовал и так
    Конт.СтрокаДействийФормы = "#Записать";
    но нечего не происходить .
  6. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Кусок кода, приведенный в первом посте находится в процедуре/функции?

    вызов ее происходит в какомто реквизите формы (или тексте, или поле ввода). а надо ее вызывать по нажатию на кнопку.

    (подробнее уже не знаю как написать.... наверное надо сначала получить азы, почитав ЖКК).
  7. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ЗанестиДанные(ТЗ)
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачДата,КоНдата);
    Пока Док.ПолучитьДокумент()=1 Цикл
    Док.Удалить(1);
    КонецЦикла;
    Для СЧ=1 По ТЗ.КоличествоСтрок() Цикл
    ТЗ.ПолучитьСтрокуПоНомеру(Сч);
    Если ТЗ.УжеЕсть=1 ТОгда
    Продолжить;
    КонецЕсли;
    Док=СоздатьОбъект("Документ."+ТЗ.Документ);
    Док.Новый();
    ДОк.НомерДок=ТЗ.НомерДок;
    Док.ДатаДок=ТЗ.ДатаДок;
    Док.УстановитьВремя(ТЗ.Ч,ТЗ.М,ТЗ.С);
    //ЗаполнитьШапка(Док,ТЗ.Реквизиты);
    ///ЗаполнитьТЦ(ДОк,ТЗ.СтрокаТЧ);
    Док.Записать();
    Если ТЗ.Подчиненные.КоличествоСтрок()>0 ТОгда
    
    Подчиненные=ТЗ.Подчиненные;
    Подчиненные.Выбратьстроки();
    Пока Подчиненные.ПолучитьСтроку()=1 Цикл
    Конт="";
    Список=НайтиСтроку(ТЗ,Подчиненные);
    ОткрытьФорму("Документ."+Список.Получить("Вид"),Конт,Док.ТекущийДокумент());
    Конт.ДатаДок=Список.Получить("Дата");
    Конт.Форма.ОБновить(1);
    Конт.СтрокаДействийФормы = "#Записать";
    Конт.Записать();
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;		
    КонецПроцедуры
    
    Это обработка
  8. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Чесно говоря, вообще не понимаю, что выполняет данный код. Неужели вообще работает, для чего в цикле менять дату ОДНОГО документа??

    Что конкретно касается передачи контекста - то сначала можно записать дату документа (переменная "Док"), а потом его открыть.

    Что касается открытия формы существующего документа, то метод "ОткрытьФорму()" должен использоваться по другому:

    Синтаксис:
    ОткрытьФорму(<Документ>,<КонтекстФормы>,<РежимПросмотра>)
    Назначение:
    Открывает визуальную форму существующего документа или элемента/группы справочника.
    Возвращает: 1 - если действие выполнено, 0 - иначе.
    Параметры:
    <Документ> - выражение со значением типа 'документ';
    <КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);
    <РежимПросмотра> - необязательный параметр. Числовое выражение: 1 - открыть форму в режиме только просмотра; 0 - открыть форму в режиме редактирования; -1 (минус единица) - в этом случае используется вариант, предусмотренный текущим значением параметра ''Режим открытия объектов'', установленным пользователем интерактивно.
    Замечание:
    Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0.
  9. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    суть в том что мне надо на основании ввести документ а потом провести его...
    Процедура Сформировать()
    Конт="";
    ОкрытьФорму("Документ.Реализация",Конт,Счет);// Счет - это ссылка на документ счет
    // Как мне записать открывщийся документ ?
    // или как мне по другому ввести на основании
    КонецПроцедуры


    ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>)
    Назначение:
    Открывает визуальную форму ввода нового документа (в т.ч. в режиме ввода на основании).
    Возвращает: 1 - если действие выполнено, 0 - иначе.
    Параметры:
    <ОписательОбъекта> - строка-описатель документа вида:
    'Документ.ХХХХХ', где ХХХХХХ - вид документа;
    <КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);
    <ДокументОснование> - документ-основание для открытия формы ввода нового документа в режиме ввода на основании (необязателен).
    Замечание:
    Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0.
  10. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    И это в автоматическом режиме?

    Я передавал определенный параметр в документ. Потом сам документ при этом определенном параметре в предопределенной процедуре "ВводНаОсновании" при этом параметре после заполнения сохранялся и закрывался.
    Только при этом нужно формы открывать модально.
  11. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Понятно, Спасибо за помощь , я просто думал может есть какой нить способ чтоб код не менять.
  12. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Есть, в обработку скопировать код из процедуры "ВводНаОсновании" нужного документа. потом формировать новый документ по этому алгоритму, не открывая формы (работать будет куда быстрее, но если код ввода на основании поменяется, придется и обработку дописывать)

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