Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Вычисление значений в Документе 1С по формулам  (Прочитано 45341 раз)
0 Пользователей и 1 Гость смотрят эту тему.
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #30 : 11-09-2009 07:55 » 

Подскажите, пожалуйста, у меня фактически код отчета готов, но есть одна проблема: у меня не выводятся данные, если я ставлю РегистрНакопления.Цэх.ОстаткиИОбороты или РегистрНакопления.Цэх.Остатки или РегистрНакопления.Цэх.Обороты, а вот когда ставлю РегистрНакопления.Цэх, тогда выводятся данные, но не за определенную дату, а все даты с проводками.


код процедуры:

Процедура КнопкаСформироватьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   Запрос= новый запрос;
   Запрос.Текст=
    "ВЫБРАТЬ
    |   Цэх.Пользователь КАК Пользователь,
    |   Цэх.Смена КАК Смена,
    |   Цэх.Сторона КАК Сторона,
    |   Цэх.Сырье КАК Сырье,
    |   Цэх.Регистратор КАК Регистратор,
    |   СУММА(Цэх.x) КАК x,
    |   СУММА(Цэх.x1) КАК x1,
    |   СУММА(Цэх.x2) КАК x2,
    |   СУММА(Цэх.Aat) КАК Aat,
    |   СУММА(Цэх.Mm) КАК Mm,
    |   СУММА(Цэх.K2) КАК K2,
    |   СУММА(Цэх.Mst) КАК Mst,
    |   СУММА(Цэх.Ast) КАК Ast,
    |   СУММА(Цэх.x3) КАК x3,
    |   СУММА(Цэх.x4) КАК x4,
    |   СУММА(Цэх.x5) КАК x5,
    |   СУММА(Цэх.x7) КАК x7,
    |   СУММА(Цэх.x6) КАК x6,
    |   СУММА(Цэх.x8) КАК x8,
    |   СУММА(Цэх.x9) КАК x9,
    |   СУММА(Цэх.x10) КАК x10,
    |   СУММА(Цэх.x14) КАК x14
    |ИЗ
    |   РегистрНакопления.Цэх КАК Цэх
    |
    |СГРУППИРОВАТЬ ПО
    |   Цэх.Пользователь,
    |   Цэх.Сырье,
    |   Цэх.Сторона,
    |   Цэх.Смена,
    |   Цэх.Регистратор
    |
    |УПОРЯДОЧИТЬ ПО
    |   Пользователь,
    |   Смена,
    |   Сторона,
    |   Сырье,
    |   Регистратор
    |ИТОГИ
    |   СУММА(x),
    |   СУММА(x1),
    |   СУММА(x2),
    |   СУММА(Aat),
    |   СУММА(Mm),
    |   СУММА(K2),
    |   СУММА(Mst),
    |   СУММА(Ast),
    |   СУММА(x3),
    |   СУММА(x4),
    |   СУММА(x5),
    |   СУММА(x7),
    |   СУММА(x6),
    |   СУММА(x8),
    |   СУММА(x9),
    |   СУММА(x10),
    |   СУММА(x14)
    |ПО
    |   Пользователь,
    |   Смена,
    |   Сторона,
    |   Сырье,
    |   Регистратор
    |АВТОУПОРЯДОЧИВАНИЕ";
   Запрос.УстановитьПараметр("НачалоПериода", НачПериода);
   Запрос.УстановитьПараметр("КонецПериода", КонПериода);
   Результат=Запрос.Выполнить();
   Выборка=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   темп = новый ТабличныйДокумент;
    ТабДок=ЭтотОбъект.ПолучитьМакет("Макет");
   ОбластьМаркеровка=ТабДок.ПолучитьОбласть("Маркеровка");
   Темп.Вывести(ОбластьМаркеровка);
   ОбластьПериод=ТабДок.ПолучитьОбласть("Период");
   ОбластьПериод.Параметры.Период=" Период с "+НачПериода+" по "+КонПериода;
   Темп.Вывести(ОбластьПериод);
   
ОбластьОтступ=ТабДок.ПолучитьОбласть("Отступ");
   
   
   пока выборка.Следующий() цикл
   ОбластьПользователь=ТабДок.ПолучитьОбласть("Пользователь");
   ОбластьПользователь.Параметры.Пользователь=Выборка.Пользователь;
   Темп.Вывести(ОбластьПользователь);
   ВыборкаСмена=Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   пока ВыборкаСмена.Следующий() цикл
   ОбластьСмена=ТабДок.ПолучитьОбласть("Смена ");
   ОбластьСмена.Параметры.Смена=ВыборкаСмена.Смена;
   Темп.Вывести(ОбластьСмена);
   ВыборкаСторона=ВыборкаСмена.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
      пока ВыборкаСторона.Следующий() цикл
      ОбластьСторона=ТабДок.ПолучитьОбласть("Сторона");
      ОбластьСторона.Параметры.Сторона=ВыборкаСторона.Сторона;
      Темп.Вывести(ОбластьСторона);
      ВыборкаСырье=ВыборкаСторона.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      
      пока выборкаСырье.Следующий() цикл
         областьСырье=ТабДок.ПолучитьОбласть("Сырье");
         ОбластьСырье.Параметры.Сырье=ВыборкаСырье.Сырье;
         темп.Вывести(ОбластьСырье);
         ВыборкаРегистратор=ВыборкаСырье.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
         
         ОбластьОписание=ТабДок.ПолучитьОбласть("Описание");
         Темп.Вывести(ОбластьОписание);

               пока выборкаРегистратор.Следующий() цикл
               если ВыборкаРегистратор.Регистратор<>Неопределено тогда
                   ОбластьРегистратор=ТабДок.ПолучитьОбласть("Регистратор");
                   ОбластьРегистратор.Параметры.x=ВыборкаРегистратор.x;
                   ОбластьРегистратор.Параметры.x1=ВыборкаРегистратор.x1;                  
                   ОбластьРегистратор.Параметры.x2=ВыборкаРегистратор.x2;
                   ОбластьРегистратор.Параметры.Aat=ВыборкаРегистратор.Aat;
                   ОбластьРегистратор.Параметры.Mm=ВыборкаРегистратор.Mm;
                   ОбластьРегистратор.Параметры.K2=ВыборкаРегистратор.K2;
                   ОбластьРегистратор.Параметры.Mst=ВыборкаРегистратор.Mst;
                   ОбластьРегистратор.Параметры.Ast=ВыборкаРегистратор.Ast;
                   ОбластьРегистратор.Параметры.x3=ВыборкаРегистратор.x3;
                   ОбластьРегистратор.Параметры.x4=ВыборкаРегистратор.x4;
                   ОбластьРегистратор.Параметры.x5=ВыборкаРегистратор.x5;
                   ОбластьРегистратор.Параметры.x6=ВыборкаРегистратор.x6;
                   ОбластьРегистратор.Параметры.x7=ВыборкаРегистратор.x7;
                   ОбластьРегистратор.Параметры.x8=ВыборкаРегистратор.x8;
                   ОбластьРегистратор.Параметры.x9=ВыборкаРегистратор.x9;
                   ОбластьРегистратор.Параметры.x10=ВыборкаРегистратор.x10;
                   ОбластьРегистратор.Параметры.x14=ВыборкаРегистратор.x14;
                   ОбластьРегистратор.Параметры.Дата=ВыборкаРегистратор.Регистратор.Дата;
                   Темп.Вывести(ОбластьРегистратор);
                конецесли;
   темп.Вывести(ОбластьОтступ);
               
   
конеццикла;               
   конеццикла;
      конеццикла;
         конеццикла;   
      конеццикла;
      
   ТабФорма=Отчеты.Цэх.ПолучитьФорму("ФормаТаблицы");
   ТабФорма.Открыть();
   ТабФорма.ЭлементыФормы.Результат.Вывести(Темп);
      
КонецПроцедуры

* отчет.JPG (118.74 Кб - загружено 804 раз.)
« Последнее редактирование: 24-09-2009 06:39 от Sel » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #31 : 11-09-2009 09:23 » 

Ну а собственно где у тебя в запросе ограничение по дате?
Попробуй добавить такую строку:
    |ИЗ
    |   РегистрНакопления.Цэх КАК Цэх
    |
    |ГДЕ
    |   Цэх.Период МЕЖДУ &НачалоПериода И &КонецПериода
    |
    |СГРУППИРОВАТЬ ПО
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #32 : 11-09-2009 09:37 » 

выдало ошибку

* ошибка.JPG (91.96 Кб - загружено 830 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #33 : 11-09-2009 10:10 » 

Пробел перед Между
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #34 : 11-09-2009 10:27 » 

Извини, забыл поставить.
И еще такое: когда выставляю период с 11,09,2009 по 11,09,2009, фактически ничего не выводится, так как берется еще плюс время 11.09.2009 0:00:00 по 11.09.2009 0:00:00. Как избавиться от времени (от 0:00:00), чтобы выдавало за день, или только надо ставить с 11.09.2009 по 12.09.2009 чтобы выводился день?
« Последнее редактирование: 24-09-2009 06:41 от Sel » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #35 : 11-09-2009 11:37 » 

В 1С 8.Х нет типа Дата в чистом виде - есть ДатаВремя (Timestamp), потому нужно указывать период с секундами
   Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачПериода));
   Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонПериода));
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #36 : 11-09-2009 12:23 » 

я немного переделал строку

 |ГДЕ
 |   Цэх.Период Между &НачалоДня И &КонецДня
 |

а так же сам запрос с доработкой и получилось

Запрос.УстановитьПараметр("НачалоДня", НачалоДня(НачПериода));
     Запрос.УстановитьПараметр("КонецДня", КонецДня(КонПериода));
   Результат=Запрос.Выполнить();
   Выборка=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   темп = новый ТабличныйДокумент;
    ТабДок=ПолучитьМакет("Макет");
   ОбластьМаркеровка=ТабДок.ПолучитьОбласть("Маркеровка");
   Темп.Вывести(ОбластьМаркеровка);
   ОбластьПериод=ТабДок.ПолучитьОбласть("Период");
   ОбластьПериод.Параметры.Период=" Период с "+Формат(НачПериода,"ДЛФ=DD")+" по "+Формат(КонПериода,"ДЛФ=DD");
   Темп.Вывести(ОбластьПериод);


большое спасибо за помощь    Улыбаюсь)))
теперь выводится информация за определенный день без учета времени
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #37 : 24-09-2009 06:27 » new

по поводу вывода времени проведения анализа во втором запросе у меня выдает ошибку "{Отчет.ОбщийОтчетПоРВОПОИМЭЦ.Форма.ФормаОтчета(182)}: Значение не является значением объектного типа (Дата)
   ОбластьРегистратор1.Параметры.Дата=ВыборкаРегистратор.Регистратор.Дата;"

что не хватает в коде?

код процедуры:

Процедура КнопкаСформироватьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   Запрос= новый запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |   ЦэхРВОИПО.Смена КАК Смена,
   |   ЦэхРВОИПО.Бригада КАК Бригада,
   |   ЦэхРВОИПО.Регистратор КАК Регистратор,   
   |   ЦэхРВОИПО.Сторона КАК Сторона,
   |   ЦэхРВОИПО.Пользователь КАК Пользователь,
   |   ЦэхРВОИПО.Сырье КАК Сырье,
   |   СУММА(ЦэхРВОИПО.W1) КАК W1,
   |   СУММА(ЦэхРВОИПО.W) КАК W,
   |   СУММА(ЦэхРВОИПО.W2) КАК W2,
   |   СУММА(ЦэхРВОИПО.W3) КАК W3,
   |   СУММА(ЦэхРВОИПО.W4) КАК W4,
   |   СУММА(ЦэхРВОИПО.M3) КАК M3,
   |   СУММА(ЦэхРВОИПО.M4) КАК M4,
   |   СУММА(ЦэхРВОИПО.X) КАК X,
   |   СУММА(ЦэхРВОИПО.X1) КАК X1,
   |   СУММА(ЦэхРВОИПО.X2) КАК X2,
   |   СУММА(ЦэхРВОИПО.X3) КАК X3,
   |   СУММА(ЦэхРВОИПО.X4) КАК X4,
   |   СУММА(ЦэхРВОИПО.X5) КАК X5,
   |   СУММА(ЦэхРВОИПО.Y) КАК Y
   |ИЗ
   |   РегистрНакопления.ЦэхРВОИПО КАК ЦэхРВОИПО
   |ГДЕ
   |   ЦэхРВОИПО.Период МЕЖДУ &НачалоДня И &КонецДня
   |
   |СГРУППИРОВАТЬ ПО
   |   ЦэхРВОИПО.Смена,   
   |   ЦэхРВОИПО.Бригада,
   |   ЦэхРВОИПО.Регистратор,
   |   ЦэхРВОИПО.Сторона,
   |   ЦэхРВОИПО.Пользователь,
   |   ЦэхРВОИПО.Сырье
   |
   |УПОРЯДОЧИТЬ ПО
   |   Смена,
   |   Бригада,
   |   Регистратор,
   |   Сторона,
   |   Пользователь,
   |   Сырье
   |ИТОГИ
   |   СУММА(W1),
   |   СУММА(W),
   |   СУММА(W2),
   |   СУММА(W3),
   |   СУММА(W4),
   |   СУММА(M3),
   |   СУММА(M4),
   |   СУММА(X),
   |   СУММА(X1),
   |   СУММА(X2),
   |   СУММА(X3),
   |   СУММА(X4),
   |   СУММА(X5),
   |   СУММА(Y)
   |ПО
   |   Смена,
   |   Бригада,
   |   Регистратор,   
   |   Сторона,
   |   Пользователь,
   |   Сырье
   |АВТОУПОРЯДОЧИВАНИЕ";
   
   Запрос.УстановитьПараметр("НачалоДня", НачалоДня(НачПериода));
     Запрос.УстановитьПараметр("КонецДня", КонецДня(КонПериода));
   Результат=Запрос.Выполнить();
   Выборка=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   темп = новый ТабличныйДокумент;
    ТабДок=ПолучитьМакет("Макет");
   
   Пока Выборка.Следующий() цикл
   ОбластьДанные=ТабДок.ПолучитьОбласть("Данные");
   ОбластьДанные.Параметры.Смена=Выборка.Смена;
   Темп.Вывести(ОбластьДанные);
   ВыборкаСводка=Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   областьПро=ТабДок.ПолучитьОбласть("Про");
   темп.Вывести(ОбластьПро);
   
   Пока ВыборкаСводка.Следующий() цикл
   ОбластьСводка=ТабДок.ПолучитьОбласть("Сводка");
   ОбластьСводка.Параметры.Период=" Период с "+Формат(НачПериода,"ДЛФ=DD")+" по "+Формат(КонПериода,"ДЛФ=DD");
   ОбластьСводка.Параметры.Бригада=ВыборкаСводка.Бригада;
   Темп.Вывести(ОбластьСводка);
    ВыборкаРегистратор=ВыборкаСводка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   ОбластьНаименование=ТабДок.ПолучитьОбласть("Наименование");
   темп.Вывести(ОбластьНаименование);
   
   Пока ВыборкаРегистратор.Следующий() цикл
   если ВыборкаРегистратор.Регистратор<>Неопределено тогда
   ОбластьРегистратор=ТабДок.ПолучитьОбласть("Регистратор");
   ОбластьРегистратор.Параметры.Дата=ВыборкаРегистратор.Регистратор.Дата;
   Темп.Вывести(ОбластьРегистратор);
   конецесли;
   
         конеццикла;
   конеццикла;
конеццикла;
   
      
   Запрос= новый запрос;
   Запрос.Текст=
    "ВЫБРАТЬ
    |   ЦэхЭкстракции.Регистратор КАК Регистратор,
    |   СУММА(ЦэхЭкстракции.W) КАК W,
    |   СУММА(ЦэхЭкстракции.X) КАК X,
    |   СУММА(ЦэхЭкстракции.M1) КАК M1,
    |   СУММА(ЦэхЭкстракции.Z) КАК Z,
    |   СУММА(ЦэхЭкстракции.Y) КАК Y,
    |   СУММА(ЦэхЭкстракции.A) КАК A,
    |   СУММА(ЦэхЭкстракции.x1) КАК x1,
    |   СУММА(ЦэхЭкстракции.x2) КАК x2,
    |   СУММА(ЦэхЭкстракции.x3) КАК x3,
    |   СУММА(ЦэхЭкстракции.x5) КАК x5,
    |   СУММА(ЦэхЭкстракции.x6) КАК x6,
    |   СУММА(ЦэхЭкстракции.x10) КАК x10,
    |   СУММА(ЦэхЭкстракции.x8) КАК x8,
    |   СУММА(ЦэхЭкстракции.x9) КАК x9,
    |   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЦэхЭкстракции.OEP) КАК OEP,
    |   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЦэхЭкстракции.qqq) КАК qqq,
    |   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЦэхЭкстракции.qqqq) КАК qqqq,
    |   СУММА(ЦэхЭкстракции.qwe) КАК qwe,
    |   СУММА(ЦэхЭкстракции.qwq) КАК qwq,
    |   СУММА(ЦэхЭкстракции.wqq) КАК wqq,
    |   СУММА(ЦэхЭкстракции.wwq) КАК wwq
    |ИЗ
    |   РегистрНакопления.ЦэхЭкстракции КАК ЦэхЭкстракции
    |ГДЕ
    |   ЦэхЭкстракции.Период МЕЖДУ &НачалоДня И &КонецДня
    |
    |СГРУППИРОВАТЬ ПО
    |   ЦэхЭкстракции.Регистратор
    |
    |УПОРЯДОЧИТЬ ПО
    |   Регистратор
    |ИТОГИ
    |   СУММА(W),
    |   СУММА(X),
    |   СУММА(M1),
    |   СУММА(Z),
    |   СУММА(Y),
    |   СУММА(A),
    |   СУММА(x1),
    |   СУММА(x2),
    |   СУММА(x3),
    |   СУММА(x5),
    |   СУММА(x6),
    |   СУММА(x10),
    |   СУММА(x8),
    |   СУММА(x9),
    |   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ OEP),
    |   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ qqq),
    |   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ qqqq),
    |   СУММА(qwe),
    |   СУММА(qwq),
    |   СУММА(wqq),
    |   СУММА(wwq)
    |ПО
    |   Регистратор
    |АВТОУПОРЯДОЧИВАНИЕ";
 
 
    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(НачПериода));
     Запрос.УстановитьПараметр("КонецДня", КонецДня(КонПериода));
   Результат=Запрос.Выполнить();
   Выборка=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        ОбластьДанные1=ТабДок.ПолучитьОбласть("Данные1");
   темп.Вывести(ОбластьДанные1);
   ОбластьСводка1=ТабДок.ПолучитьОбласть("Сводка1");
   темп.Вывести(ОбластьСводка1);
   
   пока выборка.Следующий() цикл
   ОбластьРегистратор1=ТабДок.ПолучитьОбласть("Регистратор1");
   ОбластьРегистратор1.Параметры.Дата=ВыборкаРегистратор.Регистратор.Дата;
   темп.Вывести(ОбластьРегистратор1);
      
конеццикла;
 
 
    ТабФорма=Отчеты.ОбщийОтчетПоРВОПОИМЭЦ.ПолучитьФорму("ФормаТаблицы");
   ТабФорма.Открыть();
   ТабФорма.ЭлементыФормы.Результат.Вывести(Темп);

   
КонецПроцедуры

Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines