![]() |
|
Помогите с расписанием регл | ☑ | ||
---|---|---|---|---|
0
Florist
14.05.25
✎
19:34
|
У меня есть такой код в форме справочника по ТО оборудования, там задается в форме элемента расписание через команду, код который
&НаКлиенте Процедура НастроитьРасписаниеВыполнить() Если ЭтотОбъект.Расписание = Неопределено Тогда ЭтотОбъект.Расписание = Новый РасписаниеРегламентногоЗадания(); Иначе Попытка Расписание = Новый РасписаниеРегламентногоЗадания(); Расписание.ИзСтроки(ЭтотОбъект.Расписание); ЭтотОбъект.Расписание = Расписание; Исключение ЭтотОбъект.Расписание = Новый РасписаниеРегламентногоЗадания(); КонецПопытки; КонецЕсли; Диалог = Новый ДиалогРасписанияРегламентногоЗадания(ЭтотОбъект.Расписание); Диалог.Показать(Новый ОписаниеОповещения("ОткрытьРасписаниеЗавершение", ЭтотОбъект)); КонецПроцедуры &НаКлиенте Процедура ОткрытьРасписаниеЗавершение(НовоеРасписание, Контекст) Экспорт Если НовоеРасписание = Неопределено Тогда Возврат; КонецЕсли; Объект.Расписание = Строка(НовоеРасписание); КонецПроцедуры Как сделать грамотнее, чтобы сохранять нормально расписание и в строку и при этом куда-то еще чтобы потом в обработке использовать данные расписания. Также у меня открывается расписание каждый раз с стандартным значением расписания, даже когда расписание уже задано, как это исправить тоже? |
|||
1
Мультук
гуру
14.05.25
✎
20:12
|
(0)
1) Пожалуйста, не пиши код, который не работает Расписание.ИзСтроки(ЭтотОбъект.Расписание); 2) ну например, создадим обработку с реквизитом (см рис) РасписаниеСтрока Строка(0) &НаКлиенте Процедура НастроитьРасписание(Команда) Если ПустаяСтрока(Объект.РасписаниеСтрока) Тогда пРасписание = Новый РасписаниеРегламентногоЗадания(); Иначе пРасписание = ЗначениеИзСтрокиXML(Объект.РасписаниеСтрока); КонецЕсли; Диалог = Новый ДиалогРасписанияРегламентногоЗадания(пРасписание); Диалог.Показать(Новый ОписаниеОповещения("ОткрытьРасписаниеЗавершение", ЭтотОбъект)); КонецПроцедуры &НаКлиенте Процедура ОткрытьРасписаниеЗавершение(НовоеРасписание, Контекст) Экспорт Если НовоеРасписание = Неопределено Тогда Возврат; КонецЕсли; Объект.РасписаниеСтрока = ЗначениеВСтрокуXML(НовоеРасписание); КонецПроцедуры &НаСервереБезКонтекста Функция ЗначениеВСтрокуXML(Значение) Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение); Возврат ЗаписьXML.Закрыть(); КонецФункции &НаСервереБезКонтекста Функция ЗначениеИзСтрокиXML(СтрокаXML) Экспорт ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаXML); Значение=СериализаторXDTO.ПрочитатьXML(ЧтениеXML); Возврат Значение; КонецФункции
|
|||
2
Florist
14.05.25
✎
20:25
|
(1) Да теперь работает намного лучше, понял все, спасибо, получается данный код можно и в форме элемента справочника использовать? Чтобы элементу присвоить расписание
|
|||
3
Мультук
гуру
14.05.25
✎
20:49
|
(2)
Нужно взять и попробовать. |
|||
4
Florist
14.05.25
✎
21:26
|
(3) К сожалению выдает ошибку
Ошибка при вызове метода контекста (ПрочитатьXML) {Справочник.ТехническоеОбслуживание.Форма.ФормаЭлемента.Форма(66)}:Значение = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); {Справочник.ТехническоеОбслуживание.Форма.ФормаЭлемента.Форма(36)}:пРасписание = ЗначениеИзСтрокиXML(Объект.Расписание); [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Ошибка разбора XML: - [1,151] Фатальная ошибка: AttValue: ' expected |
|||
5
Мультук
гуру
14.05.25
✎
22:29
|
(4)
1) Какой тип у Объект.Расписание ? 2) СтрДлина(ЗначениеВСтрокуXML(НовоеРасписание)) точно влазит в Объект.Расписание ? Говорят в 1С есть отладчик. Небось врут (с) |
|||
6
Florist
15.05.25
✎
00:23
|
(5) Тип строка, неограниченная.
|
|||
7
craxx
15.05.25
✎
07:45
|
(6)XML невалидный у тебя, проверяй
|
|||
8
Florist
15.05.25
✎
15:12
|
(5) Можно ли записанные данные потом снова преобразовать в объект расписания?
|
|||
9
Мультук
гуру
15.05.25
✎
15:25
|
(8)
1) Вики "Сериализация", "Десериализация" 2) Что же делает строка ниже ? пРасписание = ЗначениеИзСтрокиXML(Объект.РасписаниеСтрока); Поставь на ней отладчик. О чудо! Эта конструкция из xml-строки делает объект. |
|||
10
Florist
15.05.25
✎
18:58
|
(9) Так хорошо получилось хранить строку <JobSchedule xmlns="http://v8.1c.ru/8.1/data/enterprise" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" BeginDate="0001-01-01" EndDate="0001-01-01" BeginTime="00:00:00" EndTime="00:00:00" CompletionTime="00:00:00" CompletionInterval="0" RepeatPeriodInDay="0" RepeatPause="0" WeekDayInMonth="0" DayInMonth="0" WeeksPeriod="1" DaysRepeatPeriod="3">¶ <WeekDays>1 2 3 4 5 6 7</WeekDays>¶ <Months/>¶</JobSchedule>. Как в обработку можно эту строку передать туда и считать ее так, как расписание, чтобы потом в определенном периоде по этому расписанию создались документы?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |