7.7 Нужно правильно составить запрос

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем warayg, 15 июл 2011.

  1. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    "В лоб" не получится. Или отдельным запросом или после вывода всего отчета.

    Покажите структуру ТЗ и уточните где вам нужно выводить....

    Зачем из проводки. Сумма НДС у вас есть в документе и как следствие сумму БЕЗ ндс можно дернуть запросом
  2. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Сумму по документу я получил, мне нужно получить сумму по товару в накладной или цену товара. До того как мы сделали операцию и получили себесетоимость, нужная мне цена выводилась нормально через Запрос.ЦенаБезНДС, а теперь она просто дублируется по всем товарам в накладной, снова нету привязки к товару

    Код:
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("З");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Т = СоздатьОбъект("ТаблицаЗначений");
    Т.НоваяКолонка("Сумма","Число",14,2);
    Т.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т.НоваяКолонка("Кол","Число",14,2);
    Т.НоваяКолонка("СуммаСеб","Число",14,2);
    Т.НоваяКолонка("СуммаСНДС","Число",14,2);
    Т.НоваяКолонка("ЦенаБезНДС","Число",14,2);
    
    Т1 = СоздатьОбъект("ТаблицаЗначений");
    Т1.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т1.НоваяКолонка("СуммаСНДС","Число",14,2);
    
    Пока Запрос.Группировка(1) = 1 Цикл
    // Заполнение полей РасходнаяНакладная;
    Таб.ВывестиСекцию("Строка");
    
    Пока Запрос.Группировка(2) = 1 Цикл 
    
    //Т1.УдалитьСтроки();
    Т.УдалитьСтроки();
    
    Опер=СоздатьОбъект("Операция");
    Опер.НайтиОперацию(Запрос.РасходнаяНакладная.ТекущийДокумент());
    Опер.ВыбратьПроводки();		
    Пока Опер.ПолучитьПроводку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл			</span>
    Если (Опер.Дебет.Счет<>СчетПоКоду("902")) и (Опер.Кредит.Счет<>СчетПоКоду("281")) Тогда
    Продолжить;			
    КонецЕсли;
    //Т1.НоваяСтрока();
    //Т1.ТМЦ = Запрос.ТМЦ;
    // Т1.СуммаСНДС = Запрос.СуммаСНДС;
    // Т1.ВыбратьСтроки();
    //Т1.ПолучитьСтроку();
    
    Т.НоваяСтрока();
    Т.ТМЦ = Опер.Дебет.Субконто(2);   
    Т.Кол = ?(Опер.Количество=0,1,Опер.Количество);
    Т.Сумма = Опер.Сумма/Опер.Количество; //это себестоимость
    Т.СуммаСеб = Опер.Сумма*1.2;
    Т.ЦенаБезНДС = Запрос.ЦенаБезНДС;
    Т.ВыбратьСтроки();
    
    
    КонецЦикла;	
    Если Запрос.КолДок <> 0 Тогда
    Таб.ВывестиСекцию("Строка1");	
    КонецЕсли;	
    
    Пока Запрос.Группировка(3) = 1 Цикл   
    
    //Пока Т1.ПолучитьСтроку()=1 Цикл
    
    Пока Т.ПолучитьСтроку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл	</span>
    Таб.ВывестиСекцию("Строка2");
    КонецЦикла;
    //КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    
    Это то что получается
    [​IMG]
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Конечно будет дублироваться... Конда вы в цикле присваиваете одно и то же. А именно:

    Код:
    Т.ЦенаБезНДС = Запрос.ЦенаБезНДС;
    Т.ВыбратьСтроки(); //вообще не понял зачем здесь...
    
    
    В группировке 3 (по ТМЦ) просто выводите цену без ндс из запроса.
  4. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    если убираю это
    Код:
    Т.ВыбратьСтроки();
    
    , то строка1 и 2 не выводятся.

    Сделал так

    Код:
    Пока Запрос.Группировка(3) = 1 Цикл   
    
    ЦенаБезНДС = Запрос.ЦенаБезНДС;	
    
    Пока Т.ПолучитьСтроку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл	</span>
    Таб.ВывестиСекцию("Строка2");
    КонецЦикла;
    КонецЦикла;
    
    все равно дублируется цена (
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Выложите саму обработку - очень трудно в голове собрать ваши куски
  6. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Код:
    	Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("З");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Т = СоздатьОбъект("ТаблицаЗначений");
    Т.НоваяКолонка("Сумма","Число",14,2);
    Т.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т.НоваяКолонка("Кол","Число",14,2);
    Т.НоваяКолонка("СуммаСеб","Число",14,2);
    Т.НоваяКолонка("СуммаСНДС","Число",14,2);
    Т.НоваяКолонка("ЦенаБезНДС","Число",14,2);
    
    Т1 = СоздатьОбъект("ТаблицаЗначений");
    Т1.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т1.НоваяКолонка("СуммаСНДС","Число",14,2);
    
    Пока Запрос.Группировка(1) = 1 Цикл
    // Заполнение полей РасходнаяНакладная;      // СуммаКонтр = Запрос.СуммаО;
    
    Таб.ВывестиСекцию("Строка");
    
    Пока Запрос.Группировка(2) = 1 Цикл 
    
    Т.УдалитьСтроки();
    
    Опер=СоздатьОбъект("Операция");
    Опер.НайтиОперацию(Запрос.РасходнаяНакладная.ТекущийДокумент());
    Опер.ВыбратьПроводки();		
    Пока Опер.ПолучитьПроводку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл			</span>
    Если (Опер.Дебет.Счет<>СчетПоКоду("902")) и (Опер.Кредит.Счет<>СчетПоКоду("281")) Тогда
    Продолжить;			
    КонецЕсли;
    
    Т.НоваяСтрока();
    Т.ТМЦ = Опер.Дебет.Субконто(2);   
    Т.Кол = ?(Опер.Количество=0,1,Опер.Количество);
    Т.Сумма = Опер.Сумма/Опер.Количество; //это себестоимость
    Т.СуммаСеб = Опер.Сумма*1.2;
    Т.ВыбратьСтроки();
    
    
    КонецЦикла;	
    Если Запрос.КолДок <> 0 Тогда
    Таб.ВывестиСекцию("Строка1");	
    КонецЕсли;	
    
    Пока Запрос.Группировка(3) = 1 Цикл   
    
    ЦенаБезНДС = Запрос.ЦенаБезНДС;
    
    Пока Т.ПолучитьСтроку()=1 Цикл
    Таб.ВывестиСекцию("Строка2");
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Я же просил ВЕСЬ отчет. В том числе и запрос. Чтобы видеть переменные запроса.

    ОЧЕНЬ желательно чтобы выложили не текст, а ERT файл. Больно уж он у вас не структоризирован... Просто варварство с точки зрения читабельности/восприятия
  8. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Ну теперь сравните с вашим и найдите 10 отличий.
  10. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Понял, что надо было получать строку по номеру, цена выводится, только теперь себестоимость не выводится ((
  11. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Попротуйте так:
    Код:
    Если Т.НайтиЗначение(Запрос.ТМЦ.ТекущийЭлемент(),а,"ТМЦ")=1 Тогда
    
    
  12. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Ошибка - Значение не представляет агрегатный объект (ТекущийЭлемент)
  13. Бухгалтерский угодник
    Offline

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

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

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    скобки на месте, то у меня в запросе не правельно было

    Код:
    ТМЦ = Документ.РасходнаяНакладная.ТМЦ.Наименование;
    
    заменил на

    Код:
    ТМЦ = Документ.РасходнаяНакладная.ТМЦ;
    
    стало выводить себестоимость ))), только теперь в колонке наименования выводит еще и наименование групп и подгрупп товара с пустыми значениями, я сделал так

    Код:
    Если Запрос.Кво <> 0 Тогда
    Таб.ВывестиСекцию("Строка2");
    КонецЕсли;
    
    теперь вроде нормально выводит ))
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Извините - не досмотрел

    Нужно было так
    Код:
    Группировка ТМЦ без групп;
    
    
    
  16. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    во, буду знать )), пока Вы мне помогаете, многое стал понимать))

    А как вывести всё сумму себестоимости по контрагенту?
  17. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    В начале выбрки где наименование контрагента или внизу?
  18. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    где наименование контрагента
  19. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Нужна дополнительная ТЗ.....

    В нее аккумулируем все наши данные из группировок 2 и 3 (без вывода - просто расчет)

    После прохода по группировке 2 и 3 имеем итоговые цифры (они то нам и нужны). Выводим данные по группировке контрагента, а потом уже из заполненной таблицы (ну не вычислять же нам все по новой)
  20. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    спасибо, ща попробую

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