Неверный второй параметр реквизиты в функции общего назначения значения реквизитов объекта
Сообщение «Неверный первый параметр…» в БГУ 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С 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, но так не хочется терять труды двух-трехдневных ожиданий.
Чтение отдельных реквизитов объекта из базы данных
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
При чтении отдельных реквизитов объекта из базы данных следует иметь в виду, что вызов метода ПолучитьОбъект или обращение к реквизитам объекта через точку от ссылки приводит к загрузке объекта из базы целиком, вместе с его табличными частями.
Поэтому для чтения значений отдельных реквизитов из базы данных следует использовать запрос. Например, неправильно:
СтранаСсылка = … // получаем ссылку на элемент справочника
КодСтраны = СтранаСсылка.Код; // первое обращение загружает объект целиком
НаименованиеСтраны = СтранаСсылка.Наименование;
Запрос = Новый Запрос(
«ВЫБРАТЬ
| СтраныМира.Код,
| СтраныМира.Наименование
|ИЗ
| Справочник.СтраныМира КАК СтраныМира
|ГДЕ
| СтраныМира.Ссылка = &Ссылка»);
Запрос.УстановитьПараметр(«Ссылка», Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
КодСтраны = Выборка.Код;
НаименованиеСтраны = Выборка.Наименование;
Для упрощения синтаксиса рекомендуется также использовать специальные функции ЗначенияРеквизитовОбъекта или ЗначениеРеквизитаОбъекта (входят в состав Библиотеки стандартных подсистем).
В этом случае исходный пример будет выглядеть так:
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтранаСсылка, «Код, Наименование»);
КодСтраны = ЗначенияРеквизитов.Код;
НаименованиеСтраны = ЗначенияРеквизитов.Наименование;
Как получить доступ к реквизитам объекта?
Статья носит справочный характер. Предназначена для начинающих программистов.
Получить массив реквизитов объекта можно при помощи самого объекта:
Получив массив реквизитов, можно организовать Цикл для просмотра имен реквизитов:
Для того, чтобы получить значения реквизитов объекта вообще говоря надо обратиться с запросом к БД, типа:
В запрос надо передать ссылку на объект и имя реквизита. Запрос вернет таблицу или выборку со значением реквизита.
Поскольку в функцию ПолучитьЗначенияРеквизитов() во второй параметр надо передать структуру, то мы создали структуру и организовали Цикл ее инициализации данными из массива имен реквизитов объекта. Возвращает функция так же структуру (ключ-значение), с которой удобно работать. Для просмотра этой структуры можно воспользоваться циклом, либо вызвать функцию СканПростойСтруктуры(), которой передать структуру для просмотра.
Если исследуемый объект использует так же еще и общие реквизиты, и их необходимо найти, то можно воспользоваться функцией МассивИменРеквизитовОбъекта(), которая находит не только реквизиты объекта но и общие и даже стандартные реквизиты, которые использует объект:
Тогда программа будет выглядеть так:
Как получить значение отдельного реквизита объекта?
Иногда необязательно получать значения всего массива реквизитов. Программист как правило знает имя реквизита, значение которого необходимо получить. К отдельному реквизиту объекта можно обратиться просто по его имени:
Получить значение этого реквизита можно так же через запрос, написанный специально для этого реквизита. Но можно воспользоваться все той же функцией ПолучитьЗначенияРеквизитов(). Цикл для настройки структуры в этом случае не нужен, так как нам надо найти значение всего одного элемента:
Обратите внимание что здесь реквизит который необходимо найти преобразовывается к типу Строка, потому, что в структуру настроек надо передать именно строку.
Как найти имена реквизитов в таб части объекта?
Функция определяет есть ли реквизит в таб части документа:
Сообщить имя реквизитов таб части:
Как найти значение всех реквизитов всех таб частей документа через запрос
Чтобы найти значения всех реквизитов всех табличных частей объекта через запрос воспользуемся функцией
Результат для документа «Реализация товаров услуг»:
Имя таб части: Товары
///Функция ПоказатьТаблицу///
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С
Параметр в 1С – это некий элемент, принятый функцией. В данной статье поговорим о видах и типах параметров, а также рассмотрим, как задать параметры так, чтобы избежать ошибки «Неверные параметры» в 1С.
1. Как установить параметр в запросе?
Параметр запроса – это некоторый элемент, который находится внутри функции поиска по базе данных. Рассмотрим пример, как должны быть установлены параметры запроса. Например, пускай нам нужно получить составляющие из перечня-справочника под названием «Еда» красного, жёлтого или зелёного цвета, это будет иметь такой вид:
Рис. 1 Как установить параметр в запросе «Красный»
Рис. 2 Как установить параметр в запросе «Желтый»
Рис. 3 Как установить параметр в запросе «Зеленый»
Можно увидеть, что, по факту, все эти запросы одинаковые и разность только в цвете. Это-то и есть наш параметр – та переменная, которую не хотелось бы каждый раз повторять. В вышеуказанном примере параметр – это цвет, дадим ему имя «ВыбранныйЦвет» и поменяем значения цветов на эту переменную внутри запроса. А для того чтобы указать, что это именно параметр, нужно приписать перед именем амперсанд «&», тогда мы сможем задать параметр в запросе:
Рис. 4 Как задать параметр в запросе «ВыбранныйЦвет»
После этой процедуры пробуем выполнить наш запрос, результат будет пустым и выглядеть так:
Рис. 5 Результат неверного параметра в запросе пустой
Результат запроса пустой по причине того, что в коде не было указано само значение параметра. Выберем имя, для этого потребуется задействовать панель, которая находится над редактором запросов. Внутри данной панели размещен текст запросов:
Рис. 6 Редактор запросов – панель с текстом запросов
Система 1С уже узнала параметр внутри запроса и выделила его в соответствующей секции, но пока без значений. Меняем пустое значение запроса, например, на значение «Жёлтый».
Рис. 7 Смена пустого значения запроса на «Желтый»
Теперь запрос выполнится! Аналогично можно заполнить оставшиеся значения. Так при помощи параметра можно в одном и том же запросе получать результаты, которые отличаются. То есть, главная функция параметров внутри запросов – делать их более обобщёнными. Это особенно актуально в сложных запросах, так как достаточно будет только изменить сам параметр, не меняя весь запрос.
2. Функция параметра «Ссылка»
В этом варианте будет сравниваться в качестве ограничения для параметра не название цвета, а значение по ссылке:
Рис. 8 Ограничение для параметра – значение по ссылке
Наш параметр «ВыбранныйЦвет» из строки превратился в ссылку на какой-то элемент внутри справочника «Цвета», поэтому у пользователя есть возможность изменить параметр и его тип:
Рис. 9 Изменения типа параметра в 1С
После этого, в момент, когда ведётся выбор значения данного параметра, перед нами появится выпадающий список с перечнем цветов – это функция параметра ссылки.
3. Параметр «Дата»
Допустим, нужен запрос, который будет выбирать заказы клиентов в определённый период. Данный период будет иметь две границы – «НачалоИнтервала» и «КонецИнтервала».
Рис. 10 Параметр «Дата»
Аналогично выполняем данный запрос и видим, что 1С уже распознала, что у данного параметра тип «Дата». Пусть нам нужны заказы за январь 2014 года, тогда получим:
Рис. 11 Пример запроса по параметру «Дата»
Результат запроса с параметром «Дата» будет выглядеть следующим образом:
Рис. 12 Результат запроса с параметром «Дата»
В данной статье были рассмотрены параметры в системе 1С, видов параметр внутри запроса, параметр с типом «Дата», параметры с типом «Ссылка», аналогично проводится работа с параметрами в списках таблиц и таблиц со значениями. Ошибка в них возникает в случае задания невозможного названия, типа, их несоответствий, пунктуационных ошибок в коде программы.