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

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

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


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


Результат.Следующий() {(1)}: Значение не является значением объектного типа (Следующий)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
120. karpik666 3778 20.05.15 14:40 Сейчас в теме
(1) Каждая ваша тема на форуме на сотню ответов. Вы лучше бы вначале книжку какую-нибудь по разработке почитали, например Радченко очень хорошо пишет. Я понимаю, что вы скорее всего работаете во франчайзи и у вас сроки, но за эти 3 дня, когда вы ждали, что за вас смогут решить другие люди, можно было изучить довольно много материала по теме. Капец, что это за франчайзи, если на доработки клиенту ставят человека, который мало знаком с кодингом?
121. Emiliya_Emili 20.05.15 14:43 Сейчас в теме
(120) karpik666, во-первых с чего вы взяли что я работаю где-то? я вообще-то еще студентка, это раз
и два Радченко я читала, но что то не видела там и слова про планировщик
122. dj_serega 392 20.05.15 14:47 Сейчас в теме
(121) Emiliya_Emili,
но что то не видела там и слова про планировщик

Планировщик это новый объект. А у Вас вопросы по кодингу в целом (логика, принципы и тд).
Я планировщик изучал без книжки. СП (Синтакс-помощник) и отладка.
123. karpik666 3778 20.05.15 15:21 Сейчас в теме
(121) Emiliya_Emili, про франчайзи я решил, что только они бросают молодых-неопытных на такую работу. Если студентка, то должно быть достаточно времени на изучение теории. Как правильно заметили в (122) нужно подтянуть базу, тогда изучение новых объектов не составит труда. Я например тоже не знаю как работает планировщик и не вижу в этом большой проблемы, так как есть синтакс помощник. Но у вас вопросы по части почему выборка возвращает неопределенно и почему реквизиту ссылки нельзя напрямую присвоить значение, а планировщик лишь в последнюю очередь. Здесь на лицо не знание именно основ, если здание построено на плохом фундаменте, то оно долго не простоит. На форуме принято разъяснять какие то спорные моменты и давать направление куда и что делать, но не делать за человека его работу.
nihfalck; dj_serega; ture; +3 Ответить
124. ture 606 20.05.15 18:02 Сейчас в теме
(123) Что это франчайзинг мне не приходило в голову. Т.е. это значит 50$ в час? первый час сдаем в офис, а остальное в карман?!
А вот мой любимый вопрос с наивным видом - "А вам документы нужны?"

Все там были... странно, что люди им платят. Хотя я только обновлять ходил в основном платежку да конфиг.
karpik666; +1 Ответить
125. fzt 03.06.15 16:35 Сейчас в теме
(124) ture, 50$ что-то дороговато.
Хотя если вравнивать с ценами на куртизанок...
126. ture 606 03.06.15 22:30 Сейчас в теме
(125) fzt, Пиши мыло вышлю за так.
2. spezc 782 17.05.15 10:14 Сейчас в теме
отладчик что говорит? что сидит в Результат и что возвращает Запрос.Выполнить().Выбрать()
3. Emiliya_Emili 17.05.15 10:23 Сейчас в теме
(2) spezc, это и пишет

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

Результат Неопределенно

Результат.Следующий() {(1)}: Значение не является значением объектного типа (Следующий)
4. spezc 782 17.05.15 10:26 Сейчас в теме
а Запрос.Выполнить() что возвращает?
5. ture 606 17.05.15 10:31 Сейчас в теме
Ссылки нет среди полей запроса
6. ture 606 17.05.15 10:32 Сейчас в теме
В конструкторе запрос откройте
7. ture 606 17.05.15 10:34 Сейчас в теме
А потом из конструкторе получите рабочий вариант, но ссылки нет , а она поводу ниже используется
8. ture 606 17.05.15 10:35 Сейчас в теме
Больше не вижу замечаний пока
11. Emiliya_Emili 17.05.15 13:12 Сейчас в теме
(8) ture, исправила но все равно выдает ошибку

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



{(1)}: Значение не является значением объектного типа (Оборудование)

Запрос.Выполнить().Колонки.Ссылка.ТипЗначения Оборудование, Null ОписаниеТипов
12. ture 606 17.05.15 13:31 Сейчас в теме
(11) по коду ошибок не вижу.
Запрос должен работать в консоле запросов

Если есть ошибка, то не в этом коде
13. Emiliya_Emili 17.05.15 13:35 Сейчас в теме
(12) ture, а где тогда? я уже не знаю где искать проблему
9. ture 606 17.05.15 10:37 Сейчас в теме
Надо писать сразу результат.начало, т.к. В выборке есть такое поле уже
10. ture 606 17.05.15 10:38 Сейчас в теме
Результат.оборудование и т.п.
14. seermak 665 17.05.15 16:18 Сейчас в теме
Если =СоответствиеЗначений.Вставить("Оборудование", Результат.Оборудование.Наименование);= оборудование это ссылка, уберите реквизит "Наименование"

после Пока Результат.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(Результат.Оборудование) Тогда
Продолжить;
КонецЕсли; //проверка оборудования на Null

Наталья, Вы весь форум загрузили..... Диплом всем скопом получать будем однако.....
15. Emiliya_Emili 18.05.15 10:07 Сейчас в теме
(14) seermak, эта ошибка меня уже достала


Результат.Оборудование {(1)}: Значение не является значением объектного типа (Оборудование)


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

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

&НаСервере
Функция УстановитьЭлементыПланировщика1()
	
	ДатаНач = НачалоДня(ТекущаяДата());
	ДатаКон = КонецДня(ТекущаяДата());
	Если Заметки.ТекущиеПериодыОтображения.Количество() > 0 Тогда
		Начало = Заметки.ТекущиеПериодыОтображения[0].Начало;
		Конец = Заметки.ТекущиеПериодыОтображения[0].Конец;
	КонецЕсли; 
	ВыборкаЭлементов = ПолучитьМассивЭлементовПланировщика1(Начало, Конец);
	Пока ВыборкаЭлементов.Следующий() Цикл
		Если Заметки.Элементы.Найти(ВыборкаЭлементов.Ссылка) = Неопределено Тогда
			Элемент = Заметки.Элементы.Добавить(ВыборкаЭлементов.Начало, ВыборкаЭлементов.Конец);
			Элемент.Текст = ВыборкаЭлементов.Текст;
			Элемент.Значение = ВыборкаЭлементов.Ссылка;
		КонецЕсли; 
	КонецЦикла; 
КонецФункции
Показать
16. dj_serega 392 18.05.15 10:29 Сейчас в теме
(15) Emiliya_Emili, В приложенном коде нет строки "Результат.Оборудование".
17. Emiliya_Emili 18.05.15 10:33 Сейчас в теме
(16) dj_serega, я показала код не как не относящийся к расписанию просто у меня есть заметки, и там используется выше изложенный код, я кинула как есть

и кидаю картинку ошибок
Прикрепленные файлы:
18. dj_serega 392 18.05.15 10:52 Сейчас в теме
(17) Emiliya_Emili, У Вас есть колонка "ссылка" а не "оборудование"
19. Emiliya_Emili 18.05.15 11:02 Сейчас в теме
(18) dj_serega, и что это значит? и может не ссылка а регистратор?
20. dj_serega 392 18.05.15 11:09 Сейчас в теме
(19) Emiliya_Emili, Текст запроса приложите
23. Emiliya_Emili 18.05.15 11:28 Сейчас в теме
(20) dj_serega, вот то что написано сейчас

ЭлементыПланировщика = ДокументРасписание.Элементы;
	ЭлементыПланировщика.Очистить();
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЗаписьНаЗанятия.Оборудование,
		|	ЗаписьНаЗанятия.ДатаНачала КАК Начало,
		|	ЗаписьНаЗанятия.ДатаОкончания КАК Конец,
		|	ЗаписьНаЗанятия.Клиент КАК Наименование,
		|	ЗаписьНаЗанятия.Регистратор
		|ИЗ
		|	РегистрСведений.ЗаписьНаЗанятия КАК ЗаписьНаЗанятия
		|ГДЕ
		|	ЗаписьНаЗанятия.ДатаНачала >= &ДатаНачала
		|	И ЗаписьНаЗанятия.ДатаОкончания <= &ДатаОкончания";
		
	Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ВыборДаты));
	Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ВыборДаты));
	Результат = Запрос.Выполнить().Выбрать();
		
	Пока Результат.Следующий() Цикл
		Если НЕ ЗначениеЗаполнено(Результат.Оборудование) Тогда
			Продолжить;
		КонецЕсли; //проверка оборудования на Null 
		
		СоответствиеЗначений = Новый Соответствие;
		СоответствиеЗначений.Вставить("Оборудование",   Результат.Оборудование);
		
		НовыйЭлемент = ЭлементыПланировщика.Добавить(Результат.Начало, Результат.Конец);
		НовыйЭлемент.ЗначенияИзмерений	= Новый ФиксированноеСоответствие(СоответствиеЗначений);
		НовыйЭлемент.Текст	= Результат.Наименование;
	КонецЦикла;
Показать
24. dj_serega 392 18.05.15 11:46 Сейчас в теме
(23) Emiliya_Emili, на какой строке ошибка?
25. Emiliya_Emili 18.05.15 11:53 Сейчас в теме
(24) dj_serega, Результат = Запрос.Выполнить().Выбрать();
Результат Неопределенно
Запрос.Выполнить().Выбрать(); Значение не является значением объектного типа

и дальше так в отношении всего кода
26. dosmd 18.05.15 12:00 Сейчас в теме
(25) Emiliya_Emili,
А можно скрин этого регистра в конфигураторе с типом этого Измерения?
27. Emiliya_Emili 18.05.15 12:09 Сейчас в теме
(26) dosmd, вот скин и код всей процедуры
ВыборДаты=ТекущаяДата();
	
	ИзмеренияПланировщика   = ДокументРасписание.Измерения;
    ИзмеренияПланировщика.Очистить();

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Оборудование.Ссылка
		|ИЗ
		|	Справочник.Оборудование КАК Оборудование";
	
	РезультатЗапроса = Запрос.ВыполнитьПакет();
	ВыборкаОборудование = РезультатЗапроса[0].Выбрать();
	
    ИзмерениеОборудование = ИзмеренияПланировщика.Добавить("Оборудование");
    Пока ВыборкаОборудование.Следующий() Цикл
        НовыйОбор = ИзмерениеОборудование.Элементы.Добавить(ВыборкаОборудование.Ссылка);
        НовыйОбор.Текст = ВыборкаОборудование.Ссылка.Наименование;
    КонецЦикла;

	
	ЭлементыПланировщика = ДокументРасписание.Элементы;
	ЭлементыПланировщика.Очистить();
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЗаписьНаЗанятия.Оборудование,
		|	ЗаписьНаЗанятия.ДатаНачала КАК Начало,
		|	ЗаписьНаЗанятия.ДатаОкончания КАК Конец,
		|	ЗаписьНаЗанятия.Клиент КАК Наименование,
		|	ЗаписьНаЗанятия.Регистратор
		|ИЗ
		|	РегистрСведений.ЗаписьНаЗанятия КАК ЗаписьНаЗанятия
		|ГДЕ
		|	ЗаписьНаЗанятия.ДатаНачала >= &ДатаНачала
		|	И ЗаписьНаЗанятия.ДатаОкончания <= &ДатаОкончания";
		
	Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ВыборДаты));
	Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ВыборДаты));
	Результат = Запрос.Выполнить().Выбрать();
		
	Пока Результат.Следующий() Цикл
		Если НЕ ЗначениеЗаполнено(Результат.Оборудование) Тогда
			Продолжить;
		КонецЕсли; //проверка оборудования на Null 
		
		СоответствиеЗначений = Новый Соответствие;
		СоответствиеЗначений.Вставить("Оборудование",   Результат.Оборудование);
		
		НовыйЭлемент = ЭлементыПланировщика.Добавить(Результат.Начало, Результат.Конец);
		НовыйЭлемент.ЗначенияИзмерений	= Новый ФиксированноеСоответствие(СоответствиеЗначений);
		НовыйЭлемент.Текст	= Результат.Наименование;
	КонецЦикла;
Показать
Прикрепленные файлы:
21. ture 606 18.05.15 11:11 Сейчас в теме
(19) регистратор - это у регистра реквизит. 1С хорошо воспринимается, когда представляешь, как по таблицам 1С распихивает свои названия.
22. ditp 91 18.05.15 11:13 Сейчас в теме
(19) Emiliya_Emili,
Это означает, что поле в запросе называется "Ссылка", а не "Оборудование".
В качестве решения можно написать, например, так:
ВЫБРАТЬ
    Заметки.Ссылка КАК Оборудование,
...
28. dosmd 18.05.15 12:24 Сейчас в теме
Попробуйте переименовать второй запрос например в Запрос1.
29. Emiliya_Emili 18.05.15 12:38 Сейчас в теме
(28) dosmd, вот что получилось
Результат.Следующий() Ложь Булево
31. dosmd 18.05.15 12:51 Сейчас в теме
(29) Emiliya_Emili, Вам кстати обязательно в первом запросе использовать ВыполнитьПакет()? Мне кажется это из-за этого метода, во втором запросе получался результат Неопределено. Скорее всего создавалась временная таблица которая во втором запросе автоматом очищалась. А при очистки временной таблице такой запрос будет возвращать в качестве результата Неопределенно.
30. dosmd 18.05.15 12:44 Сейчас в теме
Значит запрос уже отработал. В регистре за выбираемый период точно есть данные?
32. Emiliya_Emili 18.05.15 12:52 Сейчас в теме
(30) dosmd, создала новый документ посещения вывел истина
33. dosmd 18.05.15 12:53 Сейчас в теме
(32) Emiliya_Emili, Все работает корректно дальше обрабатывайте результат запроса как вам необходимо.
34. Emiliya_Emili 18.05.15 13:00 Сейчас в теме
(33) dosmd, все работает он вывел данные спасибо
не могли бы подсказать как сделать так чтобы при создании документа записи на занятие он заполнял некоторые поля сам (дату время и оборудование)

1 . текущей датой
2 . дата и время (дата начала и окончания) это число на которое записывается человек, и оборудование это оборудование на которое собственно записывается человек

и еще одна проблема: когда я выбираю на календаре дату ничего не происходит хотя должна меняться дата отображения планировщика (отображаться график на выбранный день)
Прикрепленные файлы:
36. dosmd 18.05.15 13:06 Сейчас в теме
(34) Emiliya_Emili, все что касается заполнения интерфейса лучше всего делать в процедуре модуля формы ПриОткрытии(). Для полей с датой у вас имеются отдельные процедуры ПриИзменении?
35. ditp 91 18.05.15 13:05 Сейчас в теме
при создании документа записи на занятие он заполнял некоторые поля сам

см. Процедуру ОбработкаЗаполнения (в модуле объекта) либо ПрисОзданииНаСервере (в модуле формы)

когда я выбираю на календаре дату ничего не происходит

А обработчик ПриИзменении описан?
37. Emiliya_Emili 18.05.15 13:09 Сейчас в теме
(35) ditp, при изменении даты у меня запускается процедура УстановитьЭлементыПланировщика

(36) dosmd, нет процедур для заполнения нет
38. dosmd 18.05.15 13:18 Сейчас в теме
(37) Emiliya_Emili, можете показать код вызова этой процедуры?
39. Emiliya_Emili 18.05.15 13:23 Сейчас в теме
(38) dosmd,
&НаКлиенте
Процедура ВыборДатыПриИзменении(Элемент)
УстановитьЭлементыПланировщика();
КонецПроцедуры
40. dosmd 18.05.15 13:28 Сейчас в теме
(39) Emiliya_Emili, данная процедура указана для всех полей типа Дата?
41. Emiliya_Emili 18.05.15 13:41 Сейчас в теме
(40) dosmd, у меня всего одно поле для выбора даты
42. dj_serega 392 18.05.15 14:03 Сейчас в теме
Можете сформировать текущий список вопросов к планировщику? Не могу понять что сейчас не получается.
43. Emiliya_Emili 18.05.15 14:09 Сейчас в теме
(42) dj_serega,
1) Заполнение полей автоматически при создании нового документа (поля: дата начала, дата окончания, оборудование)
2)Обновлять расписание после создания или редактирования документа
3)При выборе даты переключать расписание занятий на выбранную дату
4)При выборе документа в расписании открывать документ, а не стандартные формы
5)Если дата не выбрана отображать текущую дату

