Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите пожалуйста! при записи регистр не записывает запрос. , Я учусь программировать.          
Noviscok Подменю пользователя
сообщение 18.10.17, 8:25
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

Стоит задача: создать регистр, в который при проведении документа записывать минимальное, среднее и максимальное значение температуры за день, а также количество осадков.
я создал регистр. написал запрос. он почему-то выполняет движение, а запрос нет. Помогите!


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

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



 ! 

Правила: 9
 


Сообщение отредактировал Vofka - 18.10.17, 11:51

sava1 Подменю пользователя
сообщение 18.10.17, 8:34
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Для начала просто почитайте теорию. Гугль в этом поможет.
Для того, чтобы кто-то что-то помог - сначала надо правильно поставить вопрос.

Bernet Подменю пользователя
сообщение 18.10.17, 8:36
Сообщение #3

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Noviscok @ Сегодня, 9:25 * ,
Запрос никаких "движений" и не должен делать, он данные выбирает.
Во-вторых, у вас в запросе нет условия по ссылке на документ, у вас данные будут тянуться со всех документов. Нужно добавить отбор по текущему документу:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|СУММА(КоличествоОсадков) КАК Осадки,
|МИНИМУМ(Температура) КАК МинТемпература,
|МАКСИМУМ(Температура) КАК МаксТемпература,
|СРЕДНЕЕ(Температура) КАК СреднееЧисло
|ИЗ
|Документ.РезультатНаблюдений.Наблюдение
|ГДЕ
| ссылка = &ТекущийДокумент
|СГРУППИРОВАТЬ ПО
|Ссылка.Дата";

// и перед выполнением установить параметр

Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);

// а потом обходить результат запроса:
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
       Движение = Движения.Регистр.Добавить();
       Движение.Период = Дата;
       Движение.Осадки = Выборка.Осадки;
// и т.д.
КонецЦикла;


Сообщение отредактировал Bernet - 18.10.17, 8:40


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Noviscok,

Noviscok Подменю пользователя
сообщение 18.10.17, 9:22
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

Соглашусь вопрос корректен. Что нужно написать в движении чтоб регистр записывал макс, мин и сред? Надо создать временную таблицу?

Bernet Подменю пользователя
сообщение 18.10.17, 9:32
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Noviscok @ Сегодня, 10:22 * ,
Давайте по шагам:
1) Все необходимые для этого действия пишем в модуле объекта документа в процедуре "Обработка проведения"
2) Для того чтобы что-то записать в регистр, нужно выбрать необходимые данные, для этого вам и нужен Запрос. Можно делать это так как делали вы в первом посте - напрямую читать данные из табличной части и писать их в регистр, но это считается неоптимальным, т.к. при каждом обращении к реквизитам таб. части идет обращение к базе, по сути это лишняя нагрузка. Поэтому лучше делать через запрос. Для этого нужно в запросе выбрать поля, которые вас интересуют, указать источник данных - это ваша таблица документа, и указать что мы берем конкретный текущий документ - то условие про которое я писал постом выше (конструкция "ГДЕ").
3) После того как запрос есть, нам необходимо передать все параметры в запрос, это то что идет со значком "&"
4) После этого запрос готов к выполнению, выполняем его и получаем выборку нужных нам данных. За это отвечают строки
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

5) Дальше вам необходимо прочитать из этой выборки каждую строку, для этого делаем цикл по выборке
Пока Выборка.Следующий() Цикл
  
КонецЦикла;

6) В цикле вы добавляете каждую запись в регистр.
       Движение = Движения.Регистр.Добавить();
       Движение.Период = Дата;
       Движение.Осадки = Выборка.Осадки;
       Движение.МинТемпература = Выборка.МинТемпература;
       Движение.МаксТемпература = Выборка.МаксТемпература;
       // и т.д. все поля которые нужно записать в регистр.
       // P.S. естественно для записи в регистр у вас там должны быть соотвествующие поля "Осадки ", "МинТемпература", "МаксТемпература "

как-то так. надеюсь понятнее пояснил


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Noviscok,

Noviscok Подменю пользователя
сообщение 18.10.17, 10:02
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

Bernet @ Сегодня, 14:32 * ,
У меня не было полей макс и мин. После Вашего ответа я создал эти поля. Все получилось. Просто у меня уже каша в голове. Спасибо Вам огромное, все понял.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 10:32
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!