Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
1

Выборка значений из справочника СвойстваНоменклатуры

18.10.2015, 22:35. Показов 941. Ответов 4
Метки нет (Все метки)

Есть у товаров определённое свойство с определённым значением. Срок действия свойства конкретно с таким значением ограничен, периодически нужно заменять на новое значение. К примеру товаров в базе десятки тысяч, сотни или даже десятки (а бывает и единицы) из них связаны со старым значением. Нужно написать процедуру для замены - сначала показать в таблице эти товары, а потом по кнопке или сразу у всех заменить значение свойства или какой-то товар возможно исключить из процесса замены, если по ошибке было присвоено старое значение.
Работающая последовательность действий такая: открыть спрНоменклатура и спрСвойстваНоменклатуры, перебирать все элементы 1-го и во 2-ом также задать выборку, используя владельца из спрНоменклатура, и отбирать те элементы номенклатуры, для которых совпадают ВидСвойства и Значение в спрСвойстваНоменклатуры. Это конечно занимает прилично времени, так как перебираются десятки тысяч элементов в спрНоменклатура.
Полагаю, что быстрее было бы найти в спрСвойстваНоменклатуры те элементы, которые имеют нужное значение свойства, а это десяток/сотня позиций. В этой таблице ведь содержится ссылка на владельца (код элемента из спрНоменклатура), по ним бы далее и выбрать из спрНоменклатура нужные элементы для показа.
Но 1С работает так, что для выборки в подчинённом справочнике требуется указать владельца или родителя. Возможно ли обойти это требование и начать процесс выборки с спрСвойстваНоменклатуры, там находить код владельца и по нему вытаскивать из спрНоменклатура нужный товар для показа.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2015, 22:35
Ответы с готовыми решениями:

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

Отбор (выборка) элементов справочника
Добрый день, Ситуация следующая: Имеется иерархический (2 уровня) справочник "Двидения денежных...

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

Выборка из справочника списка дат без учета времени
Производство, конфигурация с нуля своя. Есть некий справочник ТестЭлПрочности с реквизитом...

4
0 / 0 / 1
Регистрация: 19.10.2015
Сообщений: 2
19.10.2015, 14:52 2
Вы можете просто выборку сделать в подчиненном справочнике запросом. Например я взял справочник "Банковские счета", он подчинен справочнику "Банки". И теперь простым запросом сразу получаю.
1C
1
2
3
4
5
ВЫБРАТЬ
    БанковскиеСчета.Владелец,
    БанковскиеСчета.НомерСчета
ИЗ
    Справочник.БанковскиеСчета КАК БанковскиеСчета
Соответственно в условии запроса добавляете отбор по свойству.
0
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
20.10.2015, 16:35  [ТС] 3
Спасибо за ответ, подобно наверное и сделал:
1C
1
2
3
Спр = СоздатьОбъект("Справочник.СвойстваНоменклатуры");
Спр.ВыбратьЭлементыПоРеквизиту("ЗначениеСвойства", Свойство,0,0);
while (Спр.ПолучитьЭлемент() > 0) do
ВЫБРАТЬ ... ИЗ... в версии 7.7 разве работает? Забыл указать версию 1С.

Меня, как начинающего в 1С, сбило с толку прочитанное на одном из сайтов:
"Перебор элементов подчиненного справочника.
При работе с подчиненным справочником (например, при переборе или поиске элементов) требуется указать, для какого конкретно элемента-владельца получать подчиненные элементы. Для этого предназначена процедура ИспользоватьВладельца(ОбъектВладелец) агрегатного типа данных Справочник . На примере перебора всех моделей заданной марки сотовых телефонов это выглядело бы так:
1C
1
2
3
4
5
6
7
8
спр=СоздатьОбъект("Справочник.Модели");
 спрМарка=СоздатьОбъект("Справочник.Марки");
 спрМарка.НайтиПоНаименованию("SAMSUNG");
 спр.ИспользоватьВладельца(спрМарка.ТекущийЭлемент());
 спр.ВыбратьЭлементы();
 Пока спр.ПолучитьЭлемент()=1 Цикл
    Предупреждение(спр.ТекущийЭлемент().Наименование);
 КонецЦикла;
"
0
Модератор
Эксперт 1С
3155 / 2826 / 539
Регистрация: 10.03.2011
Сообщений: 10,921
Записей в блоге: 1
21.10.2015, 01:05 4
Yupiter, запрос тоже без владельца не выбирает? (давно 7.7 не юзал...)
0
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
21.10.2015, 10:28  [ТС] 5
Про запросы ничего пока не скажу, недели не прошло, как стал знакомиться с 1С (код сочинять в нём). То, что привёл выше (три строчки, владельца не указывал), конкретно работает. Значит и запрос должен работать, скорее всего.
Так что не понятно, к чему написали на том сайте "требуется указать, для какого конкретно элемента-владельца получать подчиненные элементы". И без этого работает, как выяснилось. Только много времени зря потратил из-за этого замечания.
0
21.10.2015, 10:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2015, 10:28

Полученик значений из справочника
Подскажите пытаюсь разобраться с тем где, что использовать: 1С8.2 УТ В номенклатуре создали...

Запрет повторяющихся значений реквизита справочника
Существует справочник Клиенты с реквизитом Телефон. Как можно запретить дублирование данного...

Таблица значений как реквизит справочника
Для сохранения таблицы значений в элементе группы справочника я сохраняю ее в строке с...

Отбор значений элементов справочника по команде
Помогите в написании кода для команды в 1с 8.3 Есть два справочника: "Работодатели" и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru