Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Дек 2017, 03:44
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Определить принадлежность номенклатуры к конкретной группе справочника  (Прочитано 3139 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 1cka

  • ***
  • Сообщений: 154
  • РЕПУТАЦИЯ: 1
  • КПД: 1%
  • Регистрация: 2014-01-04
  • Сайт: 
  • Профессия: Ученик 1С
8.2
Как определить в иерархическом справочнике принадлежность номенклатуры к самому верхнему уровню?
есть ТЗ, хотелось бы условием исключить из нее ненужные позиции     
Для Каждого Строка Из ТаблицаИсходныеК Цикл
//Если Тогда
   //Сообщить("Группа - " + Строка.Номенклатура.ПринадлежитЭлементуГруппы);//так определяет соответственно не самую верхнюю группу
//КонецЕсли;
КонецЦикла;
   


Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
самое простое,
в иерархическом справочнике у элемента есть реквизит Родитель, это есть ссылка на ту группу в которую входит текущий элемент, Родитель в свою очередь имеет тоже поле Родитель, и так далее, пока Поле Родитель не будет пустым - это самая верхняя группа!

вот Функция (правда не самый оптимальный вариант) (для оптимального варианта надо делать все в одном запросе, но это сложнее)

Функция ПерваяГруппа(Номенклатура)

лкГруппа = Номенклатура;
Пока Не лкГруппа.Родитель.Пустая() Цикл
лкГруппа = лкГруппа.Родитель;
КонецЦикла;

Возврат лкГруппа;

КонецФункции



Добавлено: 16 Янв 2015, 16:04

таким образом ваш цикл будет выглядеть так
Для Каждого Строка Из ТаблицаИсходныеК Цикл
    Сообщить("Группа - " + ПерваяГруппа(Строка.Номенклатура));
КонецЦикла;
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн ilyay

  • 1С:Специалист, 1С:Эксперт
  • ****
  • Сообщений: 473
  • РЕПУТАЦИЯ: 85
  • КПД: 18%
  • Регистрация: 2011-06-09
  • Сайт: 
  • Профессия: Разработчик 1С
Предложенное решение - стресс-тест для базы данных. Количество запросов, равное уровню иерархии, на каждом этапе цикла!
Нужно делать одним запросом. Загрузить ТЗ (типизированную) в запрос и использовать следующие условия: выбрать НоменклатураВерхнегоУровня.ссылка поместить НоменклатураВерхнегоУровня из справочник.номенклатура как НоменклатураВерхнегоУровня где НоменклатураВерхнегоУровня.родитель = Значение(Справочник.Номенклатура.ПустаяСсылка) И НоменклатураВерхнегоУровня.ЭтоГруппа и не НоменклатураВерхнегоУровня.ПометкаУдаления // если не используются группы, то ЭтоГруппа не нужно
затем выборка с условием номенклатура_тз.ссылка в Иерархии(выбрать ссылка из НоменклатураВерхнегоУровня)

Оффлайн 1cka

  • ***
  • Сообщений: 154
  • РЕПУТАЦИЯ: 1
  • КПД: 1%
  • Регистрация: 2014-01-04
  • Сайт: 
  • Профессия: Ученик 1С
у меня получилось так:
Если (Строка.Номенклатура.ПринадлежитЭлементу(Справочники.Номенклатура.НайтиПоКоду("0001")) = ЛОЖЬ) Тогда

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
ilyay,

Цитировать
затем выборка с условием номенклатура_тз.ссылка в Иерархии(выбрать ссылка из НоменклатураВерхнегоУровня)
      

                     
ваше условие, всегда будет Истина для товаров в группах,
но где здесь имя самой верхней группы?

например такая схема группировок, где Группа1,2,3 это Родитель(и), а цифры это уровень вложенности.

Товар1 - Группа3 - Группа2 - Группа1 - Группа0
Товар2 - Группа2 - Группа1 - Группа0
Товар3 - Группа3 - Группа2 - Группа1 - Группа0
Товар4 - Группа1 - Группа0
и т.д. вложенность группировок может быть различной и безграничной

как вашим запросом получить такой результат

Товар1, Группа0
Товар2, Группа0
Товар3, Группа0
Товар4, Группа0
и т.д.


         
                  
                                       
                        
                     
                        Сообщить модератору 
                                       
                        
                           
                              
                           
                           
                              Re: Определить принадлежность номенклатуры к конкретной группе справочника
                           
                           « Ответ #2: Сегодня в 00:24 »
                           
                        
                     
                     
                        Предложенное решение - стресс-тест для базы данных. Количество запросов, равное уровню иерархии, на каждом этапе цикла!Нужно делать одним запросом. Загрузить ТЗ (типизированную) в запрос и использовать следующие условия: выбрать НоменклатураВерхнегоУровня.ссылка поместить НоменклатураВерхнегоУровня из справочник.номенклатура как НоменклатураВерхнегоУровня где НоменклатураВерхнегоУровня.родитель = Значение(Справочник.Номенклатура.ПустаяСсылка) И НоменклатураВерхнегоУровня.ЭтоГруппа и не НоменклатураВерхнегоУровня.ПометкаУдаления // если не используются группы, то ЭтоГруппа не нужнозатем выборка с условием номенклатура_тз.ссылка в Иерархии(выбрать ссылка из НоменклатураВерхнегоУровня

Помогло? - Нажми СПАСИБО!!!
                       :)


Теги:
 

Как вызвать "Анализ субконто" из справочника "Контрагенты"

Автор EnigManРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 6495
Последний ответ 06 Фев 2012, 10:46
от cska-fanat-kz
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4199
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 624
Последний ответ 10 Май 2017, 20:44
от ilnur75
Как сделать, чтобы поле в документе имело тип "ссылка на поле справочника"?

Автор друганРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 2032
Последний ответ 05 Мар 2017, 14:36
от Igor100500
Изменение цвета при подборе сотрудника в форме списка справочника "Сотрудники организации" для документа "Зарплата к выплате организаций" ЗУП 2.5

Автор ksander-farsРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 270
Последний ответ 12 Окт 2017, 14:02
от wise

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
178 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
29 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 178
  • Точка Скрытых: 0
  • Точка Пользователей: 3
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal