Имя: Пароль:
1C
1C 7.7
v7: Как получить основную Группа товаров
0 geniusbsd
 
13.11.15
16:46
Добрый день
Есть процедура экспорта остатков товаров в файл

Процедура ЗаполнитьОстаткиТовара()
       Перем Запрос, ТекстЗапроса;
        Х=СоздатьОбъект("Текст");
        Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Заполнить)
    |Период с ДатаДок по ДатаДок;
    |Фирма = Регистр.ОстаткиТоваров.Фирма;
    |Товар = Регистр.ОстаткиТоваров.Товар;
    |Склад = Регистр.ОстаткиТоваров.Склад;
    |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара;
    |Функция ОстатокТовараКонОст = КонОст(ОстатокТовара);
    |Группировка Фирма без групп;
    |Группировка Товар без групп;
    |Группировка Склад без групп;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    Пока Запрос.Группировка(1) = 1 Цикл
        Пока Запрос.Группировка(2) = 1 Цикл
            Пока Запрос.Группировка(3) = 1 Цикл
             СтрокасТоваром = СокрЛП(СокрЛП(Запрос.Фирма)+СокрЛП(";")+СокрЛП(Запрос.Товар.Родитель)+СокрЛП(";")+СокрЛП(Запрос.Товар)+СокрЛП(";")+СокрЛП( Запрос.Склад)+СокрЛП(";")+СокрЛП(Запрос.ОстатокТовараКонОст));
      Х.ДобавитьСтроку (СтрокасТоваром)    
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
        Х.Записать("C:\Osttov.csv");
КонецПроцедуры

Как получить не текущую подгруппу товара а основную группу товара количество уровней иерархии не известно?

К примеру остаток товара BR1501
ООО Зайцев и Ко
    Бытовая Техника
      Утюги
         Braun
            BR1501
Нужно получить стоку  
НашаФирма;ООО Зайцев и Ко;BR1501;НашСклад;3
1 Масянька
 
13.11.15
16:53
(0) ПолноеНаименование()
Синтаксис:
ПолноеНаименование()
Назначение:
Возвращает строку, содержащую полное наименование выбранного элемента справочника со всеми вышестоящими уровнями, разделенными символом /.

Тебе нужен самый первый (уровень).
2 Горогуля
 
13.11.15
16:54
а в этих ваших семёрках допускается палка в наименовании?
3 VikingKosmo
 
13.11.15
16:56
(2) в 7ках функция ПолноеНаименование() как раз формирует полный путь до элемента, через палки
4 VikingKosmo
 
13.11.15
16:56
одно из немногого, что я помню о клюшках)))
5 aka AMIGO
 
13.11.15
16:56
Всё не читал, но..
Про ПолноеНаименование90 (или ПолныйКод()) еще не говорили?

А еще отладчик прекрасно показывает все внутренности обработки :)
6 Масянька
 
13.11.15
16:57
(2) (3) Палка в другом месте. А это - слеш :)))
7 aka AMIGO
 
13.11.15
16:57
* ПолноеНаименование90 = ПолноеНаименование()
Шифт не работает, надо выкинуть клаву..
8 Масянька
 
13.11.15
16:58
(7) Почистить не пробовал? Только не забудь - как кнопочки расположены :))))))
9 Горогуля
 
13.11.15
16:59
(3) хозтовары/чистящие/доставляющие вещества/клей момент - на каком уровне клей?
10 Горогуля
 
13.11.15
16:59
(7) и мышь ;)
11 aka AMIGO
 
13.11.15
17:00
(8) она куда-то под стол выскочила, не видно, там проводов бездна накручено :(
Ладно, в понедельник :)
12 geniusbsd
 
13.11.15
17:00
Спасибо буду пробовать
13 Горогуля
 
13.11.15
17:00
(6) это у басурман слеш, у православных палка. или палица
14 HawkEye
 
13.11.15
17:01
(0) так-то рекурсию никто не отменял..
15 HawkEye
 
13.11.15
17:02
+14 и если уж решил через ПолныйХХХ работать, то хотя бы через  ПолныйКОД и то при условии уникальности этого самого кода...
16 VikingKosmo
 
13.11.15
17:05
(9) тебе палки лень считать?
17 Горогуля
 
13.11.15
17:08
(16) до меня не доходит, зачем вообще нужен полный путь
18 Горогуля
 
13.11.15
17:08
(17) полное наименование
19 VikingKosmo
 
13.11.15
17:09
(17) ну что бы наименование с палками было же
20 Горогуля
 
13.11.15
17:10
(19) с ним же работать невозможно. только показать куда-нибудь
21 VikingKosmo
 
13.11.15
17:12
(20) а где ты видел, что бы я предлагал с ними работать?!
22 VikingKosmo
 
13.11.15
17:12
ну на крайнняк можно парсить получившееся и как то обрабатывать. Но то такэ...
23 Горогуля
 
13.11.15
17:21
(21) это вопли души ;)
(22) строку с таким разделителем фиг отпарсишь
24 Mikeware
 
13.11.15
19:28
ВерхнийРодитель=ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(Спр"+СтрЗаменить(Формат("","С"+(Спр.Уровень()-1))," ",".Родитель")+")]"));
©РупорАбсурда
25 geniusbsd
 
13.11.15
20:01
Сделал вот так

Поставщик =Запрос.Товар.ПолноеНаименование();
Поставщик =Лев(Поставщик,(Найти(Поставщик,"/")-1));
26 Горогуля
 
14.11.15
08:29
во. теперь переименуй группу в "чистящие/доставляющие вещества"
27 Diman_Kr
 
14.11.15
08:53
Процедура Сформировать()  
    Уровень=Товар.Уровень();  
    Родитель=Товар;
    Пока Уровень<>1 цикл
        Родитель=Родитель.Родитель;
        Уровень=Уровень-1;
    КонецЦикла;
    Сообщить(Родитель);
КонецПроцедуры
28 HawkEye
 
14.11.15
11:12
(27) так-то по человечески это вот так выглядит

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