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

Хранилище

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

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



> Каталоги справочника.          
akella Подменю пользователя
сообщение 24.11.11, 10:16
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 54
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени суток.
Появилась небольшой вопрос.
Пишу я обработку для загрузки из хлс в справочник номенклатуры данных. появилась проблема такого плана.
В файле хлс есть столбик с наименованием фирмы поставщика.
так вот надо при загрузки создавать каталог с этим наименоваием и загружать туда данные из строки)

//Определение номера необходимых колонок
    НомерКолонкиАртикулаТовара=1;
    НомерКолонкиНаименованияТовара= 2;
    НомерКолонкиПолнНаименованияТовара= 3;
    НомерКолонкиЕдИзмТовара=4;
    НомерКолонкиНаименованияПоставщика=5;
    НомерКолонкиЦеныТовара=6;
  
    
    // Выбираем данные из файла
    Для а = 1 по ФайлСтрок Цикл          
      
      
        //Полуим данные из ячеек
        КодТовара=СокрЛП(Excel.Cells(а,НомерКолонкиАртикулаТовара).Value);
        НаименованиеТовара=СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияТовара).Value);
        ПолнНаименование=СокрЛП(Excel.Cells(а,НомерКолонкиПолнНаименованияТовара).Value);
        НаименованиеПоставшика=СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияПоставщика).Value);
        Цена= Число(Excel.Cells(а,НомерКолонкиЦеныТовара).Value);
        
        Товар=СоздатьОбъект("Справочник.Номенклатура");
        Товар1=Товар.НайтиПоНаименованию(НаименованиеПоставшика);
        
           Товар.НайтиПоНаименованию(НаименованиеПоставшика);
           Товар.ВыбратьЭлементы(НаименованиеПоставшика);
           ИндГруппы=Товар.ЭтоГруппа();
           
        Если (ПустоеЗначение(НаименованиеПоставшика)=1) тогда
            Записать(Товар,КодТовара,НаименованиеТовара,ПолнНаименование,Цена,НаименованиеПоставш
ика);
        иначе
        
            Если (Товар1=1) и (ИндГруппы=1)  тогда
                Товар=СоздатьОбъект("Справочник.Номенклатура");
                Товар.ВыбратьЭлементы();
                Товар.Родитель=НаименованиеПоставшика;
                //Товар.ИспользоватьРодителя(НаименованиеПоставшика);
                
                Записать(Товар,КодТовара,НаименованиеТовара,ПолнНаименование,Цена,НаименованиеПоставш
ика);
                //продолжить;
                //тут должен быть код в котором будет описана "процедура" записи данных из функии записать(тоесть данные с строки ексела)
                // в существующую группу которую нашли.
            иначеЕсли ИндГруппы=0 тогда
                //тут обязана быть хрень в которой будет описан механизм создание группы которую не нашли и запись в ней данных их строкиэекселя
                
                Товар=СоздатьОбъект("Справочник.Номенклатура");
                Товар.ВыбратьЭлементы();
                Товар.НоваяГруппа();
                Товар.Наименование=НаименованиеПоставшика;
                Товар.Записать();
                Товар.Родитель=НаименованиеПоставшика;
                Записать(Товар,КодТовара,НаименованиеТовара,ПолнНаименование,Цена,НаименованиеПоставш
ика);
                
                
                //продолжить;
            КонецЕсли;


вот беда с позиционированием родителя..чет не могу нормльно объявить. чтобы запись шла в каталог выбранный мной.
буду рад помощи)))

kalyamov Подменю пользователя
сообщение 24.11.11, 14:46
Сообщение #2

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

А вот на эту строку - Товар.Родитель=НаименованиеПоставшика; - Ваша обработка ничего вульгарного не пишет ? Товар.Родитель - это тоже объект ("Справочник.Номенклатура"), а Вы его строкой хотите сделать. Да и вообще, как то странно написана обработка. Может фрагмент xls файла покажите ?

Спасибо сказали: akella,

akella Подменю пользователя
сообщение 24.11.11, 14:53
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 54
Спасибо сказали: 0 раз
Рейтинг: 0

не вульгарного не пишет.

формат хлс файла простой.

Артикул- Наименование- ПолноеНаименование- Поставщик- ед измерения- цена

в данном случае я ед езмерения не брал. ненужно пока.

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

kalyamov Подменю пользователя
сообщение 24.11.11, 15:07
Сообщение #4

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

Ну если все срабатывает и запинка только в этом месте, тогда попробуйте так:

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

    КонецЕсли;


Но повторюсь - подозрительно, что все нормально срабатывает.

Спасибо сказали: akella,

alex040269 Подменю пользователя
сообщение 24.11.11, 15:08
Сообщение #5

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

Цитата(akella @ 24.11.11, 10:16) *
//Определение номера необходимых колонок
          Товар.Родитель=НаименованиеПоставшика;


НаименованиеПоставшика - доджен быть Справочник.Номенклаьура причем группа.

примерно так:

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


Сообщение отредактировал alex040269 - 24.11.11, 15:09


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Спасибо сказали: akella,

akella Подменю пользователя
сообщение 24.11.11, 15:28
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 54
Спасибо сказали: 0 раз
Рейтинг: 0

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


Функция Записать(спр,КодТовара1,НаименованиеТовара1,ПолнНаименование1,Цена1,НаименованиеПоста
вшика1);

    Товар1=спр.НайтиПоКоду(КодТовара1);
    Товар1=спр.НайтиПоНаименованию(НаименованиеТовара1);
    
    Если Товар1=0 тогда
        
            спр.Новый();
            спр.Артикул=КодТовара1;
            спр.Наименование=НаименованиеТовара1;
            спр.ПолноеНаименование=ПолнНаименование1;
            спр.ОтпЦена=Цена1;
            спр.Записать();
        
    КонецЕсли;

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


Вот тут я так понимаю нехватает Использовать родителя?) он всеравно почему-то проверяет справочник номенклатура а не группу справочника.

Flexy Подменю пользователя
сообщение 24.11.11, 15:50
Сообщение #7

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

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


Сообщение отредактировал Flexy - 24.11.11, 16:00

Спасибо сказали: akella,

kalyamov Подменю пользователя
сообщение 24.11.11, 16:07
Сообщение #8

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

Функция Записать(спр,КодТовара1,НаименованиеТовара1,ПолнНаименование1,Цена1,НаименованиеПоста
вшика1,Родитель1);

    Товар1=спр.НайтиПоКоду(КодТовара1);
    Товар1=спр.НайтиПоНаименованию(НаименованиеТовара1);
    
    Если Товар1=0 тогда
        
            спр.Новый();
            Если ПустоеЗначение(Родитель1)=0 Тогда
                   Спр.Родитель = Родитель1;
            КонецЕсли;  
            спр.Артикул=КодТовара1;
            спр.Наименование=НаименованиеТовара1;
            спр.ПолноеНаименование=ПолнНаименование1;
            спр.ОтпЦена=Цена1;
            спр.Записать();
        
    КонецЕсли;

КонецФункции
//Определение номера необходимых колонок
    НомерКолонкиАртикулаТовара=1;
    НомерКолонкиНаименованияТовара= 2;
    НомерКолонкиПолнНаименованияТовара= 3;
    НомерКолонкиЕдИзмТовара=4;
    НомерКолонкиНаименованияПоставщика=5;
    НомерКолонкиЦеныТовара=6;
  
    
    // Выбираем данные из файла
    Для а = 1 по ФайлСтрок Цикл          
        //Полуим данные из ячеек
        КодТовара=СокрЛП(Excel.Cells(а,НомерКолонкиАртикулаТовара).Value);
        НаименованиеТовара=СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияТовара).Value);
        ПолнНаименование=СокрЛП(Excel.Cells(а,НомерКолонкиПолнНаименованияТовара).Value);
        НаименованиеПоставшика=СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияПоставщика).Value);
        Цена= Число(Excel.Cells(а,НомерКолонкиЦеныТовара).Value);
        
        Товар = СоздатьОбъект("Справочник.Номенклатура");
        РодительТовара = СоздатьОбъект("Справочник.Номенклатура");
                
                Если ПустоеЗначение(НаименованиеПоставщика)=0) Тогда

                Если (РодительТовара.НайтиПоНаиенованию(НаименованиеПоставщика)=0) Тогда
                       РодительТовара.НоваяГруппа();
                       РодительТовара.Наименование = НаименованиеПоставщика;
                       РодительТовара.Записать();
                КонецЕсли;
                       Записать(Товар,КодТовара,НаименованиеТовара,ПолнНаименование,Цена,НаименованиеПоставш
ика,РодительТовара.ТекущийЭлемент());
                Иначе
                       Записать(Товар,КодТовара,НаименованиеТовара,ПолнНаименование,Цена,НаименованиеПоставш
ика,НаименованиеПоставщика);
        КонецЕсли;


Ну может так будет работать.

Спасибо сказали: akella,

akella Подменю пользователя
сообщение 25.11.11, 15:17
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 54
Спасибо сказали: 0 раз
Рейтинг: 0

спасибо заработало) осталось только чуток поправить сортировку) и все) огромное спасиб кто помогал)

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


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

 

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