НайтиПоРеквизиту() ругается Неверное имя реквизита! ПОМОГИТЕ плз!
Подскажите почему всё же не работает НайтиПоРеквизиту, пожалуйста.
спрУслНомер = СоздатьОбъект("Справочник.УсловныйНомер");
Если спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1)=1 Тогда
спрУслНомер.ТекущийЭлемент();
спрУслНомер.Дата=ТекущаяДата();
Иначе
спрУслНомер.Новый();
спрУслНомер.Номер = услНомер;
спрУслНомер.Дата = ТекущаяДата();
спрУслНомер.Записать();
КонецЕсли;
В свойствах реквизита "Номер" стоят галочки напротив: Неотрицательный и Сортировка. Тип реквизита число 15,0.
В центральной базе (УРБД) всё работает нормально. В периферийной базе при запуске ругается на "Неверное имя реквизита!". Настройки реквизита проверил - в обоих базах одинаково.
спрУслНомер = СоздатьОбъект("Справочник.УсловныйНомер");
Если спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1)=1 Тогда
спрУслНомер.ТекущийЭлемент();
спрУслНомер.Дата=ТекущаяДата();
Иначе
спрУслНомер.Новый();
спрУслНомер.Номер = услНомер;
спрУслНомер.Дата = ТекущаяДата();
спрУслНомер.Записать();
КонецЕсли;
В свойствах реквизита "Номер" стоят галочки напротив: Неотрицательный и Сортировка. Тип реквизита число 15,0.
В центральной базе (УРБД) всё работает нормально. В периферийной базе при запуске ругается на "Неверное имя реквизита!". Настройки реквизита проверил - в обоих базах одинаково.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10)Если НайтиПоНомеру имеете ввиду НайтиПоКоду(,) - то конечно не работает т.к. необходимо искать по числовому реквизиту с названием "Номер", а не по коду элемента справочника.
1С 7.7 стандартная релиз 7.70.027. Единственная фитча это то, что 1Ска стоит на Windows server 2008R1 x64.
Режим отладки ничего в данном случае не показывает.
Книжки по 1С 7,7 имеется и пользую. К сожалению не являюсь профи в 1С, поэтому и прошу совета. Удивил тот факт что центральная база запускается без проблем, а вот периферийная выдаёт ошибку при запуске.
1С 7.7 стандартная релиз 7.70.027. Единственная фитча это то, что 1Ска стоит на Windows server 2008R1 x64.
Режим отладки ничего в данном случае не показывает.
Книжки по 1С 7,7 имеется и пользую. К сожалению не являюсь профи в 1С, поэтому и прошу совета. Удивил тот факт что центральная база запускается без проблем, а вот периферийная выдаёт ошибку при запуске.
(9)
спрУслНомер = СоздатьОбъект("Справочник.УсловныйНомер");
Если спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1)=1 Тогда
спрУслНомер.Дата=ТекущаяДата();
Иначе
спрУслНомер.Новый();
спрУслНомер.Номер = услНомер;
спрУслНомер.Дата = ТекущаяДата();
КонецЕсли;
спрУслНомер.Записать();
Показать
Переписал код:
спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1);
Если спрУслНомер.Выбран() > 0 Тогда
спрУслНомер.ТекущийЭлемент();
спрУслНомер.Дата=ТекущаяДата();
спрУслНомер.Записать();
Иначе
спрУслНомер.Новый();
спрУслНомер.Номер = услНомер;
спрУслНомер.Дата = ТекущаяДата();
спрУслНомер.Записать();
КонецЕсли;
Центральная база запускает и работает без проблем, а в периферийной ошибка при запуске 1С:
спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1);
{Глобальный модуль(8711)}: Значение не представляет агрегатный объект (НайтиПоРеквизиту)
Подскажите от куда ноги могут расти у этой ошибки.
спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1);
Если спрУслНомер.Выбран() > 0 Тогда
спрУслНомер.ТекущийЭлемент();
спрУслНомер.Дата=ТекущаяДата();
спрУслНомер.Записать();
Иначе
спрУслНомер.Новый();
спрУслНомер.Номер = услНомер;
спрУслНомер.Дата = ТекущаяДата();
спрУслНомер.Записать();
КонецЕсли;
Центральная база запускает и работает без проблем, а в периферийной ошибка при запуске 1С:
спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1);
{Глобальный модуль(8711)}: Значение не представляет агрегатный объект (НайтиПоРеквизиту)
Подскажите от куда ноги могут расти у этой ошибки.
Спасибо за помощь, сам не досмотрел.
спрУслНомер = СоздатьОбъект("Справочник.УсловныйНомер");
Если спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1)=1 Тогда
...
КонецЕсли;
- используется в процедуре, а в другой процедуре есть этот же кусок но без спрУслНомер = СоздатьОбъект("Справочник.УсловныйНомер");.
Путаницу вызывало, то что первая процедура стартует приЗапускеСистемы и по определённым условиям вызывает вторую процедуру или выполняет код с СоздатьОбъект("Справочник.УсловныйНомер"), а вторая тоже по определённым условиям вызывает первую, но и сама содержит этот код, но без СоздатьОбъект("Справочник.УсловныйНомер").
Условия завязаны на таймер времени и код процессора через Dll. Т.к. всё это крутится на Win2008R2 x64 + 24 ядра (12 core with Hyper-threading), то иногда выполняется код где спрУслНомер не создаётся как обьект и соответственно НайтиПоРеквизиту не работает.
спрУслНомер = СоздатьОбъект("Справочник.УсловныйНомер");
Если спрУслНомер.НайтиПоРеквизиту("Номер",услНомер,1)=1 Тогда
...
КонецЕсли;
- используется в процедуре, а в другой процедуре есть этот же кусок но без спрУслНомер = СоздатьОбъект("Справочник.УсловныйНомер");.
Путаницу вызывало, то что первая процедура стартует приЗапускеСистемы и по определённым условиям вызывает вторую процедуру или выполняет код с СоздатьОбъект("Справочник.УсловныйНомер"), а вторая тоже по определённым условиям вызывает первую, но и сама содержит этот код, но без СоздатьОбъект("Справочник.УсловныйНомер").
Условия завязаны на таймер времени и код процессора через Dll. Т.к. всё это крутится на Win2008R2 x64 + 24 ядра (12 core with Hyper-threading), то иногда выполняется код где спрУслНомер не создаётся как обьект и соответственно НайтиПоРеквизиту не работает.
Фитча заключалась в привязке DLL к процессору. При переносе сервера в виртуальную среду всё решилось т.к. (как оказывается) для гостевой ситемы передаётся 1 CPU, но количеством потоков равным установленным в среде визуализации CPU (Применимо для Oracle VirtualBox 4)
Вот код. Что не нравится непойму выдает ошибку : Неверное имя реквизита!
Реквизит МОЛ в справочнике местахранения есть?
Спр = СоздатьОБъект("Справочник.МестаХранения");
Если Спр.НайтиПоРеквизиту("МОЛ",Строка(ОсновноеСредство.МОЛ.Получить(ДатаДок) ),1) = 1 Тогда
Операция.Кредит.Субконто (2,Спр.ТекущийЭлемент());
Операция.Кредит.Субконто (3,ОсновноеСредство.МОЛ.Получить(ДатаДок));
КонецЕсли;
Заранее благодарен!
Реквизит МОЛ в справочнике местахранения есть?
Спр = СоздатьОБъект("Справочник.МестаХранения");
Если Спр.НайтиПоРеквизиту("МОЛ",Строка(ОсновноеСредство.МОЛ.Получить(ДатаДок) ),1) = 1 Тогда
Операция.Кредит.Субконто (2,Спр.ТекущийЭлемент());
Операция.Кредит.Субконто (3,ОсновноеСредство.МОЛ.Получить(ДатаДок));
КонецЕсли;
Заранее благодарен!
Правильно ругется!
ЖКК читать нужно... или хотя-бы в Синтакс-Помошнике до конца дочитывать:
НайтиПоРеквизиту(<?>,,);
Синтаксис:
НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
Назначение:
Найти элемент справочника по значению реквизита.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<ИмяРеквизита> - строка с наименованием реквизита;
<Значение> - значение реквизита для поиска;
<ФлагГлобальногоПоиска> - флаг поиска:
0 - поиск выполняется в пределах подчинения справочника,
1 - поиск выполняется по всему справочнику.
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
Смотри строку, которую я выделил жирным+наклоном+подчёркиванием!
ЖКК читать нужно... или хотя-бы в Синтакс-Помошнике до конца дочитывать:
НайтиПоРеквизиту(<?>,,);
Синтаксис:
НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
Назначение:
Найти элемент справочника по значению реквизита.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<ИмяРеквизита> - строка с наименованием реквизита;
<Значение> - значение реквизита для поиска;
<ФлагГлобальногоПоиска> - флаг поиска:
0 - поиск выполняется в пределах подчинения справочника,
1 - поиск выполняется по всему справочнику.
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
Смотри строку, которую я выделил жирным+наклоном+подчёркиванием!
Для СТАНДАРТНЫХ РЕКВИЗИТОВ это не работает
например для :
строка.ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.НайтиПоРеквизиту("Владелец",номенклатура);
А реквизит "Владелец" в различных справочниках нужная вещь! для различных выборов.
Поэтому в этом случае решать только через запрос - параметр
"Владелец" = номенклатура
например для :
строка.ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.НайтиПоРеквизиту("Владелец",номенклатура);
А реквизит "Владелец" в различных справочниках нужная вещь! для различных выборов.
Поэтому в этом случае решать только через запрос - параметр
"Владелец" = номенклатура
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот