Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Структура спавочника , Создание элементов          
l2d808 Подменю пользователя
сообщение 05.05.11, 15:32
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 248
Из: Советский Союз
Спасибо сказали: 65 раз
Рейтинг: 0

Добрый день. Платформа 7.7 Подскажите пожалуста как создать новый элемент в справочнике по условию.
У меня есть группы: товар1, товар2
в каждой группе есть по 2 подгруппы: сложныйтовар, простойтовар
не знаю как создать новый товар в группе товар2 причем в подгруппе соотвецтвующей некому товару в группе товар1.
пример: товар1\простойтовар\какойтотовар у меня есть,а создать нужно товар2\простойтовар\новыйкакойтотовар.
для меня основная сложность заключается в том что: сложныйтовар, простойтовар не явлюются уникальными именами (( подскажите как поступить.


Signature
Короеды это не жуки. Это пользователи. Они едят кору головного мозга ...

GreenFox Подменю пользователя
сообщение 05.05.11, 16:22
Сообщение #2

Говорящий
Иконка группы
Группа: Местный
Сообщений: 59
Из: Київ
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(l2d808 @ 05.05.11, 16:32) *
Добрый день. Платформа 7.7 Подскажите пожалуста как создать новый элемент в справочнике по условию.
У меня есть группы: товар1, товар2
в каждой группе есть по 2 подгруппы: сложныйтовар, простойтовар
не знаю как создать новый товар в группе товар2 причем в подгруппе соотвецтвующей некому товару в группе товар1.
пример: товар1\простойтовар\какойтотовар у меня есть,а создать нужно товар2\простойтовар\новыйкакойтотовар.
для меня основная сложность заключается в том что: сложныйтовар, простойтовар не явлюются уникальными именами (( подскажите как поступить.


Сначала найти группу справочника Товар2, потом найди по наименованию Простой товар используя поиск в режиме подчинения и потом создавай элемент
например

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


Как-то так

l2d808 Подменю пользователя
сообщение 05.05.11, 16:40
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 248
Из: Советский Союз
Спасибо сказали: 65 раз
Рейтинг: 0

Цитата(GreenFox @ 05.05.11, 16:22) *
Сначала найти группу справочника Товар2, потом найди по наименованию Простой товар используя поиск в режиме подчинения и потом создавай элемент
например

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


Как-то так

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


Signature
Короеды это не жуки. Это пользователи. Они едят кору головного мозга ...

mister-x Подменю пользователя
сообщение 05.05.11, 17:18
Сообщение #4

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1422 раз
Рейтинг: 0

Цитата
в какой подгруппе находится и уже существующий.
цей існуючий вибраний/спозиціонований у списку інтерактивно (тобто виділений у списку)?

l2d808 Подменю пользователя
сообщение 06.05.11, 8:28
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 248
Из: Советский Союз
Спасибо сказали: 65 раз
Рейтинг: 0

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


Signature
Короеды это не жуки. Это пользователи. Они едят кору головного мозга ...

logist Подменю пользователя
сообщение 06.05.11, 13:24
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

mister-x Подменю пользователя
сообщение 06.05.11, 14:35
Сообщение #7

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1422 раз
Рейтинг: 0

Цитата
основна задача не як знайти цей обєкт а як вказати шлях (((
Як на мене - тут пахне рекурсією.

GreenFox Подменю пользователя
сообщение 06.05.11, 14:56
Сообщение #8

Говорящий
Иконка группы
Группа: Местный
Сообщений: 59
Из: Київ
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(l2d808 @ 06.05.11, 9:28) *
існуючий елемент знаходиться в першій группі. а підгруппа може буті люба(складні чи прості) елемент я позиціоную найтипокоду наприклад. основна задача не як знайти цей обєкт а як вказати шлях (((

Помойму тут найболее уместным будет использование синтаксического разбора конструкции КакойтоТовар.ПолноеНаименование() и поиск по имени групы в подчинении группы Товар2.

Если алгоритм подходит и сами не справитесь - отпишитесь я Вам его реализирую (бесплатно).

P.S. Не нашел кнопки редактирования поэтому пишу еще одно сообщение.

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

5_kopeek Подменю пользователя
сообщение 06.05.11, 19:43
Сообщение #9

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Честно говоря, l2d808, Ваши формулировки не позволяют однозначно понять вопрос. Поэтому предлагаю решение согласно моей трактовке Вашей задачи, а именно:
Существуют некие две группы справочника, содержащие одноименные подгруппы (наименования подгрупп первой группы совпадают с наименованиями подгрупп второй группы). Необходимо создавать новый элемент во второй группе, но обязательно в подгруппе с таким же наименованием, как и у родительской подгруппы уже существующего в первой группе элемента. (Примечания. Группы верхнего уровня заранее известны. Существующий элемент задан (условно -- СуществующийТовар).)
    // Товар1 -- группа верхнего уровня
    // ПростойТовар --     группа, вложенная в Товар1
    // СложныйТовар --     группа, вложенная в Товар1
    // СуществующийТовар --     существующий товар в Товар1\ПростойТовар
    // Товар2 --         группа верхнего уровня
    // ПростойТовар --     группа, вложенная в Товар2
    // КакойТоТовар --     товар, который нужно создать во вложенной в группу Товар2 группе,
    //                     наименование которой такое же, как и у родителя уже существующего товара
    
    Предок=СокрЛП(СуществующийТовар.Родитель.Наименование);
    Спр=СоздатьОбъект("Справочник.НужныйСправочник");
    Спр.ИспользоватьРодителя(Товар2);
    Если Спр.НайтиПоНаименованию(Предок,1,1)=1 Тогда
        ПредокДляНового=Спр.ТекущийЭлемент();
        Если ПредокДляНового.ЭтоГруппа()=0 Тогда
            Возврат;
        КонецЕсли; // ПредокДляНового.ЭтоГруппа()=0
    Иначе
        Возврат;
    КонецЕсли; // Спр.НайтиПоНаименованию(Предок,1,1)=1
    Спр.ИспользоватьРодителя(ПредокДляНового);
    Спр.Новый();
    Спр.Родитель=ПредокДляНового;
    ...

mister-x Подменю пользователя
сообщение 07.05.11, 12:48
Сообщение #10

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1422 раз
Рейтинг: 0

Цитата
Рекурсия - это плохо в реализации 1с...
воно то так, але зустрічав використ. рекурсії у ABBYY глобальному модулі комплексної конфігурації 7.7 (щось по зарплаті уже не пам'ятаю конкретно що, як і реліз) smile.gif. Але із тим, що краще рекурсію обійти - згоден.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 14:08
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!