8.х УТ 11.3 Внешняя обработка. Работа со справочником Номенклатура

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем p-roman, 8 дек 2016.

  1. TopicStarter Overlay
    p-roman
    Offline

    p-roman

    Регистрация:
    6 дек 2016
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Столкнулся с необходимостью осуществить на 1С 8.3. то, что без проблем делал ранее на платформе 8.0 - 8.1. Сейчас УТ типовая 11.3.9.1850, база файловая.

    Хочу создать группу номенклатуры ( а потом и саму номенклатуру)
    Раньше делал так ( и как сделать под УТ 10.3 я отлично понимаю), но....теперь УТ11.3

    НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
    // Получаю ссылку на группу, в которой должна находиться создаваемая группа.
    Родитель = Справочники.Номенклатура.НайтиПоНаименованию("IT Отдел", Истина);
    НоваяГруппа.Наименование = "Железяка";
    НоваяГруппа.Родитель = Родитель;
    НоваяГруппа.Записать();

    Сейчас, создал внешнюю обработку. Открыл в конфигураторе.
    На ее форме разместил кнопку, при нажатии которой происходит вызов


    Процедура Test(Команда)
    НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
    // Получаю ссылку на группу, в которой должна находиться создаваемая группа.
    Родитель = Справочники.Номенклатура.НайтиПоНаименованию("IT Отдел", Истина);
    НоваяГруппа.Наименование = "Железяка";
    НоваяГруппа.Родитель = Родитель;
    НоваяГруппа.Записать()

    КонецПроцедуры

    но ничего не работает.(((

    Если кратко - задача такая - в этой процедуре следуя определенной логике создавать новые группы номенклатуры и саму номенклатуру в заданном месте иерархии...

    Прошу "направить" на путь истинный.

    Пробовал прописать в начале
    &наСервере

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

    Пробовал написать текст процедуры так

    НовыйОбъект = Справочники["Номенклатура"].СоздатьГруппу();
    НовыйОбъект.Наименование = "Покупатели";
    НовыйОбъект.Записать();

    тоже не получается. Прошу помощи.По возможности киньте пожалуйста живым примером...
  2. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    730
    Симпатии:
    73
    Баллы:
    54
    "УТ типовая 11.3.9.1850" - нет такой конфигурации! Последняя из 11.3 = 11.3.1.142

    А у пользователю дано (в конфигураторе) право "Интерактивное открытие внешних отчетов и обработок"?
    По умолчанию это выключено и Полные права это не подразумевают

    А, что именно не получается. Какая ошибка-то и в каком месте?

    По моему, у вас пропущены
    НоваяГруппа.УстановитьНовыйКод();
    НоваяГруппа.Наименование = Строка(Название);
    Последнее редактирование: 8 дек 2016
  3. TopicStarter Overlay
    p-roman
    Offline

    p-roman

    Регистрация:
    6 дек 2016
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Да, вы правы.Извините ошибся - УТ 11.3.1.142. Плохо ночью без кофе =)

    Не выдает ошибку..но и результата я не вижу. В справочнике ничего не появляется.
    Вот смотрите.
    При открытии обработки и нажатии Test ничего не происходит.
    Так же не понятно как реализовать создание иерархии в процедуре
    &НаКлиенте
    Процедура НачатьИмпортИерархии(Команда)
    ...ведь надо работать с листом excel

    Вложения:

  4. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.754
    Симпатии:
    428
    Баллы:
    104
    вот такой обработкой создавал нужную структуру папок в Номенклатуре (просто пробывал перенос и нужно было структуру сохранить) загрузкой из файла
    обработка и пример файла прилагаются

    вот код самой процедуры, собственно нужное - внутри цикла (может где-то и коряво, писалось за несколько минут по сиюминутной надобности)
    Код:
    &НаСервере
    Процедура ЗагрузитьФайл()
        СписокГр = Новый ТекстовыйДокумент;
        СписокГр.Прочитать(Файлик);
        КолвоСтр=СписокГр.КоличествоСтрок();
    
        СтрОтчета=СписокГр.ПолучитьСтроку(1);
        Строка             = СтрЗаменить(СтрОтчета, ";", Символы.ПС);
        ГруппаТовара = СтрПолучитьСтроку(Строка, 1);
        КодГруппы  = СтрПолучитьСтроку(Строка, 2);
        РодительГруппы = СтрПолучитьСтроку(Строка, 3);
       
        СпрТов=Справочники.Номенклатура;
       
        НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
        НоваяГруппа.Код = КодГруппы;
        НоваяГруппа.Наименование = ГруппаТовара;
        //НоваяГруппа.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(РодительГруппы) ;
       
        УжеЕстьТакая=СпрТов.НайтиПоКоду(КодГруппы,,,);
        Если УжеЕстьТакая = СпрТов.ПустаяССылка() Тогда
            НоваяГруппа.Записать();
        КонецЕсли;
    
       
        Для Н=2 По КолвоСтр Цикл
            СтрОтчета=СписокГр.ПолучитьСтроку(Н);
            Строка             = СтрЗаменить(СтрОтчета, ";", Символы.ПС);
            ГруппаТовара = СтрПолучитьСтроку(Строка, 1);
            КодГруппы  = СтрПолучитьСтроку(Строка, 2);
           
            УжеЕстьТакая=СпрТов.НайтиПоКоду(КодГруппы,,,);
            Если УжеЕстьТакая = СпрТов.ПустаяССылка() Тогда
                РодительГруппы = СтрПолучитьСтроку(Строка, 3);
                НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
                НоваяГруппа.Код = КодГруппы;
                НоваяГруппа.Наименование = ГруппаТовара;
                НоваяГруппа.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(РодительГруппы) ;
                НоваяГруппа.Записать();
            КонецЕсли;
        КонецЦикла;
       
    КонецПроцедуры

    Вложения:

    p-roman нравится это.
  5. TopicStarter Overlay
    p-roman
    Offline

    p-roman

    Регистрация:
    6 дек 2016
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Спасибо! Уже начинает работать мозг)))
    Однако вот в чем проблема.
    В моем случае происходит вызов процедуры "на клиенте" в которой происходит чтение строк файла эксель.
    После прочтения каждой строки я хочу создавать иерархию из групп и позиции номенклатуры. Эти данные - в столбцах.
    Вариант CSV не очень хочется использовать, ибо символ ";" встречается в заданных колонках, хотелось бы использовать именно xls.
    Но...чтение XLS работает только на клиенте, анализ всего - на сервере....а как тогда осуществлять передачу нужных данных для анализа и создания иерархии на сервере?

    Может вообще загрузить данные их XLS в таблицу на форме? Это может помочь?
  6. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.754
    Симпатии:
    428
    Баллы:
    104
    CSV это текстовый файл, и читается текстовый файл, просто csv уже содержит разделитель ";", но никто не мешает его заменить другим :))) например "|"
  7. TopicStarter Overlay
    p-roman
    Offline

    p-roman

    Регистрация:
    6 дек 2016
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Вроде разобрался, спасибо.
    Вот только как загрузить картинку в справочник номенклатуры в качестве основного изображения?
    Есть только имя файла...
  8. TopicStarter Overlay
    p-roman
    Offline

    p-roman

    Регистрация:
    6 дек 2016
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Еще вопрос
    Если в УТ 10.3. при создании элемента справочника номенклатуры мы задавали так

    Элемент.ВестиУчетПоСериям = Истина;
    Элемент.ВестиУчетПоХарактеристикам = Истина;
    Элемент.ВестиПартионныйУчетПоСериям = Истина;

    то как это происходит в УТ 11.3 ?
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.143
    Симпатии:
    554
    Баллы:
    204
    Практически так же, только нужно разбираться в управляемых формах
  10. TopicStarter Overlay
    p-roman
    Offline

    p-roman

    Регистрация:
    6 дек 2016
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Нашел
    Элемент.ИспользованиеХарактеристик
    но так и не могу найти остальные реквизиты...

Поделиться этой страницей