Имя: Пароль:
1C
1С v8
Помогите разобраться с циклами 8.3
0 breezee
 
26.03.15
12:10
Ставлю точки останова в коде ниже. У меня успешно проделывается половина первого цикла и переходит на цикл2, хотя вроде я не ставил продолжить в первом цикле и он должен отрабатывать полностью. Чувствую что в лыжах проблем нет, объясните, что я делаю не так?
//Внешний цикл
Пока ВыборкаПоСкладам1.Следующий() Цикл //Цикл1
                Если ВыборкаПоСкладам1.Склад<>справочники.Склады.ПустаяСсылка() тогда
                     КоличествоРеальныхСкладов = КоличествоРеальныхСкладов+1;
                     КонецЕсли;
                 КонецЦикла;// конец Цикл1
                
                 ВыборкаПоСкладам = ДанныеПечати.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаПоСкладам.Следующий() Цикл //Цикл2
                Если КоличествоРеальныхСкладов<>0 Тогда
                    Если  ВыборкаПоСкладам.Склад=справочники.Склады.ПустаяСсылка() тогда
                        Продолжить;
                    КонецЕсли;
                    КонецЕсли; ////Цикл2
//Еще что-то делает
//Конец внешнного цикла
1 breezee
 
26.03.15
12:11
Получается что находит все склады с пустым наименованием, потом переходит на второй цикл, хотя в первом должно было найти ВСЕ склады
2 Господин ПЖ
 
26.03.15
12:11
рукож.пие обыкновенное
3 Господин ПЖ
 
26.03.15
12:11
у вас волчанка
4 breezee
 
26.03.15
12:12
(2) Что не так. Скажи, пожалуйста!
5 фобка
 
26.03.15
12:13
(1) утверждение ошибочно
6 RomaH
 
naïve
26.03.15
12:15
(2) руко - от слова рука (делать руками)
а тут, все-таки, главный орган - голова
7 breezee
 
26.03.15
12:16
(5) В первом цикле? Я проходился, там были значения ложь, затем перешло на второй цикл, вернулось на первый и стало истинное. Все пока и если вроде как и должны быть настроены
8 Vladal
 
26.03.15
12:17
Вот это
ВыборкаПоСкладам1.Склад<>справочники.Склады.ПустаяСсылка()

и это
ВыборкаПоСкладам.Склад=справочники.Склады.ПустаяСсылка()

надо делать в запросе.
9 PR
 
26.03.15
12:18
(6) Ты хочешь сказать, тут головож.пие? o_O
10 Jonny_Khomich
 
26.03.15
12:18
Как может выбрка быть по складам и склад = пустая ссылка?
11 фобка
 
26.03.15
12:18
(7) Что значит вернулось на первый? То есть есть еще какой-то цикл о котором мы не знаем?
12 kosts
 
26.03.15
12:19
(0) Покажи всё целиком
13 breezee
 
26.03.15
12:19
(12) Функция СформироватьПечатнуюФормуРасходнаяНакладная(МассивОбъектов, ОбъектыПечати, КомплектыПечати)
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_РасходнаяНакладная";
    
    КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
    ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
    
    ИспользоватьРучныеСкидки         = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
    ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
    ИспользоватьУпаковки             = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
    ЗапросПоСкладам = Новый Запрос;
    ЗапросПоСкладам.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                            |    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
                            |    РеализацияТоваровУслугТовары.Склад КАК Склад,
                            |    ЕСТЬNULL(РеализацияТоваровУслугТовары.Склад.ИспользоватьСерииНоменклатуры, ЛОЖЬ) КАК ИспользоватьСерииНоменклатуры
                            |ИЗ
                            |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                            |ГДЕ
                            |    РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
                            |    И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга))
                            |
                            |УПОРЯДОЧИТЬ ПО
                            |    Ссылка
                            |ИТОГИ ПО
                            |    ИспользоватьСерииНоменклатуры";
    
    ЗапросПоСкладам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    
    // Создание массива для проверки: какие из докуметов не попали в выборку
    МассивПроверки = Новый Массив;
    Для Каждого Ссылка Из МассивОбъектов Цикл
        МассивПроверки.Добавить(Ссылка);
    КонецЦикла;
    
    ДеревоОбъектов = ЗапросПоСкладам.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
        
    Для Каждого ИспользованиеСерий Из ДеревоОбъектов.Строки Цикл
        
        ЗапросПоТоварам = Новый Запрос;
        ЗапросПоТоварам.УстановитьПараметр("МассивОбъектов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Ссылка"));
        ЗапросПоТоварам.УстановитьПараметр("МассивСкладов",  ИспользованиеСерий.Строки.ВыгрузитьКолонку("Склад"));
        
        Если ИспользованиеСерий.ИспользоватьСерииНоменклатуры Тогда
            
            ТекстЗапросаПоТоварам =
            "ВЫБРАТЬ
            |    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
            |    РеализацияТоваровУслугТовары.Склад КАК Склад,
            |    РеализацияТоваровУслугТовары.КоличествоУпаковок КАК КоличествоУпаковок,
            |    РеализацияТоваровУслугТовары.Количество КАК Количество,
            |    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
            |    РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
            |    РеализацияТоваровУслугТовары.Упаковка КАК Упаковка,
            |    """" КАК Серия
            |ПОМЕСТИТЬ ТаблицаТоваров
            |ИЗ
            |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
            |ГДЕ
            |    РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
            |    И РеализацияТоваровУслугТовары.Склад В(&МассивСкладов)
            |    И НЕ(РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга))
            |                И РеализацияТоваровУслугТовары.СтатусУказанияСерий В (2, 4, 6, 8, 10))
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |    РеализацияТоваровУслугСерии.Ссылка,
            |    РеализацияТоваровУслугСерии.Склад,
            |    РеализацияТоваровУслугСерии.Количество,
            |    РеализацияТоваровУслугСерии.Количество,
            |    РеализацияТоваровУслугСерии.Номенклатура,
            |    РеализацияТоваровУслугСерии.Характеристика,
            |    ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка),
            |    РеализацияТоваровУслугСерии.Серия
            |ИЗ
            |    Документ.РеализацияТоваровУслуг.Серии КАК РеализацияТоваровУслугСерии
            |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
            |        ПО РеализацияТоваровУслугСерии.Ссылка = ТаблицаТовары.Ссылка
            |            И РеализацияТоваровУслугСерии.Номенклатура = ТаблицаТовары.Номенклатура
            |            И РеализацияТоваровУслугСерии.Характеристика = ТаблицаТовары.Характеристика
            |            И РеализацияТоваровУслугСерии.Склад = ТаблицаТовары.Склад
            |            И РеализацияТоваровУслугСерии.ДокументРезерваСерий = ТаблицаТовары.ДокументРезерваСерий
            |ГДЕ
            |    РеализацияТоваровУслугСерии.Ссылка В(&МассивОбъектов)
            |    И РеализацияТоваровУслугСерии.Склад В(&МассивСкладов)
            |    И РеализацияТоваровУслугСерии.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга))
            |
            |СГРУППИРОВАТЬ ПО
            |    РеализацияТоваровУслугСерии.Ссылка,
            |    РеализацияТоваровУслугСерии.Склад,
            |    РеализацияТоваровУслугСерии.Номенклатура,
            |    РеализацияТоваровУслугСерии.Характеристика,
            |    РеализацияТоваровУслугСерии.Серия,
            |    РеализацияТоваровУслугСерии.Количество,
            |    РеализацияТоваровУслугСерии.Количество
            |
            |ИМЕЮЩИЕ
            |    МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) В (2, 4, 6, 8, 10)
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    ТаблицаТоваров.Ссылка,
            |    ТаблицаТоваров.Склад,
            |    СУММА(ТаблицаТоваров.КоличествоУпаковок) КАК КоличествоУпаковок,
            |    СУММА(ТаблицаТоваров.Количество) КАК Количество,
            |    ТаблицаТоваров.Номенклатура,
            |    ТаблицаТоваров.Характеристика,
            |    ТаблицаТоваров.Упаковка,
            |    ВЫБОР
            |        КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
            |            ТОГДА NULL
            |        ИНАЧЕ ТаблицаТоваров.Серия
            |    КОНЕЦ КАК Серия
            |ПОМЕСТИТЬ СуммированнаяТаблицаТоваров
            |ИЗ
            |    ТаблицаТоваров КАК ТаблицаТоваров
            |
            |СГРУППИРОВАТЬ ПО
            |    ТаблицаТоваров.Ссылка,
            |    ТаблицаТоваров.Склад,
            |    ТаблицаТоваров.Номенклатура,
            |    ТаблицаТоваров.Характеристика,
            |    ТаблицаТоваров.Упаковка,
            |    ВЫБОР
            |        КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
            |            ТОГДА NULL
            |        ИНАЧЕ ТаблицаТоваров.Серия
            |    КОНЕЦ
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    ТаблицаТоваров.Ссылка КАК Ссылка,
            |    ТаблицаТоваров.Ссылка.Организация КАК Организация,
            |    ТаблицаТоваров.Ссылка.Контрагент КАК Контрагент,
            |    ТаблицаТоваров.Ссылка.Номер КАК Номер,
            |    ТаблицаТоваров.Ссылка.Дата КАК Дата,
            |    ТаблицаТоваров.Ссылка.Организация.Префикс КАК Префикс,
            |    ТаблицаТоваров.Склад КАК Склад,
            |    ВЫБОР
            |        КОГДА ТаблицаТоваров.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
            |            ТОГДА ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения)
            |        ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Упаковка.ЕдиницаИзмерения)
            |    КОНЕЦ КАК ПредставлениеЕдининицыИзмеренияУпаковки,
            |    ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
            |    ТаблицаТоваров.КоличествоУпаковок КАК КоличествоУпаковок,
            |    ТаблицаТоваров.Количество КАК Количество,
            |    ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий,
            |    ТаблицаТоваров.Номенклатура.Код КАК Код,
            |    ТаблицаТоваров.Номенклатура.Артикул КАК Артикул,
            |    ТаблицаТоваров.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
            |    ТаблицаТоваров.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
            |    ТаблицаТоваров.Номенклатура КАК Номенклатура,
            |    ТаблицаТоваров.Характеристика КАК Характеристика,
            |    ВЫБОР
            |        КОГДА ЕСТЬNULL(ТаблицаТоваров.Упаковка.Коэффициент, 1) = 1
            |            ТОГДА НЕОПРЕДЕЛЕНО
            |        ИНАЧЕ ТаблицаТоваров.Упаковка.Наименование
            |    КОНЕЦ КАК Упаковка,
            |    ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии,
            |    ВЫБОР
            |        КОГДА ТаблицаТоваров.Ссылка.ВернутьМногооборотнуюТару
            |                И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
            |            ТОГДА ИСТИНА
            |        ИНАЧЕ ЛОЖЬ
            |    КОНЕЦ КАК ЭтоВозвратнаяТара
            |ИЗ
            |    СуммированнаяТаблицаТоваров КАК ТаблицаТоваров
            |
            |УПОРЯДОЧИТЬ ПО
            |    Ссылка,
            |    Склад,
            |    Номенклатура,
            |    Характеристика
            |ИТОГИ ПО
            |    Ссылка,
            |    Склад,
            |    Номенклатура,
            |    Характеристика
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    ТаблицаТоваров.Ссылка КАК Ссылка,
            |    ТаблицаТоваров.Склад КАК Склад,
            |    ТаблицаТоваров.Номенклатура КАК Номенклатура,
            |    ТаблицаТоваров.Характеристика КАК Характеристика,
            |    ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии
            |ИЗ
            |    ТаблицаТоваров КАК ТаблицаТоваров
            |ГДЕ
            |    ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
            |    И НЕ ТаблицаТоваров.Серия ЕСТЬ NULL
            |
            |УПОРЯДОЧИТЬ ПО
            |    Ссылка,
            |    Склад,
            |    Номенклатура,
            |    Характеристика,
            |    ПредставлениеСерии";
            
            ЗапросПоТоварам.Текст     = ТекстЗапросаПоТоварам;
            РезультатЗапроса         = ЗапросПоТоварам.ВыполнитьПакет();
            ДанныеПечати             = РезультатЗапроса[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            ВыборкаПоСериям          = РезультатЗапроса[3].Выбрать();
            
        Иначе
            
            ТекстЗапросаПоТоварам =
            "ВЫБРАТЬ
            |    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
            |    РеализацияТоваровУслугТовары.Ссылка.Организация КАК Организация,
            |    РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
            |    РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
            |    РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
            |    РеализацияТоваровУслугТовары.Ссылка.Организация.Префикс КАК Префикс,
            |    РеализацияТоваровУслугТовары.Склад КАК Склад,
            |    ВЫБОР
            |        КОГДА РеализацияТоваровУслугТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
            |            ТОГДА ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения)
            |        ИНАЧЕ ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Упаковка.ЕдиницаИзмерения)
            |    КОНЕЦ КАК ПредставлениеЕдининицыИзмеренияУпаковки,
            |    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
            |    РеализацияТоваровУслугТовары.КоличествоУпаковок КАК КоличествоУпаковок,
            |    РеализацияТоваровУслугТовары.Количество КАК Количество,
            |    РеализацияТоваровУслугТовары.Номенклатура.Код КАК Код,
            |    РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
            |    РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
            |    РеализацияТоваровУслугТовары.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
            |    """" КАК ПредставлениеСерии,
            |    ВЫБОР
            |        КОГДА ЕСТЬNULL(РеализацияТоваровУслугТовары.Упаковка.Коэффициент, 1) = 1
            |            ТОГДА НЕОПРЕДЕЛЕНО
            |        ИНАЧЕ РеализацияТоваровУслугТовары.Упаковка.Наименование
            |    КОНЕЦ КАК Упаковка,
            |    ВЫБОР
            |        КОГДА РеализацияТоваровУслугТовары.Ссылка.ВернутьМногооборотнуюТару
            |                И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
            |            ТОГДА ИСТИНА
            |        ИНАЧЕ ЛОЖЬ
            |    КОНЕЦ КАК ЭтоВозвратнаяТара,
            |    NULL КАК НастройкаИспользованияСерий,
            |    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
            |    РеализацияТоваровУслугТовары.Характеристика КАК Характеристика
            |ИЗ
            |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
            |ГДЕ
            |    РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
            |    И РеализацияТоваровУслугТовары.Склад В(&МассивСкладов)
            |    И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга))
            |
            |УПОРЯДОЧИТЬ ПО
            |    Ссылка,
            |    Склад,
            |    РеализацияТоваровУслугТовары.НомерСтроки
            |ИТОГИ ПО
            |    Ссылка,
            |    Склад,
            |    Номенклатура,
            |    Характеристика";
            
            ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
            ДанныеПечати = ЗапросПоТоварам.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            
        КонецЕсли;
        
        
        ПервыйДокумент = Истина;
        
        //Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РеализацияТоваровУслуг.ПФ_MXL_РасходнаяНакладная");
          Макет = ПолучитьМакет("ПФ_MXL_РасходнаяНакладная");
        ШиринаОтсутствующихОбластей = 0;
        Если НЕ ВыводитьКоды Тогда
            ШиринаОтсутствующихОбластей = Макет.Область("КолонкаКодов").ШиринаКолонки;
        КонецЕсли;
        
        Если Не ИспользоватьУпаковки Тогда
            
            ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей + Макет.Область("КолонкаКоличестваУпаковок").ШиринаКолонки;
            ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей + Макет.Область("КолонкаПредставленияУпаковок").ШиринаКолонки;
            
        КонецЕсли;
        
        // Раздвинуть колонку "КолонкаТоваров" на ширину отсутствующих областей
        Макет.Область("КолонкаТоваров").ШиринаКолонки = Макет.Область("КолонкаТоваров").ШиринаКолонки + ШиринаОтсутствующихОбластей;
        
        РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, Представление");

        Пока ДанныеПечати.Следующий() Цикл
            
            ИндексМассиваПроверки = МассивПроверки.Найти(ДанныеПечати.Ссылка);
            Если ИндексМассиваПроверки <> Неопределено Тогда
                МассивПроверки.Удалить(ИндексМассиваПроверки);
            КонецЕсли;
            
            // Для печати комплектов
            Если КомплектыПечати <> Неопределено И КомплектыПечати.Колонки.Найти("Ссылка") <> Неопределено Тогда
                КомплектПечатиПоСсылке = КомплектыПечати.Найти(ДанныеПечати.Ссылка,"Ссылка");
                Если КомплектПечатиПоСсылке = Неопределено Тогда
                    КомплектПечатиПоСсылке = КомплектыПечати[0];
                КонецЕсли;
                Если КомплектПечатиПоСсылке.Экземпляров = 0 Тогда
                    Продолжить
                КонецЕсли;
            КонецЕсли;
            
            НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
            
            ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ДанныеПечати);
            
            ВыборкаПоСкладам1 = ДанныеПечати.Выбрать();
            КоличествоРеальныхСкладов=0;
            //ВыборкаПоСкладам.Сбросить();
            Пока ВыборкаПоСкладам1.Следующий() Цикл //Цикл1
                Если ВыборкаПоСкладам1.Склад<>справочники.Склады.ПустаяСсылка() тогда
                     КоличествоРеальныхСкладов = КоличествоРеальныхСкладов+1;
                     КонецЕсли;
                 КонецЦикла;
                
                 ВыборкаПоСкладам = ДанныеПечати.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаПоСкладам.Следующий() Цикл //Цикл2
                Если КоличествоРеальныхСкладов<>0 Тогда
                    Если  ВыборкаПоСкладам.Склад=справочники.Склады.ПустаяСсылка() тогда
                        Продолжить;
                    КонецЕсли;
                    КонецЕсли;
                Если Не ПервыйДокумент Тогда
                    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                КонецЕсли;
                
                ПервыйДокумент = Ложь;
                
                Область = Макет.ПолучитьОбласть("Заголовок");
                СтруктураДанныхЗаголовок = Новый Структура;
                СтруктураДанныхЗаголовок.Вставить("ТекстЗаголовка", НСтр("ru='Расходная накладная'"));
                ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, Область, ДанныеПечати.Ссылка);
                Область.Параметры.Заполнить(СтруктураДанныхЗаголовок);
                ТабличныйДокумент.Вывести(Область);
                
                Область = Макет.ПолучитьОбласть("Шапка");
                СтруктураДанныхШапка = Новый Структура;
                СтруктураДанныхШапка.Вставить("ПредставлениеРаспоряжения", ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, НСтр("ru='Реализация товаров'")));
                                Если КоличествоРеальныхСкладов<>0 Тогда
                СтруктураДанныхШапка.Вставить("Склад", ВыборкаПоСкладам.Склад);
                СтруктураДанныхШапка.Вставить("ПредставлениеСклада", ВыборкаПоСкладам.Склад);
            Иначе
                //СтруктураДанныхШапка.Вставить("Склад", ПолучитьСклад(ВыборкаПоСкладам.ссылка));
                //СтруктураДанныхШапка.Вставить("ПредставлениеСклада", ПолучитьСклад(ВыборкаПоСкладам.ссылка));

                КонецЕсли;
                Область.Параметры.Заполнить(СтруктураДанныхШапка);
                ТабличныйДокумент.Вывести(Область);
                
                Область = Макет.ПолучитьОбласть("Поставщик");
                СтруктураДанныхПоставщик = Новый Структура;
                СтруктураДанныхПоставщик.Вставить("ПредставлениеОрганизации",
                    ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Организация, ВыборкаПоСкладам.Дата),
                        "ПолноеНаименование"));
                СтруктураДанныхПоставщик.Вставить("Организация", ВыборкаПоСкладам.Организация);
                Область.Параметры.Заполнить(СтруктураДанныхПоставщик);
                ТабличныйДокумент.Вывести(Область);
                
                Область = Макет.ПолучитьОбласть("Покупатель");
                СтруктураДанныхПокупатель = Новый Структура;
                СтруктураДанныхПоставщик.Вставить("ПредставлениеПартнера",
                    ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Контрагент, ВыборкаПоСкладам.Дата),
                        "ПолноеНаименование"));
                СтруктураДанныхПоставщик.Вставить("Контрагент", ВыборкаПоСкладам.Контрагент);
                Область.Параметры.Заполнить(СтруктураДанныхПоставщик);
                ТабличныйДокумент.Вывести(Область);
                
                Область = Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки");
                ТабличныйДокумент.Вывести(Область);
                Если ВыводитьКоды Тогда
                    Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
        &nb
14 RomaH
 
naïve
26.03.15
12:20
(9) да, ибо рукож.пые могут обидеться
15 RomaH
 
naïve
26.03.15
12:21
(12) зря ты это сказал
16 GROOVY
 
26.03.15
12:21
Ехал цикл через цикл
Видит цикл в цикле цикл
Сунул цикл цикл в цикл
Цикл цикл цикл цикл
17 1976vas
 
26.03.15
12:22
(15) + Анализируй теперь))
18 breezee
 
26.03.15
12:22
(15) Что зря? Я запутался
19 RomaH
 
naïve
26.03.15
12:24
позволю предположить - выполняется не тот код, что показывается в отладчике
ну либо (18)
20 GROOVY
 
26.03.15
12:25
НайтиСледующий ищет с текущей позиции и далее, если выборку не сбрасывать, то нужно быть на 100% уверенным, что результат запроса отсортирован в соответствии с ключем поиска.
21 RomaH
 
naïve
26.03.15
12:25
(0) перезагрузи компьютер и сервер ... ну в общем все перезагрузи
22 breezee
 
26.03.15
12:29
(19) Как может выполняться не тот код что в отладчике? Такое вообще возможно? (20) Не понял, прости, в общем у меня выборка идет по всем. я просто выбрал все результаты .выбрать() из текста запроса, в котором до этого был отбор и по получившейся выборке идет цикл, но почему он вдруг перескакивает - не понятно.
23 alex_shkut
 
26.03.15
12:30
ТС, Вы с Nolan не одно лицо?
24 breezee
 
26.03.15
12:31
(23) Неа
25 kosts
 
26.03.15
12:31
(22) >Как может выполняться не тот код что в отладчике?
Бывает. 1-е это ты поменял модуль после запуска отладки. Второе заглючил кэш. Очисти кэш и запусти запусти программу снова.
26 1976vas
 
26.03.15
12:31
(23) Вряд ли, Nolan теперь спец по запросам...
27 kosts
 
26.03.15
12:33
(25) И третье. Программа работает так, как она написана, а не так как мы думаем, как она должна работать.
28 Garykom
 
гуру
26.03.15
12:37
(13) взять эту длинную кривую простынку и... поделить на 10+ функций/процедур (каждая с определенным функционалом)

будет понятнее намного и легче править/искать ошибки
29 breezee
 
26.03.15
12:40
Может посмотрите саму обработку? Сюда закинул. http://rghost.ru/7nsm62kYr  Мне кажется что выходить может если заканчиваются объекты цикла, на след. итерации новые объекты, значит перед этим была другая выборка. Ничерта не могу разобраться. Может кто знает как проще это сделать? мне просто в расходную накладную добавить услуги. Сейчас я изменил запросы чтобы выбирались и услуги, ищу склады без названия(где якобы хранятся услуги), если больше 1 склада - идет печать с дополненными услугами строками, иначе обычная. Все было проще когда все печати были дополненными, но так не формировалась печать из просто услуг. (28) Да там цикл на цикле, не могу нормально её разбить.
30 Garykom
 
гуру
26.03.15
12:40
(28)+ а то дурдом "ЗапросПоСкладам" внутри перед выполнением запроса какая то внешняя хрень "МассивПроверки"

потом идет совершенно отдельный "ЗапросПоТоварам" и т.д.


т.е. подели все это на короткие вменяемые куски
31 sheo28
 
26.03.15
12:41
Может не в тему, но предположу, в табло отладки нет случайно выражения типа: ВыборкаПоСкладам1.Следующий() или ВыборкаПоСкладам.Следующий()
32 breezee
 
26.03.15
12:43
(30) Это вообще в типовом было, ВыборкаПоСкладам1.Следующий()  значение истина
33 Garykom
 
гуру
26.03.15
12:45
(29) циклы никакого отношения к разделению не имеют...точнее как раз с циклами и делить проще

у тя например какого в одной хрени "Если ИспользованиеСерий.ИспользоватьСерииНоменклатуры Тогда"
...запрос1...
Иначе
...запрос2(почти как запрос1)...
КонецЕсли"
?

делаешь функцию СформироватьТекстЗапроса() в которой вызывается еще 2 функции )) ТекстЗапросаПоСериям() и ТекстЗапросаБезСерий() ...
34 Garykom
 
гуру
26.03.15
12:46
(32) "не верю" - но легко может быть что и было в типовом ))
35 sheo28
 
26.03.15
12:48
(32) Нельзя, нельзя в табло Следующий() ставить, прыгает все при переходе по строкам
36 breezee
 
26.03.15
12:48
(31) Посмотрел у значения ВыборкаПоСкладам1, там 1 склад стоит а все остальные <> он стоит первым и не понятно почему не выводит
37 alex_shkut
 
26.03.15
12:49
КонецЕсли; ////Цикл2 вместо КонецЦикла может так?
38 alex_shkut
 
26.03.15
12:52
(16) Точно описал проблему :)
39 breezee
 
26.03.15
13:05
Ладно, всем спасибо, начальник сказал делать другую форму, а эту не делать, там сделать все тоже самое. Может через пару дней опять создам тему, хотя, все же надеюсь что сам додумаюсь как сделать
40 alex_shkut
 
26.03.15
13:18
(39) смотри (37) у тебя там незакрытый цикл