Имя: Пароль:
1C
1С v8
Не получается записать документы
0 Ekran
 
27.07.23
12:43
&НаСервере
Процедура ИзменитьНагрузкуНаСервере()
    //
    // Всем преподавателям изменить нагрузку за экзамены.
    //
    
    
    ПлановаяНагрузкаЗаПисьмЭкзамен = 6;
    ПлановаяНагрузкаЗаУстныйИлиМодульныйЭкзамен = 8;
    
    
    Семестр_1 = Справочники.ПериодыОбучения.НайтиПоКоду("000000981");
    Семестр_2 = Справочники.ПериодыОбучения.НайтиПоКоду("000000982");
    
    ЭкзПисьм = Справочники.ВидыНагрузки.НайтиПоНаименованию("Экзамен письменный");
    ЭкзУстн = Справочники.ВидыНагрузки.НайтиПоНаименованию("Экзамен устный");
    ЭкзМодульн = Справочники.ВидыНагрузки.НайтиПоНаименованию("Экзамен (квалификационный) по профессиональному модулю");
    
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ФормированиеНагрузкиКафедрыРаспределениеНагрузки.Ссылка КАК Ссылка
        |ИЗ
        |    Документ.ФормированиеНагрузкиКафедры.РаспределениеНагрузки КАК ФормированиеНагрузкиКафедрыРаспределениеНагрузки
        |ГДЕ
        |    (ФормированиеНагрузкиКафедрыРаспределениеНагрузки.Семестр = &Семестр_1
        |            ИЛИ ФормированиеНагрузкиКафедрыРаспределениеНагрузки.Семестр = &Семестр_2)";
    
    Запрос.УстановитьПараметр("Семестр_1", Семестр_1);
    Запрос.УстановитьПараметр("Семестр_2", Семестр_2);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    НачатьТранзакцию();
    Попытка
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл        
            Док = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
            
            //Если НЕ Док.Проведен Тогда;
            //    Продолжить;
            //КонецЕсли;
            
            Для Каждого СтрокаТЧ Из Док.РаспределениеНагрузки Цикл
                БылоЧасов = СтрокаТЧ.КоличествоЧасов;
                
                Если СтрокаТЧ.ВидНагрузки = ЭкзПисьм Тогда
                    СтрокаТЧ.КоличествоЧасов = ПлановаяНагрузкаЗаПисьмЭкзамен;            
                    Док.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
                    ЗаписатьЛогИСообщитьПользователю(Док, СтрокаТЧ.НомерСтроки, БылоЧасов, ПлановаяНагрузкаЗаПисьмЭкзамен);                                
                КонецЕсли;
                
                Если СтрокаТЧ.ВидНагрузки = ЭкзУстн или СтрокаТЧ.ВидНагрузки = ЭкзМодульн Тогда                
                    СтрокаТЧ.КоличествоЧасов = ПлановаяНагрузкаЗаУстныйИлиМодульныйЭкзамен;
                    Док.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);                    
                    ЗаписатьЛогИСообщитьПользователю(Док, СтрокаТЧ.НомерСтроки, БылоЧасов, ПлановаяНагрузкаЗаУстныйИлиМодульныйЭкзамен);                    
                КонецЕсли;              
                
            КонецЦикла;            
            
        КонецЦикла;
        
    Исключение
        ОтменитьТранзакцию();    
        ОбщегоНазначения.СообщитьПользователю("Сбой");
    КонецПопытки;        
    ОбщегоНазначения.СообщитьПользователю("Завершено");
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьНагрузку(Команда)    
    ИзменитьНагрузкуНаСервере();
КонецПроцедуры



Скажите, пожалуйста, почему не получается записать документы?


Я уже попробовал сделать один документ сегодняшним числом (т.п. по крайней мере, один есть свежий).
Потом я отменил его проведение. В лог этот документ попадает наряду с другими. Но все равно этот документ остается непроведенным.

Остальные документы тоже, соответственно, остаются с неизмененной информацией в табличной части.

Был бы признателен за помощь.
1 Волшебник
 
27.07.23
12:48
Нет ЗафиксироватьТранзакцию()
2 Ekran
 
27.07.23
12:55
(1) Спасибо. Заработало.