Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Дубли данных при проходе через цыкл , вместо тех что надо лезут все по очереди          
burza Подменю пользователя
сообщение 22.09.20, 12:50
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

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

        
                Если НЕ Док.Пустая() Тогда
                        
                        
                        Для Каждого Строка из Док.Блюда цикл
                            
                            Если Строка.Блюдо = Выборка.Блюдо Тогда
                                
                                  
                                  Продолжить;
                
                              КонецЕсли;
                              
                            
                          КонецЦикла;
                          
                          
            
                           Док = Док.ПолучитьОбъект();
                          
                       Иначе
                          
                            Док = Документы.МенюДляОфБух.СоздатьДокумент();
                            
                       КонецЕсли;

        
         Док.Дата = Выборка.Дата;
         Док.ДатаМеню   =  Выборка.ДатаМеню;
         Док.ГруппаПитания =  Выборка.ГруппаПитания;
         Док.КоличествоПитающихся   = Выборка. КоличествоПитающихся;
         Док.Комментарий  =   Выборка. Комментарий;
         Док.Номер =  Выборка.Номер;
         Док.Ответственный  = Выборка.Ответственный;
         Док.Подразделение = Выборка.Подразделение;
         Док.ПриёмПищи   =   Выборка.ПриёмПищи;
        
        
         ///////////Запись Блюда
         НовСтрока = Док.Блюда.Добавить();
         НовСтрока.Блюдо = Выборка.Блюдо;
         НовСтрока.ИдентификаторБлюда = Выборка.ИдентификаторБлюда;
         НовСтрока.Выход1 = Выборка.Выход1;
         НовСтрока.ЕдиницаВыхода = Выборка.ЕдиницаВыхода;
         НовСтрока.Выход2 = Выборка.Выход2;
         НовСтрока.Выход3 = Выборка.Выход3;
         НовСтрока.КоличествоПорций = Выборка.КоличествоПорций;
         НовСтрока.Меню1 = Выборка.Меню1;
         НовСтрока.Меню2 = Выборка.Меню2;
        
        

    
    ///////////////Запись компонента    
    ПараметрыБлюда = Компонент(Выборка.Номер);
    
    
    Для каждого КомпонентПолученный из ПараметрыБлюда цикл
        
        НовыйКомпонент = Док.КомпонентыБлюд.Добавить();
        
        НовыйКомпонент.ИдентификаторБлюда = КомпонентПолученный.ИдентификаторБлюда;
        НовыйКомпонент.Компонент = КомпонентПолученный.Компонент;
        НовыйКомпонент.ЗакладкаБрутто = КомпонентПолученный.ЗакладкаБрутто;
        НовыйКомпонент.ЕдиницаИзмеренияБрутто = КомпонентПолученный.ЕдиницаИзмеренияБрутто;
        НовыйКомпонент.ЗакладкаНетто = КомпонентПолученный.ЗакладкаНетто;
        НовыйКомпонент.ЕдиницаИзмеренияНетто = КомпонентПолученный.ЕдиницаИзмеренияНетто;
        НовыйКомпонент.Пересчитывать = КомпонентПолученный.Пересчитывать;
        
    
    КонецЦикла;
    

    
                 
         Док.Записать();

        
     КонецЦикла;


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


  
    
КонецФункции

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 22:08
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!