|
Обновление обработки ПриОткрытии | ☑ | ||
---|---|---|---|---|
0
Flc
31.07.20
✎
07:24
|
Добрый день.
Задача такая, неонеобходи в событии ПриОткрытии, добавить проверку обработки на актуальность. Обработка находится в справочнике дополнительные печатные формы и обработки. Проверка осуществляется через сравнение версий, реквизит «версия». Делаю так Файл = Новый ДвоичныеДанные("C:\Users\Desktop\ВнешняяОбработка\Загрузка.epf"); ХранилищеФайла = Новый ХранилищеЗначения(Файл); Обработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Загрузка"); Обработка.ПолучитьОбъект(); Обработка.Наименование = "Загрузка V2"; Обработка.ХранилищеОбработки = ХранилищеФайла; Обработка.Записать(); Но видимо, что то делаю не так ( Есть у кого то идеи? Может, кто то уже подобное делал. |
|||
1
Злопчинский
31.07.20
✎
09:18
|
(0) "Но видимо, что то делаю не так"
эээ как бэ логика подсказывает, что "Проверка осуществляется через сравнение версий, реквизит «версия»." - это в твоем коде ГДЕ? |
|||
2
flcy
31.07.20
✎
11:41
|
(1)
Файл = Новый ДвоичныеДанные("C:\Users\Desktop\ВнешняяОбработка\Загрузка.epf"); ФайлВерсий = "C:\Users\Desktop\ВнешняяОбработка\ВерсияОбработки.txt"; ХранилищеФайла = Новый ХранилищеЗначения(Файл); Обработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Загрузка"); Обработка.ПолучитьОбъект(); Обработка.Наименование = "Загрузка V2"; Версия = Новый ЧтениеТекста( ФайлВерсий, КодировкаТекста.UTF8, , , ); Пока Истина Цикл ВерсияФайл = Версия.ПрочитатьСтроку(); Если ВерсияФайл = Неопределено Тогда Прервать; ИначеЕсли Обработка.Версия<>ВерсияФайл Тогда Обработка.ХранилищеОбработки = ХранилищеФайла; Обработка.Записать(); КонецЕсли; КонецЦикла; |
|||
3
ZDenis
31.07.20
✎
11:53
|
(2) Во-первых не надо менять наименование обработки, иначе эта проверка до первой смены версии. Меняй реквизит "версия".
Во-вторых, получать объект надо в переменную. В-третьих в ПриОткрытии пересохранять уже поздно, разве что предупредить что версия изменилась. |
|||
4
flcy
31.07.20
✎
12:17
|
(3) Это всё понятно, даже если я Обработка.Наименование = "Загрузка V2"; в условие добавлю при Обработка.Записать(); выдаёт ошибку Поле объекта недоступно для записи (ХранилищеОбработки). Строчка Обработка.ХранилищеОбработки = ХранилищеФайла;
|
|||
5
Kesim
31.07.20
✎
12:45
|
(4) при открытии - на клиенте - .хранилище
|
|||
6
flcy
31.07.20
✎
12:53
|
(5) Несовсем понял
|
|||
7
Галахад
гуру
31.07.20
✎
13:24
|
Клиент толстый?
|
|||
8
flcy
31.07.20
✎
13:29
|
(7) Да
|
|||
9
Галахад
гуру
31.07.20
✎
13:54
|
(8) При толстом, в обычном приложении должно работать.
|
|||
10
ZDenis
31.07.20
✎
13:58
|
(8) Ты (3) точно внимательно прочитал?
|
|||
11
Галахад
гуру
31.07.20
✎
14:06
|
(10) Не очень. А что там?
|
|||
12
Ёпрст
31.07.20
✎
14:07
|
(2)
вот так напиши и полетит
|
|||
13
Галахад
гуру
31.07.20
✎
14:16
|
(12) О, точно. :-)
|
|||
14
flcy
31.07.20
✎
14:27
|
(12) ПриОткрытииНаСервере(Обработка);
по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Текст: fc9d4aa6-d25f-11ea-8aa3-448a5b83340d |
|||
15
ZDenis
31.07.20
✎
14:31
|
(14) Что за новая процедура затесалась в ветку?
Можешь сразу все козыри раскрыть? В (8) говорилось о толстом клиенте. |
|||
16
flcy
31.07.20
✎
14:46
|
(15) Есть реквизит обработка, он передаёт саму заменяемую обработку, если обойтись перем обработка, то он вываливается с ошибкой Значение не является значением объектного типа (ПолучитьОбъект)
На счет НаСервере, НаКлиенте, это просто событие при открытии |
|||
17
flcy
31.07.20
✎
19:53
|
(15)
&НаСервере Процедура ПриОткрытииНаСервере(Обработка) Файл = Новый ДвоичныеДанные("C:\Users\Users\Documents\Обработки\ОсновнаяОбработка\Обработка.epf"); ФайлВерсий = "C:\Users\Users\Documents\Обработки\ОсновнаяОбработка\ВерсияОбработки.txt"; ХранилищеФайла = Новый ХранилищеЗначения(Файл); Обработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Загрузка V2"); Обработка = Обработка.ПолучитьОбъект(); Версия = Новый ЧтениеТекста( ФайлВерсий, КодировкаТекста.UTF8, , , ); Пока Истина Цикл ВерсияФайл = Версия.ПрочитатьСтроку(); Если ВерсияФайл = Неопределено Тогда Прервать; ИначеЕсли Обработка.Версия<>ВерсияФайл Тогда Обработка.ХранилищеОбработки = ХранилищеФайла; Обработка.Наименование = "Загрузка V2"; Обработка.Версия = "5.0"; Обработка.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии() ПриОткрытииНаСервере(Обработка); КонецПроцедуры Как то так, но ошибка есть( по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Текст: fc9d4aa6-d25f-11ea-8aa3-448a5b83340d |
|||
18
Ёпрст
31.07.20
✎
20:20
|
(15)
&НаСервере Процедура ПриОткрытииНаСервере() ..... &НаКлиенте Процедура ПриОткрытии() ПриОткрытииНаСервере(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |