Имя: Пароль:
1C
1С v8
Поле объекта недоступно для записи
0 vlasabo
 
09.03.17
12:44
Добрый день.
8.3, управляемые формы, самописка.
Одна из обработок периодически при попытке запуска пишет "Поле объекта недоступно для записи".
Захожу в конфигуратор, делаю динамическое обновление - снова всё работает на ближайшие час-два.
Сервер перезагружал.
Не понимаю механику обновления конфигурации (что при этом происходит и из-за чего обработка снова начинает работать).
Подскажите пожалуйста кто с таким сталкивался, либо где почитать про процессы при обновлении доступным языком.
ЗЫ: баг не воспроизводим, падает при разных случаях.
На код отсылки нет, просто текст.
1 Одинесю
 
09.03.17
12:47
Кэш почисти.
2 Любопытная
 
09.03.17
12:47
Ерунда какая-то.
В описании ошибки обычно написано, какое конкретно поле недоступно для записи.
Про "падает при разных случаях" - падает хотя бы в одном и том же месте в коде или тоже в разных?
3 vlasabo
 
09.03.17
12:51
(1) падает у всех, кэш тут не при чем.
Ошибку выдало у одного - я пытаюсь открыть - у меня тоже ошибка.
(2) Я без понятия в каком месте кода падает, нет отсылки к коду.
4 НЕА123
 
09.03.17
12:55
(0) >динамическое обновление
(3) >кэш тут не при чем
как это?
5 vlasabo
 
09.03.17
12:57
(4) Поясни тогда пожалуйста свою мысль? У меня знаний мало, видимо я как-то не так тебя понял
6 vlasabo
 
09.03.17
12:58
Поясню пока я свою: кэш - он для конкретного пользователя, так? А падает у всех почему-то.
После обновления начинает работать, потом опять падает. И так по кругу
7 Мимохожий Однако
 
09.03.17
13:00
(6) Ошибку дословно можешь сообщить? Гадание устраиваешь.
8 Рэйв
 
09.03.17
13:03
(0)Запусти в отладке с остановкой по ошибке.И гоняй пока не поймаешь. Перед тем как тебе сообщить что "Поле объекта недоступно для записи" оно остановится на строке которая вызывает эту ошибку
9 vlasabo
 
09.03.17
13:05
(7) Ошибка дословно в названии и тексте (0).
Ничего кроме этого нет.
Скрин кинуть?
10 vlasabo
 
09.03.17
13:06
(8) спасибО!
11 vlasabo
 
09.03.17
13:19
(8) мда, всё веселее.
Дописал -debug в нужную ветку реестра, а 1с после этого базу не видит и предлагает создать новую.
Убрал - всё снова заработало
12 Рэйв
 
09.03.17
13:22
(11)Значит ветка была не "нужной":-)
13 vlasabo
 
09.03.17
13:26
(12) http://programmist1s.ru/vklyuchenie-otladki-na-servere-1s/
Инструкцию взял отсюда
14 vlasabo
 
09.03.17
13:28
Беглый гуглинг говорит что я дурак:
"Сначала пропустил пробел перед -debug. Что я могу сказать: результат был прекрасным – ни одна база не найдена, предприятие никак не запускалось"
15 1dvd
 
09.03.17
13:32
Динамическим обновлением пользуетесь?
16 Одинесю
 
09.03.17
13:35
(15) "Захожу в конфигуратор, делаю динамическое обновление " в (0)
17 vlasabo
 
09.03.17
13:40
(15) да. Довольно часто приходится
18 Рэйв
 
09.03.17
13:44
(14)Сервер 1с перезапустил после добавления -debug?
19 1dvd
 
09.03.17
13:44
(17) значит сами себе злобные буратины. Чисти кеш и пользаков и на сервере.

И больше никогда не обновляй динамически. Я когда пришел на текущее место, бымший деятель тоже любил быстро обновлять. Я это сразу присёк
20 Dmitrii
 
гуру
09.03.17
13:48
(17) >> Довольно часто приходится

Ерунда всё это. Случаи, когда действительно необходимо срочно и динамически, крайне редки. В 99,99% случаев пользователи вполне могут потерпеть до завтра, когда после ночных регламентов с изгнанием всех сеансов конфа нормально обновится.
21 vlasabo
 
09.03.17
13:50
(18) я службу останавливал. Дописал ключ, потом запустил
22 vlasabo
 
09.03.17
13:52
(19) (20) ребят, конфа-самописка.
Врачи нашли ошибку в своей части - надо устранять. В это время юзеры на кассе продолжают работать.
Я понимаю что всё зло от динамических обновлений, стараюсь минимизировать в последнее время, как-то приучать что апдейты ночью.
Спасибо ОГРОМНОЕ всем за ответы, включил отладку, жду ошибку, параллельно вечерком еще кеш почищу и посмотрим поможет ли.
23 Mankubus
 
09.03.17
13:59
(3) В  ЖР обычно пишется ошибка и в какой строке модуля она появилась
24 vlasabo
 
09.03.17
14:26
(23) не писалась, смотрел.
Выловил я ошибку, происходит при создании таблицы значений на сервере.
Быстренько наваял костыль в виде булева, которое при создании таблицы встаёт в истину, а при её закрытии встаёт в ложь, и перед созданием идёт проверка значения.
хз чем мне это аукнется в дальнейшем, буду думать
25 vlasabo
 
09.03.17
19:08
ЗЫ:
Проблема не решена.
кеш почистил, дописал клеаркеш в строке запуска базы - ошибка при создании таблицы значений  на сервере.
26 vlasabo
 
10.03.17
10:11
Ошибка возникает если некоторое время держать обработку открытой, но не использовать.
При попытке использования всё та же ошибка - ругается на создание таблицы значений на сервере (это самое начало процедуры).
Вчера базу снёс и накатил заново - не помогло.
27 Живой Ископаемый
 
10.03.17
10:15
2(26) Ну так поставь там точку останова, или если это в других сеансах - пиши в ЖР тип твоей таблицы
28 h-sp
 
10.03.17
10:29
(26) ну значит там какие-то процедуры выполняются, которые по времени. Обновление отображения или еще какие-нибудь.
29 vlasabo
 
10.03.17
10:29
ппц какой-то происходит.
Вчера юзерам вычистил кеш.
Всё более-менее работало.
Сегодня у одного из юзеров (с чищеным кешем! и ключем запуска \clearcache) ругается на "процедура не определена".
Эта процедура там была неделю назад последний раз!
Открываю с его компа под собой - у меня всё норм.
Почистил кеш еще раз, заработало опять.
30 vlasabo
 
10.03.17
10:29
(28) обработку я писал, нет там обновления вообще...
31 h-sp
 
10.03.17
10:34
(30) ну, какие-то процедуры ведь есть. То есть жесть у тебя, когда процедуру вызываешь повторно.
32 vlasabo
 
10.03.17
11:14
(31) да
33 catena
 
10.03.17
11:26
Имя таблицы не может нигде использоваться?
34 vlasabo
 
10.03.17
11:56
(33) нет, таблица "Табличка", используется во всем конфиге вообще только в этой обработке
35 Любопытная
 
10.03.17
11:57
Дай обработку посмотреть
36 1dvd
 
10.03.17
12:00
Скорее всего переменная Объект затирается
37 vlasabo
 
10.03.17
12:01
(36) чуть подробнее можно? Как она со временем может затереться?
(35) текстом сюда или как-то можно загрузить?
38 Любопытная
 
10.03.17
12:02
(37) я-диск, дропбокс, можно на электронку скинуть, почта в личке вроде есть
39 1dvd
 
10.03.17
12:07
(37) не со временем, а при первом выполнении кода

Объект = ...
40 vlasabo
 
10.03.17
12:10
(39) при первом выполнении кода всё работает.
Ошибка ловится если постоит без дела обработка минут 10-15 и попробовать снова запустить.
Запуски подряд к ошибке не приводят.
(38) сейчас на мыло отправлю
41 catena
 
10.03.17
12:16
(40)Вот это поведение наводит на мысль о пересечении имен переменных. В течении этих 10-15 минут какая-то нужная переменная переопределяется какой-то другой процедурой.
42 Любопытная
 
10.03.17
12:22
У тебя там форма каждый раз переоткрывается какой-то левой обработкой. Это зачем?
43 vlasabo
 
10.03.17
12:24
(42) программное создание объектов формы же.
Чтоб их каждый раз не удалять и не создавать заново сделал вот так, с переоткрытием
44 vlasabo
 
10.03.17
12:24
(43) элементов формы* я хотел сказать.
В обработку передаются параметры, её задача - вернуть назад эти параметры и закрыться.
45 Любопытная
 
10.03.17
12:29
Где там программное создание элементов?
46 vlasabo
 
10.03.17
12:37
(45) может не так выразился: у меня нет объекта "Табличища", который я могу перетащить на форму.
Он создаётся программно, программно создаётся табличка на форме, в  которую загружаются данные из Табличища
47 h-sp
 
10.03.17
12:40
(46) разные колонки что ли всё время? зачем программно создавать?
48 vlasabo
 
10.03.17
12:42
(47) да, разные.
Предыдущей теме писал.
Обработка строит расписание врачей на день. Сегодня один работает, завтра другой... Колонки разные в итоге.
Сама обработка данные не меняет, передаёт их другой обработке для изменений. Эта форма только собирает данные и выводит их пользователю
49 Любопытная
 
10.03.17
12:45
А, нашла. Ну там вроде ничего криминального.
Но мне лично не нравится эта история с бесконечным переоткрыванием формы, да еще и передавать туда-обратно какие-то параметры, которые, по-моему, не используются при этом.
50 vlasabo
 
10.03.17
12:59
(49) я б схему нарисовал, но сюда не приложишь :)
Передаются два параметра из сетки, которую я прислал, в другую обработку для изменения регистра расписания. Эти параметры - дата и специализация врача.
При изменении даты или специализации нам надо отрисовать актуальную сетку. Я вижу два пути: удалить все элементы формы, которые мы создали программно, удалить все значения переменных, полученные за другую дату\специализацию и создать их заново; или просто взять два параметра, которые нам нужны, отдать их пустой обработке, которая в свою очередь вызовет нужную обработку и передаст их обратно.
Т.о. всё, что нам не нужно при закрытии уничтожится и нет нужды программно это удалять
51 Любопытная
 
10.03.17
13:05
А просто обновить данные формы не получится? Или сетка может измениться так сильно, что колонки не совпадут?
52 vlasabo
 
10.03.17
13:07
(51) увы, может: добавили кому-то процедуру, кого в расписании не было - вот и не совпадут в итоге.
53 vlasabo
 
10.03.17
13:46
(41) кстати:
открыл тестовую базу, запустил обработку один раз.
Оставил на 15 минут. К тестовой базе был подключен только один клиент.
Через 15 минут - та же ошибка. Не могло оно переопределиться. Никто ничего не делал
54 Живой Ископаемый
 
10.03.17
13:58
Запись в ЖР уже  делаешь? какой тип объекта?
55 vlasabo
 
10.03.17
14:03
(54) {Обработка.Сетка.Форма.Форма.Форма(28)}: Поле объекта недоступно для записи
56 1dvd
 
10.03.17
14:29
(55) ну? и что там в 28-ой строке?
57 vlasabo
 
10.03.17
15:22
(56) то же самое что я говорил выше:
    Табличища = НОВЫЙ ТаблицаЗначений;
58 Любопытная
 
10.03.17
15:45
МассивРеквизитов.Добавить(Новый РеквизитФормы("Табличеще", ОписаниеТипаВыбора, "", "ТЗН"));
59 Любопытная
 
10.03.17
15:45
Ты создаешь на форме реквизит с таким же именем, а потом пытаешься в него создать новую таблицу значений. В этом проблема видимо.
60 h-sp
 
10.03.17
16:00
(57) всё просто, как оказалось
61 h-sp
 
10.03.17
16:01
(58) а Табличища там нет?
62 vlasabo
 
10.03.17
16:24
(59) Сменить имя реквизита формы?
МассивРеквизитов.Добавить(Новый РеквизитФормы("Табличечка", ОписаниеТипаВыбора, "", "ТЗН"));
Так?)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс