Имя: Пароль:
1C
1C 7.7
v7: нужна помощь с отчетом
0 antoha86
 
10.12.13
13:15
Модуль отчета содержит раздел расчета средней себестоимости, как мне ее вывести в форму отчета, а то отчет только количество и сумму показывает?
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    Если ВыбДата>ПолучитьДатуТА() Тогда
        Сообщить("Отчет построен по точку актуальности: "+ПолучитьДатуТА());
        ДатаОтчета=ПолучитьДатуТА();
    Иначе
        ДатаОтчета=ВыбДата;
    КонецЕсли;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаОтчета по ДатаОтчета;
    |Номенклатура = Регистр.ОстаткиТоваров.Номенклатура, Регистр.СтоимостьТоваров.Номенклатура;
    |Количество = Регистр.ОстаткиТоваров.Количество;
    |Стоимость = Регистр.СтоимостьТоваров.Стоимость;
    |Функция КоличествоКонОст = КонОст(Количество);
    |Функция СтоимостьКонОст = КонОст(Стоимость);
    |Группировка Номенклатура без групп;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл  
        Если Запрос.Количество>0 Тогда
    СредняяСебестоимость=Формат((Запрос.Стоимость/Запрос.Количество),"Ч15.2,");
иначе
    СредняяСебестоимость="";
        КонецЕсли;
        // Заполнение полей Номенклатура
        Таб.ВывестиСекцию("Номенклатура");
    КонецЦикла;
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры
3 Kupogun
 
10.12.13
13:18
СредняяСебестоимость НА макете напиши
4 Kupogun
 
10.12.13
13:18
а кто писал отчет?
5 antoha86
 
10.12.13
13:18
Версия 7 склад + торговля
9 antoha86
 
10.12.13
13:19
отчет с учебника + небольшая модификация с форумов дали ребята
10 1Сергей
 
10.12.13
13:19
(9) молодцы какие, ребята
16 antoha86
 
10.12.13
13:22
(3) что значит на макете? просто без свойств выражения  просто слово?
20 aka AMIGO
 
10.12.13
13:25
(16) макет - это заготовка таблицы отчета, а написать надо в какой-нть ячейке таблицы, свойства = выражение
21 antoha86
 
10.12.13
13:26
(15)Методическое пособие к курсу настройка и спровождение 1с тут дали на этом форуме
22 Kupogun
 
10.12.13
13:26
(16) поищи внизу закладочку "Сформировать" и внимательно изучи, чего там и как
23 antoha86
 
10.12.13
13:27
(20) я писал выражение средняя себестоимость свойства выражение  просто пустота а расчета нет
25 antoha86
 
10.12.13
13:29
(22) (23)
28 aka AMIGO
 
10.12.13
13:31
(23) значит, надо искать, почему в с/ст пусто.. возможно, нет остатков на выбранную дату у выбранной номенклатуры
29 aka AMIGO
 
10.12.13
13:31
(27) да ладно тебе..
31 Kupogun
 
10.12.13
13:35
(27) ты не знал!? вся миста об этом говорит.
сумма сделки до сих пор не оглашается.
32 aka AMIGO
 
10.12.13
13:35
(30) ты ета.. кого спрашиваешь? или чисто риторический вопрос? :)
33 Kupogun
 
10.12.13
13:36
ставишь после

СредняяСебестоимость=Формат((Запрос.Стоимость/Запрос.Количество),"Ч15.2,");

строчку

сообщить(СредняяСебестоимость);
и от этого пляшешь
35 Масянька
 
10.12.13
13:38
(32) Ну, тому, кто знает....
36 aka AMIGO
 
10.12.13
13:38
(33) можно плясать от отладчика :)
37 Масянька
 
10.12.13
13:38
(34) ИМХО, подмена понятий.
38 Kupogun
 
10.12.13
13:42
(36) вангую, что слово отладчик автору ветки ни о чем не говорит
39 antoha86
 
10.12.13
13:42
(28) остатки есть отчет формируется количество и сумма есть тольок графа все равно пустая
41 antoha86
 
10.12.13
13:43
(33) так значит я пишу сообщить в модуле, и ставлю выражение СредняяСебестоимость, все равно пусто?
46 aka AMIGO
 
10.12.13
13:51
(45) скрин таблицы можешь показать?
47 aka AMIGO
 
10.12.13
13:53
+46 имею в виду - из конфигуратора, а не из 1с-предприятия
48 antoha86
 
10.12.13
13:59
а как тут у вас прикрепить файл ?
49 aka AMIGO
 
10.12.13
14:02
(48) только ссылка
удобно с Gyazo
50 antoha86
 
10.12.13
14:06
(49) да я с рабочего тут нельзя устанавливать программы...
51 antoha86
 
10.12.13
14:07
(48) могу скинуть на мыло
52 aka AMIGO
 
10.12.13
14:08
(51) [email protected]
и тогда уж не скрин, а отчет
53 antoha86
 
10.12.13
14:21
(49) взял на себя смелость и скинул вам его на указанный в личной карточке емаил
54 antoha86
 
10.12.13
14:21
(52) блин ща перекину...
55 antoha86
 
10.12.13
14:23
(52) что значит отчет а не скрин?сохранить как внешний отчет и сам файл вам передать?
56 aka AMIGO
 
10.12.13
14:24
(54) не надо, я увидел
тогда кинь еще фрагмент выходной таблицы
57 aka AMIGO
 
10.12.13
14:24
(55) ага, именно так
58 antoha86
 
10.12.13
14:30
(57) скинул файл на новую почту и скрин итогового отчета
59 aka AMIGO
 
10.12.13
14:39
(58) у меня таких регистров нет, переделал под свой
считает..
http://gyazo.com/4c71f31258bed532635c9f5a74b3c961
60 aka AMIGO
 
10.12.13
14:41
(59) +
есть регистр ОстаткиТМЦ с измерениями Номенклатура, ЦенаПрод
и ресурсом Количество.
Поскольку у меня ЦенаПрод в 1с не заполняется, себестоимость подсчитывется равной нулю.
Но выводится.
61 antoha86
 
10.12.13
14:44
(59) И что это может означать? У меня же ведь показывает остатки по количеству и стоимости, а ноликов нет...Хотя когда я дописывал к Выражению СредняяСебестоимость#Ч15.2 нолики появляются
62 aka AMIGO
 
10.12.13
14:54
(61) да не нолики у тебя должны появляться..
попробуй отчет из моего письма.

больше, пожалуй ничем не смогу помочь. Даже тимвьюера нет у меня
63 aka AMIGO
 
10.12.13
14:55
+62 ошибся, не тот выслсл.
возьми из второго письма
64 antoha86
 
10.12.13
15:00
(63) Воо!!! отлично благодарю, а можно поинтересоваться, что было изменено?
65 aka AMIGO
 
10.12.13
15:02
(64) убрал правую пустую колонку в таблице
переместил в свойствах выравнивание вправо
изменил вызов переменных запроса:

        Если Запрос.КоличествоКонОст>0 Тогда
            СредняяСебестоимость=Формат((Запрос.СтоимостьКонОст/Запрос.КоличествоКонОст),"Ч15.2,");

вроде всё..
66 Масянька
 
10.12.13
15:03
"А вы, что и есть за меня будете?" - "Ага!"
67 aka AMIGO
 
10.12.13
15:04
(66) Агааа :)

на столе у меня лежит кексик, угостил шеф.. могу выложить фотокарточку :)
68 aka AMIGO
 
10.12.13
15:06
а вообще-то что-то странное есть в таблице.. но разбираться уже лень :)
69 Масянька
 
