7.7 Редактировать Отчет Ведомость по остаткам ТМЦ

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

  1. TopicStarter Overlay
    Vanek38
    Offline

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Доброго всем дня
    В 1с новичок.Задача состоит в следующем- Есть отчет Ведомость по остаткам ТМЦ (7.7 Торговля и склад). Для примера идет несколько поступлений ТМЦ, затем перемещение товара.

    Все эти операции разбиты по датам,когда выполнялись

    сейчас отображается так

    поступление №1 от 01.02.2012
    поступление №2 от 02.02.2012
    поступление №3 от 03.02.2012
    поступление №4 от 04.02.2012
    перемещение от 05.02.2012 (поступление №2)


    Необходимо чтобы перемещение отображались под теми накладными,с которых были списаны.
    пример



    поступление №1 от 01.02.2012
    поступление №2 от 02.02.2012
    перемещение от 05.02.2012 (поступление №2)
    поступление №3 от 03.02.2012
    поступление №4 от 04.02.2012


    Каким образом это реализовать? Может с помощью стандартных средств это возможно реализовать?
    Заранее спасибо

    Вложения:

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

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Если у вас метод расчета себестоимости не по средней - вообще НИКАК. Только писать что-то свое. Если по средней - гляньте отчет по партиям ТМЦ.
  3. TopicStarter Overlay
    Vanek38
    Offline

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    по партиям пробовал
    тоже самое
    перемешение выводит не под тем документом откуда был приход
  4. Бухгалтерский угодник
    Offline

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

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

    Vanek38

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

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    а других вариантов нет. Или выставлять документы в хронологическом порядке, либо вносить изменения в отчет
  7. TopicStarter Overlay
    Vanek38
    Offline

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Нужно с группировками мастерить, я правильно понял?
    Что то типа Группировка упорядочить по .... ?
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Думаю "не взлетит".. Надо в таблице значений в цикле.... по условию
  9. TopicStarter Overlay
    Vanek38
    Offline

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    условие я так понимаю что то вроде номер документа основания= номер документа прихода
    я просто плохо еще ориентируюсь в синтаксисе
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    совершенно не обязательно. Должна быть связь между документами. Хоть через соответствеи ТМЦ
  11. TopicStarter Overlay
    Vanek38
    Offline

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Как я понял это нужно делать тут


    Код:
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    Если ПустоеЗначение(ТЗ.НазваниеСекции) = 1 Тогда
    Продолжить;
    КонецЕсли;			  
    Если ТЗ.НазваниеСекции = "Документ" Тогда 
    
    ТекОстК = ТекОстК + ТЗ.КоличествоПриход - ТЗ.КоличествоРасход;
    ТекОстР = ТекОстР + ТЗ.РезервПриход - ТЗ.РезервРасход;
    ПечатьСтрокиДокумента(ТЗ, ТЗ.Ном, ТЗ.НазваниеСекции, ТЗ.ПечТекстСтроки, ТЗ.ТекРасшифровка, ТекОстК, ТекОстР);
    Иначе				   
    ТекОстК = ТЗ.КоличествоНачОст;
    ТекОстР = ТЗ.РезервНачОст;
    ПечатьСтроки(ТЗ, ТЗ.Ном, ТЗ.НазваниеСекции, ТЗ.ПечТекстСтроки, ТЗ.ТекРасшифровка);
    КонецЕсли;
    
    КонецЦикла;
    и переделать что то вроде этого

    Код:
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    цк=цк+1;
    Если ПустоеЗначение(ТЗ.НазваниеСекции) = 1 Тогда
    Продолжить;
    КонецЕсли;			  
    Если ТЗ.НазваниеСекции = "Документ" Тогда 
    
    Для Номер = 1 По цк Цикл
    
    Если [color=#282828][font=helvetica]номер документа основания= номер документа прихода Тогда [/font][/color]
    
    ТекОстК = ТекОстК + ТЗ.КоличествоПриход - ТЗ.КоличествоРасход;
    ТекОстР = ТекОстР + ТЗ.РезервПриход - ТЗ.РезервРасход;
    ПечатьСтрокиДокумента(ТЗ, ТЗ.Ном, ТЗ.НазваниеСекции, ТЗ.ПечТекстСтроки, ТЗ.ТекРасшифровка, ТекОстК, ТекОстР);
    Иначе				   
    ТекОстК = ТЗ.КоличествоНачОст;
    ТекОстР = ТЗ.РезервНачОст;
    ПечатьСтроки(ТЗ, ТЗ.Ном, ТЗ.НазваниеСекции, ТЗ.ПечТекстСтроки, ТЗ.ТекРасшифровка);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
  12. Бухгалтерский угодник
    Offline

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

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

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    что то и тут не взлетает. делаю цикл на 12 повторов, без условия- результат не меняется
  14. Бухгалтерский угодник
    Offline

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

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

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Или не в той процедуре капаю?

    Код:
    Процедура Сформировать(ЗакрытьДиалог=0)
    Перем Запрос, ТекстЗапроса, х;Если глПроверкаДаты(ДатаНачала,ДатаКонца)=0 Тогда
    Возврат;
    КонецЕсли;
    Если (ТипЗначенияСтр(Таб) <> "Таблица") ИЛИ (Обновить = 0) Тогда
    Таб = СоздатьОбъект("Таблица");
    Иначе
    Таб.Очистить();
    КонецЕсли;
    
    Таб.ИсходнаяТаблица( "ВедомостьПоОстаткамТМЦ" );Если ПоказатьКомиссию = 1 Тогда
    ТЗ = СоздатьОбъект("ТаблицаЗначений");  
    ТЗ.НоваяКолонка("ПечТекстСтроки");
    ТЗ.НоваяКолонка("СкладКомиссионер");
    ТЗ.НоваяКолонка("Ном", "Число");
    ТЗ.НоваяКолонка("КоличествоПриход");
    ТЗ.НоваяКолонка("КоличествоРасход");
    ТЗ.НоваяКолонка("РезервПриход");
    ТЗ.НоваяКолонка("РезервРасход");
    ТЗ.НоваяКолонка("КоличествоНачОст");
    ТЗ.НоваяКолонка("КоличествоКонОст");
    ТЗ.НоваяКолонка("КоличествоПриходВнутр");
    ТЗ.НоваяКолонка("КоличествоРасходВнутр");
    ТЗ.НоваяКолонка("КоличествоПриходПереоц");
    ТЗ.НоваяКолонка("КоличествоРасходПереоц");
    ТЗ.НоваяКолонка("РезервНачОст");
    ТЗ.НоваяКолонка("РезервКонОст");
    ТЗ.НоваяКолонка("НазваниеСекции");
    ТЗ.НоваяКолонка("ТекРасшифровка");
    
    ГруппКолонки = "ПечТекстСтроки, СкладКомиссионер, Ном, ТекРасшифровка, НазваниеСекции";
    СуммКолонки  = "КоличествоПриход, КоличествоРасход, РезервПриход, РезервРасход, КоличествоНачОст, КоличествоКонОст, " +
    "КоличествоПриходВнутр, КоличествоРасходВнутр, КоличествоПриходПереоц, КоличествоРасходПереоц, " +
    "РезервНачОст, РезервКонОст";
    КонецЕсли;Расшифровка = СоздатьОбъект("СписокЗначений");
    Расшифровка.Установить("Отчет", "ВедомостьПоОстаткамТМЦ");
    // все настройки помещаем в список
    Расшифровка.Установить("ДатаНачала",  ДатаНачала);
    Расшифровка.Установить("ДатаКонца",  ДатаКонца);
    Расшифровка.Установить("ВыбРазделитель1",ВыбРазделитель1);
    Расшифровка.Установить("ВыбРазделитель2",ВыбРазделитель2);
    Расшифровка.Установить("ВыбРазделитель3",ВыбРазделитель3);
    Расшифровка.Установить("ВидРазделителя",ВидРазделителя);Расшифровка.Установить("ВыбТМЦ", ВыбТМЦ);
    Расшифровка.Установить("ВыбСклад", ВыбСклад);
    Расшифровка.Установить("ПоказатьКомиссию",ПоказатьКомиссию);
    Расшифровка.Установить("ВидЕдиницы", ВидЕдиницы);
    Расшифровка.Установить("ПоГруппам", ПоГруппам);Расшифровка.Установить("Группировки", Группировки);
    глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст); // записываем изменения если они были
    // запомним МФ только если он задан
    Если глМножественныйФильтрЗадан(ТаблицаМФ) = 1 Тогда
    Расшифровка.Установить("ТаблицаМФ", ТаблицаМФ);
    КонецЕсли;//Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    Если  ПоказатьКомиссию = 1 Тогда
    ТекстЗапроса = ТекстЗапросаСКомиссией();
    Иначе
    ТекстЗапроса = ТекстЗапросаБезКомиссии();
    КонецЕсли;
    Загол="";
    НетОш = 1; // нет ошибок при наложении фильтров
    Если ВидРазделителя = 1 Тогда
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Фирма",ВыбРазделитель1,"ВыбРазделитель1",ТекстЗапроса,Загол);
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ЮрЛицо",,,ТекстЗапроса,Загол);
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",,,ТекстЗапроса,Загол);
    ИначеЕсли ВидРазделителя = 2 Тогда												  
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ЮрЛицо",ВыбРазделитель2,"ВыбРазделитель2",ТекстЗапроса,Загол);
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Фирма",,,ТекстЗапроса,Загол);
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",,,ТекстЗапроса,Загол);
    ИначеЕсли ВидРазделителя = 3 Тогда												  
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",ВыбРазделитель3,"ВыбРазделитель3",ТекстЗапроса,Загол);
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Фирма",,,ТекстЗапроса,Загол);
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ЮрЛицо",,,ТекстЗапроса,Загол);
    КонецЕсли;
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Номенклатура",ВыбТМЦ,"ВыбТМЦ",ТекстЗапроса,Загол,"СвойстваНоменклатуры");
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Склад",ВыбСклад,"ВыбСклад",ТекстЗапроса,Загол);Если НетОш = 0 Тогда
    Возврат;
    КонецЕсли;
    ПечЗаголовок = "Ведомость по остаткам ТМЦ на складах";
    Если  ПоказатьКомиссию = 1 Тогда
    ПечЗаголовок = ПечЗаголовок + " и у комиссионеров";
    КонецЕсли;ПечЗаголовокСтолбца = "";  
    СписокСортировки = "";
    УстановитьГруппировкиЗапроса(ТекстЗапроса, ПечЗаголовокСтолбца);
    КоличествоГруппировок = СписокГруппировок.РазмерСписка();
    
    Если НомерГруппировкиПоТМЦ = 9999 Тогда
    Предупреждение("Группировка по номенклатуре должна быть обязательно установлена!",60);
    Возврат;
    КонецЕсли;Если КоличествоГруппировок > 5 Тогда
    Предупреждение("Нельзя сделать больше 5 группировок!",60);
    Возврат;
    КонецЕсли;
    // Если ошибка в запросе, то выход из процедуры 
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;		  глЧислоСтрок = 0;
    Таб.ВывестиСекцию("Кнопки");
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("ШапкаТаблицы");// выводим шапку на каждой странице
    НачПовт = Таб.ВысотаСекции("Кнопки") + Таб.ВысотаСекции("Шапка");
    КонПовт = НачПовт + Таб.ВысотаСекции("ШапкаТаблицы");
    Таб.ПовторятьПриПечатиСтроки(НачПовт + 1, КонПовт);
    глОживить(1);Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0, "ВедомостьПоОстаткамТМЦ", "ВедомостьПоОстаткамТМЦ");
    // ВЫВОД ГРУППИРОВОК ЗАПРОСА
    ВывестиГруппировку(Запрос,1);Если ПоказатьКомиссию = 1 Тогда
    ТЗ.ВыбратьСтроки(); 
    ТЗ.Сортировать(СписокСортировки, 1);								   
    ВыводитьКомиссионеров = ?(НомерГруппировкиПоСкладу = 9999, 0, ПоказатьКомиссию);
    КолонкиДляГруппировки = СписокСортировки + ", " + ?(ВыводитьКомиссионеров = 1, "Комиссионер, ", "") + ГруппКолонки;
    ТЗ.Свернуть(КолонкиДляГруппировки, СуммКолонки);
    ТекОстК = 0;
    ТекОстР = 0; 
    х=0;
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    x=x+1;
    Для Номер=1 По x Цикл
    Если ПустоеЗначение(ТЗ.НазваниеСекции) = 1 Тогда
    Продолжить;
    КонецЕсли;			  
    Если ТЗ.НазваниеСекции = "Документ" Тогда
    ТекОстК = ТекОстК + ТЗ.КоличествоПриход - ТЗ.КоличествоРасход;
    ТекОстР = ТекОстР + ТЗ.РезервПриход - ТЗ.РезервРасход;
    ПечатьСтрокиДокумента(ТЗ, ТЗ.Ном, ТЗ.НазваниеСекции, ТЗ.ПечТекстСтроки, ТЗ.ТекРасшифровка, ТекОстК, ТекОстР);
    Иначе				   
    ТекОстК = ТЗ.КоличествоНачОст;
    ТекОстР = ТЗ.РезервНачОст;
    ПечатьСтроки(ТЗ, ТЗ.Ном, ТЗ.НазваниеСекции, ТЗ.ПечТекстСтроки, ТЗ.ТекРасшифровка);
    КонецЕсли;																									  
    глОживить(1);
    КонецЦикла;
    КонецЦикла;
    КонецЕсли;
    // Заполнение полей "Итого"
    ПечатьСтроки(Запрос,0,"Итого","");   
    Таб.ОбластьПечати(3);
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
    Таб.Защита(1);
    КонецЕсли;
    Таб.Показать("Ведомость по остаткам ТМЦ", "");  
    
    Если (Обновить = 2)ИЛИ(ЗакрытьДиалог=1) Тогда
    СтрокаДействийФормы = "#Закрыть";
    КонецЕсли;КонецПроцедуры
    
  16. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    так и не увидел по коду где ваша ТЗ заполняется. А цикл по ней делаете
  17. TopicStarter Overlay
    Vanek38
    Offline

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Кроме этих процедур больше ничего похожего не обнаружил....((подскажите хотя б в какой из них искать?
    Код:
    Процедура ВывестиГруппировку(Запрос,Ном)
    
    ВыводитьКомиссионеров = ?(НомерГруппировкиПоСкладу = 9999, 0, ПоказатьКомиссию);
    
    Если Ном  <= КоличествоГруппировок + ВыводитьКомиссионеров Тогда
    
    Если (ПоказатьКомиссию = 1) и (Ном > НомерГруппировкиПоСкладу) Тогда
    Если Ном = (НомерГруппировкиПоСкладу + 1) Тогда
    НазваниеГруппировки = "Комиссионер";
    Иначе
    НазваниеГруппировки = СписокГруппировок.ПолучитьЗначение(Ном-1);
    КонецЕсли;
    Иначе
    НазваниеГруппировки = СписокГруппировок.ПолучитьЗначение(Ном);
    КонецЕсли;
    
    
    Если НазваниеГруппировки = "Документ" Тогда
    ТекОстК = Запрос.КоличествоНачОст;
    ТекОстР = Запрос.РезервНачОст;
    КонецЕсли;	 
    
    Пока Запрос.Группировка(Ном) = 1 Цикл
    
    Если НазваниеГруппировки = "Документ" Тогда
    НазваниеСекции="Документ";			  
    
    // Внутренние перемещения выводятся только в том случае, если установлена детализация или фильтр по складу
    Если (Запрос.Документ.Вид() = "ПеремещениеТМЦ") и (НомерГруппировкиПоСкладу = 9999) и (ВыбСклад.Выбран() = 0) Тогда
    Продолжить;
    КонецЕсли;										
    
    ИначеЕсли Запрос.ЭтоГруппа(НазваниеГруппировки) = 1 Тогда
    Если (ПоказатьКомиссию = 1) и (Ном > НомерГруппировкиПоСкладу) Тогда
    НомНазв = Ном - 1;
    Иначе
    НомНазв = Ном;
    КонецЕсли;
    НазваниеСекции="Строка"+СокрЛП(НомНазв)+"Г";
    Иначе
    Если (ПоказатьКомиссию = 1) и (Ном > НомерГруппировкиПоСкладу) Тогда
    НомНазв = Ном - 1;
    Иначе
    НомНазв = Ном;
    КонецЕсли;
    НазваниеСекции="Строка"+НомНазв;
    КонецЕсли;  
    
    Если Ном = НомерГруппировкиПоСкладу Тогда
    Если ПоказатьКомиссию = 1 Тогда
    Если ПустоеЗначение(Запрос.Склад) = 1 Тогда		 
    ВывестиГруппировку(Запрос, Ном+1);
    Продолжить;					 
    ИначеЕсли Запрос.Склад.Вид() <> "Склады" Тогда		 
    ВывестиГруппировку(Запрос, Ном+1);
    Продолжить;					 
    КонецЕсли;						  
    КонецЕсли;
    КонецЕсли;
    
    ПечТекстСтроки = Запрос.ПолучитьАтрибут(НазваниеГруппировки);
    ТекРасшифровка = ПечТекстСтроки;
    Если НазваниеГруппировки = "Документ" Тогда
    ПечТекстСтроки = ""+глПредставлениеДокумента(ПечТекстСтроки) + " (" +
    СокрЛП(глИнформацияПоДокументуВЖурнале(ПечТекстСтроки)) + ")";
    ИначеЕсли НазваниеГруппировки = "Номенклатура" Тогда
    ПечТекстСтроки = "" + ПечТекстСтроки + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Запрос.Номенклатура.Артикул), "")
    КонецЕсли;
    ПечТекстСтроки = ?(ПустоеЗначение(ПечТекстСтроки)=1,глПредставлениеПустогоЗначения(НазваниеГруппировки),ПечТекстСтроки);
    
    Если ПоказатьКомиссию = 1 Тогда
    // Накладные на перемещение отсюда сюда же печатать не будем
    Если (Запрос.Внутреннее = 0)
    или (Запрос.КоличествоПриход <> Запрос.КоличествоРасход) или (НазваниеГруппировки <> "Документ") Тогда 
    ТЗ.НоваяСтрока();	   
    ТЗ.КоличествоНачОст    = Запрос.КоличествоНачОст;
    ТЗ.КоличествоКонОст    = Запрос.КоличествоКонОст;
    ТЗ.РезервКонОст	 = Запрос.РезервКонОст;
    ТЗ.КоличествоПриход    = Запрос.КоличествоПриход;
    ТЗ.КоличествоРасход    = Запрос.КоличествоРасход;
    ТЗ.РезервПриход	  = Запрос.РезервПриход;
    ТЗ.РезервРасход	 = Запрос.РезервРасход;
    ТЗ.КоличествоПриходВнутр  = Запрос.КоличествоПриходВнутр;
    ТЗ.КоличествоРасходВнутр  = Запрос.КоличествоРасходВнутр;
    ТЗ.КоличествоПриходПереоц = Запрос.КоличествоПриходПереоц;
    ТЗ.КоличествоРасходПереоц = Запрос.КоличествоРасходПереоц;
    ТЗ.Ном	   = Ном;
    ТЗ.ПечТекстСтроки	 = ПечТекстСтроки;
    ТЗ.НазваниеСекции = НазваниеСекции;
    ТЗ.ТекРасшифровка = ТекРасшифровка;
    НомСтроки = ТЗ.НомерСтроки;
    Пока к <= Ном Цикл	   
    Если (ВыводитьКомиссионеров = 0) или (к <= НомерГруппировкиПоСкладу) Тогда
    НазвГруппировки = СписокГруппировок.ПолучитьЗначение(к);
    ИначеЕсли к = (НомерГруппировкиПоСкладу + 1) Тогда
    НазвГруппировки = "Комиссионер";
    Иначе
    НазвГруппировки = СписокГруппировок.ПолучитьЗначение(к-1);
    КонецЕсли;	
    ТЗ.УстановитьЗначение(НомСтроки, НазвГруппировки, Запрос.ПолучитьАтрибут(НазвГруппировки));
    к = к + 1;											
    Если ПоказатьКомиссию = 1 Тогда
    Если ПустоеЗначение(Запрос.Склад) = 1 Тогда
    ТЗ.СкладКомиссионер = Запрос.Комиссионер;
    Иначе
    ТЗ.СкладКомиссионер = Запрос.Склад;
    КонецЕсли;
    КонецЕсли; 
    КонецЦикла;
    КонецЕсли;
    Иначе
    Если НазваниеГруппировки = "Документ" Тогда
    Если (Запрос.Внутреннее = 0)
    или (Запрос.КоличествоПриход <> Запрос.КоличествоРасход) Тогда 
    ПечатьСтрокиДокумента(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка,ТекОстК,ТекОстР);  
    КонецЕсли;
    Иначе
    ПечатьСтроки(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка);
    КонецЕсли;
    КонецЕсли;								 
    
    Если (ПоказатьКомиссию = 1) и (Ном = НомерГруппировкиПоСкладу) Тогда
    Пока Запрос.Группировка("Комиссионер") = 1 Цикл
    Если КоличествоГруппировок + ВыводитьКомиссионеров > Ном+1 Тогда
    ВывестиГруппировку(Запрос,Ном+2);
    КонецЕсли;		 
    КонецЦикла;
    Иначе
    // если есть более детальная группировка - выведем ее
    Если КоличествоГруппировок + ВыводитьКомиссионеров > Ном Тогда
    ВывестиГруппировку(Запрос,Ном+1);
    КонецЕсли;		 
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры // ВывестиГруппировку()										 
    //******************************************************************************
    // ТекстЗапросаСКомиссией()
    //
    // Параметры:
    //  Нет
    //
    // Возвращаемое значение:
    //  Текст запроса
    //
    // Описание:
    //  Формирует текст запроса, для остатков с комиссионерами.
    //
    Функция ТекстЗапросаСКомиссией()
    
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаНачала по ДатаКонца;
    |Фирма   = Регистр.ОстаткиТМЦ.Фирма,			
    |				 Регистр.РезервыТМЦ.Фирма,
    |				 Регистр.ПартииОтданные.Фирма;
    |Док   = Регистр.ОстаткиТМЦ.ТекущийДокумент,			
    |				 Регистр.РезервыТМЦ.ТекущийДокумент,
    |				 Регистр.ПартииОтданные.ТекущийДокумент;
    |УпрАналитика  = Регистр.ОстаткиТМЦ.Фирма.УпрАналитика,
    |				 Регистр.РезервыТМЦ.Фирма.УпрАналитика,
    |				 Регистр.ПартииОтданные.Фирма.УпрАналитика;
    |ЮрЛицо   = Регистр.ОстаткиТМЦ.Фирма.ЮрЛицо,	 
    |				 Регистр.РезервыТМЦ.Фирма.ЮрЛицо,
    |				 Регистр.ПартииОтданные.Фирма.ЮрЛицо;
    |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура,	 
    |				 Регистр.РезервыТМЦ.Номенклатура,
    |				 Регистр.ПартииОтданные.Номенклатура;
    |СвойствоТМЦ  = Регистр.ОстаткиТМЦ.Номенклатура.ОсновноеСвойство.ЗначениеСвойства,
    |				 Регистр.РезервыТМЦ.Номенклатура.ОсновноеСвойство.ЗначениеСвойства,
    |				 Регистр.ПартииОтданные.Номенклатура.ОсновноеСвойство.ЗначениеСвойства;
    |Склад   = Регистр.ОстаткиТМЦ.Склад,			
    |				 Регистр.РезервыТМЦ.Склад,
    |	  Регистр.ПартииОтданные.Договор.Владелец;
    |Комиссионер    = Регистр.ПартииОтданные.Договор.Владелец;
    |Внутреннее	 = Регистр.ОстаткиТМЦ.Внутреннее;";
    
    ТекстЗапроса = ТекстЗапроса +
    "Количество = Регистр.ОстаткиТМЦ.Количество,
    |			 Регистр.ПартииОтданные.Количество;
    |Резерв	 = Регистр.РезервыТМЦ.Количество;
    |Функция КоличествоНачОст	   = НачОст(Количество);
    |Функция КоличествоПриход	   = Приход(Количество);
    |Функция КоличествоРасход	  = Расход(Количество);
    |Функция КоличествоПриходВнутр  = Приход(Количество) когда ((Внутреннее = 1) и (Док.Вид() <> ""ПереоценкаРозница""));
    |Функция КоличествоРасходВнутр  = Расход(Количество) когда ((Внутреннее = 1) и (Док.Вид() <> ""ПереоценкаРозница""));
    |Функция КоличествоПриходПереоц = Приход(Количество) когда (Док.Вид() = ""ПереоценкаРозница"");
    |Функция КоличествоРасходПереоц = Расход(Количество) когда (Док.Вид() = ""ПереоценкаРозница"");
    |Функция КоличествоКонОст	   = КонОст(Количество);
    |Функция РезервНачОст		   = НачОст(Резерв);
    |Функция РезервПриход		   = Приход(Резерв);
    |Функция РезервРасход		   = Расход(Резерв);
    |Функция РезервКонОст		   = КонОст(Резерв);";
    
    Возврат ТекстЗапроса;
    
    КонецФункции // ТекстЗапросаСКомиссией()
    //******************************************************************************
    // ТекстЗапросаБезКомиссии()
    //
    // Параметры:
    //  Нет
    //
    // Возвращаемое значение:
    //  Текст запроса
    //
    // Описание:
    //  Формирует текст запроса, для остатков без комиссионеров.
    //
    Функция ТекстЗапросаБезКомиссии()
    
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаНачала по ДатаКонца;
    |Фирма   = Регистр.ОстаткиТМЦ.Фирма,
    |				 Регистр.РезервыТМЦ.Фирма;
    |Док    = Регистр.ОстаткиТМЦ.ТекущийДокумент,			
    |				 Регистр.РезервыТМЦ.ТекущийДокумент;
    |УпрАналитика  = Регистр.ОстаткиТМЦ.Фирма.УпрАналитика,
    |				 Регистр.РезервыТМЦ.Фирма.УпрАналитика;
    |ЮрЛицо   = Регистр.ОстаткиТМЦ.Фирма.ЮрЛицо,
    |				 Регистр.РезервыТМЦ.Фирма.ЮрЛицо;
    |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура,
    |				 Регистр.РезервыТМЦ.Номенклатура;
    |СвойствоТМЦ  = Регистр.ОстаткиТМЦ.Номенклатура.ОсновноеСвойство.ЗначениеСвойства,
    |				 Регистр.РезервыТМЦ.Номенклатура.ОсновноеСвойство.ЗначениеСвойства;
    |Склад   = Регистр.ОстаткиТМЦ.Склад,			
    |				 Регистр.РезервыТМЦ.Склад;
    |Внутреннее	 = Регистр.ОстаткиТМЦ.Внутреннее;";
    
    ТекстЗапроса = ТекстЗапроса +
    "Количество = Регистр.ОстаткиТМЦ.Количество;
    |Резерв	 = Регистр.РезервыТМЦ.Количество;
    |Функция КоличествоНачОст	   = НачОст(Количество);
    |Функция КоличествоПриход	   = Приход(Количество);
    |Функция КоличествоРасход	   = Расход(Количество);
    |Функция КоличествоПриходВнутр  = Приход(Количество) когда ((Внутреннее = 1) и (Док.Вид() <> ""ПереоценкаРозница""));
    |Функция КоличествоРасходВнутр  = Расход(Количество) когда ((Внутреннее = 1) и (Док.Вид() <> ""ПереоценкаРозница""));
    |Функция КоличествоПриходПереоц = Приход(Количество) когда (Док.Вид() = ""ПереоценкаРозница"");
    |Функция КоличествоРасходПереоц = Расход(Количество) когда (Док.Вид() = ""ПереоценкаРозница"");
    |Функция КоличествоКонОст    = КонОст(Количество);
    |Функция РезервНачОст		   = НачОст(Резерв);
    |Функция РезервПриход	    = Приход(Резерв);
    |Функция РезервРасход		   = Расход(Резерв);
    |Функция РезервКонОст		   = КонОст(Резерв);";
    
    Возврат ТекстЗапроса;
    
    КонецФункции
  18. Бухгалтерский угодник
    Offline

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

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

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Сам отчет

    Вложения:

    • отчет.txt
      Размер файла:
      37,1 КБ
      Просмотров:
      35
  20. TopicStarter Overlay
    Vanek38
    Offline

    Vanek38

    Регистрация:
    23 окт 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    подскажите в каком участке шаманить а дальше сам
    все перепробывал((

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