Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как оптимизировать код

Как оптимизировать код
Я
   1сЮлия
 
25.04.19 - 12:46
Добрый день! Мне нужно перенести информацию с документов,по которым велся ранее учет в типовой сертификации номенклатуры с своими дописками,в новую структуру  вроди я переношу но мне не нравится моя реализация кода

перем Год,Месяц,Подразделение,Номенклатура,Дата;    
    ТЗ = Новый ТаблицаЗначений;
    Запрос = Новый Запрос;
        Запрос.Текст =

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

                        СтрокаСерии = Сертификация.Серии.Добавить();
                             ЗаполнитьЗначенияСвойств(СтрокаСерии,ВыборкаДетальная);
                        Сертификация.Записать();      
                      КонецЦикла;    
                    КонецЦикла;     
             КонецЦикла;
        КонецЦикла;    
    КонецЦикла;    
  Нужно сгруппировать документы по году,по месяцу,по номенклатуре и заполнить табличную часть сериями и результатами по сериям.Подскажите как лучше это реализовать может запрос переделать?
 
 
   catena
 
1 - 25.04.19 - 12:51
Убрать выгрузку в ТЗ.
Вытащить группировку по подразделению и номенклатуре наверх.
Создавать документ на уровне группировки месяца, добавлять строки в выборке детальной.
   Жан Пердежон
 
2 - 25.04.19 - 12:54
(0) > Нужно сгруппировать документы...

а проблема в чем? мотивации не хватает?
   1сЮлия
 
3 - 25.04.19 - 12:59
Да наверное,не могу что то собрать мозги до кучи.
   Широкий
 
4 - 25.04.19 - 12:59
Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение"); 
Почему выборка не из результата предыдущей выборки?
   1сЮлия
 
5 - 25.04.19 - 13:37
Не правильно наверное прописала
   Simod
 
6 - 25.04.19 - 13:44
Нужны все поля? Например "МоментВремени"..
   Simod
 
7 - 25.04.19 - 13:45
Сертификация.Записать(); после добавления каждой строки..
   1сЮлия
 
8 - 25.04.19 - 13:52
Не не все поля,Записать() в  самый конец перенесу.
   Simod
 
9 - 25.04.19 - 14:07
Не в самый конец, а так:

Сертификация = Документы.аэсСертификация.СоздатьДокумент(); 
Сертификация.Подразделение=Подразделение;
Сертификация.Номенклатура=Номенклатура;
Сертификация.Дата=Год;
Пока ВыборкаДетальная.Следующий() Цикл
    ЗаполнитьЗначенияСвойств(Сертификация.Серии.Добавить(), ВыборкаДетальная);
КонецЦикла;

Сертификация.Записать();

Если я правильно понял, то "Подразделение", "Номенклатура", "Дата" реквизиты документа, а не табл.части.

PS: После запятой должен быть пробел, перед и после "=" должен быть пробел.
   1сЮлия
 
10 - 25.04.19 - 14:31
Да, реквизиты документа
   1сЮлия
 
11 - 25.04.19 - 15:53
Спасибо большое,сейчас попітаюсь переделать.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.