|
v7: Не работает сортировка | ☑ | ||
---|---|---|---|---|
0
IrinaBlahun
30.11.21
✎
14:02
|
Доброго времени подскажите не работает сортировка. Не могу понять почему и как это исправить.
|
|||
1
IrinaBlahun
30.11.21
✎
14:03
|
Перем ТабЗДоговоров, ТабЗДопСоглашения,ТабЗДоговоровОЛД;
//====================================================================== Процедура ЗаполнитьТЗДог(ТЗ,Вид="ДоговорНаПроектирование") Запрос = СоздатьОбъект("Запрос"); Дата1='01.01.10'; Дата2=ОконПер; Если Вид="ДоговорНаПроектирование" Тогда УсловиеНаДаты=" |ДатаНачПроект = Регистр.Обороты.ТекущийДокумент.ДоговорНаПроектирование.НачПроект; |ДатаОконПроект = Регистр.Обороты.ТекущийДокумент.ДоговорНаПроектирование.ОконПроект; |ФактОконПроект = Регистр.Обороты.ТекущийДокумент.ДоговорНаПроектирование.ФактОкон; |"; Иначе УсловиеНаДаты=" |ДатаНачПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.НачПроект; |ДатаОконПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.ОконПроект; |ФактОконПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.ОконПроект; |"; КонецЕсли; ТекстЗапроса = " |Период С Дата1 По Дата2; |ТекДок = Регистр.Обороты.ТекущийДокумент; |Документы = Регистр.Обороты.Документ; |"+УсловиеНаДаты+" |СуммаДог = Регистр.Обороты.СуммаДог; |СуммаДопСогл = Регистр.Обороты.СуммаДопСогл; |_Объект = Регистр.Обороты.Объект; |Объект = Регистр.Обороты.Объект.Наименование; |Код = Регистр.Обороты.Объект.Код; |Заказчик = Регистр.Обороты.Объект.Заказчик; |Отдел = Регистр.Обороты.Объект.Отдел; |Стадия = Регистр.Обороты.Объект.Стадия; |Примеч = Регистр.Обороты.Объект.Прим; |Условие (Стадия.Код <> Строка(1)); |Гип = Регистр.Обороты.Объект.Гип; |ИстФин = Регистр.Обороты.Объект.ИстФин; |Назначение = Регистр.Обороты.Объект.Назначение; |Район = Регистр.Обороты.Объект.Район; |Вотчет = Регистр.Обороты.Объект.Вотчет; |ПризнакПодпис = Регистр.Обороты.ПризнакПодпис; |Группировка Документы; |Группировка СуммаДог; |Группировка ДатаНачПроект; |Группировка ДатаОконПроект; |Группировка ФактОконПроект; |Группировка _Объект; |Функция ОбщСуммаДог = Приход(СуммаДог); //|Функция ОбщСуммаДопСогл = Приход(СуммаДопСогл); |Без итогов; |Условие(ТекДок.Вид()="""+Вид+"""); |" ; Если ПустаяСтрока(ВНаим) <> 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Найти(Врег(Объект), Врег(СокрЛП(Внаим))) > 0);"; КонецЕсли; Если ПустаяСтрока(ВНаим1) <> 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Найти(Врег(Объект), Врег(СокрЛП(Внаим1))) > 0);"; КонецЕсли; Если ТекИстФин.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(ИстФин = ТекИстФин);"; КонецЕсли; Если ТекЗаказчик.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Заказчик = ТекЗаказчик);"; КонецЕсли; Если ТекНазнач.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Назначение = ТекНазнач);"; КонецЕсли; Если ТекРайон.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Район = ТекРайон);"; КонецЕсли; Если ТекОтдел.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Отдел = ТекОтдел);"; КонецЕсли; Если ВывАрхив = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие (ТекДок.Объект.Архив = Перечисление.Признак.Да);"; КонецЕсли; Запрос.Выполнить(ТекстЗапроса); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Сообщить("Запрос не выполнился"); Возврат ; Иначе ТЗ=СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(ТЗ,1); Тз.Сортировать("_Объект,ДатаНачПроект+");// КонецЕсли; КонецПроцедуры // ПолучитьСписокДополнительныхДанных(Запрос.Объект) Процедура ЗаполнитьТЗДоп(ТЗ,Вид="ДопСоглашение") Запрос = СоздатьОбъект("Запрос"); Дата1='01.01.16'; Дата2=ОконПер; УсловиеНаДаты=" |ДатаНачПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.НачПроект; |ДатаОконПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.ОконПроект; |ФактОконПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.ОконПроект; |"; ТекстЗапроса = " |Период С Дата1 По Дата2; |ТекДок = Регистр.Обороты.ТекущийДокумент; |Документы = Регистр.Обороты.Документ; |"+УсловиеНаДаты+" |СуммаДопСогл = Регистр.Обороты.СуммаДопСогл; |_Объект = Регистр.Обороты.Объект; |Заказчик = Регистр.Обороты.Объект.Заказчик; |Отдел = Регистр.Обороты.Объект.Отдел; |Стадия = Регистр.Обороты.Объект.Стадия; |Примеч = Регистр.Обороты.Объект.Прим; |Условие (Стадия.Код <> Строка(1)); |Гип = Регистр.Обороты.Объект.Гип; |ИстФин = Регистр.Обороты.Объект.ИстФин; |Назначение = Регистр.Обороты.Объект.Назначение; |Район = Регистр.Обороты.Объект.Район; |Вотчет = Регистр.Обороты.Объект.Вотчет; |Группировка Документы; |Группировка СуммаДопСогл; |Группировка ДатаНачПроект; |Группировка ДатаОконПроект; |Группировка ФактОконПроект; |Функция ОбщСуммаДог = Приход(СуммаДопСогл ); |Без итогов; |Условие(ТекДок.Вид()="""+Вид+"""); |"; Если ТекИстФин.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(ИстФин = ТекИстФин);"; КонецЕсли; Если ТекЗаказчик.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Заказчик = ТекЗаказчик);"; КонецЕсли; Если ТекНазнач.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Назначение = ТекНазнач);"; КонецЕсли; Если ТекРайон.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Район = ТекРайон);"; КонецЕсли; Если ТекОтдел.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Отдел = ТекОтдел);"; КонецЕсли; Если ВывАрхив = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие (ТекДок.Объект.Архив = Перечисление.Признак.Да);"; КонецЕсли; Запрос.Выполнить(ТекстЗапроса); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Сообщить("Запрос не выполнился"); Возврат ; Иначе ТЗ=СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(ТЗ,1); Тз.Сортировать("_Объект,ДатаОконПроект-");// КонецЕсли; КонецПроцедуры // ПолучитьСписокДополнительныхДанных(Запрос.Объект) //====================================================================== Функция пОПАДАЕТвПЕРИОД(оБкт) нс=0; ДоговорПопадаетВпериод=0; ТабЗДоговоровОЛД.НайтиЗначение(оБкт,нс,"_Объект"); Если нс=0 Тогда Сообщить("Ошибка во внутренних таблицах 54","!"); Иначе ТабЗДоговоровОЛД.ПолучитьСтрокуПономеру(нс); Если ТабЗДоговоровОЛД.ДатаНачПроект>=НачПер Тогда ДоговорПопадаетВпериод=1; КонецЕсли; КонецЕсли; нс=0; ДопсоглашениеПопадаетВпериод=0; ТабЗДопСоглашения.НайтиЗначение(оБкт,нс,"_Объект"); Если нс>0 Тогда ТабЗДопСоглашения.ПолучитьСтрокуПономеру(нс); Если ТабЗДопСоглашения.ДатаНачПроект>=НачПер Тогда ДопСоглашениеПопадаетВпериод=1; КонецЕсли; КонецЕсли; Возврат ДопсоглашениеПопадаетВпериод+ДоговорПопадаетВпериод; Возврат -1; КонецФункции // пОПАДАЕТвПЕРИОД //====================================================================== Функция ВернутьДоговора(Об,ТабЗ,Сдокументом=0) нс=0; ТабЗДоговоров.НайтиЗначение(оБ,нс,"_Объект"); Если нс=0 Тогда Сообщить("Ошибка во внутренних таблицах 1","!"); Иначе Если нс=1 Тогда ТабзДоговоров.ВыбратьСтроки(); Иначе ТабЗДоговоров.ПолучитьСтрокуПономеру(нс-1); КонецЕсли; Пока ТабЗДоговоров.ПолучитьСтроку()=1 Цикл Если ТабЗДоговоров._Объект<>Об Тогда Возврат ТабЗ; Иначе ТабЗ.НоваяСтрока(); ТабЗ.Объект=об; ТабЗ.гИП=ТабЗДоговоров.Гип; ТабЗ.ДатаНачала=ТабЗДоговоров.ДатаНачПроект; ТабЗ.ДатаОкончания=ТабЗДоговоров.ДатаОконПроект; ТабЗ.СуммаДог=ТабЗДоговоров.СуммаДог; Если Сдокументом=1 Тогда ТабЗ.Док=ТабЗДоговоров.ТекДок; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; Возврат ТабЗ; КонецФункции // ВернутьДоговора //====================================================================== Функция ВернутьДопсоглашения(Об,Табз,ДатаДоговора,Сдокументом=0) нс=0; ТабЗДопСоглашения.НайтиЗначение(оБ,нс,"_Объект"); Если нс=0 Тогда Возврат Табз; Иначе //ТабЗДопСоглашения.ПолучитьСтрокуПономеру(нс-1); Если нс=1 Тогда ТабЗДопСоглашения.ВыбратьСтроки(); Иначе ТабЗДопСоглашения.ПолучитьСтрокуПономеру(нс-1); КонецЕсли; Пока ТабЗДопСоглашения.ПолучитьСтроку()=1 Цикл Если ТабЗДопСоглашения._Объект<>Об Тогда Возврат ТабЗ; Иначе Если ТабЗДопСоглашения.ДатаНачПроект>=ДатаДоговора Тогда ТабЗ.НоваяСтрока(); ТабЗ.Объект=об; ТабЗ.гИП=ТабЗДопСоглашения.Гип; ТабЗ.ДатаНачала=ТабЗДопСоглашения.ДатаНачПроект; ТабЗ.ДатаОкончания=ТабЗДопСоглашения.ДатаОконПроект; ТабЗ.СуммаДог=ТабЗДопСоглашения.СуммаДопСогл; Если Сдокументом=1 Тогда ТабЗ.Док=ТабЗДопСоглашения.ТекДок; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; Возврат ТабЗ; КонецФункции // ВернутьДопсоглашения Процедура Сформировать() ЗаполнитьТЗДог(ТабЗДоговоров); // ТабЗДоговоров.Выгрузить(Федя); ТабЗДоговоровОЛД=СоздатьОбъект("ТаблицаЗначений"); ТабЗДоговоров.Выгрузить(ТабЗДоговоровОЛД); ТабЗДоговоровОЛД.Сортировать("ДатаОконПроект-"); ЗаполнитьТЗДоп(ТабЗДопСоглашения); // ТабЗДопСоглашения.Выгрузить(Вася); ТзОбъекты=СоздатьОбъект("ТаблицаЗначений"); ТабЗДоговоров.Выгрузить(ТзОбъекты); ТзОбъекты.Свернуть("Документы,_Объект,ДатаНачПроект","ОбщСуммаДог"); ТзОбъекты.ВыбратьСтроки(); Свод=СоздатьОбъект("ТаблицаЗначений"); Свод.НоваяКолонка("Объект","Справочник.Объект"); //Свод.НоваяКолонка("ШифрОбъекта","строка",24); Свод.НоваяКолонка("Отдел","Справочник.Отдел"); //Свод.НоваяКолонка("Заказчик","Справочник.Заказчик"); //Свод.НоваяКолонка("Стадия","Справочник.Стадия"); Свод.НоваяКолонка("Гип","Справочник.Гип"); Свод.НоваяКолонка("ДатаНачала","Дата"); Свод.НоваяКолонка("ДатаОкончания"); Свод.НоваяКолонка("СуммаДог","число",15,2); Свод.НоваяКолонка("СтоимостьПоследнего","число",15,2); ТзДоговораПоОъекту=СоздатьОбъект("ТаблицаЗначений"); Свод.Выгрузить(ТзДоговораПоОъекту); ТзДопСоглашенияПоОъекту=СоздатьОбъект("ТаблицаЗначений"); Свод.Выгрузить(ТзДопСоглашенияПоОъекту); Пока ТзОбъекты.ПолучитьСтроку() = 1 Цикл Если ПопадаетВпериод(ТзОбъекты._Объект)<1 Тогда Продолжить; КонецЕсли; СтоимостьПоследнего=0; Об=ТзОбъекты._Объект; ТзДоговораПоОъекту.УдалитьСтроки(); ТзДопСоглашенияПоОъекту.УдалитьСтроки(); ГИП=ПолучитьПустоеЗначение("Справочник.Гип"); ТзДоговораПоОъекту=ВернутьДоговора(Об,ТзДоговораПоОъекту); Если ТзДоговораПоОъекту.КоличествоСтрок()=0 Тогда Сообщить("Сбой в алгритме программы, сообщите программистам","!"); Возврат; Иначе ТзДоговораПоОъекту.ПолучитьСтрокуПоНомеру(1);//самый ранний договор ДатаНачала=ТзДоговораПоОъекту.ДатаНачала; ДатаОкончания=ТзДоговораПоОъекту.ДатаОкончания; СуммаДог=ТзДоговораПоОъекту.Итог("СуммаДог"); ГИП=ТзДоговораПоОъекту.Гип;//Единственная хрень в которой я не уверен ТзДоговораПоОъекту.ПолучитьСтрокуПоНомеру(ТзДоговораПоОъекту.КоличествоСтрок()); СтоимостьПоследнего=ТзДоговораПоОъекту.СуммаДог; КонецЕсли; ТзДопСоглашенияПоОъекту=ВернутьДопсоглашения(Об,ТзДопСоглашенияПоОъекту,ДатаНачала); //Т.к. у допников нет подчинения конкретному договору, что упростило бы задачу в разы //по идее я ориентируюсь на один договор за период по объекту, //но может быть, что несколько договоров. //будет самый ранний договор, а остальное(договоры соглашения) будет валиться уже на него //т.е. если было 2 договора за период например в 2016 году и в 2017 году, то надо, правидьно брать отчетом 2 периода за 16 и 17 год //все соглашения, старше попавшего первого договора за период отметаются, т.к. относятся к этому объекту, но к более раннему договору. //все подробности этой мысли будет видно в расшифровке суммы. (два раза кликнули)... Если ТзДопСоглашенияПоОъекту.КоличествоСтрок()>0 Тогда ТзДопСоглашенияПоОъекту.ПолучитьСтрокуПоНомеру(1);//самый допник поздний СтоимостьПоследнего=ТзДопСоглашенияПоОъекту.СуммаДог; ДатаОкончания=ТзДопСоглашенияПоОъекту.ДатаОкончания; СуммаДог=СуммаДог+ТзДопСоглашенияПоОъекту.Итог("СуммаДог"); КонецЕсли; Если ПустоеЗначение(ДатаОкончания)=1 Тогда ДатаОкончания="в работе"; КонецЕсли; Свод.НоваяСтрока(); Свод.Объект = Об; //Свод.ШифрОбъекта = Об.Код; Свод.Отдел = Об.Отдел; //Свод.Заказчик = Об.Заказчик; //Свод.Стадия = Об.Стадия; Свод.Гип = ГИП; Свод.ДатаНачала = ДатаНачала; Свод.ДатаОкончания = ДатаОкончания; Свод.СуммаДог =СуммаДог ; Свод.СтоимостьПоследнего =СтоимостьПоследнего ; КонецЦикла; Свод.Сортировать("Отдел,Объект"); // Свод.Выгрузить(Коля); Табб=СоздатьОбъект("Таблица"); Табб.ИсходнаяТаблица("Таблица"); Табб.ВывестиСекцию("Маст"); Табб.ВывестиСекцию("Шапка"); Если Свод.КоличествоСтрок()>0 Тогда Свод.ПолучитьСтрокуПоНомеру(1); Олдотдел=Свод.Отдел; Табб.ВывестиСекцию("Отдел"); Иначе Сообщить("За период нет данных","!"); Возврат; КонецЕсли; Свод.ВыбратьСтроки(); номер=0; Пока Свод.ПолучитьСтроку() = 1 Цикл Если Олдотдел<>Свод.Отдел Тогда Табб.ВывестиСекцию("Отдел"); Олдотдел=Свод.Отдел; КонецЕсли; номер=номер+1; Об=Свод.Объект; Сз=СоздатьОбъект("СписокЗначений"); Сз.ДобавитьЗначение(Об); СтоимостьПоследнего=Свод.СтоимостьПоследнего; Табб.ВывестиСекцию("Строка"); КонецЦикла; _СуммаДог=Свод.Итог("СуммаДог"); Табб.ВывестиСекцию("Итог"); Табб.ТолькоПросмотр(1); Табб.Опции(0,0,4,0); Табб.ПараметрыСтраницы(1,,,10,5,5,5,,,1); Табб.Показать("Отчет по договорам о доп.соглашениям по-объектно"); // Свод.Выгрузить(Коля); КонецПроцедуры Процедура Сформировать_() перем текдоп, текдог; ЗаполнитьТЗДог(ТабЗДоговоров); // ТабЗДоговоров.Выгрузить(Федя); ЗаполнитьТЗДоп(ТабЗДопСоглашения); // ТабЗДопСоглашения.Выгрузить(Вася); Таб = СоздатьОбъект("Таблица"); СоздатьОбъект("Регистр.АктОбъемРабот"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период С НачПер По ОконПер; |ТекДок = Регистр.Обороты.ТекущийДокумент; |Документы = Регистр.Обороты.Документ; |СуммаДог = Регистр.Обороты.СуммаДог; |СуммаДопСогл = Регистр.Обороты.СуммаДопСогл; |_Объект = Регистр.Обороты.Объект; |Объект = Регистр.Обороты.Объект.Наименование; |Код = Регистр.Обороты.Объект.Код; |Заказчик = Регистр.Обороты.Объект.Заказчик; |Отдел = Регистр.Обороты.Объект.Отдел; |Стадия = Регистр.Обороты.Объект.Стадия; |Примеч = Регистр.Обороты.Объект.Прим; |Условие (Стадия.Код <> Строка(1)); |Гип = Регистр.Обороты.Объект.Гип; |ИстФин = Регистр.Обороты.Объект.ИстФин; |Назначение = Регистр.Обороты.Объект.Назначение; |Район = Регистр.Обороты.Объект.Район; |Вотчет = Регистр.Обороты.Объект.Вотчет; |ПризнакПодпис = Регистр.Обороты.ПризнакПодпис; |Группировка Отдел Упорядочить По Отдел.Код; |Группировка Документы Упорядочить По Документы.ДатаДок; |Группировка Вотчет Упорядочить По Вотчет.Код; |Группировка Объект; |Группировка ТекДок; |Функция ОбщСуммаДог = Приход(СуммаДог); |Функция ОбщСуммаДопСогл = Приход(СуммаДопСогл); |" ; Если ПустаяСтрока(ВНаим) <> 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Найти(Врег(Объект), Врег(СокрЛП(Внаим))) > 0);"; КонецЕсли; Если ТекИстФин.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(ИстФин = ТекИстФин);"; КонецЕсли; Если ТекЗаказчик.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Заказчик = ТекЗаказчик);"; КонецЕсли; Если ТекНазнач.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Назначение = ТекНазнач);"; КонецЕсли; Если ТекРайон.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Район = ТекРайон);"; КонецЕсли; Если ТекОтдел.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Отдел = ТекОтдел);"; КонецЕсли; Если ВывАрхив = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие (ТекДок.Объект.Архив = Перечисление.Признак.Да);"; КонецЕсли; Запрос.Выполнить(ТекстЗапроса); Таб.ВывестиСекцию("Маст"); Таб.ВывестиСекцию("Шапка"); Номер = 0; Прим = ""; //ТекДог=""; //ДекДоп=""; Пока Запрос.Группировка(1) = 1 Цикл Таб.ВывестиСекцию("Отдел"); _СуммаДог = 0; Пока Запрос.Группировка(2) = 1 Цикл Пока Запрос.Группировка(3) = 1 Цикл Пока Запрос.Группировка(4) = 1 Цикл Прим = ""; КолПодпис = 0; КолНеПодпис = 0; ДатаНеПодписАкт = ""; ДатаПодписАкт = ""; Пока Запрос.Группировка(5) = 1 Цикл Если Запрос.Документы.Вид() = "ДоговорНаПроектирование" Тогда Нс=0; Рез=ТабЗДоговоров.НайтиЗначение(Запрос._Объект,нс,"_Объект"); Если Рез=1 Тогда ТабЗДоговоров.ПолучитьСтрокуПоНомеру(нс); СуммаДог = ТабЗДоговоров.СуммаДог; ДогДатаС = ТабЗДоговоров.ДАТАНачПроект; ДогДатаПо = ТабЗДоговоров.ДАТАоКОНПроект; ТекДог=ТабЗДоговоров.ТекДок.ТекущийДокумент(); Иначе СуммаДог = Запрос.СуммаДог; ДогДатаС = Запрос.Документы.НачПроект; ДогДатаПо = Запрос.Документы.ОконПроект; КонецЕсли; КонецЕсли; Если Запрос.Документы.Вид() = "ДопСоглашение" Тогда Если Запрос.Документы.Сумма <> 1 Тогда СуммаДог = Запрос.Документы.Сумма; КонецЕсли; Нс=0; Рез=ТабЗДопСоглашения.НайтиЗначение(Запрос._Объект,нс,"_Объект"); Если Рез=1 Тогда ТабЗДопСоглашения.ПолучитьСтрокуПоНомеру(нс); СуммаДог = ТабЗДопСоглашения.ОбщСуммаДог; ДогДатаС = ТабЗДопСоглашения.ДАТАНачПроект; ТекДоп=ТабЗДопСоглашения.ТекДок.ТекущийДокумент(); Если ПустоеЗначение(ТабЗДопСоглашения.ДАТАоКОНПроект)=0 Тогда ДогДатаПо = ТабЗДопСоглашения.ДАТАоКОНПроект; Иначе ТекДоп=ТекДог; КонецЕсли; Иначе ДатаНачПлан = Запрос.Документы.НачПроект; ДатаОконПлан = Запрос.Документы.ОконПроект; Прим = "Доп. согл " + Запрос.Документы.НомерДоговора; КонецЕсли; КонецЕсли; Если ПустоеЗначение(ДатаОконПлан)=1 Тогда ДатаОконПлан="в работе" КонецЕсли; КонецЦикла; Если ПустаяСтрока(Стоим) <> 1 Тогда Если Число(СуммаДог) > Число(Стоим) Тогда //Сообщить("1"); Номер = Номер + 1; Таб.ВывестиСекцию("Данные"); _СуммаДог = _СуммаДог + СуммаДог; КонецЕсли; Иначе //Сообщить("2"); Номер = Номер + 1; Таб.ВывестиСекцию("Данные"); _СуммаДог = _СуммаДог + СуммаДог; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; //Таб.ВывестиСекцию("Итог"); //Таб.ТолькоПросмотр(1); Таб.Опции(0,0,5); Таб.ПовторятьПриПечатиСтроки(4,6); Таб.Показать(); КонецПроцедуры Процедура ПриОткрытии() ОконПер = ПолучитьДатуТА(); НачПер=ПолучитьДатуТА()-190; КонецПроцедуры процедура ОбработкаЯчейкиТаблицы(расш,ст,таб,адр) Если Строка(Расш)<>"СписокЗначений" Тогда ст=1; //Если ПустоеЗначение(расш)=0 Тогда // открытьФорму(расш); //КонецЕсли; Иначе Об=расш.ПолучитьЗначение(1); Сообщить(об); РасшТЗ=СоздатьОбъект("ТаблицаЗначений"); РасшТЗ.НоваяКолонка("Объект","Справочник.Объект"); РасшТЗ.НоваяКолонка("Отдел","Справочник.Отдел"); РасшТЗ.НоваяКолонка("Гип","Справочник.Гип"); РасшТЗ.НоваяКолонка("ДатаНачала","Дата"); РасшТЗ.НоваяКолонка("ДатаОкончания"); РасшТЗ.НоваяКолонка("СуммаДог","число",15,2); РасшТЗ.НоваяКолонка("Док","Документ"); РасшТЗ=ВернутьДоговора(Об,РасшТЗ,1); Если РасшТЗ.КоличествоСтрок()=0 Тогда Сообщить("Сбой в алгритме программы, сообщите программистам","!"); Возврат; //Иначе //ТзДоговораПоОъекту.ПолучитьСтрокуПоНомеру(1);//самый ранний договор //ДатаНачала=ТзДоговораПоОъекту.ДатаНачала; //ДатаОкончания=ТзДоговораПоОъекту.ДатаОкончания; //СуммаДог=ТзДоговораПоОъекту.Итог("СуммаДог"); //ГИП=ТзДоговораПоОъекту.Гип;//Единственная хрень в которой я не уверен КонецЕсли; таббе=СоздатьОбъект("Таблица"); таббе.ИсходнаяТаблица("Расшифровка"); таббе.ВывестиСекцию("Шапка"); ИтогоСум=0; РасшТЗ.ВыбратьСтроки(); Пока РасшТЗ.ПолучитьСтроку()=1 Цикл Если ИтогоСум=0 Тогда ДатаНачала=РасшТЗ.ДатаНачала; КонецЕсли; ИтогоСум=ИтогоСум+РасшТЗ.СуммаДог; Док=РасшТЗ.Док; Докстр=Строка(Док)+ " от "+Док.ДатаДок+" дата начала поектирования "+Док.НачПроект; Тексумма=РасшТЗ.СуммаДог; таббе.ВывестиСекцию("Строка"); КонецЦикла; РасшТЗ.УдалитьСтроки(); РасшТЗ=ВернутьДопсоглашения(Об,РасшТЗ,ДатаНачала,1); РасшТЗ.Сортировать("Объект,ДатаНачала"); Если РасшТЗ.КоличествоСтрок()>0 Тогда РасшТЗ.ВыбратьСтроки(); Пока РасшТЗ.ПолучитьСтроку()=1 Цикл ИтогоСум=ИтогоСум+РасшТЗ.СуммаДог; Док=РасшТЗ.Док; Тексумма=РасшТЗ.СуммаДог; Докстр=Строка(Док)+ " от "+Док.ДатаДок+" дата начала поектирования "+Док.НачПроект; таббе.ВывестиСекцию("Строка"); КонецЦикла; КонецЕсли; таббе.ВывестиСекцию("Итого"); таббе.ТолькоПросмотр(1); таббе.Опции(0,0,2,0); таббе.Показать("Расшифровка "+Об); КонецЕсли; КонецПроцедуры |
|||
2
IrinaBlahun
30.11.21
✎
14:05
|
Суть в том что в форме есть поле сортировки по сумме. Т.е. должно выводить сумму больше указанной. Но не выводит.
|
|||
3
АгентБезопасной Нацио
30.11.21
✎
14:06
|
"наймите программиста"©
|
|||
4
Ёпрст
30.11.21
✎
14:07
|
(0) какой адок зачетный.
Это вообще хоть как-то работает у вас ? |
|||
5
Ёпрст
30.11.21
✎
14:09
|
(2) у вас нет ни одной сортировки по Сумме в этом коде, что вы от него хотите ?
|
|||
6
IrinaBlahun
30.11.21
✎
14:09
|
(4) пока что работает, и надо чтоб проработала еще немного)
|
|||
7
Ёпрст
30.11.21
✎
14:10
|
(6)
Сбой в алгритме программы, сообщите программистам! Да у вас там гнездо! |
|||
8
IrinaBlahun
30.11.21
✎
14:11
|
(5) Я ни чего не смыслю в 1С. Я поняла что сортировка не работает, потому что про нее нет ни чего. Вот именно поэтому и пишу сюда
|
|||
9
АгентБезопасной Нацио
30.11.21
✎
14:11
|
(7) судя по вопросам, разлетелись они из гнезда...
|
|||
10
IrinaBlahun
30.11.21
✎
14:11
|
(7) На этом месте уже столько народу поменялось. Что хорошо что в коде нет ругательных слов)
|
|||
11
Эльниньо
30.11.21
✎
14:11
|
Выложите весь глобальный модуль. Без этого никак
|
|||
12
Ёпрст
30.11.21
✎
14:13
|
(8) еще раз. У вас нет никакой сортировке по сумме в коде.
Если вы путаете сортировку и условие на сумму, то селя ви |
|||
13
Ёпрст
30.11.21
✎
14:14
|
Максимум, что у вас есть, так только вот это условие
Где Стоим -это поди реквизит формы и ваша "сортировка" |
|||
14
IrinaBlahun
30.11.21
✎
14:16
|
(13) я не могу понять как прикрепить скрин или файл
|
|||
15
Ёпрст
30.11.21
✎
14:17
|
(14) http://pics.rsh.ru/
|
|||
16
IrinaBlahun
30.11.21
✎
14:18
|
(13) если можете напишите мне на почту [email protected] и я отправлю все что нужно
|
|||
17
IrinaBlahun
30.11.21
✎
14:20
|
(15) http://pics.rsh.ru/img/_2021-11-30140104_o0bml2pu.png Вот про выделенное полу в диалогов окне я говорю
|
|||
18
Ёпрст
30.11.21
✎
14:20
|
(16) могу дать только реквизиты счета, отправляйте деньги. Мне больше ничего не нужно.
|
|||
19
МихаилМ
30.11.21
✎
14:24
|
||||
20
IrinaBlahun
30.11.21
✎
14:26
|
(18) ясно
попробую по-другому Подскажите как правильно обращаться к форме, чтобы если ставить "Стоимость больше: 1000" в отчете вывелись правильные данные |
|||
21
Ёпрст
30.11.21
✎
14:27
|
(20) правильные, это какие ?
|
|||
22
Ёпрст
30.11.21
✎
14:28
|
у вас там каша в коде, разбираться в ней нет никакого желания. Вы суммируете некую СуммаДог в коде и нкакладываете зачем то на этот нарастающий итог свой фильтр на Стоим, в итоге имеете то, что имеете.
|
|||
23
IrinaBlahun
30.11.21
✎
14:29
|
(21) в которых СуммаДог больше 1000
|
|||
24
acht
30.11.21
✎
14:32
|
(0) пОПАДАЕТвПЕРИОД
оЕПЕЙКЧВХаКЪйНДХПНБЙС! |
|||
25
МихаилМ
30.11.21
✎
14:33
|
она еще и лезбиянка
https://forum.grodno.net/index.php?topic=4510615.0 |
|||
26
Ёпрст
30.11.21
✎
14:34
|
(23)
Вы смотрите СуммуДог по группировке документы, а накладываете своё условие на вышестоящую группировку, в итоге сравниваете своё Стоим всегда с последним документом и его СуммуДог. Так, понятнее ? |
|||
27
Ёпрст
30.11.21
✎
14:36
|
Вам нужно или суммировать все СуммуДог в группировке по документам и потом ЭТО сравнивать с Стоим, или условие делать при обходе группировки по документам.
|
|||
28
Ёпрст
30.11.21
✎
14:37
|
И в вашем коде, не ясно, нахрена вы вообще обходите группировку по документам, если с неё потом нет никакого вывода в табличный документ
|
|||
29
Ёпрст
30.11.21
✎
14:38
|
Сорее всего, вы своё условие должны просто унутрь цикла по группировке(5) внести.
|
|||
30
Ёпрст
30.11.21
✎
14:38
|
и всё.
|
|||
31
IrinaBlahun
30.11.21
✎
14:41
|
(30) спасибо за разъяснении
|
|||
32
Ёпрст
30.11.21
✎
14:43
|
(31) если не понятно, то так сделайте, для начала:
|
|||
33
IrinaBlahun
30.11.21
✎
14:52
|
(32) Спасибо за совет
|
|||
34
Злопчинский
30.11.21
✎
14:57
|
Ёпрст
а такая конструкция будет работать, когда текущий документ - док.неопределенного вида? Если Вид="ДоговорНаПроектирование" Тогда УсловиеНаДаты=" |ДатаНачПроект = Регистр.Обороты.ТекущийДокумент.ДоговорНаПроектирование.НачПроект; |ДатаОконПроект = Регистр.Обороты.ТекущийДокумент.ДоговорНаПроектирование.ОконПроект; |ФактОконПроект = Регистр.Обороты.ТекущийДокумент.ДоговорНаПроектирование.ФактОкон; |"; Иначе УсловиеНаДаты=" |ДатаНачПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.НачПроект; |ДатаОконПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.ОконПроект; |ФактОконПроект = Регистр.Обороты.ТекущийДокумент.ДопСоглашение.ОконПроект; |"; КонецЕсли; |
|||
35
Ёпрст
30.11.21
✎
15:26
|
(34) я хз тов. майор, как этот код вообще хоть что-то выдаёт.
По мне, всё в топку. |
|||
36
АгентБезопасной Нацио
30.11.21
✎
15:30
|
(35) за 4 года можно было все уже переписать. если не на снеговика, то уж на нормальные запросы - точно...
|
|||
37
серый КТУЛХУ
30.11.21
✎
17:29
|
несколько условий работают через "И"
если среди них встречаются взаимоисключающие - результат запроса получится пустой. |
|||
38
Злопчинский
30.11.21
✎
22:59
|
(36) нахера? то есть зачем? если работает, данные выдает нужные, по быстродействию удовлетовряет... - чего не хватает? не, если больше задач нету - то да, самосовершенствуемся...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |