powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Как запросом получить список всех родителей зад-го элемента
86 сообщений из 86, показаны все 4 страниц
Как запросом получить список всех родителей зад-го элемента
    #36596399
LogvinovSerj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с еще одной проблемой ... Есть иерархический справочник по элементам. Как запросом получить список всех родителей заданного элемента?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36596581
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну получили и дальше что?

ps Правильный вопрос уже содержит половину ответа.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36596757
LogvinovSerj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с
По моему я задал абсолютно правильный вопрос!!! Я задал цель, а вот для чего - разве без этого не понятен вопрос???
Есть документ согласования! Соответсвенно какой-то сотрудник создает документ и все его!!! начальники получают его и ставят свое резюме!
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36596868
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у вас "родители" элемента - начальники? А при увольнении (начальника) или перемещении (начальника) вы модифицируете свой иерархический справочник?

Ничего не путаете?

ps На практике встречал всего ОДИН случай когда требовались родители. И то при переносе между базами.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597034
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LogvinovSerj, для 7.7 есть компонента ToySQL у нее есть метод СоздатьИерархию (CreateHierarchy) которая решает твою задачу. Скачай демо версию (так просто не скачивается по моему, надо отправлять запрос автору) и оттрасируй в профайлере, что делает компонента при использовании данного метода и повтори на 8х, либо спроси на форуме 1CSQL.ru как это сделать.

Мне как то на собеседовании очень продвинутый 1С нег с которым я собеседовался, сказал, что такое запросом сделать нельзя, только рекурсией, я хотя и помнил про метод ToySQL, но промолчал, т.к. этой задачей на 8х никогда не заморачивался:)
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597058
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597094
LogvinovSerjСтолкнулся с еще одной проблемой ... Есть иерархический справочник по элементам. Как запросом получить список всех родителей заданного элемента?

Для справочника с количеством уровней иерархии, например, 5, запрос будет выглядеть так:

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", КонтрагентСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Родитель
|ИЗ
| (ВЫБРАТЬ
| Контрагенты.Родитель КАК Родитель
| ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ГДЕ
| Контрагенты.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Контрагенты.Родитель.Родитель
| ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ГДЕ
| Контрагенты.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Контрагенты.Родитель.Родитель.Родитель
| ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ГДЕ
| Контрагенты.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Контрагенты.Родитель.Родитель.Родитель.Родитель
| ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ГДЕ
| Контрагенты.Ссылка = &Ссылка) КАК ВложенныйЗапрос
|ГДЕ
| ВложенныйЗапрос.Родитель <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)";


Если количество уровней иерархии заранее неизвестно, то текст запроса надо конструировать по частям в цикле, предварительно вытащив это количество из метаданных.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597175
Паля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LogvinovSerjСтолкнулся с еще одной проблемой ... Есть иерархический справочник по элементам. Как запросом получить список всех родителей заданного элемента?
Иерархия справочников в 1с не предназначена для решения вашей задачи. окститесь пока не поздно. припишите начальников по другому.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597221
LogvinovSerj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считаю данный иерархический справочник структуры подчинения почти идеальный! В основном на фирме и требуется, чтобы начальник знал документы и элементы своих подчиненных! А это элементарно при помощи - в иерархии!
По поводу жесткого ограничения уровней иерархии - не катит, сегодня их пять, завтра 10! Я вообще всю жизнь был программером Delphi и SQL Server и данный запрос в старых средах программирования сделал бы за пару минут! А вот в 1с как не крутил - так и не сделал ((( Вот и хотел спросить - может у кого нечто подобное реализовано!
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597232
LogvinovSerj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все! Я понял, что 1с запросом это сделать не сможет! Очень жаль. Тогда сделаю обычной функцией. Примерно так:

функция ПоказатьВсехНачальников(Пользователь)
Если Пользователь = Неопределено Или Пользователь.Родитель = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;

Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("Пользователь");
Начальник = Пользователь.Родитель;

Пока НЕ Начальник = Неопределено Цикл
Запись = Результат.Добавить();
Запись.Пользователь = Начальник;
Начальник = Начальник.Родитель;
КонецЦикла;
КонецФункции
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597392
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LogvinovSerjСчитаю данный иерархический справочник структуры подчинения почти идеальный! В основном на фирме и требуется, чтобы начальник знал документы и элементы своих подчиненных! А это элементарно при помощи - в иерархии!
По поводу жесткого ограничения уровней иерархии - не катит, сегодня их пять, завтра 10! Я вообще всю жизнь был программером Delphi и SQL Server и данный запрос в старых средах программирования сделал бы за пару минут! А вот в 1с как не крутил - так и не сделал ((( Вот и хотел спросить - может у кого нечто подобное реализовано!Мдаа. Вот я открыл то что писал полгода назад и вижу ошибки... А у вас сразу идеально - повезло наверное...

vitkhv вам хороший ответ привел.

А есть еще один хороший вариант. Вы когда выводите остатки с группами - представьте что у вас есть остаток только у вашего "подчиненного" и выводите все также.

ps Еще раз подумайте. Вам родители в запросе нужны? Или всетаки в выборке?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597711
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Запрос=Новый Запрос;
Запрос.Параметр("Код","%"+Прав(Найти(справочникобъект.полныйкод()- 1 ,"/")+"%");
Запрос.Текст=
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Код ПОДОБНО &Код
	|	И Номенклатура.ЭтоГруппа";

в общем мелкие ошибки есть = ищите сами ибо мне лень
идея такая
хотели одним запросом? ну вот он ...
надеюсь код строковый?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597715
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще одно условие
код уникальный в пределах справочника!
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597722
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Все! Я понял, что 1с запросом это сделать не сможет!

never say never
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597833
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LogvinovSerjИдея правильная, для такой задачи нужно делать запрос в цикле.

Программист 1С, leaf.
А можно глупый вопрос, зачем решать задачу одним запросом?
Потому что так рекомендует 1С???
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36597908
HoBTIDLogvinovSerjИдея правильная, для такой задачи нужно делать запрос в цикле.

Программист 1С, leaf.
А можно глупый вопрос, зачем решать задачу одним запросом?
Потому что так рекомендует 1С???

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

Другими словами, получение массива данных большим запросом вместо нескольких маленьких (кстати, запрос в цикле является грубой ошибкой) оптимизирует работу с базой данных.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598078
Jatz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закиров Дамир,

только не стоит забывать про особенности оптимизаторов конкретных СУБД
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598094
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на самом деле из метода имеем список значений кодов
его и передаем в запрос потом получаем список родителей
слишком много ошибок

Но на самом деле :
"Тому не надо ходить далеко у кого черт за плечами Вакула ..."

в полном коде все есть
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598114
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafна самом деле из метода имеем список значений кодов
его и передаем в запрос потом получаем список родителей
слишком много ошибок

Но на самом деле :
"Тому не надо ходить далеко у кого черт за плечами Вакула ..."

в полном коде все есть

Вот, что значит не замыленный взгляд.
Как в 1С та живется после foxpro?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598130
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что значит не замыленный ?
я уже 3 года или больше как с фокса соскачил
да что я то? Вон piva тут ошивается
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598139
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafчто значит не замыленный ?
я уже 3 года или больше как с фокса соскачил
да что я то? Вон piva тут ошивается

3 года для 1С видимо не срок ;), ведь полный код еще в 7.7 был, а данное решение первый раз вижу, отправь в книгу знаний на мисту....
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598158
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю найдется кому запатентовать ...
а вообще тут главное хелп уметь читать
по сравнению с фоксом тут в этом смысле легче ...

а насчет того что оно и в 7_7 было ...
так я его с 7_7 и знаю ... я и там был за 3-4 года
успел везде

насчет фокспрошников думаю :
если объявить перекличку - счас вылезут
просто на фоксе чуть другая отмосфера была ... фоксклуб и т.д.
отсутствие хелпа
больше старались помочь друг другу что бы среда разработки жила
здесь по другому
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598184
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закиров ДамирПлатформа построена так, что один запрос по нескольким таблицам (или несколько обращений в одном запросе к одной таблице,
что в данном случае происходит) всегда отрабатывает быстрее, чем несколько запросов каждый по своей таблице.Вы это откуда узнали, смотрели планы выполнения запросов и счетчики Reads, Writes, CPU в SQL Server Profiler?
Или может быть Вам об этом всего лишь сказали на курсах/прочитали в книге?

Закиров ДамирПлатформа на сервере преобразует запрос из формата 1С в формат SQL, попутно оптимизируя его.
Поэтому, когда Вы строите один большой запрос вместо нескольких маленьких,
Вы тем самым отдаете работу по оптимизации запроса в "руки" платформы.
Т.е., в данном примере, таблица справочника будет прочитана только один раз
(а не по количеству уровней иерархии в нем).

Другими словами, получение массива данных большим запросом вместо нескольких маленьких
(кстати, запрос в цикле является грубой ошибкой) оптимизирует работу с базой данных.Вы видели резальтаты этой "ОПТИМИЗАЦИИ" в профайлере SQL?
Или же по каким-то причинам просто предполагаете, якобы платформа "оптимизирует" его.

P.S.
Запрос в цикле является грубой ошибкой для новичков,
которые не умеют мыслить в категориях наборов данных,
для профессионалов высокого класса, иногда грубая ошибка - запрос без цикла.

По ссылке был приведен пример кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Т1.Ссылка.Родитель КАК Ссылка
ИЗ
    Справочник.Задача КАК Т1
ГДЕ
    Т1.Ссылка В ИЕРАРХИИ(&Ссылки) И Т1.ЭтоГруппа=ложь
ИТОГИ ПО
    Ссылка ТОЛЬКО ИЕРАРХИЯ

Функция обУбратьОшибкиИтоговПоИерархии(Строки, Поле="Ссылка", Родитель=Неопределено) Экспорт 
    //Убираем все элементы, равные текущему
    Всего=Строки.Количество();
    Для Инд= 1  По Всего Цикл
        Стр=Строки[Всего-Инд];
        Зн=Стр[Поле];
        Если Родитель<>Неопределено И Зн=Родитель Тогда
            Строки.Удалить(Стр);
        Иначе
            обУбратьОшибкиИтоговПоИерархии(Стр.Строки, Поле, Зн);
        КонецЕсли;
    КонецЦикла;
КонецФункции

...

ВычСправочникДерево=Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
обУбратьОшибкиИтоговПоИерархии(ВычСправочникДерево.Строки);


Если вы знакомы с профайлером SQL, сравните его пожалуйста со следующим кодом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Функция ПолучитьВсехРодителей(ИсходныйЭлемент) Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст = "
	|ВЫБРАТЬ
	|	Родитель
	|ИЗ
	|	Справочник.Номенклатура
	|ГДЕ
	|	Ссылка = &Ссылка
	|";

	МассивРодителей = Новый Массив;
	
	Запрос.УстановитьПараметр("Ссылка", ИсходныйЭлемент);
	Выборка = Запрос.Выполнить().Выбрать();
	
	ТекРодитель = Справочники.Номенклатура.ПустаяСсылка();
	Если Выборка.Следующий() Тогда
		ТекРодитель = Выборка.Родитель;
	КонецЕсли;
	
	Пока Не ТекРодитель.Пустая() Цикл
		МассивРодителей.Вставить( 0 , ТекРодитель);
		Запрос.УстановитьПараметр("Ссылка", ТекРодитель);
		
		Выборка = Запрос.Выполнить().Выбрать();
		Если Выборка.Следующий() Тогда
			ТекРодитель = Выборка.Родитель;
		КонецЕсли;
	КонецЦикла; 	
	
	Возврат МассивРодителей;
КонецФункции
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598192
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafдумаю найдется кому запатентовать ...
а вообще тут главное хелп уметь читать
по сравнению с фоксом тут в этом смысле легче ...

а насчет того что оно и в 7_7 было ...
так я его с 7_7 и знаю ... я и там был за 3-4 года
успел везде

насчет фокспрошников думаю :
если объявить перекличку - счас вылезут
просто на фоксе чуть другая отмосфера была ... фоксклуб и т.д.
отсутствие хелпа
больше старались помочь друг другу что бы среда разработки жила
здесь по другому

На территории 1С в свое время тоже никто в Хелп не отправлял, на том сайте собственно говоря 1С и учился, и атмосфера там была своя, особенная .... эх ностальгия ;)
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598207
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leaf
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Запрос=Новый Запрос;
Запрос.Параметр("Код","%"+Прав(Найти(справочникобъект.полныйкод()- 1 ,"/")+"%");
Запрос.Текст=
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Код ПОДОБНО &Код
	|	И Номенклатура.ЭтоГруппа";

в общем мелкие ошибки есть = ищите сами ибо мне лень
идея такая
хотели одним запросом? ну вот он ...
надеюсь код строковый?Здесь не мелкие ошибки, а принципиально неверный подход.
Так не будет работать, потому что полный код не хранится в базе и к нему нельзя обратиться в запросе.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598217
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну оно и к лучшему как по мне ...
я все равно , например , все ответы на профа нашел
причем когда сам ищешь ИМХО лучше
а иногда просто обсудить есть желание
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598224
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Здесь не мелкие ошибки, а принципиально неверный подход.
Так не будет работать, потому что полный код не хранится в базе и к нему нельзя обратиться в запросе.

согласен, но список кодов родителей можно получить в текущем элементе
отправить на сервер и получить в запросе всех родителей
если это нужно
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598233
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDleaf
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Запрос=Новый Запрос;
Запрос.Параметр("Код","%"+Прав(Найти(справочникобъект.полныйкод()- 1 ,"/")+"%");
Запрос.Текст=
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Код ПОДОБНО &Код
	|	И Номенклатура.ЭтоГруппа";

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

Полный код в базе не храниться, грубо говоря в в трасе при выполнении функции ПолныйКод() формируется столько запросов, сколько уровней вложенности для каждого элемента справочника т.е. можно сказать что приблизительно повторяется метод приведенный Закиров Дамир, только без объеденений. Но в рамках текущей задачи применение данного метода оправданно, если нужно что более производительное, например массовое получение иерархии для нескольких элементов справочника то в этой теме ссылки на примеры уже были.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598267
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы
ну ладно
а так?
Ном выбирается на форме ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Запрос=Новый Запрос;
МнСтр=СтрЗаменить(Ном.ПолныйКод(),"/",Символы.ПС);
Массив=Новый Массив;
Для н= 1  По СтрЧислоСтрок(МнСтр) Цикл
	Массив.Добавить(СтрПолучитьСтроку(МнСтр,н));
КонецЦикла;
Запрос.УстановитьПараметр("КК",Массив);
Запрос.Текст=
"ВЫБРАТЬ
|	Номенклатура.Ссылка,
|	Номенклатура.Наименование,
|	Номенклатура.Код
|ИЗ
|	Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|	Номенклатура.Код В (&КК)
|	";

ТЗ=Запрос.Выполнить().Выгрузить();
ТЗ.ВыбратьСтроку();

где рекурсия?
запрос вроде один
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598285
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafГы
ну ладно
а так?
Ном выбирается на форме ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Запрос=Новый Запрос;
МнСтр=СтрЗаменить(Ном.ПолныйКод(),"/",Символы.ПС);
Массив=Новый Массив;
Для н= 1  По СтрЧислоСтрок(МнСтр) Цикл
	Массив.Добавить(СтрПолучитьСтроку(МнСтр,н));
КонецЦикла;
Запрос.УстановитьПараметр("КК",Массив);
Запрос.Текст=
"ВЫБРАТЬ
|	Номенклатура.Ссылка,
|	Номенклатура.Наименование,
|	Номенклатура.Код
|ИЗ
|	Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|	Номенклатура.Код В (&КК)
|	";

ТЗ=Запрос.Выполнить().Выгрузить();
ТЗ.ВыбратьСтроку();

где рекурсия?
запрос вроде один

При выполнении Ном.ПолныйКод() 1С SQL серверу будет отправлен ряд запросов для каждого уровня иерархии, но еще раз повторю, ваш пример достоин книги знаний на мисте, т.к. для получения иерархии для одного элемента справочника он почти идеален.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598303
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, если производительность не так важна, можно получить все коды родителей через ПолныйКод(),
а потом сделать запрос по массиву кодов. Если, опять же, счиать коды уникальными.
При таком подходе, как уже написал vitkhv , запрос в цикле скрывается внутри функции ПолныйКод().
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598312
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вообще то да
если подумать
но красиво однако
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598418
HoBTIDЗакиров ДамирПлатформа построена так, что один запрос по нескольким таблицам (или несколько обращений в одном запросе к одной таблице,
что в данном случае происходит) всегда отрабатывает быстрее, чем несколько запросов каждый по своей таблице.Вы это откуда узнали, смотрели планы выполнения запросов и счетчики Reads, Writes, CPU в SQL Server Profiler?
Или может быть Вам об этом всего лишь сказали на курсах/прочитали в книге?


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


HoBTID
Закиров ДамирПлатформа на сервере преобразует запрос из формата 1С в формат SQL, попутно оптимизируя его.
Поэтому, когда Вы строите один большой запрос вместо нескольких маленьких,
Вы тем самым отдаете работу по оптимизации запроса в "руки" платформы.
Т.е., в данном примере, таблица справочника будет прочитана только один раз
(а не по количеству уровней иерархии в нем).

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


Вы видели резальтаты этой "ОПТИМИЗАЦИИ" в профайлере SQL?
Или же по каким-то причинам просто предполагаете, якобы платформа "оптимизирует" его.

P.S.
Запрос в цикле является грубой ошибкой для новичков,
которые не умеют мыслить в категориях наборов данных,
для профессионалов высокого класса, иногда грубая ошибка - запрос без цикла.


Я склонен доверять решениям от 1С. [irony] Хотя для профессионалов ВЫСОКОГО КЛАССА это не фэн-шуй??? [/irony]

За запрос в цикле при попытке решения задачи на сертификацию Вас моментально выставят из учебного центра. При решении абсолютного большинства задач это будет ошибкой. Есть конечно и исключения, но их очень мало.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598458
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закиров Дамир

Я склонен доверять решениям от 1С. [irony] Хотя для профессионалов ВЫСОКОГО КЛАССА это не фэн-шуй??? [/irony]



Не фэншуй года 1С в стандартном коде получает ссылку на номенклатуру, а затем в цикле по выборке получает код, артикул и т.д. генерируя еще столько же запросов к SQL серверу сколько итераций в цикле.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598547
vitkhvЗакиров Дамир

Я склонен доверять решениям от 1С. [irony] Хотя для профессионалов ВЫСОКОГО КЛАССА это не фэн-шуй??? [/irony]



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

Ничего не понял. Это в чей огород булыжник?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598577
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закиров ДамирЯ склонен доверять решениям от 1С. [irony] Хотя для профессионалов ВЫСОКОГО КЛАССА это не фэн-шуй??? [/irony]

За запрос в цикле при попытке решения задачи на сертификацию Вас моментально выставят из учебного центра.
При решении абсолютного большинства задач это будет ошибкой.
Есть конечно и исключения, но их очень мало.Профессионалы высокого класса пользуются для оптимизации рекомендациями производителя СУБД,
в данном случае MS SQL Server, как более эффективными, чем рекомендации 1С.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598583
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закиров ДамирvitkhvЗакиров Дамир

Я склонен доверять решениям от 1С. [irony] Хотя для профессионалов ВЫСОКОГО КЛАССА это не фэн-шуй??? [/irony]



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

Ничего не понял. Это в чей огород булыжник?

В огород стандартных конф. от 1С и степени доверия к ним.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598659
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закиров Дамир,

Преведу простой пример не фэншуйности в типовых конфах от 1С.

ТекстЗапроса = "
|ВЫБРАТЬ Номенклатура,
| Количество,
| Коэффициент
|ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ РеализацияТоваровУслугТовары.Ссылка = &Документ
|";

Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Документ",ТекРеализация);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Если ИспользоватьАртикулВПечатныхФормах Тогда

ПечАртикул = Выборка.Номенклатура.Артикул;

КонецЕсли;

КонецЦикла;

Вот эта строчка: ПечАртикул = Выборка.Номенклатура.Артикул;
Выполняет в каждой итерации цикла запрос к Базе данных по элементу номенклатуры!
Что значительно снижает производительность, чем если б получение артикула было засунуто в основной запрос.
И код типовых 1С просто пестрит такими примерами.
А ты говориш выгнали бы в шею за запрос в цикле.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598697
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не всегда те кто сертифицируется тот и разрабатывает
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598795
vitkhvЗакиров Дамир,

Преведу простой пример не фэншуйности в типовых конфах от 1С.

ТекстЗапроса = "
|ВЫБРАТЬ Номенклатура,
| Количество,
| Коэффициент
|ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ РеализацияТоваровУслугТовары.Ссылка = &Документ
|";

Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Документ",ТекРеализация);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Если ИспользоватьАртикулВПечатныхФормах Тогда

ПечАртикул = Выборка.Номенклатура.Артикул;

КонецЕсли;

КонецЦикла;

Вот эта строчка: ПечАртикул = Выборка.Номенклатура.Артикул;
Выполняет в каждой итерации цикла запрос к Базе данных по элементу номенклатуры!
Что значительно снижает производительность, чем если б получение артикула было засунуто в основной запрос.
И код типовых 1С просто пестрит такими примерами.
А ты говориш выгнали бы в шею за запрос в цикле.


Попробовал глобальный поиск в "Управление торговлей", редакция 10.3 (10.3.3.3), нет такого даже близко.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598821
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закиров Дамир,

Ну так я пример сам писал.
Попробуй глобальным поиском так пойщи: Выборка.Номенклатура.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598847
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
	Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
		ТоварКод = "Артикул";
	Иначе
		ТоварКод = "Код";
	КонецЕсли;

	Текст = " 
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЛимитыОтпускаМатериалов.Подразделение.Представление 	КАК ПодразделениеПредставление,
	|	ЛимитыОтпускаМатериалов.Склад.Представление 			КАК СкладПредставление,
	|	ЛимитыОтпускаМатериалов.Номенклатура." + ТоварКод + "   КАК НоменклатурныйНомер,

УПП
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36598866
vitkhvЗакиров Дамир,

Ну так я пример сам писал.
Попробуй глобальным поиском так пойщи: Выборка.Номенклатура.

Нашел подобные бородавки в 7 местах УТ. Не "пестрит".
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599063
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закиров ДамирvitkhvЗакиров Дамир,

Ну так я пример сам писал.
Попробуй глобальным поиском так пойщи: Выборка.Номенклатура.

Нашел подобные бородавки в 7 местах УТ. Не "пестрит".

Ну так теперь поищи другие бородавки в запросах, которых нет слова номенклатура. И поймешь что 7 можно смело умножать на 100, если не на 1000.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599078
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leaf
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
	Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
		ТоварКод = "Артикул";
	Иначе
		ТоварКод = "Код";
	КонецЕсли;

	Текст = " 
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЛимитыОтпускаМатериалов.Подразделение.Представление 	КАК ПодразделениеПредставление,
	|	ЛимитыОтпускаМатериалов.Склад.Представление 			КАК СкладПредставление,
	|	ЛимитыОтпускаМатериалов.Номенклатура." + ТоварКод + "   КАК НоменклатурныйНомер,

УПП

leaf, тебе также предлагаю пойскать только в УПП глобальным поиском Выборка.Номенклатура.
а потом еще проверить те запросы которые выгружаются в различные колекции, которые называются не выборка.
А с артикулом я сам пример писал, пожалуйста, абстрагируйся от слова артикул, и смотри в суть проблемы. Запросы в 1С в циклах, делает очень часто, намного чаще чем надо, видимо издержки универсальности ;)
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599094
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я согласен, что все плохо ,
но именно поиск по этой фразе дает на мой взгляд только рукотворный дописки
и плюс .ПолноеНаменование , ну у меня так почему то
хотя есть много мест где не аккуратно, но не тут
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599110
Сисой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvА с артикулом я сам пример писал, пожалуйста, абстрагируйся от слова артикул, и смотри в суть проблемы. Запросы в 1С в циклах, делает очень часто, намного чаще чем надо, видимо издержки универсальности ;)

У меня в УПП 1.1 этих атавизмов дофига. Но вот в последующих версиях количество разыменований в цикле стремительно уменьшается. Ты точно говоришь о текущем уровне развития типовых, а не об уровне трехлетней давности?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599177
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СисойvitkhvА с артикулом я сам пример писал, пожалуйста, абстрагируйся от слова артикул, и смотри в суть проблемы. Запросы в 1С в циклах, делает очень часто, намного чаще чем надо, видимо издержки универсальности ;)

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

Точно. Работаю с самой последней версией УПП, сегодня только обновился ;)

Я уж не говорю об ошибках типовых - которые кочуют из релиза в релиз.....

Хотя конечно УПП замечательный продукт и денег своих стоит на 1000%.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599202
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDLogvinovSerjИдея правильная, для такой задачи нужно делать запрос в цикле.

Программист 1С, leaf.
А можно глупый вопрос, зачем решать задачу одним запросом?
Потому что так рекомендует 1С???Выгоняют с экзамена.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599208
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvСисойvitkhvА с артикулом я сам пример писал, пожалуйста, абстрагируйся от слова артикул, и смотри в суть проблемы. Запросы в 1С в циклах, делает очень часто, намного чаще чем надо, видимо издержки универсальности ;)

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

Точно. Работаю с самой последней версией УПП, сегодня только обновился ;)

Я уж не говорю об ошибках типовых - которые кочуют из релиза в релиз.....

Хотя конечно УПП замечательный продукт и денег своих стоит на 1000%.Угу вот только область применения не такая уж и большая. Да и... ладно зато там пару идей хороших подчерпнул.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599232
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сУгу вот только область применения не такая уж и большая. Да и... ладно зато там пару идей хороших подчерпнул.

На предприятии где я сейчас УПП внедряю, очень даже не плохо подошла, правда пришлось повоевать, что бы под систему предприятие адаптировать, причем переход происходил с не 1С, так, что бои были тяжелыми :). Полностью стандартная конечно не подошла, но обновляюсь я почти без проблем....
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599261
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvПрограммист 1сУгу вот только область применения не такая уж и большая. Да и... ладно зато там пару идей хороших подчерпнул.

На предприятии где я сейчас УПП внедряю, очень даже не плохо подошла, правда пришлось повоевать, что бы под систему предприятие адаптировать, причем переход происходил с не 1С, так, что бои были тяжелыми :). Полностью стандартная конечно не подошла, но обновляюсь я почти без проблем....Упп подходит по серийное производство. А меня например 50% спецзаказы. И все индивидуальные. Бесполезно.


ps хе-хе а как будете обновлять модуль вмонтированной бухгалтерии 1.6 на 2.0? Если 1с говорит что будет выгрузкой - загрузкой только это делать.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599275
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь за оффтоп - но начали с родителей типа "Сгруппировать по ссылка" в добавление к "ИТОГИ ПО ..." значит впадлу - и дальше я потерял нить разговора и все ушли в УПП - жаль что не видел, а то бы я пнул пару раз
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599280
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сУпп подходит по серийное производство. А меня например 50% спецзаказы. И все индивидуальные. Бесполезно.

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


Программист 1сps хе-хе а как будете обновлять модуль вмонтированной бухгалтерии 1.6 на 2.0? Если 1с говорит что будет выгрузкой - загрузкой только это делать.

А, что есть проблемы с переходом на релиз под 8.2, вроде по отзывам все гладко проходит?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599636
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvПрограммист 1сУпп подходит по серийное производство. А меня например 50% спецзаказы. И все индивидуальные. Бесполезно.

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


Программист 1сps хе-хе а как будете обновлять модуль вмонтированной бухгалтерии 1.6 на 2.0? Если 1с говорит что будет выгрузкой - загрузкой только это делать.

А, что есть проблемы с переходом на релиз под 8.2, вроде по отзывам все гладко проходит?А причем тут 82? Бухгалтерия 1.6 закончится в этом году и будет 2.0 или корп. В любом случае обновления не будет. Придется через xml перебрасывать.

Поэтом и встал вопрос - а что будет в упп? Сейчас то там 1.6
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599821
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сHoBTIDLogvinovSerjИдея правильная, для такой задачи нужно делать запрос в цикле.

Программист 1С, leaf.
А можно глупый вопрос, зачем решать задачу одним запросом?
Потому что так рекомендует 1С???Выгоняют с экзамена.

Так что скажут сведующие люди ?
можно на экзамене использовать временные таблицы или нет ?
то что запросы в цикле нельзя это вроде ясно ...
Чистов вроде уже в первой лекции их использует?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599860
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafПрограммист 1сHoBTIDLogvinovSerjИдея правильная, для такой задачи нужно делать запрос в цикле.

Программист 1С, leaf.
А можно глупый вопрос, зачем решать задачу одним запросом?
Потому что так рекомендует 1С???Выгоняют с экзамена.

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

А почему нельзя? Можно конечно.
Да и про выгон с экзамена за запросы в циклах - сильно преувеличенно, я в свое время бух. 7.7 сдавал, так запихал бух. запрос в цикл. Так принимающий автор одной из книг по 1С бухии, пальцем помахал но экзамен принял, помоему даже 5 поставил....
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599885
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с
Поэтом и встал вопрос - а что будет в упп? Сейчас то там 1.6

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

Программист 1с
Сейчас то там 1.6

Вообще то не совсем, отличия есть и местами достаточно серьезные.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36599986
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сHoBTIDИдея правильная, для такой задачи нужно делать запрос в цикле.

Программист 1С, leaf.
А можно глупый вопрос, зачем решать задачу одним запросом?
Потому что так рекомендует 1С???Выгоняют с экзамена.Так ведь на экзамене можно удовлетворить желания преподавателей, а в работе уже использовать правильные подходы.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601446
nicktcher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDПрограммист 1сHoBTIDИдея правильная, для такой задачи нужно делать запрос в цикле.

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

Преподаватели в 1С на экзаменах - далеко не дураки. И правильные подходы тоже давно в общем известны - либо в одном запросе, либо через объектные методы. Тут не надо придумывать велосипед.
Запросы в циклах - убожество. И правильно, тчо за это выгоняют. Максимум, что позволительно делать в цикле в особо запущенных случаях - устанавливать параметры запроса
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601503
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafПрограммист 1сHoBTIDLogvinovSerjИдея правильная, для такой задачи нужно делать запрос в цикле.

Программист 1С, leaf.
А можно глупый вопрос, зачем решать задачу одним запросом?
Потому что так рекомендует 1С???Выгоняют с экзамена.

Так что скажут сведующие люди ?
можно на экзамене использовать временные таблицы или нет ?
то что запросы в цикле нельзя это вроде ясно ...
Чистов вроде уже в первой лекции их использует?Можно. И мало того идеология - что незачем писать тройной вложенный запрос. Лучше временные таблицы. Они чуть притормозят - но в целом зато могут увеличить скорость если бд неправильно интерпретирует план запроса.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601519
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDПрограммист 1сHoBTIDИдея правильная, для такой задачи нужно делать запрос в цикле.

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

Есть ряд четких правил и правила эти не от 1с. А от анализа производительности. Не умеете оптимизировать запросы - скажите досвидания сертификату. Да и пользователи не будут ждать 10 минут результата запроса.

vitkhvПрограммист 1с
Поэтом и встал вопрос - а что будет в упп? Сейчас то там 1.6

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

Программист 1с
Сейчас то там 1.6

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

А вот про отличия - это к чему? Там я явно вижу все 3 модуля зп+т+бп. Причем отличаются они от стандартных только в сторону увеличения статей затрат и прочего дополнительного функционала. Уберите это и останется 1.6
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601551
nicktcher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сабжу.

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

ТекРодитель = ТекЭлемент; //ссылка на ваш эл-т спр-ка
Пока Истина Цикл
ТекРодитель = ТекРодитель.Родитель;
Сообщить(ТекРодитель);
Если ТекРодитель.Уровень() = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601726
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот код из стандартной БП. Здесь мы видим запрос в цикле. Видимо посчитали, что это самый дешевый способ получения вышестоящих групп.

// Функция возвращает массив вышестоящих групп указанного элемента.
//
// Переметры:
// Элемент - Элемент справочника, для которого ищется родитель
//
// Возвращаемое значение
// Массив вышестояших групп
//
Функция ПолучитьСписокВышеСтоящихГрупп(ЭлементСправочника) Экспорт

Результат = Новый Массив;

Если НЕ ЗначениеЗаполнено(ЭлементСправочника) Тогда
Возврат Результат;
КонецЕсли;

МетаданныеСправочника = ЭлементСправочника.Метаданные();
Если НЕ МетаданныеСправочника.Иерархический Тогда
Возврат Результат;
КонецЕсли;
ИмяСправочника = МетаданныеСправочника.Имя;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| Справочник1.Родитель КАК Родитель1,
| Справочник2.Родитель КАК Родитель2,
| Справочник3.Родитель КАК Родитель3,
| Справочник4.Родитель КАК Родитель4,
| Справочник5.Родитель КАК Родитель5
|ИЗ
| Справочник." + ИмяСправочника + " КАК Справочник1
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник2
| ПО (Справочник2.Ссылка = Справочник1.Родитель)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник3
| ПО (Справочник3.Ссылка = Справочник2.Родитель)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник4
| ПО (Справочник4.Ссылка = Справочник3.Родитель)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник5
| ПО (Справочник5.Ссылка = Справочник4.Родитель)
|ГДЕ
| Справочник1.Ссылка = &Ссылка";

ТекущийЭлемент = ЭлементСправочника;

Пока ЗначениеЗаполнено(ТекущийЭлемент) Цикл
Запрос.УстановитьПараметр("Ссылка", ТекущийЭлемент);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Для Индекс = 1 по 5 Цикл
ТекущийЭлемент = Выборка["Родитель" + Индекс];
Если ЗначениеЗаполнено(ТекущийЭлемент) Тогда
Результат.Добавить(ТекущийЭлемент);
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
ТекущийЭлемент = Неопределено;
КонецЕсли;
КонецЦикла;

Возврат Результат;

КонецФункции
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601739
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZ,
а где здесь запрос в цикле, может быть функция ПолучитьСписокВышеСтоящихГрупп(ЭлементСправочника) вызывается в цикле?
Вообще данный запрос будет выполняться быстрее, чем вариант с ПолныйКод(), с учетом времени выполнения ПолныйКод().
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601780
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сРасскажите как вы тогда предполагаете сделать из 2 планов счетов 1. Причем именно обновлением. Слушаю.

Ну чтож - слушайте Программист 1C:

Версия 1.3.3
Порядок обновления конфигурации версий 1.2.29.1, 1.3.2.1 на версию 1.3.3.1.

Для обновления версии конфигурации следует использовать режим «Обновление конфигураций». Файл обновлений 1Cv8.cfu находится в подкаталоге 1c\enterprise\1_3_3_1\ каталога шаблонов.
Сделайте резервную копию вашей информационной базы.
Резервную копию можно создать:
при использовании файлового варианта 1С:Предприятия 8 - путем копирования файла 1СV8.1CD в отдельный каталог;
при использовании клиент - серверного варианта 1С:Предприятия 8 - средствами SQL Server.
Независимо от используемого варианта 1С:Предприятия 8, резервную копию можно создать, используя режим выгрузки информационной базы. Для этого:
запустите систему 1С:Предприятие в режиме «Конфигуратор»;
в меню «Администрирование» выберите пункт «Выгрузить информационную базу»;
в открывшемся диалоге укажите имя файла, в который будут записаны данные.
Во время обновления конфигурации не должны выполняться регламентные и фоновые задания:
Для контроля за выполнением заданий и их отмены необходимо использовать обработку «Консоль заданий» с диска ИТС.
Если существуют задания, выполняемые по расписанию, необходимо запретить их выполнение на время обновления конфигурации.
При использовании файлового варианта работы с информационной базой для этого нужно завершить работу программы - планировщика заданий.
В клиент-серверном варианте работы следует использовать утилиту администрирования, где нужно установить флаг «Блокировка регламентных заданий включена» в свойствах информационной базы.
Если в конфигурации выполнялись доработки, вызывающие запуск фоновых заданий, следует запретить их выполнение на время обновления конфигурации.
После обновления конфигурации выполнение заданий можно вновь разрешить.
Если обновляемая конфигурация находится в режиме поддержки с включенной возможностью изменения, и она была сконвертирована с версии 8.1 при помощи версии 8.2.9.356, то перед обновлением следует обработать информационную базу с помощью утилиты, которую можно скачать по адресу http://users.v8.1c.ru/Platform82ActualTest.aspx
Запустите систему 1С:Предприятие в режиме «Конфигуратор».
Откройте конфигурацию, для этого в меню «Конфигурация» выберите пункт «Открыть конфигурацию».
Вызовите режим «Обновление конфигураций», для этого в меню «Конфигурация», подменю «Поддержка», выберите пункт «Обновить конфигурацию».
В диалоге выбора обновления в качестве источника обновления укажите «Поиск доступных обновлений», после чего выберите нужное обновление в соответствующем списке.
Если в списке обновлений необходимое обновление отсутствует, то в диалоге выбора обновления в качестве источника обновления укажите «Выбор файла обновления», после чего выберите нужный файл обновления (по умолчанию 1cv8.cfu).
В окне «Обновление конфигураций» нажмите кнопку «Готово» для продолжения обновления конфигурации.
После завершения будет открыто окно «Конфигурация», содержащее конфигурацию с внесенными изменениями. Выполните сохранение конфигурации.

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


Касаемо планов счетов, их как было в 1.2 четыре штуки, так и осталось в 1.3 четыре штуки.
Перечислю их вам по алфавиту:
1. Бюджетирование.
2. Международный.
3. Налоговый.
4. Хозрасчетный.

Может вы не в теме УПП, Программист 1С?

У меня версия УПП 1.2.30.1 самая последняя, с нее можно будет перейти на 1.3 только со следующим релизом 1.3, именно задержки выхода обновлений на 1.3 относительно 1.2 и является главным фактором того, почему я пока на 1.2.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601919
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvКасаемо планов счетов, их как было в 1.2 четыре штуки, так и осталось в 1.3 четыре штуки.
Перечислю их вам по алфавиту:
1. Бюджетирование.
2. Международный.
3. Налоговый.
4. Хозрасчетный.

Может вы не в теме УПП, Программист 1С?

У меня версия УПП 1.2.30.1 самая последняя, с нее можно будет перейти на 1.3 только со следующим релизом 1.3, именно задержки выхода обновлений на 1.3 относительно 1.2 и является главным фактором того, почему я пока на 1.2.И что вы пытаетесь сказать? Неужели думаете я не умею считать? Еще раз говорю. В конце года будет переход с 1.6 на 2.0 бухгалтерия. В 2.0 - ОДИН план счетов.

С чего вы взяли что в 1.3 встроен модуль бухгалтерии 2.0?

Поэтому еще раз спрошу КАК можно перекинуть даже из бухгалтерии 1.6 в 2.0 простым обновлением? Если скажете что надо писать обработку по сопоставлению регистров счетов и других - задам уточняющий вопрос: а прошлые периоды?

ps Пока вижу один вариант - оставить в упп оба плана счетов.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36601925
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhv неужели вы считаете что я не умею читать текстовый файл к обновлению? Здесь задан гораздо более сложный вопрос.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36602094
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
расценки

Код: plaintext
1.
2.
Отсутствие возможности работы предлагаемого решения в режиме управляемого приложения	 3 , 0 

В задачах получения данных из информационной базы установка отборов по неиндексированным полям	 0 , 5 
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36602100
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
Неверное соединение таблиц	 1 , 0 

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


То есть неверно соединил таблицы - получил 4 сдал
отсутсвие новых технологий, которые многие пользователи отключают , сразу за дверь
прикольно
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36602179
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сУгу тоесть вы считаете что на экзамен по платформе фигня отличная от действительности?Именно так я и считаю, а экзамен по платформе давно сдал,
причем меня еще и похвалили за одно из лучших решений в этот день.Программист 1сЕсть ряд четких правил и правила эти не от 1с.А откуда? Я пользуюсь правилами из Books Online.
Программист 1сДа и пользователи не будут ждать 10 минут результата запроса.Мои пользователи не ждут 10 минут
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36602198
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сМожно. И мало того идеология - что незачем писать тройной вложенный запрос. Лучше временные таблицы.
Они чуть притормозят - но в целом зато могут увеличить скорость если бд неправильно интерпретирует план запроса.Яркий пример расхождения идеологии экзамена и действительности.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36602203
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
Но конечно же, действительность у всех разная
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36602511
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LogvinovSerjПо моему я задал абсолютно правильный вопрос!!!
"правильный" для вас. А для нас - ХЗ, ибо неуказана версия 1С, неизвестно откуда запускается это чудо (документ, отчет, ...), ...
Так что научитесь задавать вопросы и будете получать ответы.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36602834
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с
С чего вы взяли что в 1.3 встроен модуль бухгалтерии 2.0?


Я даже не считаю. что в УПП 1.2 встроенна бухгалтерия 1.6, с чего вы взяли, что я считаю, что в УПП 1.3 будет встроена бухгалтерия 2.0?

Хотя если в бухии будет 1 план счетов,( как я понимаю путем объединения Хозрасчетного и Налогового планов счетов?) то рано или поздно так будет и в УПП, что бы как минимум бух. и нал. отчеты были одинаковы и там и здесь.

Программист 1с
Поэтому еще раз спрошу КАК можно перекинуть даже из бухгалтерии 1.6 в 2.0 простым обновлением? Если скажете что надо писать обработку по сопоставлению регистров счетов и других - задам уточняющий вопрос: а прошлые периоды?


1С Бухгалтерия не моя специализация, и никогда ею не была, т.к. обычно работал либо с комплексными на 7.7, либо с УПП на 8. Было несколько внедрений и доработок на БП и на 7.7 бухиях, но слишком мало, чтоб можно было сказать что я бухиями проникся. И вообще я считаю, что бухии надо оставлять стандартными и ни в коем случае не вести в них управленческий учет.
А коль они стандартные то и обновления должны проходить без проблем в том числе с 1.6 на 2.0, все обработки переноса сама 1С напишет.

Что касается:
Программист 1с
vitkhv неужели вы считаете что я не умею читать текстовый файл к обновлению? Здесь задан гораздо более сложный вопрос.


Если вы про возможное в будущем объедение двух планов счетов в один в УПП, тогда пока для 1.3 в планах я этого не видел, видимо произойдет это в каком нибудь 2.0 релизе УПП. Буду думать об этом когда наступит хоть какая то ясность в данном вопросе, пока рано.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36603895
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDПрограммист 1сУгу тоесть вы считаете что на экзамен по платформе фигня отличная от действительности?Именно так я и считаю, а экзамен по платформе давно сдал,
причем меня еще и похвалили за одно из лучших решений в этот день.Программист 1сЕсть ряд четких правил и правила эти не от 1с.А откуда? Я пользуюсь правилами из Books Online.
Программист 1сДа и пользователи не будут ждать 10 минут результата запроса.Мои пользователи не ждут 10 минутМдаа тогда понятно откуда берутся спецы по платформе рисующие в цикле запросы... А вы случаем не из тех - кто пришел на обучение (срок неделя) и в первый день сразу вдруг получили сертификаты?....

ps Когда будете выжимать ВСЕ соки чтобы увеличить скорость производительности - тогда будет о чем серьезно поговорить. А так ... глупость это.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36603902
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDПрограммист 1сМожно. И мало того идеология - что незачем писать тройной вложенный запрос. Лучше временные таблицы.
Они чуть притормозят - но в целом зато могут увеличить скорость если бд неправильно интерпретирует план запроса.Яркий пример расхождения идеологии экзамена и действительности.Яркий пример непонимания иделогии запросов. Мало того на 8.2 именно и желают видеть временную таблицу. Но вы же спец по 8.0?
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36603904
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhv, Оставим спор. Подождем упп 2.0
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36604963
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сМдаа тогда понятно откуда берутся спецы по платформе рисующие в цикле запросы... А вы случаем не из тех - кто пришел на обучение (срок неделя) и в первый день сразу вдруг получили сертификаты?....Я ведь не предлагаю все запросы делать в цикле, большинство конечно же надо писать без циклов.
Но некоторые, в том числе и вы, хотят ВСЕ запросы писать без циклов, полагая это более оптимальным.
Сравните, пожалуйста, примеры получения всех родителей из моего сообщения, и определите какой из них оптимальнее.
Я утверждаю, что приведенное мной решение с запросом в цикле,
читает минимальное число страниц с диска сервера и меньше не получится ни при каком решении.
Также мое решение ничего не пишет на диск сервера, в отличии от условий В ИЕРАРХИИ.
Для сравнения нагрузки чтения и записи используется коэффициет 5, т.е. запись 1 страницы эквивалентна чтению 5 страниц.

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

Пример оптимального запроса в цикле

Программист 1сps Когда будете выжимать ВСЕ соки чтобы увеличить скорость производительности - тогда будет о чем серьезно поговорить. А так ... глупость это.Про отжим соков см. выше конкретный пример.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36605304
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сЯркий пример непонимания иделогии запросов. Мало того на 8.2 именно и желают видеть временную таблицу. Но вы же спец по 8.0?Как определить оптимальность?
У вас оптимальность определяют преподаватели 1С, они же авторы книг по 1С.
У меня оптимальность определяют SQL Profiler и счетчики производительности SQL и Windows.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36605904
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDПрограммист 1сЯркий пример непонимания иделогии запросов. Мало того на 8.2 именно и желают видеть временную таблицу. Но вы же спец по 8.0?Как определить оптимальность?
У вас оптимальность определяют преподаватели 1С, они же авторы книг по 1С.
У меня оптимальность определяют SQL Profiler и счетчики производительности SQL и Windows.Можно даже дальше ничего не обсуждать. Открою БОЛЬШОЙ секрет. В 1с есть счетчик производительности.

ps И умолчу что вы даже не догадываетесь что 1с может быть и не на скуле... А соответствнно ваш предыдущий пост - однобок. Сравните ваше решение например на файловой базе.... Удивитесь проигрышу.

psps Интересно как можно сдать спеца по платформе даже не зная о существовании отладчика...
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36606892
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сМожно даже дальше ничего не обсуждать. Открою БОЛЬШОЙ секрет. В 1с есть счетчик производительности.

ps И умолчу что вы даже не догадываетесь что 1с может быть и не на скуле... А соответствнно ваш предыдущий пост - однобок. Сравните ваше решение например на файловой базе.... Удивитесь проигрышу.

psps Интересно как можно сдать спеца по платформе даже не зная о существовании отладчика...То есть по существу ответить нечего, слив засчитан.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36606939
Сисой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Успокойтесь, горячие эстонские парни. В типовых и на экзамене действительно порой пишутся запросы, неоптимальные с точки зрения счетчиков производительности MS SQL. Потому что на 1С никто специально под MS SQL не пишет. Кроме франчей и фикси, оптимизирующих конкретную инсталляцию.
Назвался кроссплатформенной системой - полезай в ..., ну не буду говорить, куда.
Ближе к теме.
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36606981
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СисойУспокойтесь, горячие эстонские парни.
В типовых и на экзамене действительно порой пишутся запросы, неоптимальные с точки зрения счетчиков производительности MS SQL.
Потому что на 1С никто специально под MS SQL не пишет. Кроме франчей и фикси, оптимизирующих конкретную инсталляцию.
Назвался кроссплатформенной системой - полезай в ..., ну не буду говорить, куда.
Ближе к теме.По теме все ответили на первых 2-х страницах, потом уже решили развлечся идеологическим спором :-)))
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36606983
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
развлечься
...
Рейтинг: 0 / 0
Как запросом получить список всех родителей зад-го элемента
    #36607007
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в споре рождается ...
а более неопытные просто на ус мотали
спасибо за информацию
...
Рейтинг: 0 / 0
86 сообщений из 86, показаны все 4 страниц
Форумы / [игнор отключен] [закрыт для гостей] / Как запросом получить список всех родителей зад-го элемента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]