Ошибка на процедуре ЗарегистрироватьИзменения #790058


#0 by falselight
Почему возникает ошибка? Вторым параметром я передаю ссылку на справочник. {ВнешняяОбработка.ЗарегистрироватьИзменения.Форма.Форма.Форма}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения)         ПланыОбмена.ЗарегистрироватьИзменения(Узел, ВыборкаСпр.Ссылка); по причине: Недопустимое значение параметра (параметр номер '2')     Для каждого Спр Из Метаданные.Справочники Цикл
#1 by falselight
Также почему ошибка "Получение элемента по индексу для значения не определено" ?
#2 by AneJIbcuH
Для каждого Спр Из Метаданные.Справочники Цикл
#3 by AneJIbcuH
И вообще какая задача? Зачем метаданные справочников перебираешь, а внутри получаешь значения справочников?
#4 by falselight
Мне нужен 1 элемент справочника, зачем все? И ошибка идет на этой строке но тут же все верно! Получаю справочник по имени. А мне пишется ошибка "Получение элемента по индексу для значения не определено" !!! Смотрю в отладчике там все верно!
#5 by falselight
я выбираю элемент каждого справочника и делаю его доступным для обмена.
#6 by falselight
почему ошибка на строке ?
#7 by 1dvd
ни на клиенте ли ты это делаешь?
#8 by falselight
обычное приложение, обычная форма но в конфигурации есть и обычные и управляемые формы в чем может быть подвох?
#9 by osa1C
Ты отбираешь не известно что из справочника и хочешь что-то получить в результате?
#10 by falselight
ругается вот на этом Справочники[Спр.Имя] получение элемента по индексу не определено, но тут же все верно!!!
#11 by osa1C
Справочники[Спр].Выбрать;
#12 by falselight
по индексу нельзя уже получить, ещё не дошли до выбрать
#13 by falselight
вот пример из синтакс помощника, у меня так же, но по индексу не могу получить справочник (((
#14 by falselight
в отладчике в табло написал Справочники[Спр.Имя] пишут получение элемента по индексу не определено
#15 by osa1C
так ты не индекс передаешь, посмотри в отладчике что за коллекция Метаданные.Справочники. И вообще сделай точно так как в синтаксис помощнике.
#16 by falselight
вот так сработало Метаданные.Справочники[Спр.Имя]
#17 by falselight
сейчас пишет метод, Выбрать не обнаружен ВыборкаСпр = Метаданные.Справочники[Спр.Имя].Выбрать(, , , );
#18 by falselight
Делаю по этому примеру. В документах все работает. В справочниках же никак не получается.
#19 by h-sp
состав плана обмена посмотри. Там все справочники или не все входят?
#20 by falselight
пока вопрос в Да все включены. Обмен всех данных.
#21 by falselight
так я веть точно так же и делаю
#22 by 1dvd
У меня вот так работает      Для каждого Спр Из Метаданные.Справочники Цикл
#23 by falselight
Проблема была в том что у меня на форме был флаг Справочники. И он перекрывал метаданные. Переименовал его во ФлагСправочники и все встало на свои места. Сейчас вопрос в ПланыОбмена.ЗарегистрироватьИзменения(Узел, ВыборкаСпр.Ссылка); То что в .
#24 by falselight
Стою в отладчике на строке Узел - план обмена ссылка ВыборкаСпр.Ссылка - справочник ссылка все же как нужно! Но, по проходу строки выдает ошибку: {ВнешняяОбработка.ЗарегистрироватьИзменения.Форма.Форма.Форма}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения)             ПланыОбмена.ЗарегистрироватьИзменения(Узел, ВыборкаСпр.Ссылка); по причине: Недопустимое значение параметра (параметр номер '2')
#25 by falselight
все как в синтакс помощнике, но почему то параметр 2 не воспринимается ( в нем идет ссылка, все нормально вроде
#26 by 1dvd
ты уверен, что справочник не пустой?
#27 by falselight
Я же стою на точке останова на этой строке передается 1 параметр узел ссылка второй справочник ссылка как пустой?
#28 by 1dvd
Для каждого Спр Из Метаданные.Справочники Цикл
#29 by falselight
Зачем это? Я же смотрю в отладчике что передается, и у меня не воспринимает второй параметр, а в нем передается ссылка на элемент справочника
#30 by falselight
ну согласен, полезная возможно проверка Но в данный момент у меня все нормально с параметрами, а ошибка выдается (
#31 by 1dvd
она у тебя, возможно не на первой итерации валится. Ты же все справочники перебираешь
#32 by Redkiy
Это условие точно выполняется? Из СП: Объект метаданных, соответствующий данным, должен входить в состав всех планов обмена всех узлов, указанных в первом параметре.
#33 by МимохожийОднако
Не жди волшебства. Если ошибка возникает, то ты её еще не нешёл.
#34 by falselight
Открыл обработку регистрация изменений для обмена, выбрал этот узел. В ней же можно это увидеть? На первый взгляд не нашел там этого справочника. А можно как то программно проверять входит ли в состав плана обмена этот объект или нет?
#35 by Lexey_
ставлю на
#36 by falselight
(34+) Если нельзя программно проверять включен объект в план обмена или нет, что бы не было ошибки, поставить тогда Исключение КонецПопытки ?
#37 by falselight
#38 by Redkiy
А в чем смысл перебора объектов метаданных в цикле? Не проще зарегистрировать все объекты одной строкой ПланыОбмена.ЗарегистрироватьИзменения(Узел)?
#39 by МимохожийОднако
Содержит (Contains) Синтаксис: Содержит(<Метаданные>) Параметры: Объект метаданных, наличие которого необходимо проверить в составе плана обмена. Тип параметра - ОбъектМетаданных, описывающий объекты конфигурации, которые могут входит в состав плана обмена (например: ОбъектМетаданных: Справочник, ОбъектМетаданных: Документ и т.д.). Возвращаемое значение: Тип: Булево. Истина - указанный объект входит в состав плана обмена; Ложь - в противном случае. Описание: Определяет, содержит ли состав плана обмена указанный объект метаданных. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
#40 by falselight
Так словесно была поставлена формулировка и я начал делать. То есть не имеет смысла? Если все можно сделать одной строкой на весь узел?
#41 by falselight
Ясно! Спасибо! То есть это проверяет входит ли объект в узел обмена?
#42 by Lexey_
вся твоя тема не имеет смысла, всё можно сделать в обработке "Регистрация изменений для обмена"
#43 by falselight
Пробую пока зависло на этой строке, стоит, и не отвисает... хоть отрабатывает.
#44 by Serg_1960
"пока зависло на этой строке, стоит, и не отвисает..." - СП не читаем из принципиальных соображений? Если это не противоречит твоей религии, процитирую отрывок про второй параметр: "...Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае будет выполнена регистрация изменений для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра."
#45 by falselight
Я попробовал это сделать в же верно все?! Зависло, пришлось сбрасывать процесс.
#46 by МимохожийОднако
Только я один не понял для чего ТС нужны все эти манипуляции?
#47 by falselight
Смысл в том что бы проверить обмен на 1 объекте каждого вида. Ваше предложение же похоже будет перегружать всю базу. Что у меня сейчас и делается похоже (
#48 by falselight
Обмен проверить что бы. Убедиться что он выполняется без ошибок. Уже отказались от обмена по OLE, посыпал ошибками постоянно и каждый раз новыми. Делаю через файловый обмен. Нужно это для проверки обмена на всех включенных в него объектах.
#49 by Lexey_
ответ был дан давным давно
#50 by Lexey_
+
#51 by falselight
подскажите как убрать регистрацию изменений со всех объектов? И долго ли это делать? А то благодаря у меня база висит выгружается. Дождаться выгрузки, когда регистрация изменения сама снимется, или можно сбросить процесс и сделать это принудительно?
#52 by 1dvd
воспользуйся Инструментом разработчика (ИР)
#53 by falselight
Использовал регистрация изменений для обмена обрабюотку
#54 by falselight
а это где взять? ИР
#55 by bodri
Если надо зарегистрировать все элементы справочника, то есть 2 варианта 1. простой: ПланыОбмена.ЗарегистрироватьИзменения(Узел,Метаданные.Справочники[ИмяСправочника]); 2. более сложный запросом вытаскиваем выборку и в цикле по обходу ПланыОбмена.ЗарегистрироватьИзменения(Узел,Выборка.Ссылка);
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С