Пока это все что мне известно, и по ошибкам в том числе
44. dj_serega 392 18.05.15 14:20 Сейчас в теме
1. Документ создает текущий пользователь?
2. Для перехвата создания документа нужно использовать событие элемента "Планировщик" - "ПередСозданием".
Пример кода:
&НаКлиенте
Процедура ПланировщикПередСозданием(Элемент, Начало, Конец, Значения, Текст, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Врач = Значения.Получить("Врачи");
	
	СтруктураОповещения = Новый Структура;
	СтруктураОповещения.Вставить("Врач",	Врач);
	СтруктураОповещения.Вставить("Начало",	Начало);
	СтруктураОповещения.Вставить("Конец",	Конец);
	
	ОтменаРедактирования = Ложь;
	ПроверитьДоступностьВрача(Начало, Неопределено, Врач, ОтменаРедактирования);
	Если ОтменаРедактирования Тогда
		Возврат;
	КонецЕсли;
	
	ОткрытьФорму("ОбщаяФорма.ФормаСозданияВизита",, ЭтаФорма,,,,
					Новый ОписаниеОповещения("ПланировщикПередСозданиемЗавершение", ЭтотОбъект, СтруктураОповещения), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

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

3. На событие "ПриИзменение" элемента калентаря вешайте код "УстановитьЭлементыПланировщика(); "
4. В значение элемента планировщика через событие "Выбор" нужно отказаться от стандартной обработки и открыть существующий документ.
5. ПриСозданииНаСервере() или ПриОткрытии() пишете "ДатаКалендата (или как там реквизит с календарем называется) = ТекущаяДата()"
45. Emiliya_Emili 18.05.15 14:42 Сейчас в теме
(44) dj_serega,
2.вот что у меня написано в процедуре перед созданием
&НаКлиенте
Процедура ДокументРасписаниеПередСозданием(Элемент, Начало, Конец, Значения, Текст, СтандартнаяОбработка)
	СтандартнаяОбработка =Ложь;
	Форма = ПолучитьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДокумента");
	ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
	ДокументРасписаниеПередСозданиемНаСервере(ДанныеФормы); // Заполняем документ на сервере
	КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
	Форма.Открыть();
КонецПроцедуры

&НаСервере
Процедура ДокументРасписаниеПередСозданиемНаСервере(ДанныеФормы)
	Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ЗаписьНаЗанятия")); // Получаем объект из данных формы ИЛИ
	Док = Документы.ЗаписьНаЗанятия.СоздатьДокумент();


	ЗначениеВДанныеФормы(Док,ДанныеФормы); // 
КонецПроцедуры
Показать



3. На событие "ПриИзменение" элемента калентаря вешайте код "УстановитьЭлементыПланировщика(); "

у меня уже есть но не работает
&НаКлиенте
Процедура ВыборДатыПриИзменении(Элемент)
	УстановитьЭлементыПланировщика();
КонецПроцедуры



4.а как открыть существующий?


5.написано в процедуре перед созданием, не помогает
46. dj_serega 392 18.05.15 14:48 Сейчас в теме
(45) Emiliya_Emili, 2. Не нужно ничего копировать. Существующий документ открывается через ключ
ОткрытьФормы(ИмяФормы, Новый Структура("Ключ", СсылкаНаСуществующийДокумент);
И разберитесь с моим кодом. Он работает на 100%.
В процедуру "ПланировщикПередСозданиемЗавершение" попадаем после закрытия документа. Если там что-то изменилось анализируем в "СоздатьЗаписьЭлементаПлана".
3 и 5 это код с (23)?
4. Написано выше в 2.
47. Emiliya_Emili 18.05.15 15:14 Сейчас в теме
(46) dj_serega, объясните пожалуйста что писать в открытть форму

&НаКлиенте
Процедура ДокументРасписаниеВыбор(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ОткрытьФормы("Документ.ЗаписьНаЗанятия.Форма.ФормаДоекумента", Новый Структура("Ключ", Документы.ЗаписьНаЗанятия.Выбрать())); 
КонецПроцедуры
49. dj_serega 392 18.05.15 15:21 Сейчас в теме
(47) Emiliya_Emili, в коде
      НовыйЭлемент = ЭлементыПланировщика.Добавить(Результат.Начало, Результат.Конец);
        НовыйЭлемент.ЗначенияИзмерений    = Новый ФиксированноеСоответствие(СоответствиеЗначений);
        НовыйЭлемент.Текст    = Результат.Наименование;

добавляем код
НовыйЭлемент.Значение = СсылкаНаДокумент


Потом в ДокументРасписаниеВыбор получаем текущий элемент и смотрим в его значение.
	МассивВыделенныхЭлементов = Элементы.Планировщик.ВыделенныеЭлементы;
	Если Не МассивВыделенныхЭлементов.Количество() Тогда
		Возврат;
	КонецЕсли;
	
	ВыделенныйЭлементПланировщика = МассивВыделенныхЭлементов[0];

Значение элемента передаем через ключ в открытие формы.
53. Emiliya_Emili 18.05.15 15:28 Сейчас в теме
(49) dj_serega, теперь ему не нравится сама процедура открытия формы
{Отчет.РабочийСтол.Форма.ФормаОтчета.Форма(146,2)}: Процедура или функция с указанным именем не определена (ОткрытьФормы)
	<<?>>ОткрытьФормы("Документ.ЗаписьНаЗанятия.Форма.ФормаДоекумента", Новый Структура("Ключ", ВыделенныйЭлементПланировщика));  (Проверка: Тонкий клиент)
55. dj_serega 392 18.05.15 15:33 Сейчас в теме
(53) Emiliya_Emili, Потому что есть "ОткрытьФорму()". на последнюю букву посмотрите.
И не "ВыделенныйЭлементПланировщика" а "ВыделенныйЭлементПланировщика.Значение".

И не просто так копируйте код, а попытайтесь понять его.
58. ditp 91 18.05.15 15:35 Сейчас в теме
(53) Emiliya_Emili,
ОткрытьФорму, а не ОткрытьФормы.

Активней комбинайцией клавиш Ctrl+Space пользуйтесь.
56. Emiliya_Emili 18.05.15 15:33 Сейчас в теме
(46) dj_serega, а это что СоздатьЗаписьЭлементаПлана и на что она ссылается
57. dj_serega 392 18.05.15 15:35 Сейчас в теме
(56) Emiliya_Emili,
ЭлементыПланировщика = Планировщик.Элементы;
	
	// Связка записей с измерениями выполняется через соответствия
	СоответствиеЗначений = Новый Соответствие;
	СоответствиеЗначений.Вставить("Врачи",	Врач);
	
	// Добавление новой записи в промежуток времени
	НовыйЭлемент = ЭлементыПланировщика.Добавить(Начало, Конец);
	НовыйЭлемент.ЗначенияИзмерений	= Новый ФиксированноеСоответствие(СоответствиеЗначений);
	НовыйЭлемент.Текст				= Результат;
	НовыйЭлемент.ЦветТекста			= Новый Цвет(0,0,0);
Показать
59. Emiliya_Emili 18.05.15 15:45 Сейчас в теме
(57) dj_serega, попыталсь с котом попробовать но кроме текущей даты ничего не подставляется

Оборудование = Значения.Получить("Оборудование");

СтруктураОповещения = Новый Структура;
СтруктураОповещения.Вставить("Оборудование", Оборудование);
СтруктураОповещения.Вставить("ДатаНачало", Начало);
СтруктураОповещения.Вставить("ДатаОкончания", Конец);
60. dj_serega 392 18.05.15 15:50 Сейчас в теме
(59) Emiliya_Emili, Что такое "Значения"?
61. Emiliya_Emili 18.05.15 16:01 Сейчас в теме
(60) dj_serega, а это разве не измерения "оборудования"
62. dj_serega 392 18.05.15 16:04 Сейчас в теме
(61) Emiliya_Emili, дайте код который сейчас
63. Emiliya_Emili 18.05.15 16:06 Сейчас в теме
(62) dj_serega, вот то что не работает

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

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

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

&НаКлиенте
Процедура ДокументРасписаниеВыбор(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	МассивВыделенныхЭлементов = Элементы.ДокументРасписание.ВыделенныеЭлементы;
    Если Не МассивВыделенныхЭлементов.Количество() Тогда
        Возврат;
    КонецЕсли;
    ВыделенныйЭлементПланировщика = МассивВыделенныхЭлементов[0];

	ОткрытьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДоекумента", Новый Структура("Ключ", ВыделенныйЭлементПланировщика)); 
КонецПроцедуры
&НаКлиенте
Процедура ВыборДатыПриИзменении(Элемент)
	УстановитьЭлементыПланировщика();
КонецПроцедуры
Показать
65. dj_serega 392 18.05.15 16:40 Сейчас в теме
(63) Emiliya_Emili, Когда у Вас вызывается "ДокументРасписаниеПередСозданием"?
66. Emiliya_Emili 18.05.15 16:48 Сейчас в теме
(65) dj_serega, когда я нажимаю на поле планировщика, после этого открывается документ запись на занятия и в нем должны быть заполнены поля
67. dj_serega 392 18.05.15 17:36 Сейчас в теме
(66) Emiliya_Emili, У меня отрабатывает корректно.
Прикрепленные файлы:
68. Emiliya_Emili 18.05.15 17:56 Сейчас в теме
(67) dj_serega, эта строка это ссылка на измерение?
  Оборудование = Значения.Получить("Оборудование");
69. dj_serega 392 18.05.15 18:02 Сейчас в теме
(68) Emiliya_Emili, если быть точным тогда ЗначенияИзмерений
НовыйЭлемент = ЭлементыПланировщика.Добавить(Начало, Конец);
	НовыйЭлемент.ЗначенияИзмерений	= Новый ФиксированноеСоответствие(СоответствиеЗначений);
70. Emiliya_Emili 18.05.15 18:09 Сейчас в теме
(69) dj_serega, кстати когда я нажимаю точку после Значения
ничего не происходит может в этом дело?


в отладчике пишет
Получить("Оборудование") {(1,1)}: Процедура или функция с указанным именем не определена (Получить)
72. dj_serega 392 18.05.15 18:24 Сейчас в теме
(70) Emiliya_Emili, Какой тип значения переменной "Значения"? Там должно быть ФиксированноеСоответствие. Если там что-то другое значить ошибка в заполнении планировщика.
(71) ture, Там ФиксированноеСоответствие.
Прикрепленные файлы:
73. Emiliya_Emili 18.05.15 18:32 Сейчас в теме
(72) dj_serega, Значения ФиксированноеСоответствие ФиксированноеСоответствие
74. dj_serega 392 18.05.15 20:24 Сейчас в теме
(73) Emiliya_Emili, Ну вот. В нем есть метод "Получить()"
ФиксированноеСоответствие.Получить (FixedMap.Get)
ФиксированноеСоответствие (FixedMap)
Получить (Get)
Синтаксис:

Получить(<Ключ>)
Параметры:

<Ключ> (обязательный)

Тип: Произвольный.
Ключ значения.
Возвращаемое значение:

Тип: Произвольный.
Неопределено - ключ не найден.
Описание:

Получает значение по ключу.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Показать
75. Emiliya_Emili 18.05.15 21:09 Сейчас в теме
(74) dj_serega, ясно
у меня в этой строке не передается параметр
СтруктураОповещения.Вставить("Оборудование", Оборудование);
Оборудование Неопределено


а также не передалось значение в стоке
ОткрытьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДокумента",, ЭтаФорма,,,,
Новый ОписаниеОповещения("ПланировщикПередСозданиемЗавершение", ЭтотОбъект, **СтруктураОповещения**), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
СтруктураОповещения Неопределено
76. Emiliya_Emili 19.05.15 15:49 Сейчас в теме
(74) dj_serega, подскажите, почему все данные нормально получаются а когда открываю документ данных нету, может нужно как-то еще указать куда их добавлять?
77. ture 606 19.05.15 15:52 Сейчас в теме
(76) есть метод ЗначениеВРеквизитФормы. Он позволяет передать заполненную таблицу или объект с сервера на клиент
79. Emiliya_Emili 19.05.15 16:20 Сейчас в теме
(77) ture, попробовала но она работает только на сервере, но как мне передать данные в процедуру на сервере?

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

	ДокументРасписаниеПередСозданиемНаСервере();
	
	ОтменаРедактирования = Ложь;	
	Если ОтменаРедактирования Тогда
        Возврат;
    КонецЕсли;
    
    ОткрытьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДокумента");
КонецПроцедуры

&НаСервере
Процедура ДокументРасписаниеПередСозданиемНаСервере()
	ЗначениеВРеквизитФормы(СтруктураОповещения, "Оборудование");	
	ЗначениеВРеквизитФормы(СтруктураОповещения, "ДатаНачало");
	ЗначениеВРеквизитФормы(СтруктураОповещения, "ДатаОкончания");
КонецПроцедуры
Показать
80. dj_serega 392 19.05.15 16:29 Сейчас в теме
(79) Emiliya_Emili, Какой объект пытаетесь открыть? Оборудование?
82. Emiliya_Emili 19.05.15 16:35 Сейчас в теме
(80) dj_serega, я пытаюсь заполнить документ запись на занятия, чтобы при его открытии поля оборудование и дата были заполнены
81. ture 606 19.05.15 16:33 Сейчас в теме
(79)я совсем не это имел в виду. Я даже покраснел.
dj_serega; +1 Ответить
78. dj_serega 392 19.05.15 16:01 Сейчас в теме
(76) Emiliya_Emili, Кодом покажите что куда передаете и что получаете
(77) ture, Насколько я понял то выполняется попытка открытия документа через Новый Структура("Ключ", ссылка)
64. ture 606 18.05.15 16:09 Сейчас в теме
(61) когда Вы начинаете писать идентификатор переменной или функции, то можно воспользоваться комбинацией Ctrl+Пробел и конфигуратор допишет за Вас. Иногда это не работает потому что тип может быть неоднозначен.
48. Emiliya_Emili 18.05.15 15:17 Сейчас в теме
(44) dj_serega,
ПриСозданииНаСервере() или ПриОткрытии() пишете "ДатаКалендата (или как там реквизит с календарем называется) = ТекущаяДата()"



у меня это написано
//////////////СОБЫТИЯ ФОРМЫ////////////////
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	УстановитьЭлементыПланировщика();
	ВыборДаты=ТекущаяДата();
	
	/////////////////ЗАДАЧИ///////////////
	
	ОбновитьЗадачиСервер();
	
	Дата=ТекущаяДата();
	УстановитьЭлементыПланировщика1();
		
	////////////////////////////////////////////////
КонецПроцедуры
Показать



На событие "ПриИзменение" элемента калентаря вешайте код "УстановитьЭлементыПланировщика(); "


&НаКлиенте
Процедура ВыборДатыПриИзменении(Элемент)
	УстановитьЭлементыПланировщика();
КонецПроцедуры


но даже с учетом того что все написано , с датами ничего не работает
51. dj_serega 392 18.05.15 15:22 Сейчас в теме
(48) Emiliya_Emili, а что за "УстановитьЭлементыПланировщика();" и "УстановитьЭлементыПланировщика1()"?
54. Emiliya_Emili 18.05.15 15:31 Сейчас в теме
(51) dj_serega,
&НаСервере
Процедура УстановитьЭлементыПланировщика()
	ВыборДаты=ТекущаяДата();
	
	ИзмеренияПланировщика   = ДокументРасписание.Измерения;
    ИзмеренияПланировщика.Очистить();

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Оборудование.Ссылка
		|ИЗ
		|	Справочник.Оборудование КАК Оборудование";
	
	РезультатЗапроса = Запрос.ВыполнитьПакет();
	ВыборкаОборудование = РезультатЗапроса[0].Выбрать();
	
    ИзмерениеОборудование = ИзмеренияПланировщика.Добавить("Оборудование");
    Пока ВыборкаОборудование.Следующий() Цикл
        НовыйОбор = ИзмерениеОборудование.Элементы.Добавить(ВыборкаОборудование.Ссылка);
        НовыйОбор.Текст = ВыборкаОборудование.Ссылка.Наименование;
    КонецЦикла;

	
	ЭлементыПланировщика = ДокументРасписание.Элементы;
	ЭлементыПланировщика.Очистить();
	
	Запрос1 = Новый Запрос;
	Запрос1.Текст = 
		"ВЫБРАТЬ
		|	ЗаписьНаЗанятия.Оборудование,
		|	ЗаписьНаЗанятия.ДатаНачала КАК Начало,
		|	ЗаписьНаЗанятия.ДатаОкончания КАК Конец,
		|	ЗаписьНаЗанятия.Клиент КАК Наименование,
		|	ЗаписьНаЗанятия.Регистратор
		|ИЗ
		|	РегистрСведений.ЗаписьНаЗанятия КАК ЗаписьНаЗанятия
		|ГДЕ
		|	ЗаписьНаЗанятия.ДатаНачала >= &ДатаНачала
		|	И ЗаписьНаЗанятия.ДатаОкончания <= &ДатаОкончания";
		
	Запрос1.УстановитьПараметр("ДатаНачала", НачалоДня(ВыборДаты));
	Запрос1.УстановитьПараметр("ДатаОкончания", КонецДня(ВыборДаты));
	Результат = Запрос1.Выполнить().Выбрать();
		
	Пока Результат.Следующий() Цикл
		Если НЕ ЗначениеЗаполнено(Результат.Оборудование) Тогда
			Продолжить;
		КонецЕсли; //проверка оборудования на Null 
		
		СоответствиеЗначений = Новый Соответствие;
		СоответствиеЗначений.Вставить("Оборудование",   Результат.Оборудование);
		
		НовыйЭлемент = ЭлементыПланировщика.Добавить(Результат.Начало, Результат.Конец);
		НовыйЭлемент.ЗначенияИзмерений	= Новый ФиксированноеСоответствие(СоответствиеЗначений);
		НовыйЭлемент.Текст	= Результат.Наименование;
		НовыйЭлемент.Значение = Результат.Регистратор;
	КонецЦикла;
КонецПроцедуры
	
Показать
50. Emiliya_Emili 18.05.15 15:21 Сейчас в теме
(44) dj_serega, что значит эта строка в кода?
 ПроверитьДоступностьВрача(Начало, Неопределено, Врач, ОтменаРедактирования);


это какая-та процедура? что она делает?
52. dj_serega 392 18.05.15 15:23 Сейчас в теме
(50) Emiliya_Emili, это у меня идут проверки перетаскивания (нельзя в зависимости от параметров перемещать элементы плана). Можете на эту строку не смотреть.
71. ture 606 18.05.15 18:16 Сейчас в теме
&НаКлиенте

это на сервере можно через точку ходить к свойствам и методам, а на клиенте только по структуре формы через точку
83. ture 606 19.05.15 16:36 Сейчас в теме
ОткрытьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДокумента", СтруктураОповещения);

там в форме на сервере бедет в переменной "параметры".
84. Emiliya_Emili 19.05.15 16:40 Сейчас в теме
(83) ture, а что еще надо дописать? что писать на сервере? сейчас данные не отображается
85. ture 606 19.05.15 16:44 Сейчас в теме
при создание на сервере:
Оборудование=Параметры.Оборудование;
ДатаНачало=Параметры.Оборудование;
ДатаОкончания=Параметры.ДатаОкончания;

переменные будут содержать то, что Вы передавали в форму.
89. Emiliya_Emili 19.05.15 16:53 Сейчас в теме
(85) ture, теперь он пишет что СтруктураОповещения Неопределенно
ОткрытьФорму("Документ.ЗаписьНаЗанятия.Форма.ФормаДокумента", СтруктураОповещения);
86. ture 606 19.05.15 16:45 Сейчас в теме
&НаСервере
Процедура ПриСозданииНаСервере
87. dj_serega 392 19.05.15 16:49 Сейчас в теме
(86) ture, В модуле формы документа ЗаписьНаЗанятия
88. ture 606 19.05.15 16:51 Сейчас в теме
(87) dj_serega, прекрасная тема, без неё форум потерял бы свою неповторимость.
90. Emiliya_Emili 19.05.15 17:01 Сейчас в теме
ну наконец-то заполняет
92. ture 606 19.05.15 17:11 Сейчас в теме
(90)Скажу прямо, как есть, Вы пишите код довольно стройно. Явно прослеживается опытная рука. При этом появляются неожиданные ошибки.
Как вариант это можно объяснить программированием на основе образца, который вы редактируете.
Некоторые пассажи в коде ставят в тупик, т.е. если вы знаете о ТАКОМ, то вот ЭТО уж точно Вам известно.
Отсюда люди теряются и я в том числе.
93. Emiliya_Emili 19.05.15 17:19 Сейчас в теме
(92) ture, ни с чем подобным я никогда не сталкивалась, но реализовать необходимо, поэтому и много ошибок именно в расписании

попробовала так но ничего не меняется
&НаСервере
Процедура ПослеЗаписи(ПараметрыЗаписи)
	Расписание=Отчеты.РабочийСтол.ПолучитьФорму("ФормаОтчета"); 
	Расписание.Открыть();
	Расписание.Обновить();
КонецПроцедуры


возможно ли что все проблемы и с отображением расписания и его обновлением из-за того что у меня не работает дата?
91. Emiliya_Emili 19.05.15 17:07 Сейчас в теме
как мне обновлять расписание автоматически после записи документа нового или отредактированного?
Оставьте свое сообщение

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