7.7 Как данные, введенные в обработке, записать в документ?

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

  1. TopicStarter Overlay
    VIN
    Offline

    VIN

    Регистрация:
    11 сен 2006
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    В форме документа по кнопке открываю форму обработки, в которой вычисляю какую-то цифру.
    Затем хочу ее записать в реквизит этого документа (а документ-то открыт). Не записывается и вообще не отображается в форме документа. Как это сделать?
  2. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    В качестве параметра при вызове обработки передаешь контекст документа, например:
    ОткрытьФорму("Справочник.Номенклатура.Основная",Контекст);
    При открытии этот контекст будет доступен как
    Форма.Параметр
    После вычислений записываешь полученное значение в необходимый тебе реквизит документа, например:
    Форма.Параметр.ТвойРеквизит=ТвоеЗначение;
    И для обновления формы (чтобы увидеть, что реквизит поменял значение, пишешь
    Форма.Параметр.Форма.Обновить();
  3. TopicStarter Overlay
    VIN
    Offline

    VIN

    Регистрация:
    11 сен 2006
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    У меня:
    Док=Форма.Параметр;
    Док.Форма.Обновить() // выдает ошибку: "Поле агрегатного объекта не обнаружено - Обновить()"
  4. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    А чем не устраивает строка
    Форма.Параметр.Форма.Обновить(); ?
    Просто присвоением ты не передаешь контекст открытой формы, а только ссылку на него. Поэтому и ругается. По-моему так...
  5. TopicStarter Overlay
    VIN
    Offline

    VIN

    Регистрация:
    11 сен 2006
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Получилось!!! Большое спасибо! Который год работаю с 1С, а до сих пор что-то открываю для себя.
    Подобные вещи приходилось делать в обход, через глобальную переменную в глоб.модуле.
  6. BayoNet
    Offline

    BayoNet

    Регистрация:
    8 сен 2006
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Люди, может кто знает, а как быть если я из формы элемента справочника в котором поместил ТЗ, (в которой по строкам перечисленны все документы имеющие отношение к этому элементу), открываю существующий документ или открываю новый (на форме сделал кнопку "ДОБАВИТЬ ЗАПИСЬ"). Так вот из открытой формы с ТЗ я открываю документ, заполняю его, провожу. Как мне обновить уже открытую форму с ТЗ в момент проведения документа. То есть в ТЗ должна измениться или сущ запись или добавиться новая. В форме есть процедура ЗаполнитьТЗ(). Мне лишь нужно передать в нее управление из закрывающегося документа.
  7. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Скорее всего сделать такое средствами 1с нельзя. Но можно в процедуру ПриЗакрытии документа вставить условие что если в качестве форма.параметр у тебя передан контекст твоего элемента справочника, то выполнить твою процедуру (но описанную в документе). Например:
    Код:
    Процедура ПриЗакрытии()
    Если ПустоеЗначение(Форма.Параметр)=0 Тогда
    Форма.Параметр.ТЗ.УдалитьСтроки();
    Д=СоздатьОбъект("Документ.Реализация");
    Д.ВыбратьДокументы(ТекущаяДата(),ТекущаяДата());
    Пока Д.ПолучитьДокумент()=1 Цикл
    Форма.Параметр.ТЗ.НоваяСтрока();
    Форма.Параметр.ТЗ.Док=Д.ТекущийДокумент();
    Форма.Параметр.ТЗ.Проведен=Д.Проведен();
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры
    
  8. BayoNet
    Offline

    BayoNet

    Регистрация:
    8 сен 2006
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Спасибо. Щас буду делать, а я вот подумал, а если из модуля документа открыть форму элемента справочника, пусть даже она уже открыта. По-моему не может открыться один элемент два раза может тогда сработае процедура ПриОткрытии(), в которой у меня помещена процедура процедура ЗаполнитьТЗ(). Эсть еще вариант(работать должно но ресурсов жрать много будет) поместить текст под форму. А тексту задать функцию ЗаполненияТЗ()
  9. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    если элемент открыт и из документа открыть форму этого же элемента, должна сработать процедура ПриПовторномОткрытии(), в которую и надо запихать заполнениеТЗ()
  10. BayoNet
    Offline

    BayoNet

    Регистрация:
    8 сен 2006
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Точно, по-моему идеальный ввариант, спасибо.
  11. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Главное сначало напугать что нельзя, а потом включить думалку и начав с самого громоздкого варианта остановиться на идеальном :)

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