Ошибки в расписании

1. Emiliya_Emili 17.05.15 10:13 Сейчас в теме
в данной части кода появляется ошибка

ЭлементыПланировщика = ДокументРасписание.Элементы;
	ЭлементыПланировщика.Очистить();
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЗаписьНаЗанятия.Оборудование,
		|	ЗаписьНаЗанятия.ДатаНачала КАК Начало,
		|	ЗаписьНаЗанятия.ДатаОкончания КАК Конец,
		|	ЗаписьНаЗанятия.Клиент КАК Наименование
		|ИЗ
		|	РегистрСведений.ЗаписьНаЗанятия КАК ЗаписьНаЗанятия
		|ГДЕ
		|	ЗаписьНаЗанятия.ДатаНачала >= &ДатаНачала
		|	И ЗаписьНаЗанятия.ДатаОкончания <= &ДатаОкончания";
	
	
	Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ВыборДаты));
	Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ВыборДаты));
	Результат = Запрос.Выполнить().Выбрать();
		
	Пока Результат.Следующий() Цикл
		Документ = Результат.Ссылка.ПолучитьОбъект();
		СоответствиеЗначений = Новый Соответствие;
		СоответствиеЗначений.Вставить("Оборудование",   Документ.Оборудование.Наименование);
		
		НовыйЭлемент = ЭлементыПланировщика.Добавить(Документ.Начало, Документ.Конец);
		НовыйЭлемент.ЗначенияИзмерений	= Новый ФиксированноеСоответствие(СоответствиеЗначений);
		НовыйЭлемент.Текст	= Документ.Наименование;
	КонецЦикла;
Показать


Ссылка Ошибка чтения значения Запрос.Выполнить().Выбрать()


Результат.Следующий() {(1)}: Значение не является значением объектного типа (Следующий)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
94. dj_serega 392 19.05.15 17:50 Сейчас в теме
(91) Emiliya_Emili, Потому что нужно внимательно перечитать (44). Понять код. Как там открывается форма. И что делается после ее закрытия. Ниже я уточнял.
95. Emiliya_Emili 19.05.15 18:04 Сейчас в теме
(94) dj_serega, вы про этот код?

&НаКлиенте
Процедура ПланировщикПередСозданиемЗавершение(Результат, ДополнительныеПараметры) Экспорт
    
    Если Результат = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    // Тут выполняется обновление текущего элемента расписания
    СоздатьЗаписьЭлементаПлана(ДополнительныеПараметры.Врач, ДополнительныеПараметры.Начало, ДополнительныеПараметры.Конец - 1, Результат);
    
КонецПроцедуры
Показать


СоздатьЗаписьЭлементаПлана - что это такое?
96. dj_serega 392 19.05.15 18:12 Сейчас в теме
(95) Emiliya_Emili, это уже спрашивали в (56).
Вам нужно в "ПланировщикПередСозданиемЗавершение" найти текущий элемент планировщика и в нем изменить даты.
97. Emiliya_Emili 19.05.15 19:01 Сейчас в теме
(96) dj_serega, а можете подсказать как соотнести с моей базой
&НаКлиенте
Процедура ПланировщикПередСозданиемЗавершение(Результат, ДополнительныеПараметры) Экспорт
    
    Если Результат = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    // Тут выполняется обновление текущего элемента расписания
    СоздатьЗаписьЭлементаПлана(ДополнительныеПараметры.Оборудование, ДополнительныеПараметры.Начало, ДополнительныеПараметры.Конец - 1, Результат);
КонецПроцедуры

Процедура СоздатьЗаписьЭлементаПлана(Оборудование, Начало, Конец, Результат)
	ЭлементыПланировщика = ДокументРасписание.Элементы;
    
    // Связка записей с измерениями выполняется через соответствия
    СоответствиеЗначений = Новый Соответствие;
    СоответствиеЗначений.Вставить("Оборудование",    Оборудование);
    
    // Добавление новой записи в промежуток времени
    НовыйЭлемент = ЭлементыПланировщика.Добавить(Начало, Конец);
    НовыйЭлемент.ЗначенияИзмерений    = Новый ФиксированноеСоответствие(СоответствиеЗначений);
    НовыйЭлемент.Текст                = Результат;
КонецПроцедуры
Показать
100. dj_serega 392 20.05.15 10:13 Сейчас в теме
(97) Emiliya_Emili, Вы знаете что такое "Модальное окно"?
(98) Emiliya_Emili, Тот же который вызывается при смене даты и при открытии.
101. Emiliya_Emili 20.05.15 10:54 Сейчас в теме
(100) dj_serega, можете подсказать что мне еще надо сделать с кодом чтобы сразу открывался документ, а не форма редактирования
&НаКлиенте
Процедура ДокументРасписаниеВыбор(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	МассивВыделенныхЭлементов = Элементы.ДокументРасписание.ВыделенныеЭлементы;
	Если Не МассивВыделенныхЭлементов.Количество() Тогда
	    Возврат;
	КонецЕсли;
	ВыделенныйЭлементПланировщика = МассивВыделенныхЭлементов[0];    

	ОткрытьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДокумента", Новый Структура("Ключ", ВыделенныйЭлементПланировщика)); 
КонецПроцедуры
Показать
103. dj_serega 392 20.05.15 11:00 Сейчас в теме
(101) Emiliya_Emili, Документ новый?
104. Emiliya_Emili 20.05.15 11:21 Сейчас в теме
(103) dj_serega, нет мне нужно для просмотра или редактирования уже существующего документа, открывать форму документа
106. dj_serega 392 20.05.15 11:36 Сейчас в теме
(104) Emiliya_Emili, При наполнении элементов планировщика, я Вас просил в значение добавлять ссылку на документ. Сделали?
108. Emiliya_Emili 20.05.15 11:39 Сейчас в теме
(106) dj_serega, а как мне ссылаться на него на клиенте?
109. dj_serega 392 20.05.15 11:50 Сейчас в теме
(108) Emiliya_Emili, У Вас в "ВыделенныйЭлементПланировщика = МассивВыделенныхЭлементов[0];" хранятся периоды и другие параметры текущего элемента. Там и есть ссылка на документ (если он был заполнен при наполнении).
Скорее всего так:
ТекущийДокумент = ВыделенныйЭлементПланировщика.Значение;
ОткрытьФорму("...", Новый Структура("Ключ", ТекущийДокумент), ЭтаФорма,,,,
					Новый ОписаниеОповещения("ПланировщикПередСозданиемЗавершение", ЭтотОбъект, ВыделенныйЭлементПланировщика), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);


Потому в процедуре ПланировщикПередСозданиемЗавершение в параметре "ДополнительныеПараметры" у нас есть текуший элемент планировщика "ВыделенныйЭлементПланировщика".
Там мы получаем текущий документ. Читаем его реквизиты (начало, конец и тд) и изменяем элемент на форме.
ВыделенныйЭлементПланировщика.Начало =....;
ВыделенныйЭлементПланировщика.Конец = ....,;
110. Emiliya_Emili 20.05.15 12:36 Сейчас в теме
(109) dj_serega, вот что получается
&НаКлиенте
Процедура ДокументРасписаниеВыбор(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	МассивВыделенныхЭлементов = Элементы.ДокументРасписание.ВыделенныеЭлементы;
	Если Не МассивВыделенныхЭлементов.Количество() Тогда
	    Возврат;
	КонецЕсли;
	ВыделенныйЭлементПланировщика = МассивВыделенныхЭлементов[0]; 

	ТекущийДокумент = ВыделенныйЭлементПланировщика.Значение;
	ОткрытьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДокумента", Новый Структура("Ключ", ТекущийДокумент), ЭтаФорма,,,,
                    Новый ОписаниеОповещения("ПланировщикПередСозданиемЗавершение", ЭтотОбъект, ВыделенныйЭлементПланировщика));

КонецПроцедуры
Показать
111. dj_serega 392 20.05.15 12:40 Сейчас в теме
(110) Emiliya_Emili, "ТекущийДокумент " какой тип имеет? Какое там значение?
После закрытия формы документа будет вызвана процедура "ПланировщикПередСозданиемЗавершение"
112. Emiliya_Emili 20.05.15 12:52 Сейчас в теме
(111) dj_serega, он у меня на этой части кода останавливается и дальше не идет, ав когда пытаюсь выбрать то он открывает стандартную обработку
он не определяет параметр результат в строке
ПланировщикПередСозданиемЗавершение(Результат, ДополнительныеПараметры) Экспорт


что он должен содержать?
113. dj_serega 392 20.05.15 13:02 Сейчас в теме
(112) Emiliya_Emili, Процедура есть такая?
114. Emiliya_Emili 20.05.15 13:03 Сейчас в теме
(113) dj_serega, что в этой процедуре должен передавать параметр результат?

&НаКлиенте
Процедура ПланировщикПередСозданиемЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;

СоздатьЗаписьЭлементаПлана(ДополнительныеПараметры.Оборудование, ДополнительныеПараметры.ДатаНачала, ДополнительныеПараметры.ДатаОкончания, Результат);
КонецПроцедуры
115. dj_serega 392 20.05.15 13:18 Сейчас в теме
(114) Emiliya_Emili, Читаем справку. Там написано следующее:
<ОписаниеОповещенияОЗакрытии> (необязательный)

Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после закрытия формы со следующими параметрами:
<РезультатЗакрытия> - значение, переданное при вызове метода Закрыть открываемой формы,
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан, то по завершению никакая процедура вызвана не будет.
Игнорируется на мобильной платформе.
116. Emiliya_Emili 20.05.15 13:24 Сейчас в теме
(115) dj_serega, то есть параметр Результат это ЭтотОбъект, а доп параметры это СтруктураОповещения?

при отладке ЭтотОбъект - управляемая форма, а в результат не передается?

&НаКлиенте
Процедура ДокументРасписаниеПередСозданием(Элемент, Начало, Конец, Значения, Текст, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	
	СтруктураОповещения = Новый Структура;
    СтруктураОповещения.Вставить("Оборудование",    Значения.Получить("Оборудование"));
    СтруктураОповещения.Вставить("ДатаНачала",    Начало);
    СтруктураОповещения.Вставить("ДатаОкончания",    Конец);
	
	 
	ОткрытьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДокумента",СтруктураОповещения, ЭтаФорма,,,,
			  Новый ОписаниеОповещения("ПланировщикПередСозданиемЗавершение", ЭтотОбъект, СтруктураОповещения),); 
КонецПроцедуры
&НаКлиенте
Процедура ПланировщикПередСозданиемЗавершение(Результат, ДополнительныеПараметры) Экспорт
	Если Результат = Неопределено Тогда
	    Возврат;
	КонецЕсли;
    
    СоздатьЗаписьЭлементаПлана(ДополнительныеПараметры.Оборудование, ДополнительныеПараметры.ДатаНачала, ДополнительныеПараметры.ДатаОкончания, Результат);
КонецПроцедуры
Показать
117. dj_serega 392 20.05.15 14:06 Сейчас в теме
(116) Emiliya_Emili, Для того что бы в результате был документ нужно в форме документа создать кнопку "Провести и вернуть результат". Где пишете:
Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
Закрыть(Объект.Ссылка);

После закрытия формы созданного документа в параметре "Результат" будет ссылка на новый документ.
118. Emiliya_Emili 20.05.15 14:19 Сейчас в теме
(117) dj_serega, а можно как-то сделать без кнопок?
119. dj_serega 392 20.05.15 14:24 Сейчас в теме
(118) Emiliya_Emili, Можно.
Процедура ПланировщикПередСозданиемЗавершение
    УстановитьЭлементыПланировщика();
КонецПроцедуры
98. Emiliya_Emili 19.05.15 19:48 Сейчас в теме
(96) dj_serega, я уже не знаю что еще добавить чтобы заработало, есть способ который просто сформирует отчет заново?
99. Emiliya_Emili 19.05.15 20:25 Сейчас в теме
можете помочь с датами? нужно чтобы планировщик при первом запуске отображал текущую дату, а при изменении даты в реквизите отображал сведения на выбранную дату
102. ture 606 20.05.15 10:59 Сейчас в теме
(99)С добрым утром.

есть функция ТекущаяДата()
105. Emiliya_Emili 20.05.15 11:28 Сейчас в теме
(102) ture, у меня уже стоит дата проблема не во том что не выводит сведения, он не корректно их отражает

на картинке выбрано 20 число, а планировщик отображает 12 число (мне надо чтобы отображалось 20)
Прикрепленные файлы:
107. dj_serega 392 20.05.15 11:38 Сейчас в теме
(105) Emiliya_Emili, Нужно вызвать обновление периода отображения.
	Планировщик.НачалоПериодаОтображения	= НачалоПериода;
	Планировщик.КонецПериодаОтображения		= КонецПериода;
	Планировщик.ТекущиеПериодыОтображения.Очистить();
	Планировщик.ТекущиеПериодыОтображения.Добавить(Планировщик.НачалоПериодаОтображения, Планировщик.КонецПериодаОтображения);
Emiliya_Emili; +1 Ответить
Оставьте свое сообщение

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