Имя: Пароль:
1C
1С v8
опять запрос
0 Domanoff26
 
21.10.11
10:43
есть запросик
   Запрос = Новый Запрос;
   Запрос.Текст =   "ВЫБРАТЬ
                    |    УчетТоваров.Период КАК Период,
                    |    УчетТоваров.Регистратор КАК Регистратор,
                    |    УчетТоваров.ВидДвижения,
                    |    УчетТоваров.Номенклатура КАК Номенклатура,
                    |    УчетТоваров.ХарактеристикаНоменклатуры,
                    |    УчетТоваров.Заказ КАК ВнутреннийЗаказ,
                    |    УчетТоваров.СерияНоменклатуры,
                    |    УчетТоваров.Количество КАК Количество,
                    |    УчетТоваров.Заказ.РазделКВ КАК РазделКВ,
                    |    УчетТоваров.Заказ.Заказчик КАК Заказчик,
                    |    УчетТоваров.Номенклатура.ЕдиницаХраненияОстатков КАК ЕденицаИзмерения
                    |ИЗ
                    |    РегистрНакопления.УчетТоваров КАК УчетТоваров
                    |ГДЕ
                    |    УчетТоваров.Заказ ССЫЛКА Документ.ВнутреннийЗаказ
                    |    И УчетТоваров.Регистратор = &Регистратор
                    |
                    |УПОРЯДОЧИТЬ ПО
                    |    Период
                    |ИТОГИ
                    |    СУММА(Количество)
                    |ПО
                    |    Номенклатура,
                    |    ВнутреннийЗаказ" ;
   
       Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Отбор.Регистратор.Значение);
   //  НачатьТранзакцию();              
   
   Результат = Запрос.Выполнить();
   ВыборкаНом  = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   ВыборкаЗак =   ВыборкаНом.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

сначало я обойду по последней группировке и если не ноль, сделаю записи в регистр  через ЗаполнитьЗначенияСвойств, но нужно еще делать записи в этот регистр когда группировка нулевая,(соответственно буду обходить внутри группировки)но Только тогда КОГДА в группировке две записи (это всегда вообщем будет если она нулевая) и одна с кол>0  размещением  типа1, а другая с кол>0 с размещением типа2, НЕ ПОЙМУ ГДЕ И КАК МНЕ НАКЛАДЫВАТЬ ЭТИ УСЛОВИЯ
1 salvator
 
21.10.11
10:44
Счетчик?
2 MatrosoV AleXXXand_R
 
21.10.11
10:45
Что-то я ничего не понял
3 Domanoff26
 
21.10.11
10:49
это будет дальше
   НаборЗаписей = РегистрыНакопления.ВнутренниеЗаказы.СоздатьНаборЗаписей();
   НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект);
   НаборЗаписей.Прочитать();
   
   Пока ВыборкаЗак.Следующий() Цикл
       НоваяЗапись = НаборЗаписей.Добавить();
       ЗаполнитьЗначенияСвойств(НоваяЗапись, ВыборкаЗак);
       НоваяЗапись.СтатусПартии = Перечисления.СтатусыПартийТоваров.Купленный;

   КонецЦикла;
   
   Выборка = ВыборкаЗак.Выбрать(ОбходРезультатаЗапроса.Прямой);
   Пока Выборка.Следующий() ЦИкл
               .....(??????????
       НоваяЗапись = НаборЗаписей.Добавить();
       ЗаполнитьЗначенияСвойств(НоваяЗапись, ВыборкаЗак);
       НоваяЗапись.СтатусПартии = Перечисления.СтатусыПартийТоваров.Купленный;
   КонецЦикла;
4 Domanoff26
 
21.10.11
10:50
(1)Это например?
5 Domanoff26
 
21.10.11
10:56
Размещение это измерение , щас добавлю
6 Domanoff26
 
21.10.11
11:05
Пока ВыборкаЗак.Следующий() Цикл
       НоваяЗапись = НаборЗаписей.Добавить();
       ЗаполнитьЗначенияСвойств(НоваяЗапись, ВыборкаЗак);
       НоваяЗапись.СтатусПартии = Перечисления.СтатусыПартийТоваров.Купленный;


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

   Попытка
       
       НаборЗаписей.Записать();
       
   Исключение
       //Сообщить(ВыборкаРегистратор.РегистраторПредставление);
       Сообщить(ОписаниеОшибки());
       //Предупреждение("Ошибка!");
       //ОтменитьТранзакцию();
       //Возврат;
   КонецПопытки;


как то коряво(
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс