7.7 Доступ НЕ только для чтения к документу из журнала.

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

  1. TopicStarter Overlay
    Iron
    Offline

    Iron

    Регистрация:
    31 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Господа знающие! Столкнулся с такой проблемой:

    Задача:
    Есть журнал документов. Добавляю к нему кнопочку. Хочу чтобы по этой кнопочке менялся атрибут документа, на котором стоит мой выбор.

    Для начала я нашел, что у модуля формы журнала документов есть атрибут " ТекущийДокумент". Его я передаю ф функцию, которая запускается по кнопке. И вроде все хорошо, я могу получить и посмтреть любой атрибут документа, более того, методом УстановитьАтрибут(); я его могу даже поменять (проверял следом - выводил атрибут этого документа), а вот записать документ с измененным атрибутом - не могу! банальный метод Записать(); ругается - говорит :

    ТекДок.Записать();
    {Журнал.ЖурналПоДоставкам.Форма.ФормаСписка.Модуль(6)}: Не выбран документ!

    Это стандартная конфигурация с небольшими добавлениями, которые делал сам. Скидываю код модуля журнала:

    Код:
    Процедура ппп(ТекДок); 
    Сообщить("Текущий:"+ТекДок);
    Сообщить("Статус до:"+ТекДок.ПолучитьАтрибут("Статус"));
    ТекДок.УстановитьАтрибут("Статус","ДААААА!!!!");
    Сообщить("Статус после:"+ТекДок.ПолучитьАтрибут("Статус"));
    ТекДок.Записать();
    КонецПроцедуры;
    
    
    Это поле "функция" моей кнопки :

    ппп(ТекущийДокумент);



    Подскажите как записать изменение?
  2. Stado_adama
    Offline

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

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    попробуй его найти по номеру и дате, присвоить какой-нить переменной, а потом обращаться уже через имя этой переменной
  3. TopicStarter Overlay
    Iron
    Offline

    Iron

    Регистрация:
    31 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    В том то и дело, что я получаю доступ к нему. Могу изменить все его атрибуты. Я записать его не могу обратно. И самое главное еще очень хочется, чтобы после изменения этого атрибута в журнале этого документа он изменился и табице

    Ща попробую твой совет....
  4. TopicStarter Overlay
    Iron
    Offline

    Iron

    Регистрация:
    31 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Я надеюсь я правильно тебя понял.
    Смотри:

    Код:
    Процедура ппп(ТекДок);
    док = СоздатьОбъект("Документ.НарядНаДоставку"); 
    док = ТекДок;
    
    
    Сообщить("Текущий:"+док);
    Сообщить("Статус до:"+док.ПолучитьАтрибут("Статус"));
    док.УстановитьАтрибут("Статус","ДААААА!!!!");
    Сообщить("Статус после:"+ТекДок.ПолучитьАтрибут("Статус"));
    док.Записать();
    
    
    
    КонецПроцедуры;
    
    
    
    Ошибка та же самая.

    Окно сообщений:

    Текущий:НарядНаДоставку 0000000006 (30.01.08)
    Статус до:Не доставлена
    Статус после:ДААААА!!!!
    док.Записать();
    {Журнал.ЖурналПоДоставкам.Форма.ФормаСписка.Модуль(10)}: Не выбран документ!
  5. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Правильно
    Код:
    док = СоздатьОбъект("Документ.НарядНаДоставку");
    док = НайтиДокумент(ТекущийДокумент)
    док.ЛюбойАтрибут="хрень"
    док.Записать();
    
    
    
    

    :unsure:
  6. Stado_adama
    Offline

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

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    Iron, вот MaxxaM в точности выразил мои мысли :)
    ищешь его оператором "найтиДокумент", присваиваешь переменной док и работаешь уже с ней :))
  7. igkr
    Offline

    igkr

    Регистрация:
    13 авг 2006
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    так делать нельзя нужно получит объект документ!


    я бы написЯл так, сто б не заморачиваться в дальнейшем


    Код:
    //можно для полной крутизны сделать в глобальнике
    Процедура глУстановитьАтрибутДокумента(ПолДок,ИмяАтрибута,Значение) Экспорт
    ДокОб = СоздатьОбъект("Документ");  // это все документы
    Если ДокОб.НайтиДокумент(ПолДок) = 1 Тогда // бредовая проверка но это на всякий случай
    // проверить на блокировку
    Если ДокОб.Блокировка(1) = 1 Тогда
    ДокОб.УстановитьАтрибут(ИмяАтрибута,Значение);
    ДокОб.Записать()
    Иначе
    сообщить("Документ"+ТекДок+" блокирован!");
    КонецЕсли;
    Иначе
    // в пиринцепе так не бывает
    сообщить("Документ"+ТекДок+" не найден, какоето колодовство");
    КонецЕсли;    
    КонецПроцедуры
    
    
    Процедура ппп(ТекДок); 
    
    Сообщить("Текущий:"+ТекДок);
    Сообщить("Статус до:"+ТекДок.ПолучитьАтрибут("Статус"));
    глУстановитьАтрибутДокумента(ТекДок,"Статус","Ё")
    
    КонецЕсли;
    
    
    Не забываем использовать тэг
    Код:
    [/color]
  8. TopicStarter Overlay
    Iron
    Offline

    Iron

    Регистрация:
    31 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Госопда, большое спасибо! все заработало.
    Единственное во второй строчке надо
    док.НайтиДокумент(ТекущийДокумент)

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