10.12.13
15:13
(67) Не. Давай лучше кексом делись :))))
70 aka AMIGO
 
10.12.13
15:18
ничуть не жалко.. только далеко :)
"а горы вооонаа где!" © :)
71 antoha86
 
10.12.13
15:24
Вот второй программист на моем опыте которому проще самому все сделать.
72 antoha86
 
23.12.13
13:00
Помогите пожалуйста

Модуль расходной накладной:

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

Процедура СписатьПартии()  
   //РегПартии=СоздатьОбъект("Регистр.ПартииТоваров");
   //СЗ=СоздатьОбъект("СписокЗначений");
    //ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура");
   //РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   РегПартии.ВыгрузитьИтоги(ТЗ,1);
   Если Константа.МетодСписания=Перечисление.МетодыСписания.FIFO Тогда
      Направление = "+";
   Иначе
      Направление="-";
   КонецЕсли;
   ТЗ.Сортировать("+Номенклатура,"+Направление+"Партия",1);
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      ОсталосьСписать=Количество;
      ТЗСтрока=0;
      ТЗ.НайтиЗначение(Номенклатура,ТЗСтрока,"Номенклатура");
      Для Ном=ТЗСтрока По ТЗ.КоличествоСтрок() Цикл
         ТЗ.ПолучитьСтрокуПоНомеру(ном);
         ОстКол=ТЗ.Количество;
         ОстСум=ТЗ.Стоимость;
         Списать=МИН(ОстКол,ОсталосьСписать);
         СебестоимостьСписания=Списать/ОстКол*ОстСум;
        

Регистр.ПартииТоваров.Номенклатура=Номенклатура;
Регистр.ПартииТоваров.Партия=ТЗ.Партия;
Регистр.ПартииТоваров.Количество=Списать;
Регистр.ПартииТоваров.Стоимость=СебестоимостьСписания;
Регистр.ПартииТоваров.ПривязыватьСтроку(НомерСтроки);
Регистр.ПартииТоваров.ДвижениеРасходВыполнить();
ОсталосьСписать=ОсталосьСписать-Списать;
Если ОсталосьСписать=0 Тогда
   Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;    
      
КонецПроцедуры

Процедура ОбработкаПроведения()    
   ИнициализацияПеременных();
   //Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   //СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров");
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      ОстКол=Рег.Остаток(Номенклатура,Склад,"Количество");
      Если ОстКол < Количество Тогда
         Сообщить ("В строке № "+НомерСтроки
         +"не хватает товара"""+Номенклатура+
         """, из необходимых"+Количество+
         "на складе "+Склад+" имеется" +ОстКол+",");
         СтатусВозврата(0);
      КонецЕсли;
      Если СтатусВозврата()<> 1 Тогда
         Продолжить;
      КонецЕсли;
      ОстСум=СтоимРег.Остаток(Номенклатура,"Стоимость");
      ОстКолОбщ=Рег.СводныйОстаток(Номенклатура,,"Количество");
      СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум;
      Регистр.ОстаткиТоваров.Номенклатура=Номенклатура;
      Регистр.ОстаткиТоваров.Склад=Склад;
      Регистр.ОстаткиТоваров.Количество=Количество;
      Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки);
      Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
      
      Регистр.СтоимостьТоваров.Номенклатура=Номенклатура;
      Регистр.СтоимостьТоваров.Стоимость=СебестоимостьСписания;
      Регистр.СтоимостьТоваров.ДвижениеРасходВыполнить();
      Регистр.Прибыль.Движение(Номенклатура, Контрагент, Сумма-СебестоимостьСписания);
   КонецЦикла;
   Если СтатусВозврата()<>1 Тогда
      Сообщить ("Документ"+ТекущийДокумент()+"не проведен!");
  
Иначе
   Если  Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
      СписатьПартии();
   КонецЕсли;
   КонецЕсли;
Регистр.Взаиморасчеты.ДвижениеПриход(Контрагент, Итог("Сумма"));
  
  КонецПроцедуры

Выдает ошибку:
Регистр.Прибыль.Движение(Номенклатура, Контрагент, Сумма-СебестоимостьСписания);
{Документ.РасходнаяНакладная.Модуль Документа(95)}: Операция вычитания не определена для строковых величин
73 oslokot
 
23.12.13
13:05
(72) Смотри что у тебя в переменной "Сумма"
74 lamme
 
23.12.13
13:06
Сообщить ("В строке № "+сокрлп(НомерСтроки)
         +"не хватает товара"""+сокрлп(Номенклатура)+

         """, из необходимых"+сокрлп(Количество)+
         "на складе "+сокрлп(Склад)+" имеется" +сокрлп(ОстКол)+",");
75 lamme
 
23.12.13
13:07
пардон. тупость
76 lamme
 
23.12.13
13:07
Регистр.Прибыль.Движение(Номенклатура, Контрагент, Сумма-СебестоимостьСписания);

смотри типы Сумма и СебестоимостьСписания
77 lamme
 
23.12.13
13:08
и еще косяк
обязательно вывалится как-нибудь

СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум;

будет типа - деление на 0
78 antoha86
 
23.12.13
13:12
Так а что с ней какая именно строчка, я не сильно пока разбираюсь что такое переменная суммы, вижу СтоимРег и ОстСумм
79 antoha86
 
23.12.13
13:28
(73) а что с ней?
80 oslokot
 
23.12.13
13:30
(79) ну тебе же явно пишут "Операция вычитания не определена для строковых величин"
Значит тормозись в отладчике на строке где ошибка и смотри чему равны переменные Сумма и СебестоимостьСписания
81 antoha86
 
23.12.13
14:28
(79) сумма равна произведению числа на списываемую стоимость, а себестоимость     СебестоимостьСписания=Списать/ОстКол*ОстСум;
и что не то?
82 antoha86
 
23.12.13
14:35
(77) была у меня строка
Если Запрос.Количество > 0 тогда
  СредняяСебестоимость=Формат((Запрос.Стоимость/Запрос.Количество),"Ч15.2,");
иначе
  СредняяСебестоимость = "";
КонецЕсли;

но она стала выдавать ошибку что переменная не определена
83 antoha86
 
23.12.13
14:37
а извиняюсь это с другого модуля...
84 antoha86
 
09.01.14
13:31
Вопрос у меня есть расходная накладная:
Перем Рег, СтоимРег, РегПартии;
Процедура ИнициализацияПеременных()
   Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров");
   Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
         РегПартии=СоздатьОбъект("Регистр.ПартииТоваров");
   КонецЕсли;
   СЗ=СоздатьОбъект("СписокЗначений");
   ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура");
   Рег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   СтоимРег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   Если ИтогиАктуальны()=0 Тогда
      Рег.ВременныйРасчет(1);
      СтоимРег.ВременныйРасчет(1);
      Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
         РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
         РегПартии.ВременныйРасчет(1);
      КонецЕсли;
      РассчитатьРегистрыНа(ТекущийДокумент());
   КонецЕсли;
   КонецПроцедуры

Процедура СписатьПартии()  
   //РегПартии=СоздатьОбъект("Регистр.ПартииТоваров");
   //СЗ=СоздатьОбъект("СписокЗначений");
    //ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура");
   //РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   РегПартии.ВыгрузитьИтоги(ТЗ,1);
   Если Константа.МетодСписания=Перечисление.МетодыСписания.FIFO Тогда
      Направление = "+";
   Иначе
      Направление="-";
   КонецЕсли;
   ТЗ.Сортировать("+Номенклатура,"+Направление+"Партия",1);
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      ОсталосьСписать=Количество;
      ТЗСтрока=0;
      ТЗ.НайтиЗначение(Номенклатура,ТЗСтрока,"Номенклатура");
      Для Ном=ТЗСтрока По ТЗ.КоличествоСтрок() Цикл
         ТЗ.ПолучитьСтрокуПоНомеру(ном);
         ОстКол=ТЗ.Количество;
         ОстСум=ТЗ.Стоимость;
         Списать=МИН(ОстКол,ОсталосьСписать);
         СебестоимостьСписания=Списать/ОстКол*ОстСум;
  
        

Регистр.ПартииТоваров.Номенклатура=Номенклатура;
Регистр.ПартииТоваров.Партия=ТЗ.Партия;
Регистр.ПартииТоваров.Количество=Списать;
Регистр.ПартииТоваров.Стоимость=СебестоимостьСписания;
Регистр.ПартииТоваров.ПривязыватьСтроку(НомерСтроки);
Регистр.ПартииТоваров.ДвижениеРасходВыполнить();
ОсталосьСписать=ОсталосьСписать-Списать;
Если ОсталосьСписать=0 Тогда
   Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;    
      
КонецПроцедуры

Процедура ОбработкаПроведения()    
   ИнициализацияПеременных();
   //Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   //СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров");
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      ОстКол=Рег.Остаток(Номенклатура,Склад,"Количество");
      Если ОстКол < Количество Тогда
         Сообщить ("В строке № "+НомерСтроки
         +"не хватает товара"""+Номенклатура+
         """, из необходимых"+Количество+
         "на складе "+Склад+" имеется" +ОстКол+",");
         СтатусВозврата(0);
      КонецЕсли;
      Если СтатусВозврата()<> 1 Тогда
         Продолжить;
      КонецЕсли;
      ОстСум=СтоимРег.Остаток(Номенклатура,"Стоимость");
      ОстКолОбщ=Рег.СводныйОстаток(Номенклатура,,"Количество");
      СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум;
      Регистр.ОстаткиТоваров.Номенклатура=Номенклатура;
      Регистр.ОстаткиТоваров.Склад=Склад;
      Регистр.ОстаткиТоваров.Количество=Количество;
      Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки);
      Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
      
      Регистр.СтоимостьТоваров.Номенклатура=Номенклатура;
      Регистр.СтоимостьТоваров.Стоимость=СебестоимостьСписания;
      Регистр.СтоимостьТоваров.ДвижениеРасходВыполнить();
      Регистр.Прибыль.Движение(Номенклатура, Контрагент, Число(Сумма)-СебестоимостьСписания);
         КонецЦикла;
   Если СтатусВозврата()<>1 Тогда
      Сообщить ("Документ"+ТекущийДокумент()+"не проведен!");
  
Иначе
   Если  Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
      СписатьПартии();
   КонецЕсли;
   КонецЕсли;
Регистр.Взаиморасчеты.ДвижениеПриход(Контрагент, Итог("Сумма"));
  
  КонецПроцедуры


Она в конце формирует прибыль в реестре прибыль, и ведет учет в реестре партий товаров(партия это приходная накладная), как мне сделать(у меня есть отчет который показывает приход по партиям), чтобы когда прибыль сформировалась еще и показала с каких партий это списано(то есть какие накладные, под какими номерами были списаны)в реестре партии товаров
85 antoha86
 
30.01.14
15:45
Помогите, пожалуйста отчет выдает ошибку:

<<?>>Перем КолГруппировок, Таб;
{Отчет.АнализПродаж.Форма.Модуль(14)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Процедура СформироватьТаблицу(Знач Запрос, Знач НомГруппировки)
{Отчет.АнализПродаж.Форма.Модуль(15)}: Определения процедур и функций должны размещаться перед операторами основной программы
Модуль:


//*******************************************
Процедура ПриОткрытии()
   СЗ.ДобавитьЗначение("Номенклатура");
   СЗ.ДобавитьЗначение("Контрагент");  
КонецПроцедуры

Процедура СдвинутьЗначение ()
   Если СЗ.ТекущаяСтрока()=1 Тогда
      СЗ.СдвинутьЗначение(1, СЗ.ТекущаяСтрока());
   Иначе
      СЗ.СдвинутьЗначение(-1,СЗ.ТекущаяСтрока());
   КонецЕсли;
   КонецПроцедуры
                  Перем КолГруппировок, Таб;
                         Процедура СформироватьТаблицу(Знач Запрос, Знач НомГруппировки)
                            Отступ="";
                            Если НомГруппировки<>1 Тогда
                     Для КолСимвТабуляции=1 По НомГруппировки Цикл
                        Отступ=Отступ+"  ";
                     КонецЦикла;
                  КонецЕсли;
                  Пока Запрос.Группировка(НомГруппировки)=1 Цикл
                     Значение=Отступ+Запрос.ЗначениеУпорядочивания(НомГруппировки);
                     Выручка=Запрос.Выручка;
                     Таб.ВывестиСекцию("Строка");
                     Если НомГруппировки <> КолГруппировок Тогда
                        СформироватьТаблицу(Зарос, НомГруппировки+1);
                     КонецЕсли;
                  КонецЦикла;
               КонецПроцедуры
              
               Процедура Сформировать()
                  Таб=СоздатьОбъект("Таблица");
                  Таб.ИсходнаяТаблица("Таблица");
                  Таб.ВывестиСекцию("Шапка");
                  Запрос=СоздатьОбъект("Запрос");
                  
                  ТекстЗапроса=
                  "//((ЗАПРОС(Запрос1)
                  |Период с НачДата по КонДата;
                  |Номенклатура=Регистр.Прибыль.Номенклатура;
                  |Контрагент=Регистр.Прибыль.Контрагент;
                  |Сумма=Регистр.Прибыль.Сумма;
                  |Функция Прибыль=Сумма(Сумма);";
                  
                  КолГруппировок=0;
                  Для Ном=1 По СЗ.КоличествоСтрок() Цикл
                     Если СЗ.Пометка(Ном)=1 Тогда
                        ТекстЗапроса=ТекстЗапроса+"
                        |Группировка"СЗ.ПолучитьЗначение(Ном)+";";
                        КолГруппировок=КолГруппировок+1;
                     КонецЕсли;
                  КонецЦикла;
                  Если КолГруппировок = 0 Тогда
                     Предупреждение("Нельзя построить отчет без группировок!",60);
                     Возврат;
                  КонецЕсли;
                  Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
                     Возврат;
                  КонецЕсли;
                  СформироватьТаблицу(Запрос,1);
                  Таб.ТолькоПросмотр(1);
                  Таб.Опции(0,0,0,0);
                  Таб.Показать("");
                  КонецПроцедуры
86 antoha86
 
03.03.14
14:20
Помогите пожалуйста, отчет не выводит запрос с регистра Партии товаров, ошибок не выдает

Текст модуля:
Перем КолГруппировок, Таб;
Процедура ПриОткрытии()
   СЗ.ДобавитьЗначение("Номенклатура");
   СЗ.ДобавитьЗначение("Контрагент");  
КонецПроцедуры

Процедура СдвинутьЗначение ()
   Если СЗ.ТекущаяСтрока()=1 Тогда
      СЗ.СдвинутьЗначение(1, СЗ.ТекущаяСтрока());
   Иначе
      СЗ.СдвинутьЗначение(-1,СЗ.ТекущаяСтрока());
   КонецЕсли;
КонецПроцедуры
Процедура СформироватьТаблицу(Запрос, НомГруппировки)  
   Отступ="";
   нн=0;
   Если НомГруппировки<>1 Тогда
      Для КолСимвТабуляции=1 По НомГруппировки Цикл
         Отступ=Отступ+"  ";
      КонецЦикла;
   КонецЕсли;
   Пока Запрос.Группировка(НомГруппировки)=1 Цикл
      Значение=Отступ+Запрос.ЗначениеУпорядочивания(НомГруппировки);
      Сумма=Запрос.Сумма;
      Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда
         Таб.ВывестиСекцию("Группа");
      Иначе
         нн=нн+1;
         Таб.ВывестиСекцию("Строка");
      КонецЕсли;
      Если НомГруппировки <> КолГруппировок Тогда
         СформироватьТаблицу(Запрос, НомГруппировки+1);
      КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Процедура Сформировать()
   Таб=СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Таб.ВывестиСекцию("Шапка");
   Запрос=СоздатьОбъект("Запрос");
  
   ТекстЗапроса=
   "//((ЗАПРОС(Запрос1)
   |Период с НачДата по КонДата;
   |Номенклатура=Регистр.Прибыль.Номенклатура;
   |Контрагент=Регистр.Прибыль.Контрагент;
   |Сумма=Регистр.Прибыль.Сумма;
   |Партия=Регистр.ПартииТоваров.Партия;
   |Функция Прибыль=Сумма(Сумма);";
  
   КолГруппировок=0;
   Для Ном=1 По СЗ.РазмерСписка() Цикл
      Если СЗ.Пометка(Ном)=1 Тогда
         ТекстЗапроса=ТекстЗапроса+"
         |Группировка "+ СЗ.ПолучитьЗначение(Ном)+";"; //СЗ.ПолучитьЗначение(Ном);"
         КолГруппировок=КолГруппировок+1;
      КонецЕсли;
   КонецЦикла;
   Если КолГруппировок = 0 Тогда
      Предупреждение("Нельзя построить отчет без группировок!",60);
      Возврат;
   КонецЕсли;
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
      Возврат;
   КонецЕсли;
   СформироватьТаблицу(Запрос,1);
   Таб.ТолькоПросмотр(1);
   Таб.Опции(0,0,0,0);
   Таб.Показать("");
КонецПроцедуры
87 Мигало
 
03.03.14
15:53
(86) В  таком виде и не должен выводить ничего с партий ...
Структуру регистра партии и прибыль дай
88 Ёпрст
 
03.03.14
16:12
(86) и не должен.
Пользуйся функциями для останкового регистра - НачОст,КонОст,Приход,Расход

наслаждайся..
89 Злопчинский
 
03.03.14
16:13
на операторе
СредняяСебестоимость=Формат((Запрос.Стоимость/Запрос.Количество)...
.
прога запросто может сломаться, потому что запросто у школяров бывают ситуации когда подвисают суммы без количеств
90 antoha86
 
06.03.14
17:00
Да не волнуйтесь я всего лишь по учебнику делаю
91 antoha86
 
06.03.14
17:02
(87) Можно поподробнее, пожалуйста, ты меня побуждаешь что то ввести или что бы я что то тебе дал?
92 antoha86
 
06.03.14
17:05
(88) а можно пожалуйста, поподробнее, что куда необходимо в моем коде вбить
93 Ёпрст
 
06.03.14
17:10
(92) Замени функция Сумма в тексте запроса на любую из (88) по вкусу.. наслаждайся
94 antoha86
 
06.03.14
17:21
(93) Зачем сумма у меня в отчет выводится, я хотел к этой сумму прикрепить партию из регистра партии товаров
95 Ёпрст
 
06.03.14
17:24
ааа.. посмотрел, че ты там понаписал.
У тебя запрос к 2-м регитсрам и нет никакой связи между ними.
Втыкай в переменные текста запроса, чтоб с обоих регистров брались данные , ну и соответствующие функции (для оборотного регистра, это сумма(), для останкового - те что в (88))

|Номенклатура=Регистр.Прибыль.Номенклатура,Регистр.ПартииТоваров.Номенклатура;
96 antoha86
 
11.03.14
15:35
(95) А функцию на партию как нужно написать?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.