|
v7: Печатная форма квитанций | ☑ | ||
---|---|---|---|---|
0
Allasstor
04.10.13
✎
09:59
|
Здраствуйте! Помогите пожалуста как сделать чтобы квитанции сортировались по улицам потом по домам и по квартирам
выводица на альбомном листе 4 квитанции но в разнобой ?? Перем Жрн,ЖрнЛг,Клиент,_Льготники,Ош; //****************************************************************************** Процедура Сформировать() Если (КолСтраниц = 0) Тогда Предупреждение("Не выбрано количество страниц",5); Возврат; КонецЕсли; ФлЛг = 0; ФлС = 0; СтрОплД=""; СтрОплДД=""; СтрКвит = "ООО Карпогорская УК,с.Карпогоры,ул.Ленина 21,телефон 2-24-34,2-10-83"; ДатаАк = КонМесяца(ДатаАктуальности)+1; ОплМес = СокрЛП(Нрег(Формат(ДатаАк, "ДММММ"))); ОплГод = ""+ДатаГод(ДатаАк)+"г."; ОплДат=?(Прав(ОплМес,1)="т",ОплМес+"а ",Лев(ОплМес,СтрДлина(ОплМес)-1)+"я ")+ОплГод; //Янв _ОплДат = ?(Прав(ОплМес,1)="т",ОплМес+"е ",Лев(ОплМес,СтрДлина(ОплМес)-1)+"е ")+ОплГод; ОплМ = СокрЛП(Нрег(Формат(ДатаАктуальности, "ДММММ"))); ОплГ = ""+ДатаГод(ДатаАктуальности)+"г."; //Дек ОплД=?(Прав(ОплМ,1)="т",ОплМ+"а ",Лев(ОплМ,СтрДлина(ОплМ)-1)+"я ")+ОплГ; ОплДД = ?(Прав(ОплМ,1)="т",ОплМ+"е ",Лев(ОплМ,СтрДлина(ОплМ)-1)+"е ")+ОплГ; ОплДДД = ОплМ +" "+ОплГ; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Квитанции"); НомСтроки = 0;ВыбД=0; Если (ВыбДом.Выбран() = 1) И (ВыбПодр.Выбран() = 0) Тогда Клиент.ВыбратьЭлементыПоРеквизиту("Дом",ВыбДом); ИначеЕсли (ВыбПодр.Выбран() = 1) И (ВыбДом.Выбран() = 0) Тогда Клиент.ВыбратьЭлементыПоРеквизиту("Подразделение",ВыбПодр); Иначе Клиент.ВыбратьЭлементы(); Клиент.ПорядокРеквизита("КодКвартиры"); ВыбД=1; КонецЕсли; Страница = 0; Пока Клиент.ПолучитьЭлемент()=1 Цикл Если (Клиент.ЭтоГруппа()=1) Или (Клиент.ПометкаУдаления()=1) Или (Клиент.ПринадлежитГруппе(ВЫБЫВШИЕ) = 1) Тогда Продолжить; КонецЕсли; Если (ВыбД = 1) Тогда Если (Клиент.Дом<>ВыбДом) Или (Клиент.Подразделение<>ВыбПодр) Тогда Продолжить; КонецЕсли; КонецЕсли; СтрКод = СокрЛП(Клиент.ПолныйКод()); _Код = Число(Сред(СтрКод,1,Найти(СтрКод,"/")-1)); _Д = Клиент.Дом.Наименование; _Клиент = Клиент.ТекущийЭлемент(); ФлЛг = 0; НаимЛьгота = ""; Адрес = ""; Подр = _Клиент.Подразделение.Код; _Подр = СокрЛП(_Клиент.Подразделение.Наименование); Адрес = ""; НИзв = СокрЛП(Строка(ДатаМесяц(ДатаАктуальности)))+СокрЛП(Строка(ДатаГод(ДатаАктуальности)))+СокрЛП(_Клиент.Код); Адрес=_Клиент.Дом.Наименование+?(ПустаяСтрока(_Клиент.Кв)=0, " кв."+_Клиент.Кв, _Клиент.Кв); Если СокрЛП(_Клиент.Подразделение.ПодрАдрес)<>"" Тогда Адрес= СокрЛП(_Клиент.Подразделение.ПодрАдрес)+", "+Адрес; КонецЕсли; ВсегоН=0;ВсегоК=0;ВсегоКЛ=0;ВсегоО=0;ВсегоС=0;Ном=0;НСальдо=0;СумОплаты=0;_КолЛг=0; ТаблН=СоздатьОбъект("ТаблицаЗначений"); ТаблН.НоваяКолонка("Расчет","Строка",30,,,,,2); ТаблН.НоваяКолонка("СуммаНач","Число",8,2,,,,2); ТаблН.НоваяКолонка("СуммаКор","Число",8,2,,,,2); ТаблН.НоваяКолонка("СуммаЛг","Число",8,2,,,,2); ТаблН.НоваяКолонка("Тариф","Число",8,2,,,,2); ТаблН.НоваяКолонка("КолСтр","Число",2,0,,,,); ТаблП=СоздатьОбъект("ТаблицаЗначений"); ТаблП.НоваяКолонка("Расчет","Строка",30,,,,,2); ТаблП.НоваяКолонка("СуммаНач","Число",8,2,,,,2); ТаблП.НоваяКолонка("СуммаКор","Число",8,2,,,,2); ТаблП.НоваяКолонка("СуммаЛг","Число",8,2,,,,2); ТаблП.НоваяКолонка("Тариф","Число",8,2,,,,2); ТаблП.НоваяКолонка("Итог","Число",9,2,,,,2); Жрн.ВыбратьПериодПоОбъекту(_Клиент,ДатаАктуальности); Пока Жрн.ПолучитьЗапись()>0 Цикл _ВР = СокрЛП(Жрн.Расчет); ВТ_ = Жрн.ВидТарифа; _ВТ = СокрЛП(ВТ_.Расчет); _ВР =?(_ВР="",_ВТ,_ВР); Если (Жрн.ВидРасч.ВходитВГруппу(ГруппаРасчетов.НачальноеСальдо) = 1) И (Жрн.Результат <> 0) Тогда //******************************************* //Начало изменений "АРБИС:Прикладные решения" //******************************************* Если (Жрн.ВидРасч <> ВидРасчета.НачальноеСальдо) Или (НачМесяца(ДатаАктуальности) < НачМесяца(Константа.ДатаНачалаОстатковБезЛьгот)) Тогда //******************************************* //Конец изменений "АРБИС:Прикладные решения" //******************************************* НСальдо = НСальдо + Жрн.Результат; //******************************************* //Начало изменений "АРБИС:Прикладные решения" //******************************************* Конецесли; //******************************************* //Конец изменений "АРБИС:Прикладные решения" //******************************************* КонецЕсли; //******************************************* //Начало изменений "АРБИС:Прикладные решения" //******************************************* Если (Жрн.ВидРасч = ВидРасчета.НачальноеСальдоБезЛьгот) И (КонМесяца(ДатаАктуальности) > НачМесяца(Константа.ДатаНачалаОстатковБезЛьгот)) Тогда НСальдо = НСальдо + Жрн.Результат; Конецесли; //******************************************* //Конец изменений "АРБИС:Прикладные решения" //******************************************* Если (Жрн.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления) = 1) И (Жрн.Результат <> 0) Тогда Ном = Ном + 1; ТаблН.НоваяСтрока(Ном); ТаблН.УстановитьЗначение(Ном,1,_ВР); Если (Жрн.Тариф > 0) Тогда //******************************************* //Начало изменений "АРБИС:Прикладные решения" //******************************************* ТаблН.УстановитьЗначение(Ном,2,Жрн.Результат + Жрн.СуммаЛьготы); // ТаблН.УстановитьЗначение(Ном,2,Жрн.Результат); //******************************************* //Конец изменений "АРБИС:Прикладные решения" //******************************************* ТаблН.УстановитьЗначение(Ном,3,0); ТаблН.УстановитьЗначение(Ном,4,Жрн.СуммаЛьготы); ТаблН.УстановитьЗначение(Ном,5,Жрн.Тариф); ТаблН.УстановитьЗначение(Ном,6,1); ВсегоН = ВсегоН + Жрн.Результат; Иначе ТаблН.УстановитьЗначение(Ном,2,0); ТаблН.УстановитьЗначение(Ном,3,Жрн.Результат); ТаблН.УстановитьЗначение(Ном,5,0); ТаблН.УстановитьЗначение(Ном,6,0); ВсегоК = ВсегоК + Жрн.Результат; КонецЕсли; КонецЕсли; Если (Жрн.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеОплаты) = 1) И (Жрн.Результат <> 0) Тогда Док = Жрн.Документ; Если (Док.Вид() ="ПлатКвит") ИЛИ (Док.Вид()="ОплПлатКвит") Тогда Если Док.ИсточникОплат = Перечисление.ИсточникОплат.Субсидия Тогда ВсегоС = ВсегоС + Жрн.Результат; Иначе ВсегоО = ВсегоО + Жрн.Результат; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; НаимЛьгота = "";_КолЛг = 0; _Льготники.ИспользоватьВладельца(_Клиент); _Льготники.ВыбратьЭлементы(); Пока _Льготники.ПолучитьЭлемент()>0 Цикл _ЛЛ = _Льготники.ТекущийЭлемент(); Если _Льготники.ФлагРасчета.Получить(ДатаАктуальности) = Да тогда НаимЛьгота = НаимЛьгота+СокрЛП(_Льготники.Льгота)+","; _КолЛг = _КолЛг+ _Льготники.Количество; _Льготник = _Льготники.ТекущийЭлемент(); КонецЕсли; КонецЦикла; НаимЛьгота=Сред(НаимЛьгота,1,СтрДлина(НаимЛьгота)-1); ТаблН.Свернуть("1","2,3,4,5,6"); СуммаН = ТаблН.Итог(2); СуммаК = ТаблН.Итог(3); СуммаЛ = ТаблН.Итог(4); Ном = 0;_Ном = 0;ПерВ = 0; Если (НСальдо <> 0) ИЛИ (СуммаН <> 0) ИЛИ (ВсегоО <> 0) Тогда НомерКвит = НомерКвит + 1; ТаблН.ВыбратьСтроки(); Пока ТаблН.ПолучитьСтроку()=1 Цикл Ном = Ном + 1; _Ном = _Ном + 1; _ВР = ТаблН.ПолучитьЗначение(Ном,1); _Тариф = ТаблН.ПолучитьЗначение(Ном,5)/?(ТаблН.ПолучитьЗначение(Ном,6)=0,1,ТаблН.ПолучитьЗначение(Ном,6)); Нач = ТаблН.ПолучитьЗначение(Ном,2); Перер = ТаблН.ПолучитьЗначение(Ном,3); Лг = ТаблН.ПолучитьЗначение(Ном,4); //******************************************* //Начало изменений "АРБИС:Прикладные решения" //******************************************* // ИтК = ТаблН.ПолучитьЗначение(Ном,2)+ТаблН.ПолучитьЗначение(Ном,3)-ТаблН.ПолучитьЗначение(Ном,4); ИтК = ТаблН.ПолучитьЗначение(Ном,2)+ТаблН.ПолучитьЗначение(Ном,3); //******************************************* //Конец изменений "АРБИС:Прикладные решения" //******************************************* ТаблП.НоваяСтрока(_Ном); ТаблП.УстановитьЗначение(_Ном,1,_ВР); ТаблП.УстановитьЗначение(_Ном,2,_Тариф); ТаблП.УстановитьЗначение(_Ном,3,Нач); ТаблП.УстановитьЗначение(_Ном,4,Перер); //******************************************* //Начало изменений "АРБИС:Прикладные решения" //******************************************* // ТаблП.УстановитьЗначение(_Ном,5,-1*Лг); ТаблП.УстановитьЗначение(_Ном,5,Лг); //******************************************* //Конец изменений "АРБИС:Прикладные решения" //******************************************* ТаблП.УстановитьЗначение(_Ном,6,ИтК); ПерВ = ПерВ + Перер; КонецЦикла; ННом = _Ном + 1; Для НН=ННом по 10 Цикл _Ном = _Ном + 1; ТаблП.НоваяСтрока(_Ном); ТаблП.УстановитьЗначение(_Ном,1,""); ТаблП.УстановитьЗначение(_Ном,2,""); ТаблП.УстановитьЗначение(_Ном,3,""); ТаблП.УстановитьЗначение(_Ном,4,""); ТаблП.УстановитьЗначение(_Ном,5,""); ТаблП.УстановитьЗначение(_Ном,6,""); КонецЦикла; Если НСальдо < 0 Тогда СтрОплДД ="Переплата на 1 " + ОплД; ИначеЕсли НСальдо > 0 Тогда СтрОплДД ="Долг на 1 "+ОплД; Иначе СтрОплДД = ""; КонецЕсли; КОпл=(НСальдо+СуммаН+ВсегоК-ВсегоО-ВсегоС); Если КОпл < 0 Тогда СтрОплД ="Переплата на 1 " + ОплДат; ИначеЕсли КОпл > 0 Тогда СтрОплД ="Долг на 1 "+ОплДат; Иначе СтрОплД = ""; КонецЕсли; Ит = КОпл; //Ит=?(КОпл+ВсегоН<>0,КОпл+ВсегоН,"0,00"); НомСтроки = НомСтроки + 1; Если НомСтроки%2 = 1 Тогда Таб.ВывестиСекцию("Шапка|Шапка1"); Таб.ПрисоединитьСекцию("Шапка|Пусто"); Иначе Таб.ПрисоединитьСекцию("Шапка|Шапка1"); КонецЕсли; Если (НомСтроки%2=0) И (НомСтроки % 4 <> 0) Тогда Таб.ВывестиСекцию("Подвал|Подвал1"); Таб.ПрисоединитьСекцию("Подвал|Пусто"); Таб.ПрисоединитьСекцию("Подвал|Подвал1"); //Таб.ПрисоединитьСекцию("Шапка|Пусто"); КонецЕсли; Если НомСтроки%4 = 0 Тогда Таб.НоваяСтраница(); Страница=Страница+1; КонецЕсли; КонецЕсли; Если (Страница%КолСтраниц=0) и (НомСтроки%4 = 0) Тогда Таб.Опции(0,0,0,0, "Таблица"); Таб.ПараметрыСтраницы(2,,,0,0,0,0,0,0,,,); Таб.ТолькоПросмотр(1); Таб.Показать("Печать квитанций"); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Квитанции"); глСтатусСтрока(, "Страница - "+Страница); КонецЕсли; глСтатусСтрока(, "Страница - "+Страница); КонецЦикла; Таб.Опции(0,0,0,0, "Таблица"); Таб.ПараметрыСтраницы(2,,,0,0,0,0,0,0,,,); Таб.ТолькоПросмотр(1); Таб.Показать("Печать квитанций"); КонецПроцедуры //****************************************************************************** Клиент=СоздатьОбъект("Справочник.Клиенты"); Жрн=СоздатьОбъект("ЖурналРасчетов.Квартплата"); ЖрнЛг=СоздатьОбъект("ЖурналРасчетов.Льготники"); _Льготники=СоздатьОбъект("Справочник.Льготники"); ДатаАктуальности = Жрн.НачалоТекущегоПериода(); ТекстПериода = глСменитьПериод(ДатаАктуальности); КолСтраниц = 100; Ош = 0; |
|||
1
Allasstor
04.10.13
✎
10:01
|
программа расчет квартплаты
|
|||
2
пипец
04.10.13
✎
10:40
|
Сортировать(<?>,);
Синтаксис: Сортировать(<Колонки>,<ДокумПоДате>) Назначение: Сортировать таблицу значений по колонкам. Параметры: <Колонки> - строковое выражение, которое определяет колонки, порядок и направление сортировки. Формат передаваемой строки - это разделенные запятыми номера или идентификаторы колонок со знаком направления сортировки ( ''+'' - сортировать по возрастанию; ''- '' - сортировать по убыванию; ''*'' - сортировать по внутреннему значению). Знак направления сортировки можно указывать до или после обозначения колонки через пробел или без пробела. По умолчанию направление сортировки принимается по возрастанию. <ДокумПоДате> - необязательный параметр. Имеет смысл только в том случае, если значениями таблицы значений являются документы. В этом случае можно задавать сортировку документов по их хронологии. Число: 1 - сортировка по хронологии документов; 0 - нет. Значение по умолчанию - 0. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |