|
Получить данные регистра, которые записаны туда открытым новым документом | ☑ | ||
---|---|---|---|---|
0
PolinaPykh
23.09.22
✎
14:39
|
У меня кризис:
Есть документ ЗаданияНаРаботу Он умеет записывать регистр трудозатрат, когда задание приостанавливается и когда завершается. Приостанавливать и продолжать задание можно неограниченно много раз, так что записей может быть много. Мне нужно из собрать, просуммировать и в этом же документе вывести в поле Трудоемкость. (+ эта трудоемкость будет в еще один регистр писаться) &НаКлиенте Процедура РассчитатьТрудоемкость(ДанныеСтроки) //не работает СуммаТрудозатрат = 0; МассивТрудозатраты = РасчетТрудозатрат(); Пока МассивТрудозатраты.ЗаданиеСсылка = ДокументСсылка Цикл Для Каждого Элемент из МассивТрудозатраты Цикл Если ТипЗнч(Элемент) = Тип("Число") Тогда СуммаТрудозатрат = СуммаТрудозатрат + Элемент; Иначе Возврат; КонецЕсли; КонецЦикла; КонецЦикла; ДанныеСтроки.Трудоемкость = СуммаТрудозатрат; КонецПроцедуры //pp работает? &НаСервереБезКонтекста Функция РасчетТрудозатрат() ТабТрудозатраты = Новый ТаблицаЗначений(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ижтисиТрудозатраты.Трудозатраты КАК Трудозатраты, | ижтисиТрудозатраты.Задание.Ссылка КАК ЗаданиеСсылка |ИЗ | РегистрСведений.ижтисиТрудозатраты КАК ижтисиТрудозатраты | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаРаботу КАК ЗаданиеНаРаботу | ПО ижтисиТрудозатраты.Задание = ЗаданиеНаРаботу.Ссылка"; //Запрос.УстановитьПараметр("Ссылка", Документы.ЗаданиеНаРаботу.Ссылка); Результат = Запрос.Выполнить().Выбрать(); Массив = Новый Массив; Пока Результат.Следующий() Цикл Структура = Новый Структура; Структура.Вставить("Трудозатраты", Результат.Трудозатраты); Структура.Вставить("ЗаданиеСсылка",Результат.ЗаданиеСсылка); КонецЦикла; Возврат Массив; КонецФункции Основная проблема в том, что я не понимаю как связать по ссылке мой новый документ и данные, взятые из регистра. А может я вообще неправильный способ выбрала. Беда, короче, спасите-помогите! Пожалуйста :( |
|||
1
Мультук
гуру
23.09.22
✎
15:13
|
(0)
1) //Запрос.УстановитьПараметр("Ссылка", Документы.ЗаданиеНаРаботу.Ссылка); Где условие "ГДЕ" в запросе ? 2) Волшебные слова (агрегатные функции) СУММА, СГРУППИРОВТЬ ПО -- знакомы? 3) Зачем здесь массив? Почему Функция РасчетТрудозатрат() не в состояние сама прокрутить этот цикл и выдать "наверх" число ИтогоТрудозатрат ? P.S. Нет тут никаких способов. Типичное псевдослучайное программирование |
|||
2
rudnitskij
23.09.22
✎
18:04
|
(1) классика - человек не знает как ТЗ передать с сервера и передает массив структур
|
|||
3
Быдло замкадное
23.09.22
✎
18:11
|
(2) а как передать тз с сервера? Я реально не знаю
|
|||
4
Сергиус
24.09.22
✎
03:07
|
(3)Если на форме, то через реквизит можно)
|
|||
5
Сергиус
24.09.22
✎
03:22
|
(0)Можно сделать Трудоемкость реквизитом документа и вычислять в модуле объекта ПередЗаписью. В обработке проведения подставлять расчитанное.
|
|||
6
PolinaPykh
26.09.22
✎
09:02
|
(1)Согласна насчет псевдослучайного.
Строка с передачей параметра закомментирована, потому что у меня не получается передать параметр на сервер. Если б я знала как передать параметр на сервер, тогда конечно все бы посчиталось в запросе - так проще и логичнее. |
|||
7
Мультук
гуру
26.09.22
✎
09:11
|
(6)
&НаКлиенте Процедура РассчитатьТрудоемкость(ДанныеСтроки) //не работает СуммаТрудозатрат = 0; НекаяСсылка = <тут уже сами смотрите>; МассивТрудозатраты = РасчетТрудозатрат(НекаяСсылка); &НаСервереБезКонтекста Функция РасчетТрудозатрат(НекаяСсылка) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", НекаяСсылка); 1) Вам нужно научиться программировать. Вообще. Pascal, Си, java - без разницы 2) Дальше учиться программировать в 1С 3) Вот прямо куча примеров есть здесь https://helpf.pro/ |
|||
8
PolinaPykh
26.09.22
✎
09:13
|
(1)Спасибо! Я просто из бухов пришла и провилась в техподдержку, а меня в отдел разработки стажером засунули - теперь страдаю.
|
|||
9
Ryzeman
26.09.22
✎
09:16
|
(8) Жестоко...
|
|||
10
PolinaPykh
26.09.22
✎
09:26
|
(8)Да, из приличных слов только "в" и "на". Мой максимум сейчас формочки покрасивее делать, объяснять пользователю где он не то нажал, ну еще СКД более менее. Я в печали(
|
|||
11
Ryzeman
26.09.22
✎
09:53
|
(0) Из постановки задачи вообще неясно что и где ты хочешь получить. Код не рабочий и не может быть рабочим. Хуже того - он не логичен.
Я могу предположить что это форма документа, но при чём тут тогда данные строки? Тебе надо посчитать в табличной части? При каком условии? Или это у тебя обработка? Для расчёта реквизита для всего документа это будет выглядеть примерно так: &НаКлиенте Функция РассчитатьТрудоемкость() МойРеквизит = РасчитатьТрудозатраты(Объект.Ссылка) КонецФункции &НаСервереБезКонтекста Функция РасчитатьТрудозатраты(СсылкаНаДокумент); Результат = 0; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СУММА(ижтисиТрудозатраты.Трудозатраты) КАК Трудозатраты, |ИЗ | РегистрСведений.ижтисиТрудозатраты КАК ижтисиТрудозатраты | ГДЕ ижтисиТрудозатраты.Задание = &ЗаданиеНаРаботу"; Запрос.УстановитьПараметр("ЗаданиеНаРаботу", СсылкаНаДокумент) РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда Результат = РезультатЗапроса.Выбрать()[0].Трудозатраты; КонецЕсли; Возврат Результат; КонецФункции |
|||
12
Ryzeman
26.09.22
✎
09:55
|
(10) Но в целом, сперва перед тем как браться желательно изучить целую фигуву тучу всего, как о программировании и языке запросов в целом, так и об особенностях клиент-серверного взаимодействия и объектной модели 1с... С наскоку сможешь научиться разве что печатные формы править
|
|||
13
Обработка
26.09.22
✎
10:06
|
Человек из техподержки попал в разработчки при чем не сам а просто перевели ее.
А сама то хочешь? Или просто из за ЗП сидишь страдаешь? |
|||
14
PolinaPykh
26.09.22
✎
11:10
|
(13)Хочу, но мне явно рано. Курсы программирования я, конечно, прошла (ну типа общая структура процесса в голове есть), но с настоящей разработкой не сталкивалась.
ЗП у меня пока такая же как у бухов, но хоть думать надо)) |
|||
15
PolinaPykh
26.09.22
✎
11:23
|
(11)Я пытаюсь доработать существующий в конфигурации документ.
Трудоемкость - это строка табличной части, которая в оригинале проставляется только руками, т.е. пользователь должен сам свою трудоемкость посчитать. Однако, документ уже заполняет регистр фактическими трудозатратами, поэтому хотелось бы передать в эту табличную часть данные из регистра. Эти данные строки используются по идее в расчете суммы (правда сумму там никто не считает) документ используется только для учета рабочего времени. Как вариант можно вообще не морочить себе голову и передавать в отчет о трудозатратах данные из регистра. А вообще я попала в ситуацию, когда главный (и единственный) программист сказала, что ей не интересно этим заниматься и вообще основная программа крутится, доработки все сделаны (они классные я видела), а кому еще что надо - не мое дело. |
|||
16
rudnitskij
26.09.22
✎
23:18
|
(3) Запрос = новый Запрос....
(тут текст запроса, параметры вот это вот всё) ... ТабЗначНаФорме.Загрузить(Запрос.Выполнить.Выгрузить()); // это если ТЗ в реквизите формы Объект.Таблица.Загрузить(Запрос.Выполнить.Выгрузить()); // это для табчасти документа Все это естественно на сервере |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |