Неверный второй параметр реквизиты в функции общегоназначения значенияреквизитовобъекта
Сообщение «Неверный первый параметр…» в БГУ 2.0
Вопрос задал Елена* К.
Ответственный за ответ: Ирина Шаврова (★9.89/10)
Здравствуйте.
1С: Бухгалтерия государственного учреждения, редакция 2.0
После обновления программы до релиза 2.0 (2.0.75.42), при подборе номенклатуры в документе Поступление МЗ, стало возникать сообщение «Неверный первый параметр…» (см. вложенный файл) С чем может быть связана эта ошибка? Как исправить?
Заранее спасибо
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Все комментарии (8)
Добрый вечер, Елена!
Посмотрела среди ошибок вашей конфигурации — ошибок не зарегистрировано.
Вы тоже можете таким образом мониторить ошибки, если есть доступ к сайту поддержки пользователей.:
https://bugboard.v8.1c.ru/search
Раньше он мог не проверяться, а после обновления (или сбоя — это тоже нельзя исключать) идет его автоматическая проверка, которая и выдает ошибку.
Я встречала такую ошибку в 1С:Отчетности, поэтому прошу вас, пришлите мне скрин карточки организации, чтобы в ней были видны банклвские реквизиты. Если это то, что было и там — мы это исправим.
Если нет, то придется вам открывать Конфигуратор (у меня подобной конфигурации нет) и мы вместе посмотрим, что в общем модуле Общего назначения в функции Значения реквизитов объекта передается, чтобы определиться, что программа хочет видеть заполненным.
Платформа: 1С:Предприятие 8.3 (8.3.16.1814)
Конфигурация: Бухгалтерия государственного учреждения, редакция 2.0 (2.0.75.42) (http://v8.1c.ru/stateacc/)
Copyright © ООО «1C-Софт», 2011-2020. Все права защищены
(http://www.1c.ru)
Режим: Файловый (без сжатия)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский
Вариант интерфейса: Такси
Ошибки:
———————————————————————————
17.02.2021 12:37:40
Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
— Значение должно быть ссылкой или именем предопределенного элемента
<ОбщийМодуль.ОбщегоНазначения.Модуль(165)>: НСтр(«ru = ‘Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
<ОбщийМодуль.ОбщегоНазначения.Модуль(351)>: Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка);
<ОбщийМодуль.БухгалтерскийУчет.Модуль(329)>: КодСчета = СокрП(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Счет, «Код»));
<ОбщийМодуль.БухгалтерскийУчет.Модуль(291)>: КОСГУ = КЭКДетальныйСчета105(Организация, ИФО, КФО, Дата, Счет, ДтКт);
<ОбщийМодуль.УправлениеМатериальнымиЗапасами.Модуль(69)>: Результат.КЭК = БухгалтерскийУчет.КЭКНоменклатуры(Параметры.Организация, Параметры.ИФО, Параметры.КФО,
<ОбщийМодуль.УправлениеМатериальнымиЗапасамиВызовСервера.Модуль(141)>: Возврат УправлениеМатериальнымиЗапасами.ПолучитьДанныеСчетаУчетаНоменклатуры(Параметры);
<ОбщийМодуль.УправлениеМатериальнымиЗапасамиКлиентСервер.Модуль(189)>: ДанныеСчетаДляСтроки = УправлениеМатериальнымиЗапасамиВызовСервера.ПолучитьДанныеСчетаУчетаНоменклатуры(Параметры);
<Документ.ПоступлениеМЗ.Форма.ФормаДокумента.Форма(1537)>: УправлениеМатериальнымиЗапасамиКлиентСервер.УстановитьДанныеСчетаУчетаВСтроке(Строка, ПараметрыОбработки);
<Документ.ПоступлениеМЗ.Форма.ФормаДокумента.Форма(1631)>: ЗаполнитьДанныеСчетаВСтроке(ЭтотОбъект, НоваяСтрока, НЕ ЗначениеЗаполнено(НоваяСтрока.СчетУчета));
<Документ.ПоступлениеМЗ.Форма.ФормаДокумента.Форма(186)>: ОбработатьВыборПодбораНаСервере(ВыбранноеЗначение,ИсточникВыбора.ИмяТаблицы);
<Обработка.ПодборНоменклатуры.Форма.ФормаПодбора.Форма(1066)>: ОповеститьОВыборе(Структура);
<Обработка.ПодборНоменклатуры.Форма.ФормаПодбора.Форма(175)>: ПеренестиНоменклатуруВДокумент();
<Обработка.ПодборНоменклатуры.Форма.ФормаПодбора.Форма(464)>: Закрыть();
Добрый день,
у вас не одна, а целый набор ошибок. Поэтому давайте сначала сделаем так:
1. Почистите кеш 1С (обязательно!) — это очень важно: при обновлении могли поменяться процедуры и функции конфигурации, а кеш, из которого программа берет наиболее часто используемые данные, остался старым.
Его нужно удалить, тогда при входе в 1С автоматически создастся новый кеш. Правильный.
Посмотрите как это делать в 1С:
Очистка кэш 1С 8.3
.
2. Потом запустите 1С и проверьте — ушла ли ошибка.
Это тоже важно, потому что в тестировании программа найдет и покажет «битые» ссылки.
То, что вы показали на скрине строчку останова — неинформативно. Раз уж вы работаете с кодом конфигурации, вам нужно остановиться выше на самом условии, где формируется развился по исполнению кода и посмотреть: как именно передается — и откуда! ссылка, которая анализируется в условии.
Вообще посмотреть в параметры процедуры, где ошибка формируется, узнать, откуда передаются на исполнение эти данные — из какой процедуры.
И так вы по цепочке дойдете до причины.
Обычно, программист просто встает на процедуру исполнения, например, кнопки Подбор и проходит в Отладчике все шаги до появления ошибки. Тогда у него все данные на руках.
Если у вас не доработанная конфигурация — ПОЛНОСТЬЮ типовая, если обновление выполнял тот же человек, что и обычно, то первое, что вы должны сделать — почистить кеши 1С.
Если конфигурация дорабатывалась — без Отладчика вам причину будет не узнать.
3. Если все указанные выше действия не помогут, придется повторить обновление с копии повторно.
Но мне видится, что велика вероятность, что после чистки кеша и заполнения банковских реквизитов в карточке организации, проблема уйдет.
Спасибо) Разобрались сами. Был перенос данных и в карточках номенклатуры были отражены счет учета, которых нет в плане счетов. Применили обработку Групповое изменение данных. Ошибка исчезла
Особенность при добавлении внешних отчетов в УНФ 1.6
Добавляем внешний отчет в УНФ 1.6, Устанавливаем “тэги” для внешнего отчета в УНФ 1.6; устанавливаем “изображение образца” для внешнего отчета в УНФ 1.6.
Релиз УНФ 1.6.18.145, платформы 8.3.15.1830.
Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
– Значение должно быть ссылкой или именем предопределенного элемента
<ОбщийМодуль.ОбщегоНазначения.Модуль(173)>: НСтр(“ru = ‘Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
<ОбщийМодуль.ОбщегоНазначения.Модуль(347)>: Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные);
<ОбщаяФорма.ФормаОтчетаУНФ.Форма(323)>: ЗначениеРеквизитаПользовательский = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДопВариант, “Пользовательский”);
Есть совсем простой способ. Возможно, кому-то подойдет.
Добавить теги и изображение внешнего отчета можно в режиме предприятия.
Есть совсем простой способ. Возможно, кому-то подойдет.
Добавить теги и изображение внешнего отчета можно в режиме предприятия.
Как получить доступ к реквизитам объекта?
Статья носит справочный характер. Предназначена для начинающих программистов.
Получить массив реквизитов объекта можно при помощи самого объекта:
Получив массив реквизитов, можно организовать Цикл для просмотра имен реквизитов:
Для того, чтобы получить значения реквизитов объекта вообще говоря надо обратиться с запросом к БД, типа:
В запрос надо передать ссылку на объект и имя реквизита. Запрос вернет таблицу или выборку со значением реквизита.
Поскольку в функцию ПолучитьЗначенияРеквизитов() во второй параметр надо передать структуру, то мы создали структуру и организовали Цикл ее инициализации данными из массива имен реквизитов объекта. Возвращает функция так же структуру (ключ-значение), с которой удобно работать. Для просмотра этой структуры можно воспользоваться циклом, либо вызвать функцию СканПростойСтруктуры(), которой передать структуру для просмотра.
Если исследуемый объект использует так же еще и общие реквизиты, и их необходимо найти, то можно воспользоваться функцией МассивИменРеквизитовОбъекта(), которая находит не только реквизиты объекта но и общие и даже стандартные реквизиты, которые использует объект:
Тогда программа будет выглядеть так:
Как получить значение отдельного реквизита объекта?
Иногда необязательно получать значения всего массива реквизитов. Программист как правило знает имя реквизита, значение которого необходимо получить. К отдельному реквизиту объекта можно обратиться просто по его имени:
Получить значение этого реквизита можно так же через запрос, написанный специально для этого реквизита. Но можно воспользоваться все той же функцией ПолучитьЗначенияРеквизитов(). Цикл для настройки структуры в этом случае не нужен, так как нам надо найти значение всего одного элемента:
Обратите внимание что здесь реквизит который необходимо найти преобразовывается к типу Строка, потому, что в структуру настроек надо передать именно строку.
Как найти имена реквизитов в таб части объекта?
Функция определяет есть ли реквизит в таб части документа:
Сообщить имя реквизитов таб части:
Как найти значение всех реквизитов всех таб частей документа через запрос
Чтобы найти значения всех реквизитов всех табличных частей объекта через запрос воспользуемся функцией
Результат для документа “Реализация товаров услуг”:
Имя таб части: Товары
///Функция ПоказатьТаблицу///
0 ЕдиницаИзмерения: шт
1 ЕдиницаИзмеренияМест:
2 Качество: Новый
3 Количество: 1
4 КоличествоМест: 0
5 Коэффициент: 1
6 Номенклатура: Вентилятор настольный
7 ПроцентСкидкиНаценки: 0
8 СерияНоменклатуры: Н-908, С-890 от 01.01.2003
9 СпособСписанияОстаткаТоваров: Со склада
10 СтавкаНДС: Без НДС
11 Сумма: 445,5
12 СуммаНДС: 0
13 ХарактеристикаНоменклатуры:
14 Цена: 450
15 Склад: Магазин “Бытовая техника”
16 ПроцентАвтоматическихСкидок: 1
17 УсловиеАвтоматическойСкидки: По виду дисконтных карт
18 ЗначениеУсловияАвтоматическойСкидки: Серебряная карта
19 КлючСтроки: 3
20 КлючСвязи: 0
21 ЗаказПокупателя: Заказ покупателя ТД000000001 от 08.06.2008 12:00:00
0 ЕдиницаИзмерения: шт
1 ЕдиницаИзмеренияМест:
2 Качество: Новый
3 Количество: 1
4 КоличествоМест: 0
5 Коэффициент: 1
6 Номенклатура: Набор вентиляторов
7 ПроцентСкидкиНаценки: 0
8 СерияНоменклатуры:
9 СпособСписанияОстаткаТоваров: Со склада
10 СтавкаНДС: Без НДС
11 Сумма: 1948,32
12 СуммаНДС: 0
13 ХарактеристикаНоменклатуры:
14 Цена: 1968
15 Склад: Магазин “Бытовая техника”
16 ПроцентАвтоматическихСкидок: 1
17 УсловиеАвтоматическойСкидки: По виду дисконтных карт
18 ЗначениеУсловияАвтоматическойСкидки: Серебряная карта
19 КлючСтроки: 4
20 КлючСвязи: 0
21 ЗаказПокупателя: Заказ покупателя ТД000000001 от 08.06.2008 12:00:00
///Конец Функция ПоказатьТаблицу///
Имя таб части: ВозвратнаяТара
///Функция ПоказатьТаблицу///
///Конец Функция ПоказатьТаблицу///
Имя таб части: Услуги
///Функция ПоказатьТаблицу///
///Конец Функция ПоказатьТаблицу///
Имя таб части: СерийныеНомера
///Функция ПоказатьТаблицу///
///Конец Функция ПоказатьТаблицу///
Имя таб части: СерийныеНомераСоставНабора
///Функция ПоказатьТаблицу///
///Конец Функция ПоказатьТаблицу///
Имя таб части: ДокументыРасчетовСКонтрагентом
///Функция ПоказатьТаблицу///
///Конец Функция ПоказатьТаблицу///
Тема: 1С 8.3 Ошибка обновления
Опции темы
Поиск по теме
1С 8.3 Ошибка обновления
Давно не обновлялся. Тут решил в связи с тем, что произошли изменения в реквизитах платежей в бюджет. Поэтому три дня обновлял БП с версии 3.0.69.х до 3.0.87.28. Где-то в районе 3.0.75 выдало предупреждение о каком-то неуникальном имени. Я не обратил внимание на это и продолжил обновление. По завершению зашел в базу. При входе выдало ошибку:
Запись с такими ключевыми полями существует! : ОбработчикиОбновления: РасчетЗарплатыДляНебольшихОрганизаций.ЗаполнитьУдержаноОтпусковИБольничных (Регистр сведений: Обработчики обновления; Номер строки: 236)
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(3418)>: НаборРазделенныхОбработчиков.Записать();
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(1901)>: ДобавитьОтложенныеОбработчики(ИмяБиблиотеки, ОбработчикиПоВерсиям.Строки, ГруппаОбновления, ТекстОшибок);
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(1686)>: ОбновитьСписокВыполняемыхОбработчиковОбновления(ИтерацииОбновления);
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(93)>: ВыполнитьДействияПриОбновленииИнформационнойБазы(ПараметрыОбновления, ДополнительныеПараметры);
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2289)>: Результат = ВыполнитьОбновлениеИнформационнойБазы(ПараметрыОбновления);
<(1)>:ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОбновлениеИнформационнойБазыВФоне(Параметры[0],Параметры[1])
<ОбщийМодуль.ОбщегоНазначения.Модуль(5113)>: Выполнить ИмяМетода + “(” + ПараметрыСтрока + “)”;
<ОбщийМодуль.ДлительныеОперации.Модуль(1036)>: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
<ОбщийМодуль.ДлительныеОперации.Модуль(1026)>: ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
по причине:
Запись с такими ключевыми полями существует! : ОбработчикиОбновления: РасчетЗарплатыДляНебольшихОрганизаций.ЗаполнитьУдержаноОтпусковИБольничных (Регистр сведений: Обработчики обновления; Номер строки: 236)
Можете посоветовать, что сделать, как исправить? Я никогда ничего не делал в конфигураторе кроме обновления базы, которое всегда происходило без проблем.
Бэкап остался от 8.3.69, но так не хочется терять труды двух-трехдневных ожиданий.
Чтение отдельных реквизитов объекта из базы данных
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
При чтении отдельных реквизитов объекта из базы данных следует иметь в виду, что вызов метода ПолучитьОбъект или обращение к реквизитам объекта через точку от ссылки приводит к загрузке объекта из базы целиком, вместе с его табличными частями.
Поэтому для чтения значений отдельных реквизитов из базы данных следует использовать запрос. Например, неправильно:
СтранаСсылка = … // получаем ссылку на элемент справочника
КодСтраны = СтранаСсылка.Код; // первое обращение загружает объект целиком
НаименованиеСтраны = СтранаСсылка.Наименование;
Запрос = Новый Запрос(
“ВЫБРАТЬ
| СтраныМира.Код,
| СтраныМира.Наименование
|ИЗ
| Справочник.СтраныМира КАК СтраныМира
|ГДЕ
| СтраныМира.Ссылка = &Ссылка”);
Запрос.УстановитьПараметр(“Ссылка”, Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
КодСтраны = Выборка.Код;
НаименованиеСтраны = Выборка.Наименование;
Для упрощения синтаксиса рекомендуется также использовать специальные функции ЗначенияРеквизитовОбъекта или ЗначениеРеквизитаОбъекта (входят в состав Библиотеки стандартных подсистем).
В этом случае исходный пример будет выглядеть так:
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтранаСсылка, “Код, Наименование”);
КодСтраны = ЗначенияРеквизитов.Код;
НаименованиеСтраны = ЗначенияРеквизитов.Наименование;




