Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Иерархия номенклатуры в ERP

Привет, скажите есть ли в ERP возможность просмотра списка номенклатуры по папкам?
Понятно что есть виды и свойства. Но папки остались?
В карточке номенклатуры заполнен реквизит "Группа списка"
Ответ: есть иерархия в партнерах
Вопрос: печатная форма, иерархия номенклатуры

Чет туплю, надо сделать печатную форму документа
у документа в ТЧ есть колонка Свойство и Номенклатура
получается так

Красный(Свойство) 
                 -Арбуз(Номенклатура)
                 -Апельсин(Номенклатура)
Синий(Свойство)
                 -Хрен(Номенклатура)
                 -Помидор(Номенклатура)
это получается 2 колонки
как в печатной форме сделать это в 1 колонку 
Красный
-Арбуз
-Апельсин
Синий
-Хрен
-Помидор

?
Ответ:
Выбрать Свойство, Номенклатура ИЗ ТЧДокумента
Итоги по Свойство

ВыборкаСвойства = Запрос.выполнить.выбрать(обходрезультатазапроса.погруппировкам)
Пока ВыборкаСвойства.Следующий()
Табдок.вывести(свойство)
выборкаНомеклатура = ВыборкаСвойство.Выбрать();
Пока ВыборкаНоменклатура.Следующий() 
ТабДок.Вывести(номенклатура)
КонецЦИкла
КонецЦикла
Вопрос: Обработка номенклатуры работает очень долго

Здравствуйте, есть обработочка, призванная поменять 1 реквизит у элементов справочника НОменклатуры в 1с:ERP

Собственно есть таблица значений из 4 столбцов, в которых заполнены группы и подгруппы, в которых сидят элементы номенклатуры. Я эту ТЗ помещаю в запрос, присоединяю таблицу номенлатуры и в каждом элементе, который совпал по родителю и родителю родителя меняю реквизит Товарная Категория. Эта обработка обрабатывает 1800 элементов за 15 минут. Это норма или я какую-то фигню сделал, поэтому и так медленно?
Буду благодарен за любую помощь, спасибо.

Вот текст:


Код:
Запрос = Новый Запрос;
    Запрос.Текст =
            "ВЫБРАТЬ
            |    ТаблицаЗначений.Тип КАК Тип,
            |    ТаблицаЗначений.Группа КАК Группа,
            |    ТаблицаЗначений.Гравировка КАК Гравировка,
            |    ТаблицаЗначений.Кладовая КАК Кладовая
            |ПОМЕСТИТЬ ТаблицаЗначений
            |ИЗ
            |    &ВнешняяТЗ КАК ТаблицаЗначений
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    Номенклатура.Ссылка,
            |    Номенклатура.Родитель,
            |    Номенклатура.Родитель.Родитель КАК ПраРодитель,
            |    Номенклатура.ТоварнаяКатегория,
            |    ТаблицаЗначений.Кладовая,
            |    ТаблицаЗначений.Гравировка
            |ИЗ
            |    Справочник.Номенклатура КАК Номенклатура
            |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗначений КАК ТаблицаЗначений
            |        ПО Номенклатура.Родитель.Наименование = ТаблицаЗначений.Группа
            |            И Номенклатура.Родитель.Родитель.Наименование = ТаблицаЗначений.Тип";

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

    КонецЦикла;
Ответ:
Но как уйти от соединения по полям с строковым типом значений, если у меня есть только имя категории/подкатегории, но нет ссылки на нее?
Плюс к этому они меняются, то есть перед запросом не определить 1 раз для всех записей...
Вопрос: [РЕШЕНО] Как вывести номенклатуру с характеристиками в иерархии

Уважаемые эксперты, что-то я растерялся
Комплексная автоматизация-2.2.4.21
Используются характеристики номенклатуры, но есть позиции и без характеристик.
Надо вывести в иерархии справочник номенклатуры с характеристиками.
Пытаюсь сделать с помощью консоли запросов, но не получается.
Запрос такой:
Код:
ВЫБРАТЬ
    ХарактеристикиНоменклатуры.Владелец.Ссылка КАК ВладелецСсылка,
    ХарактеристикиНоменклатуры.НаименованиеПолное КАК НаименованиеПолное,
    Номенклатура.Наименование КАК Наименование,
    Номенклатура.ЭтоГруппа КАК ЭтоГруппа
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
        ПО (ХарактеристикиНоменклатуры.Владелец = Номенклатура.Ссылка)

УПОРЯДОЧИТЬ ПО
    ВладелецСсылка ИЕРАРХИЯ
и получаю совсем не то, на что рассчитывал: выдает в общем списке и только ту номенклатуру, у которой есть характеристики.
В чем моя ошибка? Не должно быть левого соединения? Тогда как? И почему без иерархии выводит?
Ответ:
Дальше ничего делать не надо. Надо просто выгрузить в структурированный эксель для неких нужд руководства.
Сделал.
В запросе заменил на УПОРЯДОЧИТЬ по наименованию номенклатуры в иерархии и соединение на полное.
Вопрос: Запрос с иерархией

Соединяю 2 таблицы и пытаюсь выбрать данные с иерархией по номенклатуре.
Пока не использовал "ВЫБОР КОГДА" иерархия работала. Теперь выводится без иерархии.
Почему?

ВЫБРАТЬ
    ВЫБОР
        КОГДА ТоварыНаСкладахОстатки.Номенклатура ЕСТЬ НЕ NULL
            ТОГДА ТоварыНаСкладахОстатки.Номенклатура
        ИНАЧЕ ПродажиОбороты.Номенклатура
    КОНЕЦ КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
        ПО ТоварыНаСкладахОстатки.Номенклатура = ПродажиОбороты.Номенклатура
ИТОГИ
    СУММА(КоличествоОстаток),
    СУММА(КоличествоОборот)
ПО
    ОБЩИЕ,
    Номенклатура
Ответ: () Да понятно, что можно.
Думал, есть вариант обойтись без этого, т.к. реальный запрос имеет кучу таблиц и придется долго переписывать только из-за иерархии
Вопрос: Иерархия Номенклатуры: группируете ли вы Номенклатуру по счетам учёта?

САБЖ:Группируете ли вы Номенклатуру в Справочнике сначала по счетам учёта?


Или главенствует другая иерархия? Какая?
Ответ: () конечно

1. Да
Вопрос: Динамический список Иерархия Номенклатуры и характеристик

Реально ли такое дерево в динамическом списке:

Номенклатура
>Группа
>>Товар1
>>>>Характеристика 1
>>>>Характеристика 2
>>>>Характеристика 3
>>Товар2
>>>>Характеристика 1
>>>>Характеристика 2
>>>>Характеристика 3
Ответ: это будет ахтунг и без основной таблицы
Вопрос: Выгрузка картинок номенклатуры

Добрый день!
Нужно выгрузить основную картинку каждой номенклатуры из каталога в базе в каталог на диске.

Код:
&НаКлиенте
Процедура ВыгрузитьКартинкиНоменклатуры(Команда)
    Если НЕ ЗначениеЗаполнено(КаталогФайла) Тогда
        Сообщить("Каталог файла не заполнен!");
        Возврат;
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(КаталогВБазе) Тогда
        Сообщить("Каталог в базе не заполнен!");
        Возврат;
    КонецЕсли;
    ТаблицаЗначений = ВыгрузитьКартинкиНоменклатурыНаСервере();
   
    Для каждого Стр Из ТаблицаЗначений Цикл
        Если Не ЗначениеЗаполнено(Стр.ФайлКартинки) Тогда
            Продолжить;
        КонецЕсли;
        Картинка = Стр.ФайлКартинки.ФайлХранилище.Получить();
        Если ТипЗнч(Картинка) = Тип("Картинка") Тогда
            Картинка.Записать(КаталогФайла + "\" + Стр.Артикул + "_" + Стр.Наименование + ".jpg");
        КонецЕсли;       
    КонецЦикла;
КонецПроцедуры

&НаСервереБезКонтекста
Функция  ВыгрузитьКартинкиНоменклатурыНаСервере()
    Запрос = Новый Запрос; //Вот так
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Код,
        |    Номенклатура.Наименование,
        |    Номенклатура.Артикул,
        |    Номенклатура.ФайлКартинки
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура";

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    ПеременнаяНаВозврат = "";
   
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ТаблицаЗначений.Колонки.Добавить("Код");
    ТаблицаЗначений.Колонки.Добавить("Наименование");
    ТаблицаЗначений.Колонки.Добавить("Артикул");
    ТаблицаЗначений.Колонки.Добавить("ФайлКартинки");
   
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
               
        Стр = ТаблицаЗначений.Добавить();
        Стр.Код = ВыборкаДетальныеЗаписи.Код;
        Стр.Наименование = ВыборкаДетальныеЗаписи.Наименование;
        Стр.Артикул = ВыборкаДетальныеЗаписи.Артикул;
        Стр.ФайлКартинки = ВыборкаДетальныеЗаписи.ФайлКартинки;
       
    КонецЦикла;
   
    Возврат ТаблицаЗначений;
КонецФункции

&НаКлиенте
Процедура УстановитьКаталогФайла(Команда)
    Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.Заголовок = "Выберите каталог";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        Каталог = ДиалогОткрытияФайла.Каталог;
    Иначе
    Предупреждение(НСтр("ru = 'Каталог не выбран!'"));
    КонецЕсли;
    КаталогФайла = Каталог;
КонецПроцедуры
Вот тут в Картинка не получаются данные из базы хотя основная картинка у номенклатуры есть:
Делаю все как указано в С-П когда получаю картинку из ХранилищеЗначения. Может картинки вообще не тут храняться? Посмотрел в отладчике, там вроде все корректно получается и обращаюсь к нужному реквизиту, где хранится картинка:
Ответ:
Хорошо подправлю код, меньше ошибок будет
Вчера уже сам решил вопрос, обратился к функции общего модуля:
Код:
Картинка =  ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(Номенклатура);
Спасибо за помощь!
--- Объединение сообщений, 13 янв 2017 ---
Не пойму каким образом "хранится в томах"? Файл картинки же просто записывается на диск.
--- Объединение сообщений, 13 янв 2017 ---
Темка вот эта?
Там немного не мой вопрос... но все-равно спасибо.
Вопрос: УТ 11.4, Серии номенклатуры

Коллеги, добрый день!

Серии номенклатуры в УТ заводятся на ВидНоменклатуры.
Вопрос: если у номенклатуры с серийным учетом, по которой в течении года было товародвижение, изменить Вид номенклатуры, как это скажется на процессах?
Смущает, что не будет соответствия Вида номенклатуры Серии и Вида номенклатуры самой Номенклатуры.
Подскажете, как можно безопасно изменить Вид номенклатуры товара, чтобы не порушить серийный учёт ?
Ответ: () тогда новый вид номенклатуры на этом же складе должен тоже обладать этой политике, иначе с\с считаться не будет, т.к. ключи аналитики содержат серию
Вопрос: Внешняя обработка. УТ 11.3. Выбор доп.реквизитов номенклатуры и их заполнение

Всем привет!
Есть срочный вопрос. Мне необходимо заполнить доп.реквизиты каждого товара в номенклатуре в номенклатуре. Сейчас у меня есть код:
1C
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
элемент = Справочники.Номенклатура.СоздатьЭлемент();    
    //загружаем всякие параметры
        //начиная от сюда
        группа = ПолучитьГруппу(НайтиПоXpath("/Nomenklatura/Products/Product[" + индексТовара + "]/Group", ДокументДом));
    элемент.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(группа);    
    элемент.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию( ПолучитьВидНоменклатурыПоГруппе(группа) );
    элемент.Наименование = НайтиПоXpath("/Nomenklatura/Products/Product[" + индексТовара + "]/Name", ДокументДом);
    элемент.Артикул = НайтиПоXpath("/Nomenklatura/Products/Product[" + индексТовара + "]/Articul", ДокументДом);
    элемент.Описание = НайтиПоXpath("/Nomenklatura/Products/Product[" + индексТовара + "]/Description", ДокументДом);
    элемент.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию("шт");
    элемент.ВесИспользовать = истина;
    элемент.ВесЧислитель = Число( НайтиПоXpath("/Nomenklatura/Products/Product[" + индексТовара + "]/Weight", ДокументДом) );
    элемент.ВесЗнаменатель = 1; 
   
    производитель = НайтиПоXpath("/Nomenklatura/Products/Product[" + индексТовара + "]/Producer", ДокументДом);
    Если производитель <> "" Тогда 
        СоздатьПроизводителяЕслиНеобходимо(производитель);
        элемент.Производитель = Справочники.Производители.НайтиПоНаименованию(производитель);
    КонецЕсли;      
        //до сюда
 
        //выбираем реквизит
    реквизит= ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Характеристики");    
         
    а = элемент.ДополнительныеРеквизиты.Добавить();
    а.Свойство  = реквизит;
    а.Значение = "мое значение";
    а.ТекстоваяСтрока = "мой текст";
    элемент.Записать();
Проблема в том что у меня несколько видов номенклатуры и у всех есть доп.реквизит "Характеристики", и выбирается не пойми какой. А надо что бы он выбирался в соответствии с группой номенклатуры. Как его так выбрать?

1С Предприятие 8.3, УТ 11.3
Ответ: А, ну мой скрин не в тему. Лучше все так код, который выберет реквизит из группы, нежели менять названия

Добавлено через 28 минут
Названия одинаковые. Если поменять на разные - все работает, только вот лучше конечно что бы они были одинаковыми

Добавлено через 15 часов 2 минуты
Разобрался. Там в наименованиях действительно в скобках указана группа номенклатуры, только пробел стоит перед первой скобочкой. Но в 1с-е я так и не нашел где это отображается. Вот такой код:
1C
1
реквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Характеристики (" + видНоменклатуры + ")");