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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Вычисление значений в Документе 1С по формулам  (Прочитано 18761 раз)
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 Кб - загружено 268 раз.)
« Последнее редактирование: 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 Кб - загружено 269 раз.)
Записан
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
Модератор

us
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
Модератор

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

us
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
Модератор

us
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 Кб - загружено 217 раз.)
* work1.PNG (39.13 Кб - загружено 209 раз.)
Записан
Kivals
Модератор

us
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 Кб - загружено 214 раз.)
Записан
Kivals
Модератор

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

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

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

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

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

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

* дубляж.PNG (85.97 Кб - загружено 215 раз.)
* дубляж1.PNG (84.78 Кб - загружено 213 раз.)
Записан
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
Модератор

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

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

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

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

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

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

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

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

Давай - выгрузи структуру, которая нужна по задаче, и прицепи сюда в ответ (если влезет). Если нет - на мыло...
Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines