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

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

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

« : 12-08-2009 08:50 » 

Есть набор формул, по которым должны вычисляться значения в Документе 1С, каким образом реализовать алгоритм вычисления?
Например, есть формула W=(Q1-Q2)*100/Q1-Q где Q - вес пустой емкости, Q1 - вес с навеской до высушивания емкости, Q2 - вес с навеской после высушивания емкости.
Как сделать, чтобы значения с "Поле ввода" подставлялись в формулу?
« Последнее редактирование: 13-09-2009 10:13 от Sel » Записан
Dest
Опытный

ru
Offline Offline

« Ответ #1 : 12-08-2009 10:50 » 

Q - вес пустой емкости, Q1 - вес с навеской до высушивания емкости, Q2 - вес с навеской после высушивания емкости.
Делаешь их реквизитами формы, или реквизитами документа. Потом создаешь три поля ввода и в свойствах "Источник"  указываешь, по очереди каждый из параметров

* Безымянный.jpg (92.64 Кб - загружено 1116 раз.)
« Последнее редактирование: 12-08-2009 10:53 от Dest » Записан
staff
Помогающий

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

« Ответ #2 : 12-08-2009 11:00 » 

ну а код для вычисления как построить?
Записан
Dest
Опытный

ru
Offline Offline

« Ответ #3 : 12-08-2009 11:08 » 

Создаешь кнопку. Создаешь обработчик события "Нажатие" этой кнопки. Потом появляется в модуле формы процедура = там набираешь

W=(Q1-Q2)*100/Q1-Q ;
сообщить(W);



Код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
W=(Q1-Q2)*100/Q1-Q ;
сообщить(W);

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

* Безымянный2.jpg (62.75 Кб - загружено 1130 раз.)
Записан
staff
Помогающий

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

« Ответ #4 : 14-08-2009 05:09 » 

еще у меня в Форма Документа находится несколько закладок, как сделать что бы информация по расчетам при нажатии кнопки ОК (Записать и Закрыть) сохранялися, так как на данный момент при нажатии ОК записывается только одно значение с первой закладки, а не со всех???
Записан
Dest
Опытный

ru
Offline Offline

« Ответ #5 : 16-08-2009 05:04 » 

А те значения, которые не записываются - это реквизиты документа? Или что?
Записан
staff
Помогающий

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

« Ответ #6 : 31-08-2009 07:55 » 

необходима помощь в формировании отчета в которых принимают участие формулы для расчета
Записан
staff
Помогающий

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

« Ответ #7 : 31-08-2009 08:04 » 

есть Документ -> ЦэхЭкстракции в котором все вычисления делаются по формулам расчета, данные отображаются так же в РегистрНакопления ->  ЦэхЭкстракции, на данный момент составляю отчет в котором присущи все показатели и щас загвоздка, как сделать так что бы результаты расчетов анализа отображались в отчете
Записан
Kivals
Модератор

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

WWW
« Ответ #8 : 31-08-2009 08:16 » 

Тебе в отчет нужно вывести данные регистра накопления?
Попробуй воспользоваться конструктором отчета http://v8.1c.ru/overview/dcs_sample_report.htm
Записан
staff
Помогающий

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

« Ответ #9 : 31-08-2009 08:19 » 

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

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

« Ответ #10 : 31-08-2009 08:36 » 

вопрос, если мне не надо вычислять остатки а просто что бы формировались данные последовательно какой надо выбрать тип РегистрыОстаткиИОбороты, РегистыОбороты или РегистрыОстатки?Не понял
Записан
Kivals
Модератор

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

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

Если нужны движения за определенный период (по определенному документу) - тогда РегистрыНакопленияОбороты
Записан
staff
Помогающий

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

« Ответ #12 : 31-08-2009 10:04 » 

сделал все какда давалось по ссылке и получилось вот такое

* test.PNG (15.49 Кб - загружено 1065 раз.)
Записан
staff
Помогающий

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

« Ответ #13 : 31-08-2009 10:06 » 

а хотелось что бы на против полей период, пользователь, смена, сторона, сырье стояли значения, а буквенные значения с результатами анализов находились ниже и без подпунктов
Записан
Kivals
Модератор

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

WWW
« Ответ #14 : 31-08-2009 10:38 » 

Поиграйся с параметрами конструктора - там сногое можно менять... Я пока не могу вникнуть что же ты хочешь получить Жаль
Записан
staff
Помогающий

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

« Ответ #15 : 31-08-2009 11:11 » 

хотелось бы что бы так как слепил

* test1.PNG (4.06 Кб - загружено 1027 раз.)
Записан
staff
Помогающий

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

« Ответ #16 : 31-08-2009 11:29 » 

если что то не понятно то я могу выложить выгрузку с наработками
Записан
Kivals
Модератор

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

WWW
« Ответ #17 : 31-08-2009 11:50 » 

А как должен выглядеть отчет если будет несколько строк с разными числовыми данными?
Записан
staff
Помогающий

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

« Ответ #18 : 31-08-2009 11:58 » 

фактически так как я скинул файл так и должно происходить построение отчета, тока вместо букв будут стоять наименования анализов
Записан
staff
Помогающий

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

« Ответ #19 : 31-08-2009 12:00 » 

и анализы будут проводиться раз в 2 часа
Записан
Kivals
Модератор

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

WWW
« Ответ #20 : 31-08-2009 12:48 » 

Я имею в виду как нужно показать данные, если в отчет попадут разные Период, Пользователь, Смена, Сырье...
Записан
staff
Помогающий

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

« Ответ #21 : 03-09-2009 07:04 » 

нужна помощь что бы разобраться в формировании отчета, неодходимо что бы при добавлении нового результата анализов с новым пользователем происходило разделение от старых результатов, а так же что бы не происходило дублирование данных по одному пользователю + если будет один и тот же пользователь добавлялись результаты анализа без создания новых данных.

код процедуры формирования:



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

               пока выборкаРегистратор.Следующий() цикл
               если ВыборкаРегистратор.Регистратор<>Неопределено тогда
                  ОбластьРегистратор=ТабДок.ПолучитьОбласть("Регистратор");
                  ОбластьРегистратор.Параметры.W=ВыборкаРегистратор.W;
                  ОбластьРегистратор.Параметры.X=ВыборкаРегистратор.X;
                  ОбластьРегистратор.Параметры.M1=ВыборкаРегистратор.M1;
                  ОбластьРегистратор.Параметры.Z=ВыборкаРегистратор.Z;
                  ОбластьРегистратор.Параметры.Y=ВыборкаРегистратор.Y;
                  ОбластьРегистратор.Параметры.A=ВыборкаРегистратор.A;
                  ОбластьРегистратор.Параметры.Дата=ВыборкаРегистратор.Регистратор.Дата;
                  Темп.Вывести(ОбластьРегистратор);
               конецесли;
               
            
   ТабФорма=Отчеты.ЦэхЭкстракции.ПолучитьФорму("ФормаТаблицы");
   ТабФорма.Открыть();
   ТабФорма.ЭлементыФормы.Результат.Вывести(Темп);
   

   
конеццикла;               
   конеццикла;
      конеццикла;
         конеццикла;   
            конеццикла;
КонецПроцедуры

* work2.PNG (45 Кб - загружено 1081 раз.)
* work1.PNG (39.13 Кб - загружено 1041 раз.)
Записан
Kivals
Модератор

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

WWW
« Ответ #22 : 03-09-2009 07:12 » 

1. из двух рисунков - какой парвильный?
2. выложи скриншот макета (с названиями областей)
Записан
staff
Помогающий

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

« Ответ #23 : 03-09-2009 08:22 » 

обе фотки которые я скидывал это результаты отчета которые у меня получается
а это work3 макет

* work3.PNG (121.1 Кб - загружено 1028 раз.)
Записан
Kivals
Модератор

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

WWW
« Ответ #24 : 03-09-2009 09:31 » 

"при добавлении нового результата ... разделение от старых результатов" - что имеется в виду под разделением?
"что бы не происходило дублирование данных " - укажи где на рисунках видно что есть дублирование?
Записан
staff
Помогающий

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

« Ответ #25 : 03-09-2009 09:45 » 

на фото видно, получается в один день провожу документ с одним пользователем в отчете (снимок) он самый первый идет, в этот же день добавил еще одну проводку с другим пользователем сделал обновление отчета и получилось что создались сначало пользователь Админ, потом Админ+Нева, потом сделал третью проводку и получилось Админ, Админ+Нева, Админ+Нева

* дубляж.PNG (85.97 Кб - загружено 1024 раз.)
* дубляж1.PNG (84.78 Кб - загружено 1022 раз.)
Записан
staff
Помогающий

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

« Ответ #26 : 03-09-2009 11:40 » 

попробовал сделать запрос отчета через Регистр Сведений, все равно происходит то что было и с Регистром Накопления, может сам запрос на формирование отчета надо переделать???

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

               пока выборкаРегистратор.Следующий() цикл
               если ВыборкаРегистратор.Регистратор<>Неопределено тогда
                  ОбластьРегистратор=ТабДок.ПолучитьОбласть("Регистратор");
                  ОбластьРегистратор.Параметры.W=ВыборкаРегистратор.W;
                  ОбластьРегистратор.Параметры.X=ВыборкаРегистратор.X;
                  ОбластьРегистратор.Параметры.M1=ВыборкаРегистратор.M1;
                  ОбластьРегистратор.Параметры.Z=ВыборкаРегистратор.Z;
                  ОбластьРегистратор.Параметры.Y=ВыборкаРегистратор.Y;
                  ОбластьРегистратор.Параметры.A=ВыборкаРегистратор.A;
                  ОбластьРегистратор.Параметры.Дата=ВыборкаРегистратор.Регистратор.Дата;
                  Темп.Вывести(ОбластьРегистратор);
               конецесли;
               
            
   ТабФорма=Отчеты.ЦэхЭкстракции.ПолучитьФорму("ФормаТаблицы");
   ТабФорма.Открыть();
   ТабФорма.ЭлементыФормы.Результат.Вывести(Темп);
   

   
конеццикла;               
   конеццикла;
      конеццикла;
         конеццикла;   
            конеццикла;
КонецПроцедуры
Записан
Kivals
Модератор

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

WWW
« Ответ #27 : 03-09-2009 20:06 » 

Вместо
РегистрСведений.ЦэхЭкстракции КАК ЦэхЭкстракции
как минимум должно быть
РегистрСведений.ЦэхЭкстракции.СрезПоследних(&ТекущаяДата, ) КАК ЦэхЭкстракции
Записан
staff
Помогающий

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

« Ответ #28 : 04-09-2009 05:51 » 

быть может у меня сам запрос не правильно построен, сделал через "РегистрСведений.ЦэхЭкстракции.СрезПоследних(&ТекущаяДата, ) КАК ЦэхЭкстракции" по началу давало ошибку, устранил проблему, но все равно происходит повтор значений, может мне сделать выгрузку базы и ты ее посмотришь?
Записан
Kivals
Модератор

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

WWW
« Ответ #29 : 04-09-2009 18:33 » 

Давай - выгрузи структуру, которая нужна по задаче, и прицепи сюда в ответ (если влезет). Если нет - на мыло...
Записан
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 Кб - загружено 731 раз.)
« Последнее редактирование: 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 Кб - загружено 770 раз.)
Записан
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 » 

по поводу вывода времени проведения анализа во втором запросе у меня выдает ошибку "{Отчет.ОбщийОтчетПоРВОПОИМЭЦ.Форма.ФормаОтчета(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