Ошибка при вызове метода обновитьиндекс

в журнале регистрации вот такая ошибка:

Ошибка выполнения процедуры «Обновление индекса ППД»:

{ОбщийМодуль.ПолнотекстовыйПоискСервер.Модуль(168)}: Ошибка при вызове метода контекста (ОбновитьИндекс)

        ПолнотекстовыйПоиск.ОбновитьИндекс(РазрешитьСлияние, Порциями);

по причине:

Ошибка при выполнении файловой операции  ‘D:Program Files1cv8srvinforeg_15416adc1af4-2585-4065-acfc-f021041ef6521Cv8FTxtdocIdCompTempMain.dat’

Файл существует, последняя дата обновления: октябрь 2014 размер около 32Gb.

Что с этим можно сделать?

в журнале регистрации вот такая ошибка: Ошибка выполнения процедуры «Обновление индекса ППД»: {ОбщийМодуль.ПолнотекстовыйПоискСервер.Модуль}: Ошибка при вызове метода контекста (ОбновитьИндекс)         ПолнотекстовыйПоиск.ОбновитьИндекс(РазрешитьСлияние, Порциями); по причине: Ошибка при выполнении файловой операции  ‘D:Program Files1cv8srvinfo
eg_15416adc1af4-2585-4065-acfc-f021041ef6521Cv8FTxtdocIdCompTempMain.dat’ Файл существует, последняя дата обновления: октябрь 2014 размер около 32Gb. Что с этим можно сделать?

думается, что 32 гига уже усё — баста

Да вот нифига, рядом лежит файл docIdCompTempMain.dat он 56Гб. Так что расти есть куда )))

В общем нужно было нажать в Администрирование — Полнотекстовое индексирование — «Очистить индекс». Потом регламентным заданием он сам перестроился.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

← Вернуться в раздел «Программы»

*** to mrWatson:

Что касается «выгрузки из УНФ 1.5 в 1С:Бухгалтерию предприятия 2.0 реализации покупателям и поступления от поставщиков БЕЗ поступлений на счет и списаний со счета»:

Вы сами сначала попробуйте только галками в УНФ ограничиться, а потом посмотрите на результат и удивитесь, что УНФ плевать хотело, что на поступлении на счет галки не стояло, а оно таки «перелетело» в ПБ. Кстати, 1С мелким шрифтом в инструкции пишет, что при обмене может выгрузить из УНФ в БП дополнительные документы, чтобы не нарушить целостность базы. Правда, даже не уведомляет о том, КАКИЕ именно «довески» полетят в БП вслед за документами, которые пользователь отметил галками в УНФ. — Короче, ацтой полный этот УНФ

Автор: mrWatson
Дата сообщения: 13.02.2015 19:02

Автор: baursak
Дата сообщения: 14.02.2015 23:55

*** to mrWatson

О, боже: неужели это сработает??? — Завтра попробую обязательно. — В любом случае, — спасибо за терпение и соучастие.

Добавлено:
*** to mrWatson

Увы, несмотря на отмену регистраций по банку и кассе в составе отправляемых данных из УНФ, — поступление на счет успешно перелетело в БП 2.0 после того, как в УНФ я создал заказ покупателя, прицепил к нему расходную накладную и поступление на счет.

Ну, не хочет 1С делать нормальный продукт!

Добавлено:
*** to mrWatson

Ура!!! — Сработало!! — Спасибище, добрый человек! — Просто я забыл, что отмену регистраций по банку и кассе надо делать перед КАЖДОЙ выгрузкой из УНФ в БП. — А, может (специально для ленивых), на кнопке «Отменить регистрации» надо просто воспользоваться не подпунктом «Всех объектов выбранных типов», а подпунктом «Объектов выбранных типов с авторегистрацией»… — Завтра попробую . — Сегодня уже спать пора.

Автор: baursak
Дата сообщения: 17.02.2015 19:15

Откликнитесь, плз, кому приходилось удалять косячную настройку синхронизации между УНФ 1.5 (можно и 1.4) и БП 2.0 (это принципиально). — У нас франчи настраивали ее по осени целых 3 дня. — В итоге много чего послетало в элементах справочников Номенклатура, Контрагенты и др., — порядка 2 тыс конфликтов и ошибок. — Видимо начальное сопоставление данных делали халтурно (или не делали совсем). — Теперь уже в XML файлике в папке обмена без бутылки не разобраться. — Есть желание эту косячную настройку снести и настроить все по новой. — Да, вот, только если на стороне УНФ снос проходит «на раз», то в БП 2.0 все совсем не так просто: там у этой настройки около 15 тыс линков на объекты. — Короче, я в тупике, а начальство постепенно раскаляется докрасна: уже середина февраля, а реализация в БП не выгружена.

Автор: mrWatson
Дата сообщения: 18.02.2015 00:44

baursak
А зачем оплачивать косячную работу?

Вы можете откатиться на типовые правила обмена. Либо загрузить имеющиеся правила в конфигурацию «конвертация данных» и продолжить ковырять.

Автор: baursak
Дата сообщения: 18.02.2015 13:29

*** to mrWatson

Правила лежат в конфигурации в папке «Обмен с конфигурацией Управление небольшой фирмой, ред. 1.5» ?

Просто загрузить их на стороне Бухгалтерии предприятия 2.0 и все сбросится? — Можно будет настраивать новый обмен?

Автор: mrWatson
Дата сообщения: 19.02.2015 10:38

baursak
нет, правила в настройках синхронизации задаются
но вам надо сделать бакап источника и приемника а потмо проводить эксперименты

Автор: baursak
Дата сообщения: 19.02.2015 11:21

*** to mrWatson

Бэкапы делаю регулярно. — Опять же эксперименты с этими бекапами делаю вечерами дома, чтобы не мешать остальным работать в рабочее время. — Проблема в том, что ранее сделанные настройки на стороне 1С:Бухгалтерия предприятия (ред. 2.0) похожи на черный ящик: там нигде ничего не поменять, кроме даты (да и ту можно поменять только через внешнюю обработку). — Если уж изменить настройки обмена на стороне 1С:Бухгалтерии предприятия (ред. 2.0) нельзя, то хотя бы их удалить. — Вот, на стороне УНФ 1.5 настройка обмена удаляется в один клик мыши. — А на стороне 1С:Бухгалтерии предприятия (ред. 2.0) — не нашел, где это сделать.
Помогите, кто в курсе. — Готовы даже оплатить сеанс настройки через скайп-тимвьюер.

Автор: Zeratull
Дата сообщения: 19.02.2015 14:50

Найдётся у кого внешняя печатная форма счёт фактуры для нашей конфигурации?

Автор: mrWatson
Дата сообщения: 19.02.2015 17:09

baursak
я вам скидывал гифку как в БП 3.0 добраться к отмене регистрации объектов,
там ж рядом, в том меню есть пункт «загрузить правила конвертации объектов»

Автор: PaVikki
Дата сообщения: 20.02.2015 09:29

После обновления до 1.5.3.33, в поиске контрагентов всплывает «Обновление индекса уже запущено другим пользователем» и поиск не работает.
Как решить проблему?

Автор: axpol
Дата сообщения: 20.02.2015 09:29

Zeratull

А что надо менять в форме счет-фактуры, если понадобилась внешняя форма?

Добавлено:
Вика, а остальной поиск работает? Возможно проблема в сервере, попробуйте его перезагрузить

Добавлено:
Zeratull

Вот по этой видео инструкции написал себе внешнюю печатную форму Товарного чека, вызываемую из Заказа Покупателя https://www.youtube.com/watch?v=Jfy7oJ-qPDY Она как раз по сч фактуре, правда в УТ, но алгоритм действий абсолютно одинаковый для любого управляемого приложения

Автор: PaVikki
Дата сообщения: 20.02.2015 10:07

axpol остальной поиск работает. Только в справочнике контрагенты всплывает ошибка. Да перезагружала уже.
в справке прочитала «Для начала работы с полнотекстовым поиском необходимо включить флажок Полнотекстовый поиск данных. » Для включения и настройки полнотекстового поиска необходимо воспользоваться формой настройки параметров системы в разделе Настройка и администрирование.

а я в настройках не могу этого найти ((

Автор: axpol
Дата сообщения: 20.02.2015 10:19

PaVikki

Настройки — Инструменты Администратора — Прочее. Регламентные и фоновые задания. А уже в открывшейся форме — Обновление индекса ППД. Даже если и стоит что выполнено, попробуйте повторить (кнопка Выполнить Сейчас)

Автор: PaVikki
Дата сообщения: 20.02.2015 10:40

axpol огромное спасибо!! Состояние «задание выполняется» (расписание стоит: каждый день; с 8:00:00 каждые 60 сек.). А может его совсем отключить? или расписание установить 1 раз в неделю. На что это влияет?

Автор: axpol
Дата сообщения: 20.02.2015 10:56

PaVikki

Точного ответа не знаю, но знаю что индексация объектов — важное мероприятие. Например, 1с рекомендует для увеличения скорости работы программы, индексировать всю базу из Конфигуратора. Думаю, не стоит менять расписание. Это глюк, что-то сложилось неудачно Запустите индексацию ППД, дождитесь завершения и посмотрите что будет дальше. Не должно быть проблем.

Автор: PaVikki
Дата сообщения: 20.02.2015 12:42

axpol Благодарю. Прислушаюсь вашего совета.

Автор: axpol
Дата сообщения: 20.02.2015 12:50

PaVikki

Не за что. Так поиск контрагентов заработал?

Автор: s98
Дата сообщения: 24.02.2015 13:21

PaVikki

Цитата:

А может его совсем отключить? или расписание установить 1 раз в неделю. На что это влияет?

Не помню с какой версии 1С начало использовать механизм полнотекстового поиска (ПП) во всех или почти во всех случаях. Раньше индексация ПП выполнялась по нажатию кнопки, теперь по расписанию. Важно: любой документ или его изменения, которые произошли после индексации ПП, поиск не найдет. Если по какой-то причине сам не запустит эту индексацию (процесс небыстрый).

Автор: Kozka
Дата сообщения: 25.02.2015 13:27

Товарищи, добрый день!
Пытаюсь печатать договора из УНФ, только в бланке договоров не заполняются реквизиты организаций автоматом,ни своей, ни покупателя как это можно исправить или дописать?

Добавлено:
Сама себе, отвечаю, нашла в бланке договора кнопку : вставить параметр, я на него внимания не обратила, но вставить можно р/с и адрес и т.п.

Автор: PaVikki
Дата сообщения: 25.02.2015 14:39

axpol s98 Спасибо за пояснения, поиск заработал. Расписание не меняла. Видимо был глюк программы, так как менеджеры сразу после обновления полезли в поиск контрагентов и может база просто «не успела» автоматически обновить индекс.

Автор: axpol
Дата сообщения: 25.02.2015 19:46

Kozka

Да. Договора прямо в программе — это круто (без стеба). Сразу вставил вместо прилагаемых к поставке свои и проблема с перезаключением и заполнением пропала как класс.

И вообще УНФ улучшилась, режим «Такси» значительно удобнее, настроил все менюшки в горизонте — окна огромные, максимум информации, Отлично — почтовые рассылки прямо из программы, наконец-то адреса почты подтягиваются автоматом (одно из первых что сделал себе еще в версии 1.2.4.19) и многое другое. НО. Друзья, подскажите как до разработчиков достучаться, чтобы наконец-то удовлетворили чаяния почти всех пользователей УНФ — автоматическое изменение цены при изменении Характеристик. Т.е. чтобы не заявлять цену товара с характеристикой заранее а выбрать товар (есть цена) выбрать характеристику (цена характеристика плюсанула или минусанула на определенную величину цену товара) выбрал следующую характеристику и т.д. Еще в 2012-м это обсуждали и…….. ни хрена. Приходится вводить в прайсы десятки тысяч (без преувеличения) вариантов товара плюс характеристики. Маразм!!!

Автор: s98
Дата сообщения: 27.02.2015 12:57

PaVikki
Если очень хочется, можно поискать причину.
Журнал регистрации — Отбор: Уровень: Ошибка
И там что-то такое:

Цитата:

Ошибка выполнения процедуры «Обновление индекса ППД»:
{ОбщийМодуль.ПолнотекстовыйПоискСервер.Модуль(168)}: Ошибка при вызове метода контекста (ОбновитьИндекс)
        ПолнотекстовыйПоиск.ОбновитьИндекс(РазрешитьСлияние, Порциями);
по причине:
Задание отменено пользователем

Как можно фоновое задание отменить пользователем — я не знаю )))))))))

Добавлено:
axpol
Я дважды пытался «пересесть на Такси». И возвращался к старому виду. Меня просто бесит уменьшение объема информации, который я вижу на экране. Скажем, в таблице заказов в обычном интерфейсе на 5 см экрана у меня умещается 10 строк, а в Такси только 7.

Может быть размер шрифта и межстрочный интервал где-то можно настраивать, но я не нашел.

Автор: axpol
Дата сообщения: 27.02.2015 16:55

s98

Цитата:

Я дважды пытался «пересесть на Такси». И возвращался к старому виду. Меня просто бесит уменьшение объема информации, который я вижу на экране. Скажем, в таблице заказов в обычном интерфейсе на 5 см экрана у меня умещается 10 строк, а в Такси только 7.

Не настроен правильно режим «такси». По умолчанию Менюшки и слева и сверху и что-то снизу. Увидел как настроен «такси» в онлайн версии УНФ (пробная). Убрал лишнее, расположил меню только сверху, закладки снизу, слева все убрал — места на экране на 25% больше чем у старой версии, реально больше.
Жаль картинку не вставить

Автор: north
Дата сообщения: 27.02.2015 20:12

>Жаль картинку не вставить

Вставка картинки

Автор: axpol
Дата сообщения: 27.02.2015 20:22

north
А где картинка? А рекомендуемый сайт для залива картинки мой сетевой защитник блокирует как ненадежный. Подскажите способы

Автор: niko7
Дата сообщения: 02.03.2015 17:13

УНФ 1.4.9.31 вместо счетов фактур используем универсальный передаточный документ. Обязательно ли создавать в базе документ счет-фактура?

Автор: nebuhgaltersovsem
Дата сообщения: 02.03.2015 20:51

Уважаемые гуру! не один день просматриваю форум, информации очень много для себя нашла, спасибо. Начинаем осваивать УНФ для Беларуси, специалистов мало, офиц.поставщик бесплатно ничего не говорит, только лишь на курсах прошли описание базовых вещей (я то же самое и в справке почитаю). Вот не могу никак сообразить — как внести в УНФ прочий доход?? Банк выплатил нам % за пользование нашими деньгами. Мы же ничего не продали, никакой работы не выполнили… Помогите пожалуйста разобраться!!!

Автор: axpol
Дата сообщения: 03.03.2015 10:28

nebuhgaltersovsem

Ни сколько не бухгалтер, но и УНФ не бухгалтерия. Я бы создал в Номенклатуре Услугу что-то типа «Управление деньгами кредитными организациями» (как назвать не так важно). Расходная Накладная на банк с этой услугой и закрывающее поступление на счет. В УНФ прокатит и взаиморасчеты будут закрыты. Другой вопрос как все это перенести в бухгалтерию. Вот тут нужен совет именно бухгалтера.
PS А ничего так законы в Беларуси, вот бы нам банк платил % за деньги на расчетном счете. ))

Автор: nebuhgaltersovsem
Дата сообщения: 03.03.2015 10:34

axpol Спасибо. Примерно в этом направлении я тоже думала. Хоть звучит это как-то странно — мы банку оказали услугу))) но по логике базы, видимо, так и есть. В БП это не переносим.
P.S. Банк молодой, привлекает клиентов, с банком договор такой заключен, у нас как бы вклад, поэтому %%. Сумма начисляется не смешная, а ооочень смешная, возни только много!! лучше бы без этого((

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101

Предыдущая тема: Касперский 2010


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель — сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.

В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

Довольно часто начинающие 1С разработчики сталкиваются с ошибками, которых достаточно легко избежать. Ниже мы рассмотрим топ 11 ошибок и способы их исправления. Также доступна видеоверсия статьи

Содержание

Поле объекта не обнаружено

1С ошибка Поле объекта не обнаружено

Существует множество статей, которые описывают возможные причины возникновения в 1С ошибки “Поле объекта не обнаружено”. Порой это связывают с обновлением платформы, обновлением типового релиза, или с какими-то другими причинами.

Мы же будем оперировать фактами. В конце статьи прилагается внешняя обработка, в которой воспроизведена данная ошибка.

Такое сообщение платформа выдает, когда пытается обратиться к свойству объекта языка, которого у данного объекта нет. Не важно, что это за объект – документ, справочник, таблица значений , или сообщение пользователю.

  • Удалили табличную часть, к которой обращаемся в коде?
  • Переименовали реквизит, а в коде не исправили?
  • Заменили значение со ссылки на неопределено?

Вуаля – платформа выдаст ошибку “Поле объекта не обнаружено”!

Как исправить? Исходя из природы ошибки – переименовать реквизит на нужное имя, отредактировать код, или использовать правильные обращения к стандартным свойствам объекта.

Например, у объекта “СообщениеПользователю” нет свойства “Таблица”, и следующий код приведет к ошибке:

Сообщение = Новый СообщениеПользователю;
Сообщение.Таблица = “Ошибка”;

Индекс находится за границами массива

1С ошибка Индекс находится за пределами массива

Что означает такое сообщение системы? Как правило, с данной ошибкой разработчик сталкивается при некорректной работе с коллекциями. Самые частые случаи появления ошибки “Индекс находится за границами массива”.

  • Использование при обходе коллекции количества элементов вместо индекса. Индексы начинаются с нуля, а количество элементов – с единицы. Поэтому следующий код гарантированно приведет к ошибке: Массив[Массив.Количество()]
  • Последствия удаления элементов из коллекции, очистки коллекции или замены коллекции на пустую
  • Ошибочное увеличение счетчика в цикле “Для”

 Как исправить? Для удаления элементов из коллекции по условию – использовать обратный цикл. Добавлять условие на соответствие счетчика цикла и индекса массива. Не увеличивать счетчик внутри кода цикла Для … Цикл … КонецЦикла

Обращение к процедуре как к функции

ОШибка

Суть этой ошибки в том, что процедура не может возвращать значение. И если мы в коде используем вызов процедуры справа от знака присваивания, это приведет к ошибке.

Данная ошибка имеет две вариации – если используется стандартная процедура из методов какого-нибудь объекта, то фраза будет звучать “Обращение к процедуре объекта как к функции”. Если же использовать процедуру, объявленную в коде, то текст ошибки будет “Обращение к процедуре как к функции”.
При этом ошибка использования процедуры объекта является ошибкой времени выполнения – т.е. на этапе сохранения и проверки конфигурации платформа эту ошибку не обнаружит.

А вот неправильное использование процедуры синтаксическая проверка (Ctrl + F7) успешно обнаруживает, и не даст сохранить конфигурацию или внешнюю обработку/отчет, пока ошибка не будет устранена.

Рассмотрим два примера:

1. Воспроизведем ошибку “Обращение к процедуре как к функции”. При этом платформа не даст сохранить изменения, т.к. не проходит синтакс-контроль.

2. Воспроизведем ошибку “Обращение к процедуре объекта как к функции”. Здесь мы неверно используем метод объекта массива “Добавить”, который является процедурой.

Как исправить? Ошибка тривиальная, и исправление тоже. Чаще всего, достаточно внимательно прочитать описание методов объекта во встроенной справке или синтакс-помощнике. Если метод является процедурой, то значений он возвращать не может. Следовательно, нужно модифицировать код так, чтобы такого ошибочного вызова не было.
Если же используется процедура, объявленная в коде, возможно, есть необходимость изменить ее на функцию, либо также скорректировать код, который эту процедуру использует.

Процедура не может возвращать значение

Родственная предыдущей ошибка. Для того, чтобы код возвращал какое-то значение, следует этот код размещать в функции, а не в процедуре.

В процедуре можно написать ключевое слово “Возврат” без параметров. Это будет означать выход из процедуры.

Следующий код является ошибочным, т.к. в теле процедуры Возврат используется с параметром:

Процедура ПроцедураНеМожетВозвращатьЗначение(Команда)
Возврат "Ошибка";
КонецПроцедуры

Как исправить? Платформа сама подсказывает, в каком месте кода ошибка. Нужно изменить текст модуля – либо удалить параметр у ключевого слова Возврат, либо убрать его вовсе, либо изменить процедуру на функцию – зависит от того, какая логика у вашей процедуры, и как вы предполагаете ее использовать.

Переменная не определена

Такой текст ошибки платформа 1С выдает на этапе синтаксического контроля, при сохранении конфигурации, внешнего отчета или обработки.
Причин у этой ошибки может быть несколько.

  • Опечатка в имени переменной
  • Обращение к переменной, которая нигде в области видимости не объявлена (неявной инициализацией с присвоением значения, явным образом с использованием ключевого слова “Перем”, или передана в качестве параметра)
  • Написание на клиенте серверного кода. Например, обращение к менеджеру справочников “Справочники”, и т.п. Клиентская часть приложения “не видит ” серверные объекты языка
  • Также ошибка может появиться, если ранее код использовался в режиме толстого клиента, но после был запущен в тонком клиенте.

Как исправить?

Внимательно следить за правильностью набранного кода, своевременно объявлять переменные или передавать их в качестве параметров. Писать серверный код только в серверных модулях, а также использовать соответствующие инструкции препроцессора, например “&НаСервере”.

Значение не является значением объектного типа

Ошибка “Значение не является значением объектного типа” может возникнуть при неверном обращении к объекту языка. Объектный тип – это такие объекты языка, которые содержат в себе другие объекты – свойства, реквизиты и т.п. Эти свойства доступны через точку, например “Объект.СвойствоЭтогоОбъекта”

Но если через точку попытаться использовать какое-то значение, которое внутри себя свойств не имеет – например, любое значение примитивного типа – это и приведет к ошибке.

Разберем более сложный пример:

&НаСервере
Процедура ЗначениеНеЯвляетсяЗначениемОбъектногоТипаНаСервере(Справочники = Ложь)
Сообщить(Справочники.Сотрудники.ПустаяСсылка());
КонецПроцедуры

Ошибка может быть “плавающей”. Если вместо параметра по умолчанию “Справочники = Ложь” будет передан менеджер справочников, то ошибки возникать не будет. А если вызвать процедуру без параметров, то будет использоваться параметр по умолчанию с типом Булево, что и приведет к ошибке.

Чаще всего чтобы исправить ошибку, нужно в отладчике посмотреть, какой тип значения используется. Можно внести изменения в код, чтобы обеспечить корректное поведение (например, в запросе вместо наименования товара выбрать ссылку, и в коде через точку уже обращаться к свойствам ссылки, а не текстового наименования). А можно добавить проверку на нужный тип значения. Т.е. – если значение того типа, который мы ожидаем – выполняем код. Иначе – не выполняем.

Ошибка при вызове метода контекста

Ошибка при вызове метода контекста

Обнаружены ошибки в 1С Синтаксическая ошибка

В языке 1С у разных объектов (запросов, справочников, табличных документов и др.) есть предопределенные методы, предусмотренные платформой. Обращение к этим методам требует соблюдения порядка и параметров, правильного синтаксиса и соблюдения условий использования. Например, при чтении табличного документа из файла он не должен быть открыт в другой программе, при подключении к http-соединению оно должно быть доступно, и т.п.

Если эти условия не соблюдать, платформа в зависимости от версии может выдавать сообщения вида “Ошибка при вызове метода контекста”, и далее будут следовать более подробные сведения об ошибке – стек вызовов, приведших к ошибке, номер строки и позиции в строке, где произошла ошибка.

Чаще всего ошибка при вызове метода контекста встречается в следующих методах:

  1. Записать
  2. Прочитать
  3. Выполнить
  4. Создать
  5. ПроверитьВывод

Разберем эту ошибку на примере метода Выполнить объекта Запрос:

Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 1 ГДЕ ИСТИНА И");
Запрос.Выполнить();

В тексте запроса допущена ошибка –  после первого условия “ГДЕ ИСТИНА” указан оператор И, но после него нет еще одного условия. В результате при попытке выполнения запроса, платформа вернет ошибку.

Для исправления ошибки зачастую достаточно внимательно использовать методы, при необходимости уточнять порядок, количество и тип параметров – это можно сделать в справке или синтакс-помощнике (встать курсором на имя метода в коде, и нажать сочетание клавиш Ctrl+F1). В случае запроса – нужно передавать синтаксически корректный текст запроса; в случае проверки вывода на печать – в системе должен быть установлен принтер; в случае подключения к почте – должны быть корректно указаны логин и пароль, и т.п.

Тип не может быть выбран в запросе в 1С 8.3 (8.2)

Ошибка Тип не может быть выбран в запросе

С такой ошибкой начинающие разработчики (да и не только начинающие 😉 ) сталкиваются чаще всего, при чтении запросом данных из таблиц значений, либо из регистров сведений. Все дело в том, что запросы поддерживают далеко не все типы значений. Так, например, нельзя запросом выбрать тип Картинка, ХранилищеЗначений, Шрифт, и многие другие типы, которые не относятся к примитивным или ссылочным типам значений.

Так, если ресурс регистра сведений имеет тип ХранилищеЗначений, выбрать его запросом будет нельзя. Также, если в таблицу значений поместить значения не подходящих типов, а после передать эту таблицу в качестве параметра-источника данных, выполнение запроса также приведет к ошибке “Тип не может быть выбран в запросе”.

Еще одна ситуация, когда запрос будет выдавать ошибку – если таблица значений, которая передается в качестве параметра, имеет не типизированные колонки.

Неверно:

//ТЗОшибочныйТип.Колонки.Добавить("Контрагент");

Верно:

//ТЗОшибочныйТип.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));

Для исправления ошибки нужно правильным образом инициализировать колонки таблицы значений, а также не обращаться в запросе к полям, типы которых запросами не поддерживаются.

Использование в 1С модальных окон в данном режиме запрещено

Ошибка Использование в 1С модальных окон в данном режиме запрещено​

Платформа будет выдавать такое сообщение, если в коде используются методы, приводящие к открытию модальных окон. Модальные окна – это окна, которые при открытии блокируют весь остальной интерфейс. В 1С есть несколько модальных методов – например – “Вопрос”, “ОткрытьЗначение”, “Предупреждение”. Кроме того, в коде может использоваться модальный синтаксис открытия форм: “ОткрытьМодально()”

Если в свойствах конфигурации выбран режим использования модальности “Не использовать”, то выполнение модальных методов будет приводить к этой ошибке “Использование в 1С модальных окон в данном режиме запрещено”.

Для устранения ошибки можно пойти несколькими путями. Как водится, один – быстрый, другой – правильный 🙂

Быстрый способ – переключить режим использования модальности в положение “Использовать”.

Более правильный способ – использовать в коде немодальные вызовы методов. Например, у метода “Вопрос” есть немодальный аналог  – “ПоказатьВопрос”, у метода “Предупреждение” – “ПоказатьПредупреждение”, и т.п. Чаще всего об этих методах дополнительно указано в синтакс-помощнике и справке.

Кроме того, в последних версиях платформы появились асинхронные методы – “ВопросАсинх”, “ПредупреждениеАсинх” и др. Появление этих методов позволяет писать более простой и понятный асинхронный код, и направлено в первую очередь, на более полноценную поддержку браузерами и работу в веб-клиенте.

1С 8.3 и 8.2: Запись с такими ключевыми полями существует!

Данная ошибка появляется при некорректной записи в регистр сведений. Чаще всего с этой ошибкой сталкиваются начинающие разработчики, не до конца понимающие механизмы работы с ключевыми полями (измерениями).

Суть ошибки следующая – регистр сведений позволяет записать запись (строку таблицы) с уникальным набором ключевых полей – а для периодических регистров также и поля Период. Если следующая запись полностью повторяет значение ключевых полей, но осуществляется методом Записать с параметром Замещать = Истина, то запись в таблице регистра просто заменится на идентичную.

Однако если поместить две абсолютно одинаковые записи в набор записей, и попытаться его записать – платформа выдаст ошибку. Еще один распространенный случай, когда 1С сообщает “Запись с такими ключевыми полями существует” – это запись в периодический регистр сведений с периодичностью от “День” и выше, подчиненный регистратору.

В типовых конфигурациях часто эту ошибку можно воспроизвести, если в пользовательском режиме создать два документа “Установка цен номенклатуры” с одной и той же номенклатурой и за один и тот же день. Попытка провести второй документ приведет к ошибке.

В случае, когда ошибка возникает не в результате действий пользователя, а при выполнении кода, чтобы устранить ее, чаще всего необходимо проанализировать алгоритм записи в регистр. Если запись осуществляется одним набором данных, его предварительно нужно свернуть до уникальных записей. Например, выгрузить в таблицу значений, свернуть, и загрузить в набор записей.

Поле объекта недоступно для записи в 1С

Ошибка Поле объекта недоступно для записи в 1С​

Чаще всего начинающие программисты 1С сталкиваются с этой ошибкой в двух ситуациях.

Первый случай – это попытка редактирования системных полей, недоступных для записи. Например, в модуле формы сама форма будет содержаться в объекте ЭтаФорма. И попытка присвоить этому реквизиту любое значение приведет к ошибке “Поле объекта недоступно для записи”.

Второй случай – и с ним новички как раз допускают больше всего ошибок – это попытка редактирования полей ссылки, а не самого объекта. Чаще всего код выглядит примерно так:

Элемент = Справочники.Сотрудники.НайтиПоКоду("12345");
Элемент.Наименование = "Новое наименование";

Исполнение данного кода приведет к ошибке, т.к. поля ссылки доступны только для чтения, а метод НайтиПоКоду вернет именно ссылку. Чтобы можно было внести изменения, следует из ссылки получить сам объект – используя соответствующий метод ПолучитьОбъект().

Для исправления ошибки зачастую достаточно получить объект из ссылки. В случае же попытки редактирования свойств, доступных только на чтение самый правильный подход – анализировать имеющуюся документацию по этим свойствам, и не пытаться присваивать им значения, если платформа этого не предусматривает.

Ссылка на обработку

По ссылке вы можете скачать внешнюю обработку, в которой воспроизводится большая часть ошибок, описанных в статье. Для воспроизведения части ошибок нужно будет убрать комментарии в коде.

Заключение

Как видите, зачастую ошибки тривиальны, и достаточно просто исправляются. Общие рекомендации – внимательно читать документацию и справку, корректно использовать методы, активно пользоваться отладчиком. Если вы новичок, и хотите освоить программирование в 1С с нуля – могу предложить приобрести мой базовый курс для начинающих. Более подробная информация – по ссылке.

Автор статьи

Ольга Александровна Блохина

Эксперт по предмету «1С:Бухгалтерия»

Задать вопрос автору статьи

Модули в 1С

Как и любая программа, программа 1С состоит из модулей, частей. Существует несколько видов модулей:

  • общие модули (проведение, отчеты, процедуры общего назначения и т.д.);
  • модуль объекта (валюты);
  • модуль формы (форма: списка, элемента, подбора и выбора);
  • модуль приложения.

Программные модули состоят из разделов:

  • объявления переменных;
  • процедур и функций;
  • основной программы.

Определение 1

Контекст в 1С заключается в окружении модуля и его разделов, т.е. это конкретные переменные, свойства, объекты, метод и события которые могут быть доступны в каждой конкретной точке.

Виды контекста:

  • Глобальный контекст указывает открытые для вызова функции;
  • Локальный контекст (более низкий уровень) становится доступен в каждой модульной части.

Получай знания в онлайн-школе

Подберем репетитора, поможем понять сложные учебные предметы

Выбрать программу

Существуют правила для доступа процедур, переменных, и функций в модулях:

  • В общем модуле не будут доступны для экспорта переменные, процедуры и функции модульных приложений;
  • В модульных приложениях существует доступ для экспорта процедур и функций общих модулей;
  • В общих модульных частях открыт доступ к экспорту процедур и функций прочих общих модулей;
  • Для модульных прикладных объектов и для модульных форм являются доступными переменные, функции и процедуры модулей приложений для экспорта и общих модулей.

Замечание 1

Если какой-либо из форм присвоен основной реквизит, то в настройках этой формы будут содержаться свойство и метод, которые отвечают этому основному реквизиту.

Ошибка модуля

В программе 1С ошибка модуля называется «Ошибка при вызове метода контекста». Такое сообщение об ошибке программа 1С дополняет пояснениями, которые описывают обстоятельства, вызвавшие сбой. Такие объяснения программа выдает только во второй и третий версиях программы. Данное пояснение находится в скобках после сообщения об ошибке, что существенно сокращает время, потраченное на ее исправление.

«Ошибка модуля в 1С: причины и способы исправления» 👇

Самые распространенные пояснения:

  • записать;
  • создать;
  • подключиться;
  • connect;
  • проверить вывод;
  • previewFile1C;
  • прочитать;
  • выполнить;
  • выполнить пакет;
  • прочитать изменения.

Данная ошибка может возникнуть по причинам:

  • нарушена логическая и физическая целостность информационной базы;
  • ошибки при обращении с программой;
  • разработчиком ошибочно был введен код;
  • внезапное закрытие программы.

Вы можете провести анализ ошибки:

  1. Сравнить версии программы и конфигурации (может быть повреждена платформа).
  2. Прочитать весь текст сообщения, т.к. в конце его содержатся рекомендации к её устранению.
  3. Проанализировать давность ее появления и обстоятельства её появления.
  4. Проверьте, появлялась ли ранее данная ошибка, т.к. невоспроизводимые ранее не встречавшиеся ошибки, чаще всего не исправляются.
  5. Если появившаяся ошибка появляется при пользовании программой под другим пользователем, то эту ошибку можно устранить путем очистки кэша, настройки прав, очистки пользовательских настроек.

Способы устранения ошибки

Замечание 2

Перед началом работы с базой обязательно сделайте архивную копию!

Данная ошибка в 99% случаях легко решается. Для этого вам достаточно проанализировать проблему и вызвать справку. Так же вы можете забить конкретную ошибку с пояснением в поиск и найти решение проблемы.

Перед использованием любого метода вы можете получить подсказку о том, как его использовать. Для этого выберете требуемую функцию и нажмите на клавиши на клавиатуре «Ctrl + F1». Программа откроет подсказку по необходимому методу. В конце работы проверьте параметры, которые передаются в функцию, и правильность её использования.

Замечание 3

В качестве профилактики следите за актуальностью релиза конфигурации.

Находи статьи и создавай свой список литературы по ГОСТу

Поиск по теме

Ошибка при вызове метода контекста (Выполнить)

Автор Марат, 17 ноя 2016, 11:24

0 Пользователей и 1 гость просматривают эту тему.

{ОбщийМодуль.ОбщегоНазначения.Модуль(7289)}: Ошибка при вызове метода контекста (Выполнить)

по причине:
{(13, 6)}: Поле не найдено «Док.НомерГТД»
Док.<<?>>НомерГТД КАК НомерГТД,


текст запроса, а ваще то он вам и говорит, что ему не нравится…


Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.



Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.



Цитата: Марат от 17 ноя 2016, 14:02
а точнее

В коде общего модуля «ОбщегоНазначения», скорее всего в запросе идущем до строки 7289.

А если серьезно. Вы не назвали конфигурацию, вы не сказали в результате чего возникает ошибка.
Вы не не предоставили НИ-КА-КОЙ информации, чтобы хоть как то можно было вам помочь.
Соответственно и получаете вы общие размытые ответы.
Сейчас ваш вопрос звучит примерно так: «У меня машина не едет, вроде как чего то не хватает. Чего именно?»


при добавлении склада в тч в документ авансовый отчет 1с бух 8,2 при проведении документа вылазиет ощибка которую я указал в теме

Добавлено: 17 ноя 2016, 15:27


   Запрос = Новый Запрос;
   Запрос.Текст = «
   |ВЫБРАТЬ
   |   Док.НомерСтроки » + ТекстЗапроса + «
   |
   |ИЗ
   |   Документ.» + ДокументОбъект.Метаданные().Имя + «.»+ СокрЛП(ИмяТабличнойЧасти) + » КАК Док
   |
   |ГДЕ
   |   Док.Ссылка = &ДокументСсылка
   |
   |УПОРЯДОЧИТЬ ПО
   |      НомерСтроки»;

      // Установим параметры запроса.
   Запрос.УстановитьПараметр(«ДокументСсылка» , ДокументОбъект.Ссылка);

   Возврат Запрос.Выполнить()


Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Доброго дня.
Ситуация такая: есть несколько торговых точек, неделю назад на одной из них 1С перестала запускаться, и починить было некому.
В данный момент ее починили, она запускается, продавец авторизуется, выбирает свое рабочее место и пытается пробивать товар по ШК. В некоторых случаях получаем ошибку в этот момент:

Цитировать{ОбщийМодуль.СкладыСервер.Модуль(2270)}: Ошибка при вызове метода контекста (Выполнить)  Результат = Запрос.Выполнить(); по причине: Ошибка выполнения запроса по причине: У пользователя недостаточно прав на исполнение операции над базой данных.

Повторюсь: не на любой товар, только на некоторые. Само собой, пока система не сломалась неделю назад, такого не было.
Я в 1С совсем не профи и даже не опытный пользователь. Я несчастный сисадмин, которого заставляют это починить. Куда мне смотреть? Что мне искать? Подскажите, пожалуйста.
Версия «Предприятие 8.3 УТ 11».


  

Vito

29.07.22 — 10:20

Сделал такую интеграцию:

1. на http-сервис приходит GET-запрос с id-документа на сайте

2. http-сервис запускает функцию в общем модуле и передает в нее id-документа

3. функция проверяет нет ли такого документа в 1С (запрос к БД) и если нет создает новый документ.

Проблема:

При отправке запроса  с id-документа из домашней сети сервера все работает как часы. Причем аутентификация не требуется: просто строка в браузере.

При отправке из любой внешней сети, например, с postman запрос проходит через http-сервис запускает функцию в общем модуле, но при попытке выполнить первый запрос в коде к БД выдает ошибку: «Ошибка при вызове метода контекста (Выполнить)». При этом в запросе происходит авторизация под пользователем у которого есть админские права + еще некоторые.

В чем может быть проблема? У меня ощущение, что это что-то связанное с  правами.

  

Мультук

1 — 29.07.22 — 10:24

(0)

Что показывает отладчик ?

  

Vito

2 — 29.07.22 — 10:33

(1) он у меня из hhtp-сервиса не запускается…. открывал тему, но ничего не помогло…

  

Волшебник

3 — 29.07.22 — 10:35

Посмотри журнал регистрации, там полный текст ошибки

  

Галахад

4 — 29.07.22 — 10:39

Логику в привилегированный модуль. :-)

  

Мультук

5 — 29.07.22 — 10:45

(0)

А покажи ка, плиз, текст функции.

У тебя сервис. И похоже ни логов, ни обработок ошибок…

  

Vito

6 — 29.07.22 — 10:47

(3) Смотрел, ничего там нет

(5) Код несколько сот строк. Проблtма в общем стала ясна. Дал все возможные права пользователю и все сработало! Теперь бы понять какие из прав действительно нужны?

(4) Попробую

  

Мультук

7 — 29.07.22 — 10:54

(6)

>>> Смотрел, ничего там нет

>>> У тебя сервис. И похоже ни логов, ни обработок ошибок…

После того, как всё работает, но через какое-то время ВДРУГ ломается в продакшене, обычно начинают прикручивать и логи и нормальные сообщения об ошибках.

P.S.

Нельзя впихнуть невпихуемое (c) DED

  

Vito

8 — 29.07.22 — 11:01

(4) — у меня расширение: привилегированный нельзя сделать — галка неактивна

(7) «После того, как всё работает, но через какое-то время ВДРУГ ломается в продакшене, обычно начинают прикручивать и логи и нормальные сообщения об ошибках.» — знаю. Но я только учусь, с 1С 1,5 месяца.  Пока не разобрался как в моем случае делать логирование и обработки ошибок, но планирую это сделать позже в любом случае.

Как думаете, как понять какие все-таки права нужно выдать пользователю, чтобы не было избыточных прав?

  

arsik

9 — 29.07.22 — 11:09

(6) Добавь в запросах «РАЗРЕШЕННЫЕ». И сразу увидишь откуда ноги растут.

  

Мультук

10 — 29.07.22 — 11:14

(8)

1) Я бы не стал учиться сразу с расширений. В 1С и без них полно всякого непонятного для неофита (нюансы, ага)

2) Я бы не стал учиться, не имея доступа к отладчику. Сделал бы копию базы, скопировал бы сервис в конфигурацию и там проводил бесчеловечные эксперименты

3) Если учишься (это учебная база) — дай полные права пользователю и не мучайся. Напиши бумажку со словами «НЕЛЬЗЯ давать полные права!», приклей на монитор

И пообещай себе «потом сделать правильно».

Слона нужно кушать по частям

  

Vito

11 — 29.07.22 — 12:04

(9) — Спасибо попробую

(10) — Пока у меня тестовая база, в прод переведу через пару недель, сроки поджимают. Права, видимо, придется постепенно методом научного тыка чистить.

Возникла также очередная проблема с postmana  все проходит, а вот с моего сайта — нет, причем получаю ошибку 500. Хотя http-сервис работает и без вызова функции в общем модуле возвращает 200. Т.е. какая то ошибка в логическом модуле, нужно ее как-то посмотреть, но вот как не соображу.

  

Vito

12 — 29.07.22 — 22:08

Все получилось:

1. Заработала отладка, теперь точно знаю что она запускается в расширении от http запроса. Но вот пока не пойму как точно, методом слепомноготыка.

2. Когда отладчик заработал сразу увидел, что с сайта приходит в кодировке windows-1251, перекодировал и все ОК.

  

Волшебник

13 — 29.07.22 — 22:09

(12) Молодец!

1

2

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Zebraaa

Дата регистрации: 16.03.2012
Сообщений: 23

Платформа 1с 8.2.15.310, релиз 1.0.12.2 При открытии стандартного отчета Карточка субконто выдается сообщение: Ошибка при вызове метода контекста (Найти поле). Если доступные поля. Найти поле(Отборы.Элементы [Я]_ Левое значение).=Неопределенно Тогда по причине Несоответствии типов (параметр номер 1) <br>Причем такая ошибка выходит только у одного пользователя, у других все нормально открывается.

Sh_S

Дата регистрации: 02.03.2007
Сообщений: 7730

где-то стоит отбор со сравнением с пустым значением, зайдите в настройку и посмотрите

Zebraaa

Дата регистрации: 16.03.2012
Сообщений: 23

А можно ,пожалуиста, по подробнее!

Sh_S

Дата регистрации: 02.03.2007
Сообщений: 7730

мне кажется теперь, что я не права. Под рукой бухгалтерии нет, но в УПП и ЗУПе если поставить отбор по пустому значению выходит просто шапка отчета. Но все-таки посмотрите внимательно на отборы в настройках.

Zebraaa

Дата регистрации: 16.03.2012
Сообщений: 23

Как я посмотрю, если я даже открыть отчет не могу.Выбираю Карточку субконто и сразу сообщение выдается, выше написанное.

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Платформу обновить до последней. Выполнить тестирование и исправление со всеми флагами.

Zebraaa

Дата регистрации: 16.03.2012
Сообщений: 23

Спасибо конечно! Но я думаю тестирование и исправление тут не причем, так как остальные пользователи в эту базу могут зайти, только один пользователь не может.Платформа вроде бы тоже относительно новая.

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

У этого пользователя сохранились настройки отчета в старом формате. Теперь нужно либо как-то очистить эти настройки либо переконвертировать имеющиеся. У других пользователей нет этих старых настроек, вот они и не нарываются на ошибку. Попробуйте почистить кэш на компьютере пользователя.

Zebraaa

Дата регистрации: 16.03.2012
Сообщений: 23

Кстати, самое интересное, что сохраненных настроек по этому пользователю нет, а по другим есть.

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Имеются ввиду «Сохраненные варианты отчета».

О чем статья

В этой статье будет описано, что делать, если при работе с 1С:Предприятие 8.1 Вам встретилось сообщение, содержащее строки:

Cannot insert duplicate key row in object

или

Попытка вставки неуникального значения в уникальный индекс.

Что такое индекс?

Подобно содержанию в книге, индекс в базе данных позволяет быстро искать конкретные сведения в таблице.

Индексы представляют собой структуру, позволяющую выполнять ускоренный доступ к строкам таблицы на основе значений одного или более ее столбцов.
Индекс содержит ключи, построенные из одного или нескольких столбцов таблицы или представления, и указатели, которые сопоставляются с местом хранения заданных данных.
Индексы сокращают объем данных, которые необходимо считать, чтобы возвратить результирующий набор.

Хотя индекс и связан с конкретным столбцом (или столбцами) таблицы, все же он является самостоятельным объектом базы данных.

Индексы таблиц в базе данных 1С:Предприятие создаются неявным образом при создании объектов конфигурации, а также при тех или иных настройках объектов конфигурации.

Физическая сущность индексов в MS SQL Server 2005.

Физически данные хранятся на 8Кб страницах. Сразу после создания, пока таблица не имеет индексов, таблица выглядит как куча (heap) данных. Записи не имеют определенного порядка хранения.
Когда вы хотите получить доступ к данным, SQL Server будет производить сканирование таблицы (table scan). SQL Server сканирует всю таблицу, что бы найти искомые записи.
Отсюда становятся понятными базовые функции индексов:
— увеличение скорости доступа к данным,
— поддержка уникальности данных.

Несмотря на достоинства, индексы так же имеют и ряд недостатков. Первый из них – индексы занимают дополнительное место на диске и в оперативной памяти. Каждый раз когда вы создаете индекс, вы сохраняете ключи в порядке убывания или возрастания, которые могут иметь многоуровневую структуру. И чем больше/длиннее ключ, тем больше размер индекса. Второй недостаток – замедляются операции вставки, обновления и удаления записей.
В среде MS SQL Server 2005 реализовано несколько типов индексов:

  • некластерные индексы;
  • кластерные (или кластеризованные) индексы;
  • уникальные индексы;
  • индексы с включенными столбцами
  • индексированные представления
  • полнотекстовый
  • XML

Уникальный индекс

Уникальность значений в индексируемом столбце гарантируют уникальные индексы. При их наличии сервер не разрешит вставить новое или изменить существующее значение таким образом, чтобы в результате этой операции в столбце появились два одинаковых значения.
Уникальный индекс является своеобразной надстройкой и может быть реализован как для кластерного, так и для некластерного индекса. В одной таблице может существовать один уникальный кластерный и множество уникальных некластерных индексов.
Уникальные индексы следует определять только тогда, когда это действительно необходимо. Для обеспечения целостности данных в столбце можно определить ограничение целостности UNIQUE или PRIMARY KEY, а не прибегать к уникальным индексам. Их использование только для обеспечения целостности данных является неоправданной тратой пространства в базе данных. Кроме того, на их поддержание тратится и процессорное время.

1С:Предприятие 8.1 начиная с версии 8.1 активно использует кластерные уникальные индексы. Это означает, что при конвертации с 8.0 или переходе с 8.1.7 можно получить ошибку неуникального индекса.

ошибка индекса

Если неуникальность заключается в датах с нулевыми значениями, то проблема решается созданием базы с параметром смещения равным 2000.

Что делать?

1. Если проблема загрузкой базы данных, то:

1.1. Если Вы делаете загрузку (используйете dt-файл) в базу MS SQL Server, то при создании базы перед загрузкой укажите смещение дат — 2000.

Смещение 200

Если уже база создана со смещением 0, то создайте новую с 2000.

1.2. Если есть возможность в файловом варианте работать с базой, то выполните Тестирование и Исправление, а также Конфигурация — Проверка конфигурации — Проверка логической целостности конфигурации + Поиск некорректных ссылок.

1.3. Если нет файлового варианта, попробуйте загрузить из DT в клиент-серверный вариант с DB2 (который менее требователен к уникальности), и затем выполнить Тестирование и Исправление, а также Конфигурация — Проверка конфигурации — Проверка логической целостности конфигурации + Поиск некорректных ссылок.

1.4. Для локализации проблемы можно определить данные объекта, загрузка которого не удалась. Для этого надо включить во время загрузки трассировку в утилите Profiler или включите запись втехнологический журнал событий DBMSSQL и EXCP.

1.5. Если доступна узел (планы обменов), то выполнить обмен. Можно также дополнительно перед обменом выполнить пункт 2.3.5

2. Если проблема неуникальности проявляется во время работы пользователей:

2.1. Найти с помощью метода пункта 1.4 проблемный запрос.

2.1.2. Иногда ошибка возникает во время исполнения запросов, например:

Данная ошибка возникает из-за того что в модуле регистра накопления «Рабочее время работников организаций» в процедуре «ЗарегистрироватьПерерасчеты» в запросе не стоит служебное слово «РАЗЛИЧНЫЕ».

Т.е. должно быть:

Запрос = Новый Запрос(
«ВЫБРАТЬ РАЗЛИЧНЫЕ
|   Основные.ФизЛицо,

. . . . .

В последних выпущенных релизах ЗУП и УПП ошибка не возникает, т.к. там стоит «РАЗЛИЧНЫЕ».

2.2. После нахождения проблемного индекса из предыдущего пункта, необходимо найти неуникальную запись.

2.2.1. «Рыба» скрипта для определения неуникальных записей с помощью SQL:
SELECT COUNT(*) Counter, <перечисление всех полей соответствующего индекса> from <имя таблицы>
GROUP BY <перечисление всех полей соответствующего индекса>
HAVING Counter > 1

2.2.2 Пример. Индекс в ошибке называется «_Document140_VT1385_IntKeyIndNG».

Перечень полей таблицы:

_Document140_IDRRef, _KeyField, _LineNo1386, _Fld1387, _Fld1388, _Fld1389, _Fld1390, _Fld1391RRef, _Fld1392RRef, _Fld1393_TYPE, _Fld1393_RTRef, _Fld1393_RRRef, _Fld1394,

_Fld1395, _Fld1396RRef, _Fld1397, _Fld1398, _Fld1399RRef, _Fld22260_TYPE, _Fld22260_RTRef, _Fld22260_RRRef, _Fld22261_TYPE, _Fld22261_RTRef, _Fld22261_RRRef

Перед выполнением приведенной ниже процедуры сделайте резервную копию базы данных.
Выполните в MS SQL Server Query Analizer:

select count(*), _Document140_IDRRef, _KeyField
from _Document140_VT1385
group by _Document140_IDRRef, _KeyField
having count(*) > 1

С его помощью узнайте значения колонок _Document140_IDRRef, _KeyField, дублирующихся записей (id, key).

При помощи запроса:

select *
from _Document140_VT1385
where _Document140_IDRRef = id1 and _KeyField = key1 or _Document140_IDRRef = id2 and _KeyField = key2 or …

посмотрите на значения других колонок дублирующихся записей.

Если обе записи имеют осмысленные значения и эти значения разные, то исправьте значение _KeyField на уникальное. Для этого определите максимальное занятое значение _KeyField (keymax):

select max(_KeyField)
from _Document140_VT1385
where _Document140_IDRRef = id1

Замените значение _KeyField в одной из повторяющихся записей на правильное:

update _Document140_VT1385
set _KeyField = keymax + 1
where _Document140_IDRRef = id1 and _LineNo1386 = lineno1

Здесь _LineNo1386 = — дополнительное условие, которое позволяет выбрать одну из двух повторяющихся записей.

Если одна (или обе) из повторяющихся записей имеет очевидно неправильное значение, то ее нужно удалить:

delete from _Document140_VT1385
where _Document140_IDRRef = id1 and _LineNo1386 = lineno1

Если повторяющиеся записи имеют одинаковые значения во всех колонках, то из них нужно оставить одну:

select distinct *
into #tmp1
from _Document140_VT1385
where _Document140_IDRRef = id1 and _KeyField = key1

delete from _Document140_VT1385
where _Document140_IDRRef = id1 and _KeyField = key1

insert into _Document140_VT1385
select #tmp1

drop table #tmp1

Описанную процедуру необходимо выполнить для каждой пары повторяющихся записей.

2.2.3. Второй пример:

SELECT     COUNT(*) AS Expr2, _IDRRef AS Expr1, _Description
FROM         _Reference8_
GROUP BY _IDRRef, _Description
HAVING      (COUNT(*) > 1)

2.3.4 Пример определения неуникальных записей с помощью запроса 1С:Предприятие:

ВЫБРАТЬ Справочник.Ссылка
ИЗ Справочник.Справочник КАК Справочник
СГРУППИРОВАТЬ ПО Справочник.Ссылка
ИМЕЮЩИЕ КОЛИЧЕСТВО(*) > 1

или для бухгалтерии

ВЫБРАТЬ
Подзапрос.Период,
Подзапрос.Регистратор,
<измерения>,
СУММА(Подзапрос.КоличествоЗаписей) КАК КоличествоЗаписей
ИЗ
(ВЫБРАТЬ
Хозрасчетный.Период КАК Период,
Хозрасчетный.Регистратор КАК Регистратор,
<измерения>,
1 КАК КоличествоЗаписей
ИЗ
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный) КАК Подзапрос

СГРУППИРОВАТЬ ПО
Подзапрос.Период,
Подзапрос.Регистратор,
<измерения>

ИМЕЮЩИЕ
СУММА(Подзапрос.КоличествоЗаписей) > 1

2.3.5 Сделать индекс субд не уникальным. Заксриптовать индекс с помощью Management Studio.

Далее удалить текущий индекс, скорректировать текст и создать скриптом неуникальный индекс.

2.3.6 Частный случай при обмене в РБД. Ошибка приходится на «вспомогательные» таблицы, связанные с расчетом итогов или аналитики. Например:

Ошибка при вызове метода контекста (Записать): Попытка вставки неуникального значения в уникальный индекс:
Microsoft OLE DB Provider for SQL Server: Cannot insert duplicate key row in object ‘dbo._AccntRegED10319’ with unique index ‘_Accnt10319_ByPeriod_TRNRN’.
HRESULT=80040E2F, SQLSrvr: Error state=1, Severity=E, native=2601, line=1

В этом случаи перед загрузкой выключить использование итогов, загрузить сообщение, включить использование итогов и пересчитать.

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контента
  • Ошибка при вызове метода контекста что делать
  • Ошибка при вызове метода контекста этот узел
  • Ошибка при вызове метода контекста установитьстроку
  • Ошибка при вызове метода контекста этопланобменаxdto