|
|
|
Помогите с расписанием регл | ☑ | ||
|---|---|---|---|---|
|
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>. Как в обработку можно эту строку передать туда и считать ее так, как расписание, чтобы потом в определенном периоде по этому расписанию создались документы?
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |