7.7 привязка кода элемента к коду группы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем piramida, 10 дек 2010.

  1. TopicStarter Overlay
    piramida
    Offline

    piramida

    Регистрация:
    2 дек 2010
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Помогите Плиз Написал обработку для выгрузки прайса на сайт.
    Знаний маловато и мучаюсь с одной проблемой по ТЗ никак не получается!!!!!!!

    по ТЗ необходимо выгружать в csv формат вот так:
    00001323;00006949;"(220г) Малышка каша мол. Гречка с черносливом 4 ме";58,61;"шт";
    где 00001323 это код папки номенклатуры "Нутриция"
    где 00006949 это код элемента номенлатуры которая находится в подпапке а подпапка в папке "Нутриция"
    а у меня выгружается вот так:
    00006949;00006949;"(220г) Малышка каша мол. Гречка с черносливом 4 ме";58,61;"шт";
    Помогите плиз!!!

    Код:
      Перем ТипЦенОГУП,ПапкаСФрутоняней,СпрФирма,ОснСклад,Склад8,ПапкаАрхив,ПапкаЭхо;
    Перем СимволТаб, СимволыПС, ПолныйТекстФайла;
    Перем ПрерватьОбработку; 
    //*******************************************
    Процедура ВыборКаталогаВыгр() 
    ФС.ВыбратьКаталог(ИмяКаталогаВыгр,"Путь выгрузки для файлов");
    ИмяКаталогаВыгр = СокрЛП(ИмяКаталогаВыгр);    
    КонецПроцедуры
    //.Наименование без групп;
    //******************************************* 
    Процедура СформироватьФайлPrais() 
    Запрос = СоздатьОбъект("Запрос");     
    ТекстЗапроса =
    "//{{ЗАПРОС(СформЦены) 
    |Период с ДатаНачала по ДатаНачала;
    |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура, Справочник.Цены.Владелец,Справочник.Единицы.Владелец;
    |ТипЦен = Справочник.Цены.ТипЦен;
    |Цена = Справочник.Цены.Цена; 
    |Фирма = Регистр.ОстаткиТМЦ.Фирма;
    |Склад = Регистр.ОстаткиТМЦ.Склад;
    |Количество = Регистр.ОстаткиТМЦ.Количество;
    |Функция КоличествоНачОст = НачОст(Количество);                                
    |Функция ЦенаСумма	= Сумма(Цена);
    |Группировка Номенклатура упорядочить по Номенклатура.Наименование без групп;
    |Условие(Фирма = СпрФирма);
    |Условие(Склад = ОснСклад);
    |Условие(ТипЦен=ТипЦенОГУП);
    |"
    ;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда                                           
    Возврат;
    КонецЕсли;
    //*************Проверка процесса ТекстЗапроса*******		
    Запрос.Выгрузить(ТЗ);
    СчСтрок = 0;
    //****************************************************
    
    ПолныйТекстФайла = "Идентификатор;" + СимволТаб + "Наименование;" + СимволТаб + "Цена;"+ СимволТаб + "Единица;"+ СимволыПС+ РазделительСтрок; 
    Пока Запрос.Группировка(1) = 1 Цикл
    //*************Условие исключить следующие Папки*******			
    Если Запрос.КоличествоНачОст > 0 Тогда 
    Если Запрос.Номенклатура.ПринадлежитГруппе(ПапкаЭхо) = 1 Тогда
    Продолжить;	
    КонецЕсли;
    Если Запрос.Номенклатура.ПринадлежитГруппе(ПапкаАрхив) = 1 Тогда
    Продолжить;	
    КонецЕсли;  
    КонецЕсли;  
    //****************************************************	
    Пар0 = Запрос.Номенклатура.Код;	
    Пар1 = Запрос.Номенклатура.Код;
    Пар2 = СтрЗаменить(СокрЛП(Запрос.Номенклатура.Наименование),"""","""""");
    Пар3 = СтрЗаменить(СокрЛП(Запрос.Цена),".",",");
    Пар4 = """шт""";
    СчСтрок = 0;
    
    
    НСтрока = Пар0 + (";") + СимволТаб + Пар1+(";") + СимволТаб + ("""") + Пар2 + ("""") + (";") + СимволТаб + Пар3+(";") + СимволТаб + Пар4+(";")  + СимволыПС + РазделительСтрок;
    ПолныйТекстФайла = ПолныйТекстФайла + НСтрока;		
    
    Состояние("Формируется файл Prais. Строка №"+СчСтрок);   
    СчСтрок = СчСтрок + 1;
    ТекстВыгрузки = СоздатьОбъект("Текст");  
    ТекстВыгрузки.ДобавитьСтроку(ПолныйТекстФайла); 
    КонецЦикла;
    Состояние("Запись файла Prais.");
    ПутьКФайлу = СокрЛП(ИмяКаталогаВыгр)+"\Prais.csv";
    ТекстВыгрузки.Записать(ПутьКФайлу); 
    
    Если ФС.СуществуетФайл(ПутьКФайлу) = 1  Тогда
    Сообщить("Файл Prais сформирован","|");
    Иначе
    Сообщить("Файл Prais НЕ сформирован","!");
    КонецЕсли;
    
    КонецПроцедуры          
    
    //----------------------------
    Процедура Выгрузить()                  
    СформироватьФайлPrais();
    Если ПрерватьОбработку = 1 Тогда
    Сообщить("Обработка прервана программно.");
    Возврат;
    КонецЕсли;
    
    СохранитьЗначение("ВыгрузкаPRAIS",ИмяКаталогаВыгр);  
    КонецПроцедуры 
    
    //***************** Переменные ********************
    ТипЦенОГУПо = СоздатьОбъект("Справочник.ТипыЦен");   
    ТипЦенОГУПо.НайтиПоКоду("00022");
    ТипЦенОГУП = ТипЦенОГУПо.ТекущийЭлемент(); 
    СпрНом1 = СоздатьОбъект("Справочник.Номенклатура");   
    СпрНом1.НайтиПоКоду("00006049");
    ПапкаСФрутоняней = СпрНом1.ТекущийЭлемент();   
    //    
    СпрФирма = СоздатьОбъект("Справочник.Фирмы");   
    СпрФирма.НайтиПоКоду("ОФ005");
    СпрФирма = СпрФирма.ТекущийЭлемент();   
    //
    СпрСклады = СоздатьОбъект("Справочник.Склады");   
    СпрСклады.НайтиПоКоду("ОФ001");
    ОснСклад = СпрСклады.ТекущийЭлемент();  
    СпрСклады = СоздатьОбъект("Справочник.Склады");   
    СпрСклады.НайтиПоКоду("ОФ005");
    Склад8 = СпрСклады.ТекущийЭлемент();  
    
    СпрНом1 = СоздатьОбъект("Справочник.Номенклатура");   
    СпрНом1.НайтиПоКоду("00000129");
    ПапкаАрхив = СпрНом1.ТекущийЭлемент();   
    
    СпрНом1 = СоздатьОбъект("Справочник.Номенклатура");   
    СпрНом1.НайтиПоКоду("00006444");
    ПапкаЭхо = СпрНом1.ТекущийЭлемент();   
    
    ИмяКаталогаВыгр = ВосстановитьЗначение("ВыгрузкаPRAIS");
    
    
  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Используй код Родителя.

    Типа так:
    Код:
    Пар0 = Запрос.Номенклатура.Родитель.Код;
    
    Но обычно переменные запроса сначала присваиваются локальным переменным....
  3. TopicStarter Overlay
    piramida
    Offline

    piramida

    Регистрация:
    2 дек 2010
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Это не работает
    пишет что не обнаружено поле агрегатного объекта
  4. TopicStarter Overlay
    piramida
    Offline

    piramida

    Регистрация:
    2 дек 2010
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Пардон первый вариант не сработал
    Второй вариант заработал но не совсем так
    Код:
    Пар0 = Запрос.Номенклатура.Родитель.Код;
    
    
    
    т.е. он взял код родителя но дело в том что он взял не самый первый код ну т.е. по как дерево каталога есть 1 папка 2 папка и т.д. потом элемент так вот он взял код второй папки а нужно самый первый
  5. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    метод элемента справочника ПолноеНаименование() - получишь полный путь этого элемента в справочнике

    из этой строки получаешь код родителя

    ---

    извиняюсь - это для восьмерки и для наименования..
  6. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    И для семерки аналогично:
  7. TopicStarter Overlay
    piramida
    Offline

    piramida

    Регистрация:
    2 дек 2010
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1

    Я та знаю че я хочу и вот вам готовая обработка выгрузки прайса в интернет магазин
    диалог не сложно нарисовать под модуль.
    Код:
    Перем ТипЦенОГУП,ПапкаСФрутоняней,СпрФирма,ОснСклад,Склад8,ПапкаАрхив,ПапкаЭхо;                
    Перем СимволТаб, СимволыПС, ПолныйТекстФайла;  
    Перем ПрерватьОбработку;   
    //*******************************************  
    Процедура ВыборКаталогаВыгр()   
    ФС.ВыбратьКаталог(ИмяКаталогаВыгр,"Путь выгрузки для файлов");  
    ИмяКаталогаВыгр = СокрЛП(ИмяКаталогаВыгр);      
    КонецПроцедуры  
    //.Наименование без групп;  
    //*******************************************   
    Процедура СформироватьФайлPrais()   
    Запрос = СоздатьОбъект("Запрос");       
    ТекстЗапроса =  
    //{{ЗАПРОС(СформЦены) 
    
    |Период с ДатаНачала по ДатаНачала;
    
    |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура, Справочник.Цены.Владелец,Справочник.Единицы.Владелец;
    
    |ТипЦен = Справочник.Цены.ТипЦен;
    
    |Цена = Справочник.Цены.Цена; 
    
    |Фирма = Регистр.ОстаткиТМЦ.Фирма;
    
    |Склад = Регистр.ОстаткиТМЦ.Склад;
    
    |Количество = Регистр.ОстаткиТМЦ.Количество;
    
    |Функция КоличествоНачОст = НачОст(Количество);                                
    
    |Функция ЦенаСумма = Сумма(Цена);
    
    |Группировка Номенклатура упорядочить по Номенклатура.Код;
    
    |Условие(Фирма = СпрФирма);
    
    |Условие(Склад = ОснСклад);  
    
    |Условие(Номенклатура.ПринадлежитГруппе(ПапкаАрхив)=0);
    
    |Условие(Номенклатура.ПринадлежитГруппе(ПапкаЭхо)=0);
    
    |Условие(ТипЦен=ТипЦенОГУП);
    
    |  
    ;  
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда                                             
    Возврат;  
    КонецЕсли;  
    //*************Проверка процесса ТекстЗапроса*******  
    Запрос.Выгрузить(ТЗ);  
    СчСтрок = 0;  
    //****************************************************  
    
    ПолныйТекстФайла = "РодительКод;" + СимволТаб + "Код;" + СимволТаб + "ТипОбозначения;" + СимволТаб + "Родитель;" + СимволТаб + "Наименование;" + СимволТаб + "Цена;"+ СимволТаб + "Единица;"+ СимволыПС+ РазделительСтрок;  
    Пока Запрос.Группировка(1) = 1 Цикл  
    Пар0 = Строка(Число(Запрос.Номенклатура.Код));//Уровень()  
    Пар1 = ?(Запрос.Номенклатура.Уровень()=0,"0",Строка(Число(Запрос.Номенклатура.Родитель.Код)));  
    Пар2 = СокрЛП(Запрос.Номенклатура.Наименование);  
    Если  Запрос.Номенклатура.ЭтоГруппа()=1 Тогда   
    Пар5 = "1";    
    Иначе  
    Пар5 = "2";   
    КонецЕсли;  
    Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда   
    Пар3 ="";  
    Пар4 ="";  
    Иначе  
    Пар3 = СтрЗаменить(СокрЛП(Запрос.Цена),".",",");  
    Пар4 = СокрЛП(Запрос.Номенклатура.БазоваяЕдиница.ОКЕИ.Наименование);  
    КонецЕсли;  
    СчСтрок = 0;  
    
    НСтрока = Пар0 + ";" +  Пар1+";" + Пар5 + ";" + """"+ Пар2 +""""+ ";" + Пар3+";" +""""+ Пар4+""""+";"  + РазделительСтрок;  
    ПолныйТекстФайла = ПолныйТекстФайла + НСтрока;  
    
    Состояние("Формируется файл Prais. Строка №"+СчСтрок);     
    СчСтрок = СчСтрок + 1;  
    ТекстВыгрузки = СоздатьОбъект("Текст");    
    ТекстВыгрузки.ДобавитьСтроку(ПолныйТекстФайла);   
    КонецЦикла;  
    Состояние("Запись файла Prais.");  
    ПутьКФайлу = СокрЛП(ИмяКаталогаВыгр)+"\Prais.csv";  
    ТекстВыгрузки.Записать(ПутьКФайлу);   
    
    Если ФС.СуществуетФайл(ПутьКФайлу) = 1  Тогда  
    Сообщить("Файл Prais сформирован","|");  
    Иначе  
    Сообщить("Файл Prais НЕ сформирован","!");  
    КонецЕсли;  
    
    КонецПроцедуры            
    
    //----------------------------  
    Процедура Выгрузить()                    
    СформироватьФайлPrais();  
    Если ПрерватьОбработку = 1 Тогда  
    Сообщить("Обработка прервана программно.");  
    Возврат;  
    КонецЕсли;  
    
    СохранитьЗначение("ВыгрузкаPRAIS",ИмяКаталогаВыгр);    
    КонецПроцедуры   
    
    //***************** Переменные ********************  
    ТипЦенОГУПо = СоздатьОбъект("Справочник.ТипыЦен");     
    ТипЦенОГУПо.НайтиПоКоду("00022");  
    ТипЦенОГУП = ТипЦенОГУПо.ТекущийЭлемент();   
    СпрНом1 = СоздатьОбъект("Справочник.Номенклатура");     
    СпрНом1.НайтиПоКоду("00006049");  
    ПапкаСФрутоняней = СпрНом1.ТекущийЭлемент();     
    //      
    СпрФирма = СоздатьОбъект("Справочник.Фирмы");     
    СпрФирма.НайтиПоКоду("ОФ005");  
    СпрФирма = СпрФирма.ТекущийЭлемент();     
    //  
    СпрСклады = СоздатьОбъект("Справочник.Склады");     
    СпрСклады.НайтиПоКоду("ОФ001");  
    ОснСклад = СпрСклады.ТекущийЭлемент();    
    СпрСклады = СоздатьОбъект("Справочник.Склады");     
    СпрСклады.НайтиПоКоду("ОФ005");  
    Склад8 = СпрСклады.ТекущийЭлемент();    
    
    СпрНом1 = СоздатьОбъект("Справочник.Номенклатура");     
    СпрНом1.НайтиПоКоду("00000129");  
    ПапкаАрхив = СпрНом1.ТекущийЭлемент();     
    
    СпрНом1 = СоздатьОбъект("Справочник.Номенклатура");     
    СпрНом1.НайтиПоКоду("00006444");  
    ПапкаЭхо = СпрНом1.ТекущийЭлемент();     
    
    ИмяКаталогаВыгр = ВосстановитьЗначение("ВыгрузкаPRAIS"); 
    
    
    но все одно спсибо что приняли участие в теме. Это очень приятно и спасибо вам (участникам).
  8. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Может было бы проще прикрепить обработку, чем забивать место исходниками?
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  10. TopicStarter Overlay
    piramida
    Offline

    piramida

    Регистрация:
    2 дек 2010
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1

    Вот пожалуста обработочка
    http://www.1c-pro.ru/index.php?act=Attach&...ost&id=6069

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