Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 20:57

Помогите с запросом!Нужна помощь...

Автор andryscha92, 05 окт 2013, 12:39

0 Пользователей и 1 гость просматривают эту тему.

andryscha92

Всем Здравствуйте! В справочнике есть несколько позиций номенклатуры.Например Шкаф Код 001, Диван Код 002, Стол Код 003.Имеется документ Расходная накладная. Как сравнить ПО КОДУ, что бы определить какие из этих товаров продавались?что писать в запросе?


andryscha92

тема закрыта!всё получилось.

MuI_I_Ika


andryscha92

Цитата: MuI_I_Ika от 05 окт 2013, 16:27
А как получилось. Напишите
Процедура Сформировать() 
   Список = СоздатьОбъект("СписокЗначений");   
   Спр = СоздатьОбъект("Справочник.Номенклатура");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл         
   Если (Спр.ТекущийЭлемент().Код = "4621483") ИЛИ (Спр.ТекущийЭлемент().Код = "000002128") ИЛИ (Спр.ТекущийЭлемент().Код = "000002113") Тогда 
   Список.ДобавитьЗначение(Спр.ТекущийЭлемент().Код);   // список с отфильтрованными записями
   КонецЕсли; 
   КонецЦикла;
   Ном=Найти(ВыбФирма.ИНН,"\");
   Если Ном=0 Тогда
      Ном=Найти(ВыбФирма.ИНН,"/");
   КонецЕсли;          
   Если Ном<>0 Тогда
   ИНН=Лев(ВыбФирма.ИНН,10);
   КПП=Прав(ВыбФирма.ИНН,9);
   КонецЕсли;   
   
   // *****************************************************
   
   ДБФ=СоздатьОбъект("XBase");
   дбф.ДобавитьПоле("A",2,20,);
   дбф.ДобавитьПоле("B",2,20,);
   дбф.ДобавитьПоле("C",3,,); 
   дбф.ДобавитьПоле("D",2,15,); 
   дбф.ДобавитьПоле("E",2,15,);
   дбф.ДобавитьПоле("F",2,50,);
   дбф.ДобавитьПоле("G",2,15,);   
   дбф.ДобавитьПоле("H",2,50,); 
   дбф.ДобавитьПоле("I",1,15,0); 
   дбф.ДобавитьПоле("J",1,15,2); 
   дбф.ДобавитьПоле("K",1,15,2);
   
   если фс.СуществуетФайл(Сокрлп(Путь)+"\narzan.dbf")<>0 тогда
      фс.УдалитьФайл(Сокрлп(Путь)+"\narzan.dbf");
   конецесли;   
   ДБФ.СоздатьФайл(Сокрлп(Путь)+"\narzan.dbf",);   
   
   Запрос=СоздатьОбъект("Запрос");
   Текст=   "//{{ЗАПРОС(Продажи)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Док = Документ.РасходнаяНакладная.ТекущийДокумент;
   |Товар = Документ.РасходнаяНакладная.Товар;
   |Количество = Документ.РасходнаяНакладная.Количество;
   |Сумма = Документ.РасходнаяНакладная.Сумма;
   |НДС = Документ.РасходнаяНакладная.НДС;
   |Функция КолП1 = Сумма(Количество);
   |Функция СумП1 = Сумма(Сумма);
   |Группировка Док;
   |Группировка Товар без групп;
   |Условие(Товар.Код В Список);
   |"//}}ЗАПРОС
   ;
   Запрос.Выполнить(Текст);
   Пока Запрос.Группировка(1)=1 Цикл   
      Пока Запрос.Группировка(2)=1 Цикл
         Если ПустоеЗначение(Запрос.Док.Грузоотправитель)=1 Тогда
            Продолжить;
         КонецЕсли;   
         Если ПустоеЗначение(Запрос.Док.Контрагент)=1 Тогда
            Продолжить;
         КонецЕсли;    
         Кол=Запрос.КолП1; 
         Сум=Запрос.СумП1;
         Если Кол=0 Тогда
            Продолжить;
         КонецЕсли;   
         ДБФ.Добавить();     
         ДБФ.УстановитьЗначениеПоля("A",ИНН);   
         ДБФ.УстановитьЗначениеПоля("B",КПП);
         ДБФ.УстановитьЗначениеПоля("C",Запрос.Док.ДатаДок);     
         ДБФ.УстановитьЗначениеПоля("D",Сокрлп(Запрос.Док.НомерДок));
         ДБФ.УстановитьЗначениеПоля("E",Строка(Запрос.Док.Грузоотправитель.Код)); 
         ДБФ.УстановитьЗначениеПоля("F",Сокрлп(Запрос.Док.Контрагент.полнНаименование));   
         ДБФ.УстановитьЗначениеПоля("G",Сокрлп(Запрос.Товар.Код));     
         ДБФ.УстановитьЗначениеПоля("H",Сокрлп(Запрос.Товар.Наименование));   
         ДБФ.УстановитьЗначениеПоля("I",Кол);   
         ДБФ.УстановитьЗначениеПоля("J",Сум/Кол);
         ДБФ.УстановитьЗначениеПоля("K",Сум); 
         
         ДБФ.Записать();   
      КонецЦикла;
   КонецЦикла;           
   ДБФ.ЗакрытьФайл();
   
   //
КонецПроцедуры
Процедура ПриНачалеВыбораЗначения(Элем,Флаг)
   Если Элем="Путь" Тогда
      Флаг=0;
      ФС.ВыбратьКаталог(Путь,"Выберите каталог файла",60);
   КонецЕсли;   
КонецПроцедуры    

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск