Табл.знач. и док-ты 1С77

Тема в разделе "1C и всё что с ней связано", создана пользователем lira89, 16 мар 2011.

  1. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Задача состоит в том, чтобы сформировать табл. знач., записать в нее ссылки на документы, причем документы разных видов, а затем пройтись по таблице и перепровести эти документы.Есть таблица значений и несколько документов, которые в нее надо записать:
    Код (Text):
    Процедура ДляВсех(ТЗ,н,Д)
    Д.ВыбратьДокументы();
    Пока Д.ПолучитьДокумент() = 1 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Ном = н;
    ТЗ.Док = Д.ТекущийДокумент();
    ТЗ.Дат = Д.ДатаДок;
    КонецЦикла;
    КонецПроцедуры    // ДляВсех
    //*******************************************
    Процедура Выполнить()
    Д1 = СоздатьОбъект("Документ.ПереводВАкадемический");
    Д2=СоздатьОбъект("Документ.ОтчислениеСтудента");
    Д3 = СоздатьОбъект("Документ.ВыбытиеСтудентов");
    Д4 = СоздатьОбъект("Документ.Восстановление");
    Д5 = СоздатьОбъект("Документ.ПриказНаСтажировку");
    Д6 = СоздатьОбъект("Документ.ВозвратИзСтажировки");
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Ном","Число",3,0,"Номер",1);
    ТЗ.НоваяКолонка("Док","Документ",,,"Док",30);
    ТЗ.НоваяКолонка("Дат","Дата",,,"ДатаДок",10);
    ДляВсех(ТЗ,1,Д1);
    ДляВсех(ТЗ,2,Д2);
    ДляВсех(ТЗ,3,Д3);
    ДляВсех(ТЗ,4,Д4);
    ДляВсех(ТЗ,5,Д5);
    ДляВсех(ТЗ,6,Д6);
    ТЗ.Сортировать("+Дат,+Ном");

    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    ТЗ.Док.СделатьНеПроведенным(); //ЗДЕСЬ ВЫБИВАЕТ ОШИБКУ
    ТЗ.Док.Провести();
    Если ТЗ.Док.Проведен()=0 Тогда
    Сообщить("Док не проведен"+ТЗ.Док.ДатаДок+ " "+ТЗ.Док.Вид()+" "+ТЗ.Док.НомерДок,"!!");
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    ВОПРОС: когда я иду по строкам таблицы, то мне сразу же выдает ошибку о том, что не выбран документ в методе ТЗ.Док.СделатьНеПроведенным(). Насколько я понимаю в данном реквизите ТЗ хранится ссылка на документ. Почему тогда выбивает такое сообщение? Может что-то не так с типом колонки в ТЗ,как тогда правильно нужно записать, если документ не один?
     
  2. starasta

    starasta Member

    Регистрация:
    26 фев 2008
    Сообщения:
    23
    Симпатии:
    0
    Вообще-то сначала нужно создать объект документа, найти его по имеющейся ссылке, а уж потом отменять проведение
     
  3. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Док = СоздатьОбъект("Документ");

    Надо в цикле по ссылке из ТЗ искать нужный документ

    Док.НайтиДокумент(ТЗ.Док);
    и уже найденный документ перепроводить.

    И еще - можно ограничиться одной колонкой типа "Документ" в ТЗ (или вообще списком значений)

    Добавлено: А вообше-то во всех типовых конфигурациях есть "ГрупповаяОбработкаДокументов", так что, вроде и изобретать нечего
     
  4. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    спасибо, а я что-то не сообразила(
     
Загрузка...

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