Получение документа по номеру и удаление строки с индексом 0. "Программирование для начинающих"

1. Vladimir99 15.05.22 18:20 Сейчас в теме
Проверьте пожалуйста моё решение.

Задание 3.50
Получите документ за 2 сентября 2022 г. и удалите в нём первый урок. Для этого
самостоятельно найдите в синтакс-помощнике метод, который позволяет найти
документ по номеру. Обработайте ситуацию, что документа с таким номером
может и не быть в базе.
Перед выполнением запомните, какой урок был первым, чтобы потом проверить.
После проверки в тексте программы измените номер документа на несуществую-
щий. Проверьте, как работает ваша программа в случае, когда искомый документ
отсутствует.
Подсказка 1. Чтобы определить, является ли ссылка на документ пустой, у типа
ДокументСсылка.<Имя документа> существует метод Пустая().
Подсказка 2. Чтобы, находясь на сервере, сообщить что-нибудь клиенту, исполь-
зуйте объект СообщениеПользователю. Самостоятельно найдите его описание в
синтакс-помощнике. Вам понадобится создать этот объект, заполнить свойство
Текст и выполнить метод Сообщить().
Процедура ПолучениеИУдалениеПеровогоУрока2Сентября() Экспорт

	// Нахожу с помощью метода НайтиПоНомеру, ДокументМенеджер, возвращаю Тип: ДокументСсылка 
	ВтороеСентября = Документы.УчебныйДень.НайтиПоНомеру("20220902"); 
	
	Если ВтороеСентября.Пустая() Тогда    // Проверяю есть ли такой документ в базе, если нет - сообщаю об этом 
		СмсОбОтсутствииДока = Новый СообщениеПользователю(); 
		СмсОбОтсутствииДока.Текст = "Документ от 2 сентября 2022 года не найден.";
		СмсОбОтсутствииДока.Сообщить();

	Иначе    
		ДокументОбъект =  ВтороеСентября.ПолучитьОбъект();    //Получаю ДокументОбъект
		// Получаю табличную часть документа 
		ТабличнаяЧасть = ДокументОбъект.Уроки;
		// Обработчик ошибки. Если в документе нет строк сообщим об этом
		Если ТабличнаяЧасть.Количество() = 0 Или ТабличнаяЧасть.Количество() = Неопределено Тогда 
			СмсОбОтсутствииСтрок = Новый СообщениеПользователю(); 
			СмсОбОтсутствииСтрок.Текст = "В документе 20220902 нет строк, он не заполнен.";
			СмсОбОтсутствииСтрок.Сообщить();
			Возврат;
		Иначе
			ТабличнаяЧасть.Удалить(0);    // Удаляю первый урок
			
		КонецЕсли;
		
		ДокументОбъект.Записать();
		
	КонецЕсли;
	
		
		
КонецПроцедуры


Показать
Прикрепленные файлы:
Дневник_Задание_3,50.dt
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 15.05.22 18:30 Сейчас в теме
(1) нормально, только:
Если ТабличнаяЧасть.Количество() = 0 Или ТабличнаяЧасть.Количество() = Неопределено Тогда

ТабличнаяЧасть.Количество() не может быть Неопределено. Почаще обращайтесь к СП (Синтакс-помощник). Смотрите возвращаемый тип.
В данном случае там может быть только число.
Работать код будет, но проверка излишняя.
Vladimir99; +1 Ответить
2. uk09 15.05.22 18:27 Сейчас в теме
Добрый день!
Внимательно читайте документацию по 1С, это Вам поможет сейчас и в дальнейшем.
Функция НайтиПоНомеру() предполагает необязательность второго параметра ДатаИнтервала., но обязательность первого - НомерДокумента. Код, который Вы написали, будет искать документ за номером "20220902"
4. spacecraft 15.05.22 18:31 Сейчас в теме
(2) второй параметр необязательный. Для непериодических документов он не требуется.
5. uk09 15.05.22 18:32 Сейчас в теме
(4)
Поправила ))) Я, ему, про другой параметр хотела написать
6. uk09 15.05.22 18:41 Сейчас в теме
Правильно, будет применить выборку по интервалу даты:
ДатаВыборки = Дата("20220902");
Документы.Учебный День.Выбрать(НачалоДня(ДатаВыборки), КонецДня(ДатаВыборки));
7. Vladimir99 15.05.22 18:58 Сейчас в теме
(6)

ДатаВыборки = Дата("20220902");
Документы.Учебный День.Выбрать(НачалоДня(ДатаВыборки), КонецДня(ДатаВыборки));


В этом случае возвращается тип ДокументВыборка и потом я начал думать как из ДокументВыборки перейти к типу ДокументСсылка, чтобы получить доступ к его методу Пустой(), начал перебирать выборку с помощью Пока Цикл, после задумался, а нельзя ли напрямую обратиться к документу ну и нашёл метод НайтиПоНомеру().
8. spacecraft 15.05.22 19:05 Сейчас в теме
(7) нужно выполнять требование условий задачи, а не как лучше. Там указано:
Для этого
самостоятельно найдите в синтакс-помощнике метод, который позволяет найти
документ по номеру.

Так что правильно сделали.
Vladimir99; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот