Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: Доработка отчета "Остатки ТМЦ": добавить колонку "Цена"

    • #1
    • 04.11.2015 17:33
    0
    1С, ТиС. Требуется в отчет "Остатки ТМЦ" добавить колонку "Цена", которая должна брать значение (тип цены) из одноимённого реквизита на форме отчета.  Подробнее>>
    • #2
    • 04.11.2015 17:34
    0
    Юрин Константин Алексеевич
    Я меньше чем за 800 руб/час уже не соглашаюсь.

    А как же принципы ребята?
    • #3
    • 04.11.2015 17:37
    • Отредактировано: 04.11.2015 17:38:06
    +1
    Особенно звучно у автора задания прозвучало в макете отчета "Цена, мля". Видимо, никак она не хочет у него в отчет
    • #4
    • 04.11.2015 17:41
    0
    Полянский Дмитрий Михайлович
    Юрин Константин Алексеевич
    Я меньше чем за 800 руб/час уже не соглашаюсь.

    А как же принципы ребята?

    наверное, удовольствие будет растягивать на пару-тройку часов)
    • #5
    • 04.11.2015 18:22
    0
    Николай
    Полянский Дмитрий Михайлович
    Юрин Константин Алексеевич
    Я меньше чем за 800 руб/час уже не соглашаюсь.

    А как же принципы ребята?

    наверное, удовольствие будет растягивать на пару-тройку часов)


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

    И хорошо если только в процедуре Сформировать нужно для каждого условия подставить условие
    //******************************************************************************
    // Сформировать(ЗакрытьДиалог=0)
    //
    // Параметры:
    //   ЗакрытьДиалог - флаг того, что после формирования отчета надо закрыть диалог	
    //
    // Возвращаемое значение: 
    //	Нет
    // 
    // Вызывается из формул элементов диалога:
    //   кнопки "Сформировать" и "ОК"
    //         001
    // Описание:   
    //	Запускает отчет.
    //
    Процедура Сформировать(ЗакрытьДиалог=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;  
    		Пока ТЗ.ПолучитьСтроку() = 1 Цикл                                                                                    
    			Если ПустоеЗначение(ТЗ.НазваниеСекции) = 1 Тогда
    				Продолжить;
    			КонецЕсли;               
    			Если ТЗ.НазваниеСекции = "Документ" Тогда
    				ТекОстК = ТекОстК + ТЗ.КоличествоПриход - ТЗ.КоличествоРасход;
    				ТекОстР = ТекОстР + ТЗ.РезервПриход - ТЗ.РезервРасход;
    				ПечатьСтрокиДокумента(ТЗ, ТЗ.Ном, ТЗ.НазваниеСекции, ТЗ.ПечТекстСтроки, ТЗ.ТекРасшифровка, ТекОстК, ТекОстР);
    			Иначе                    
    				ТекОстК = ТЗ.КоличествоНачОст;
    				ТекОстР = ТЗ.РезервНачОст;
    				ПечатьСтроки(ТЗ, ТЗ.Ном, ТЗ.НазваниеСекции, ТЗ.ПечТекстСтроки, ТЗ.ТекРасшифровка);
    			КонецЕсли;                                                                                                       
    			глОживить(1);
    		КонецЦикла; 
    	КонецЕсли;
    	
    	// Заполнение полей "Итого"
    	ПечатьСтроки(Запрос,0,"Итого","");    
    	
    	
    	Таб.ОбластьПечати(3);
    		
    	// Вывод заполненной формы
    	Таб.ТолькоПросмотр(1); 
    	Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
    		Таб.Защита(1);
    	КонецЕсли;
    	Таб.Показать("Ведомость по остаткам ТМЦ", "");   
    	       
    	Если (Обновить = 2)ИЛИ(ЗакрытьДиалог=1) Тогда
    		СтрокаДействийФормы = "#Закрыть";
    	КонецЕсли;
    	
    КонецПроцедуры
    • #6
    • 04.11.2015 18:35
    +2
    Юрин Константин Алексеевич
    Верно заметили трудоемкость не меньше 2-х часов. Для Нужного релиза 1С 7.7 ТиС Сначала посмотреть "вживую" на базе - так задача то ставилась элементарная "ВЫТЯНУТЬ РЕКВИЗИТ" Пришлось запустить - на форме реквизит не обнаружен. Это не в СКД на 8-ке вытянуть реквизит за 10 минут :( или в запросе сумму на количество разделить в одном месте и в макет вывести новый параметр. Тут запрос склеивается в

    Это называется "горе от ума" =)
    Данная задача решается именно за то время, которое я указал в отзыве (даже взял с запасом). Не надо кошмарить людей страшными скринами с километрами КОДа ;)
    • #7
    • 04.11.2015 18:48
    0
    Николай
    Не надо кошмарить людей страшными скринами с километрами КОДа

    Хобби у Константина такое ))
    С вашей оценкой времени полностью согласен, как и с тем, что оно с запасом
    • #8
    • 04.11.2015 18:48
    0
    Тоже верно у меня на отраслевой ТиС 9.2 удачно запустилась. Осталось реквизит выбора типа цены на форму вывести, функцию расчета цены лучше в отчет "запихнуть" и в основном в этой процедуре ВывестиГруппировку новую колонку цену_мля
    //******************************************************************************
    // ВывестиГруппировку(Запрос,Ном)
    //
    // Параметры:
    //  Запрос - объект "Запрос"
    //	Ном - номер выводимой группировки
    //
    // Возвращаемое значение:
    //  Нет
    //
    // Вызывается из формул элементов диалога:
    //
    // Описание:
    //  Выводит в печатную форму одну группировку запроса. Если
    //	есть нижележащие группировки, они выводятся также с использованием рекурсивного
    //	вызова этой же процедуры.
    //
    Процедура ВывестиГруппировку(Запрос,Ном)
    	
    	ВыводитьКомиссионеров = ?(НомерГруппировкиПоСкладу = 9999, 0, ПоказатьКомиссию);
    	  
    	Если Ном  <= КоличествоГруппировок + ВыводитьКомиссионеров Тогда
    		
    		Если (ПоказатьКомиссию = 1) и (Ном > НомерГруппировкиПоСкладу) Тогда
    			Если Ном = (НомерГруппировкиПоСкладу + 1) Тогда
    				НазваниеГруппировки = "Комиссионер";
    			Иначе
    				НазваниеГруппировки = СписокГруппировок.ПолучитьЗначение(Ном-1);
    			КонецЕсли;
    		Иначе
    			НазваниеГруппировки = СписокГруппировок.ПолучитьЗначение(Ном);
    		КонецЕсли;
    		           
    		
    		Если НазваниеГруппировки = "Документ" Тогда
    			ТекОстК = Запрос.КоличествоНачОст;
    			ТекОстР = Запрос.РезервНачОст;
    		КонецЕсли;      
    		
    		Пока Запрос.Группировка(Ном) = 1 Цикл
    			
    			Если НазваниеГруппировки = "Документ" Тогда
    				НазваниеСекции="Документ";               
    				
    				// Внутренние перемещения выводятся только в том случае, если установлена детализация или фильтр по складу
    				Если (Запрос.Документ.Вид() = "ПеремещениеТМЦ") и (НомерГруппировкиПоСкладу = 9999) и (ВыбСклад.Выбран() = 0) Тогда
    					Продолжить;
    				КонецЕсли;                                         
    				
    			ИначеЕсли Запрос.ЭтоГруппа(НазваниеГруппировки) = 1 Тогда
    				Если (ПоказатьКомиссию = 1) и (Ном > НомерГруппировкиПоСкладу) Тогда
    					НомНазв = Ном - 1;
    				Иначе 
    					НомНазв = Ном;
    				КонецЕсли;
    				НазваниеСекции="Строка"+СокрЛП(НомНазв)+"Г";
    			Иначе
    				Если (ПоказатьКомиссию = 1) и (Ном > НомерГруппировкиПоСкладу) Тогда
    					НомНазв = Ном - 1;
    				Иначе 
    					НомНазв = Ном;
    				КонецЕсли;
    				НазваниеСекции="Строка"+НомНазв;
    			КонецЕсли;   
    	
    			Если Ном = НомерГруппировкиПоСкладу Тогда
    				Если ПоказатьКомиссию = 1 Тогда
    					Если ПустоеЗначение(Запрос.Склад) = 1 Тогда          
    						ВывестиГруппировку(Запрос, Ном+1);
    						Продолжить;                      
    					ИначеЕсли Запрос.Склад.Вид() <> "Склады" Тогда          
    						ВывестиГруппировку(Запрос, Ном+1);
    						Продолжить;                      
    					КонецЕсли;                           
    				КонецЕсли;
    			КонецЕсли;
    			                                                          
    			ПечТекстСтроки = Запрос.ПолучитьАтрибут(НазваниеГруппировки);
    			ТекРасшифровка = ПечТекстСтроки;
    			Если НазваниеГруппировки = "Документ" Тогда
    				ПечТекстСтроки = ""+глПредставлениеДокумента(ПечТекстСтроки) + " (" +
    				                    СокрЛП(глИнформацияПоДокументуВЖурнале(ПечТекстСтроки)) + ")";
    			ИначеЕсли НазваниеГруппировки = "Номенклатура" Тогда
    				ПечТекстСтроки = "" + ПечТекстСтроки + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Запрос.Номенклатура.Артикул), "")
    			КонецЕсли;
    			ПечТекстСтроки = ?(ПустоеЗначение(ПечТекстСтроки)=1,глПредставлениеПустогоЗначения(НазваниеГруппировки),ПечТекстСтроки);
    		
    		    Если ПоказатьКомиссию = 1 Тогда
    				// Накладные на перемещение отсюда сюда же печатать не будем
    				Если (Запрос.Внутреннее = 0) 
    				 или (Запрос.КоличествоПриход <> Запрос.КоличествоРасход) или (НазваниеГруппировки <> "Документ") Тогда  
    				 	ТЗ.НоваяСтрока();        
    				 	ТЗ.КоличествоНачОст 	  = Запрос.КоличествоНачОст;
    				 	ТЗ.КоличествоКонОст 	  = Запрос.КоличествоКонОст;
    				 	ТЗ.РезервКонОст			  = Запрос.РезервКонОст;
    				 	ТЗ.КоличествоПриход 	  = Запрос.КоличествоПриход;
    				 	ТЗ.КоличествоРасход 	  = Запрос.КоличествоРасход;
    				 	ТЗ.РезервПриход		 	  = Запрос.РезервПриход;
    				 	ТЗ.РезервРасход 		  = Запрос.РезервРасход;
    				 	ТЗ.КоличествоПриходВнутр  = Запрос.КоличествоПриходВнутр;
    				 	ТЗ.КоличествоРасходВнутр  = Запрос.КоличествоРасходВнутр;
    				 	ТЗ.КоличествоПриходПереоц = Запрос.КоличествоПриходПереоц;
    				 	ТЗ.КоличествоРасходПереоц = Запрос.КоличествоРасходПереоц; 
    				 	ТЗ.Ном					  =	Ном;
    				 	ТЗ.ПечТекстСтроки 		  = ПечТекстСтроки;
    				 	ТЗ.НазваниеСекции = НазваниеСекции;
    				 	ТЗ.ТекРасшифровка = ТекРасшифровка;
    			 		НомСтроки = ТЗ.НомерСтроки; 
    			 		к = 1;
    				 	Пока к <= Ном Цикл        
    				 		Если (ВыводитьКомиссионеров = 0) или (к <= НомерГруппировкиПоСкладу) Тогда
    				 			НазвГруппировки = СписокГруппировок.ПолучитьЗначение(к);
    				 		ИначеЕсли к = (НомерГруппировкиПоСкладу + 1) Тогда
    				 			НазвГруппировки = "Комиссионер";
    				 		Иначе
    				 			НазвГруппировки = СписокГруппировок.ПолучитьЗначение(к-1);
    				 		КонецЕсли;     
    					 	ТЗ.УстановитьЗначение(НомСтроки, НазвГруппировки, Запрос.ПолучитьАтрибут(НазвГруппировки));
    					 	к = к + 1;                                             
    					 	Если ПоказатьКомиссию = 1 Тогда
    					 		Если ПустоеЗначение(Запрос.Склад) = 1 Тогда
    					 			ТЗ.СкладКомиссионер = Запрос.Комиссионер;
    					 		Иначе
    					 			ТЗ.СкладКомиссионер = Запрос.Склад;
    					 		КонецЕсли;
    					 	КонецЕсли;  
    					 КонецЦикла;
    				КонецЕсли;
    			Иначе
    				Если НазваниеГруппировки = "Документ" Тогда
    					Если (Запрос.Внутреннее = 0) 
    					 или (Запрос.КоличествоПриход <> Запрос.КоличествоРасход) Тогда  
    						ПечатьСтрокиДокумента(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка,ТекОстК,ТекОстР);   
    					КонецЕсли;
    				Иначе
    					ПечатьСтроки(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка);
    				КонецЕсли;
    			КонецЕсли;                                  
    			
    			Если (ПоказатьКомиссию = 1) и (Ном = НомерГруппировкиПоСкладу) Тогда 
    				Пока Запрос.Группировка("Комиссионер") = 1 Цикл
    					Если КоличествоГруппировок + ВыводитьКомиссионеров > Ном+1 Тогда
    						ВывестиГруппировку(Запрос,Ном+2);
    					КонецЕсли;          
    				КонецЦикла;
    			Иначе
    				// если есть более детальная группировка - выведем ее
    				Если КоличествоГруппировок + ВыводитьКомиссионеров > Ном Тогда
    					ВывестиГруппировку(Запрос,Ном+1);
    				КонецЕсли;          
    			КонецЕсли;
    		КонецЦикла;
    	КонецЕсли;
    
    КонецПроцедуры // ВывестиГруппировку() 
    • #9
    • 04.11.2015 18:51
    0
    Я чтоб ТиС не забывать - встречается будь она неладка. А Вы, Сергей Тихонов, сколько провозились бы? Заменить то в нескольких местах-добавить где вывод группировок и в макет как для прайса в УТ 10.3 та же рекурсия?
    • #10
    • 04.11.2015 18:52
    0
    мои глаза, МОИ ГЛАЗА !
    Константин, ну пожалейте Вы автора топика и тех, кто пытается оставить здесь заявку - из-за скринов тему невозможно читать((
    Тем более, что Ваши комментарии не содержательные.
    • #11
    • 04.11.2015 18:54
    0
    ну вот... доскриншотились, что автор обиделся и отменил задание - не дали 500 руб. заработать, оставили коллег без буханки хлеба =)
    • #12
    • 04.11.2015 19:01
    0
    Да я тут причем? Или оценщик был или уже взяли в работу чтоб комиссию не платить.
    • #13
    • 04.11.2015 19:06
    0
    Юрин Константин Алексеевич
    Да я тут причем? Или оценщик был или уже взяли в работу чтоб комиссию не платить.

    Опять не угадали. Константин, сегодня точно не Ваш день ;)
    • #14
    • 04.11.2015 20:51
    0
    Хотел приложить рабочий вариант отчета в свободный доступ :) - нельзя - придется опять скриншотами пугать на ночь чтоб всем кошмары снились :)
    Я думал сам отчет "убитый" в нерабочем состоянии для нетиповой конфы (неизвестно какой), а Николай прав оказался прав на пол-часа работы: подправить макет и в четырех местах в коде добавить перед выводом секции код:
    	
                    // ПечатьСтроки()...И еще одна ПечатьДокумента
                    ПечЦена = ПолучитьЦену(Запрос.Номенклатура, ВыбТипЦен, ДатаКонца, ПечЕд); // блабла - ДОБ+
    		
    		Секц = Таб.ПолучитьСекцию(НазваниеСекции);
    	Иначе                                                                                  
    		
    		ПечЦена = ПолучитьЦену(Запрос.Номенклатура, ВыбТипЦен, ДатаКонца, ПечЕд); // блабла - ДОБ+
    		
    		Секц = Таб.ПолучитьСекцию(НазваниеСекции);
    		Секц.Область(1,1,1,7).Объединить();
    	КонецЕсли;
    		              
    	Таб.ВывестиСекцию(Секц);
    	глОживить(1);
    	
    КонецПроцедуры //ПечатьСтроки()
    А саму процедуру можно и из глобальника вызывать я убрал глПолучитьЦену на ПолучитьЦену
    У меня заработал на ТиС 9.2 с "наворотами" - проверял работает. Цену брать на последнюю дату отчета (или документа если по ним - тут уточнять уже надо логику что нужно получить) - так у меня все заработало :)
    • #15
    • 05.11.2015 10:35
    • Отредактировано: 05.11.2015 10:35:44
    0
    Проблема в том, что Константин не менеджер.
Яндекс-директ
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться