• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы lira89
  • Дата начала
L

lira89

Задача состоит в том, чтобы сформировать табл. знач., записать в нее ссылки на документы, причем документы разных видов, а затем пройтись по таблице и перепровести эти документы.Есть таблица значений и несколько документов, которые в нее надо записать:
Код:
Процедура ДляВсех(ТЗ,н,Д)
Д.ВыбратьДокументы();
Пока Д.ПолучитьДокумент() = 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 Тогда
Сообщить("Док не проведен"+ТЗ.Док.ДатаДок+ " "+ТЗ.Док.Вид()+" "+ТЗ.Док.НомерДок,"!!");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ВОПРОС: когда я иду по строкам таблицы, то мне сразу же выдает ошибку о том, что не выбран документ в методе ТЗ.Док.СделатьНеПроведенным(). Насколько я понимаю в данном реквизите ТЗ хранится ссылка на документ. Почему тогда выбивает такое сообщение? Может что-то не так с типом колонки в ТЗ,как тогда правильно нужно записать, если документ не один?
 
S

starasta

Вообще-то сначала нужно создать объект документа, найти его по имеющейся ссылке, а уж потом отменять проведение
 
V

vbs

Док = СоздатьОбъект("Документ");

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

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

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

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

lira89

спасибо, а я что-то не сообразила(
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!