Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 19:34

Всем привет. Как правильно сравнить с предыдущей ячейкой ? подскажите

Автор AllGreen, 18 апр 2023, 13:41

0 Пользователей и 1 гость просматривают эту тему.

AllGreen

Привет. не получается сравнить с предыдущей строкой помогите))) т.е мне нужно чтобы если оборудование из текущей строки равнялось предыдущей тогда добавляется еще одна запись в табличнуя часть документа, если неравно тогда просто создавался отдельный документ. спасибо

НоваяСтрока =  Демонтирование.Добавить();
НоваяСтрока.Абонент = Выборка.Абонент;   
НоваяСтрока.ДатаИзменения = Выборка.ДатаИзмененияСостояния;
НоваяСтрока.Автор = Выборка.АвторСсылка;
НоваяСтрока.Исполнитель = Выборка.ИсполнительСсылка; ;
НоваяСтрока.Оборудование = Выборка.ОборудованиеСсылка;
     НоваяСтрока.Пломба = Выборка.ПломбаСсылка;
     НоваяСтрока.МестоУстановки = Выборка.МестоУстановкиСсылка;
НоваяСтрока.ТипПломбировки = Выборка.ТипПломбировкиСсылка;

КонецЦикла; 
Счетчик = 0;
Для каждого Стр Из Демонтирование Цикл
Счетчик = Счетчик +1;


     СтрокаТек = Демонтирование[Счетчик].Оборудование;
СтрокаПред = Демонтирование[Счетчик - 1].Оборудование;
Если СтрокаТек <> СтрокаПред Тогда
Демонтаж                        = Документы.ИзменениеПараметровОборудования.СоздатьДокумент();
    Демонтаж.Дата                   = ТекущаяДата();
Демонтаж.Организация            = ПолучитьОрганизациюНаСервере();
Демонтаж.УчетныйМесяц = ПолучитьУчетныйМесяц();
Демонтаж.Подразделение          = ПолучитьКодУчасткаНаСервере();
Демонтаж.ДатаИзмененияСостояния = Стр.ДатаИзмененияСостояния;
Демонтаж.Абонент                = Стр.Абонент;
Демонтаж.Исполнитель            = Стр.ИсполнительСсылка;
Демонтаж.Автор                  = Стр.АвторСсылка;

Док                = Демонтаж.Пломбы.Добавить();   
Док.Оборудование   = Стр.ОборудованиеСсылка;
Док.Пломба         = Стр.ПломбаСсылка;
Док.МестоУстановки = Стр.МестоУстановкиСсылка;
Док.ТипПломбировки = Стр.ТипПломбировкиСсылка;
Док.Действует      = ЛОЖЬ;                             

 
Демонтаж.Примечание = "Добавлено обработкой";

Демонтаж.Записать(РежимЗаписиДокумента.Проведение);
Иначе  

Док                = Демонтаж.Пломбы.Добавить();   
Док.Оборудование   = Стр.ОборудованиеСсылка;
Док.Пломба         = Стр.ПломбаСсылка;
Док.МестоУстановки = Стр.МестоУстановкиСсылка;
Док.ТипПломбировки = Стр.ТипПломбировкиСсылка;
 


КонецЕсли;

КонецЦикла;



Kvark5d


Afinogen

Поучаете индекс текузей добавленной строки,  уменьшаете его на 1  - индекс предыдущей, далее по индексу предыдущей получаете предыдущую строку

примерно так

ИндексТекСтроки = Демонтирование.Индекс(НоваяСтрока);
ПредыдущаяСтрока = Демонтирование[ИндексТекСтроки-1]

 

Kvark5d

AllGreen, добавьте в запрос итоги по Оборудование
получится
ВыборкаОборудование=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаОборудование.Следующий() Цикл
        //здесь создавать новый документ
        Выборка=ВыборкаОборудование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);   
        Пока Выборка.Следующий() Цикл
            // здесь заполнять табличную часть
        КонецЦикла;
    КонецЦикла;

AllGreen

Kvark5d, я пробовал итоги... у меня хрень получается...поэтому в ТЗ кинул результат. 

AllGreen

Kvark5d,Сделал как вы написали результата нет
|ИТОГИ ПО
| ОборудованиеСсылка";


НаименованиеПломбы = "Роторная";
СостояниеСчетчик   = Справочники.СостоянияОборудования.НайтиПоНаименованию("Демонтировано");
ВидОборудования    = "счетчик";

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


РезультатЗапроса = Запрос.Выполнить();

        ВыборкаОборудование=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаОборудование.Следующий() Цикл
        Демонтаж                        = Документы.ИзменениеПараметровОборудования.СоздатьДокумент();
Демонтаж.Дата                   = ТекущаяДата();
Демонтаж.Организация            = ПолучитьОрганизациюНаСервере();
Демонтаж.УчетныйМесяц = ПолучитьУчетныйМесяц();
Демонтаж.Подразделение          = ПолучитьКодУчасткаНаСервере();
Демонтаж.ДатаИзмененияСостояния = ВыборкаОборудование.ДатаИзмененияСостояния;
Демонтаж.Абонент                = ВыборкаОборудование.Абонент;
Демонтаж.Исполнитель            = ВыборкаОборудование.ИсполнительСсылка;
Демонтаж.Автор                  = ВыборкаОборудование.АвторСсылка;

Док                = Демонтаж.Пломбы.Добавить();   
Док.Оборудование   = ВыборкаОборудование.ОборудованиеСсылка;
Док.Пломба         = ВыборкаОборудование.ПломбаСсылка;
Док.МестоУстановки = ВыборкаОборудование.МестоУстановкиСсылка;
Док.ТипПломбировки = ВыборкаОборудование.ТипПломбировкиСсылка;
Док.Действует      = ЛОЖЬ;                             


        Выборка=ВыборкаОборудование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);   
        Пока Выборка.Следующий() Цикл
           
Док                = Демонтаж.Пломбы.Добавить();   
Док.Оборудование   = Выборка.ОборудованиеСсылка;
Док.Пломба         = Выборка.ПломбаСсылка;
Док.МестоУстановки = Выборка.МестоУстановкиСсылка;
Док.ТипПломбировки = Выборка.ТипПломбировкиСсылка;
        КонецЦикла;

Kvark5d

AllGreen, внимательнее надо быть и хоть чуть чуть попытаться понять что делаете.
попробуйте так:
    |ИТОГИ ПО
        |    ДатаИзмененияСостояния,
        |    Абонент,
        |    ИсполнительСсылка,
        |    АвторСсылка,
        |    Оборудование";
   
    РезультатЗапроса = Запрос.Выполнить();
   
    ВыборкаДатаИзмененияСостояния = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаДатаИзмененияСостояния.Следующий() Цикл
        ВыборкаАбонент = ВыборкаДатаИзмененияСостояния.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыборкаАбонент.Следующий() Цикл
            ВыборкаИсполнительСсылка = ВыборкаАбонент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаИсполнительСсылка.Следующий() Цикл
                ВыборкаАвторСсылка = ВыборкаИсполнительСсылка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                Пока ВыборкаАвторСсылка.Следующий() Цикл
                    ВыборкаОборудование = ВыборкаАвторСсылка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                    Пока ВыборкаОборудование.Следующий() Цикл
                        // создадим новый документ
                        Демонтаж                        = Документы.ИзменениеПараметровОборудования.СоздатьДокумент();
                        Демонтаж.Дата                   = ТекущаяДата();
                        Демонтаж.Организация            = ПолучитьОрганизациюНаСервере();
                        Демонтаж.УчетныйМесяц             = ПолучитьУчетныйМесяц();
                        Демонтаж.Подразделение          = ПолучитьКодУчасткаНаСервере();
                        Демонтаж.ДатаИзмененияСостояния = ВыборкаОборудование.ДатаИзмененияСостояния;
                        Демонтаж.Абонент                = ВыборкаОборудование.Абонент;
                        Демонтаж.Исполнитель            = ВыборкаОборудование.ИсполнительСсылка;
                        Демонтаж.Автор                  = ВыборкаОборудование.АвторСсылка;
                       
                        ВыборкаДетальныеЗаписи=ВыборкаОборудование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);   
                        Пока ВыборкаДетальныеЗаписи.Следующий()
                            //заполним табличную часть
                            Док                = Демонтаж.Пломбы.Добавить();   
                            Док.Оборудование   = ВыборкаДетальныеЗаписи.ОборудованиеСсылка;
                            Док.Пломба         = ВыборкаДетальныеЗаписи.ПломбаСсылка;
                            Док.МестоУстановки = ВыборкаДетальныеЗаписи.МестоУстановкиСсылка;
                            Док.ТипПломбировки = ВыборкаДетальныеЗаписи.ТипПломбировкиСсылка;
                            Док.Действует      = ЛОЖЬ;
                        КонецЦикла;
                        Демонтаж.Примечание = "Добавлено обработкой";
                        Демонтаж.Записать(РежимЗаписиДокумента.Проведение);
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;

AllGreen

Kvark5d, Спасибо. Единственное документы разные если место установки различается...получается мне еще итоги по месту установки добавить и еще один цикл?

Afinogen

6 вложеных циклов?  :xfbnsdfb:

я могу ошибаться но  по моему больше 5 сама 1с не рекомендует

Похожие темы (5)

Рейтинг@Mail.ru

Поиск