|
v8: документ "ОказаниеУслуги" | ☑ | ||
---|---|---|---|---|
0
titan1993
23.05.13
✎
19:25
|
есть документ "ОказаниеУслуги" в нем табличная часть справочника услуги, в справочнике услуги есть такой реквизит как СрокиВыполнения. Проблема неописуема. Догадайтесь пожалуйста сами что мне надо :) УП платформа 8.2. Дак вот когда в табличной части я добавляю услугу, у меня подставляется значение сроки выполнения из справочника услуги. я это сделал так: добавил реквизит прям в форме назвал срокиВыполнения = Объект.Услуги.НаименованиеУслуги.СрокиВыполнения. Уже не в табличной части есть реквизит ДатаВыполнения. Как сделать так что бы в режиме реального времени в этот объект подставлялось значение "ДатаВыполнения = дата + (СрокиВыполнения*86400)" хотелось бы чтобы он суммировал все значения по колонке СрокиВыполнения и записал все это !в режиме реального времени в поле ДатаВыполнения. Как то так :( спасите пожалуйста.
|
|||
1
titan1993
23.05.13
✎
19:32
|
когда документ проведен все понятно, можно сделать так:
Процедура Команда1(Команда) Срок = Объект.Услуги.Итог("СрокиВыполнения") * 86400; ДатаВыполнения = ДатаЗаказа + срок; КонецПроцедуры но вот как это сделать когда документ еще не проведен? |
|||
2
Тоненький Клиент
23.05.13
✎
19:34
|
1993 - это год рождения?
|
|||
3
Dionis Sergeevich
23.05.13
✎
19:34
|
читай из формы.
|
|||
4
titan1993
23.05.13
✎
19:34
|
да
|
|||
5
titan1993
23.05.13
✎
19:34
|
но какое это имеет значение? :)
|
|||
6
zak555
23.05.13
✎
19:34
|
ужас
|
|||
7
Михаил Козлов
23.05.13
✎
19:34
|
(1) Дата у документа все равно уже есть. Предусмотреть изменение реквизита ТЧ при смене даты.
|
|||
8
titan1993
23.05.13
✎
19:37
|
(7) нет это не то чего я хочу
|
|||
9
PR
23.05.13
✎
19:38
|
(0) Вообще за такое тут банят и заставляют правила читать
|
|||
10
titan1993
23.05.13
✎
19:38
|
я хотел бы что бы по нажатии на кнопку датаВыполненияЗаказа менялась
|
|||
11
titan1993
23.05.13
✎
19:39
|
извиняюсь, я просто не знаю как описать суть проблемы
|
|||
12
titan1993
23.05.13
✎
19:41
|
подскажите пожалуйста как мне это сделать?
Срок = Объект.Услуги.Итог("СрокиВыполнения") * 86400; ДатаВыполнения = ДатаЗаказа + срок; но в режиме реального времени? |
|||
13
PR
23.05.13
✎
19:44
|
(11) Описанное в (0) крайне примитивно, не нужно важно топорщиться от того, какая охренеть сложная и непонятная задача прозвучала в (0).
Для ее реализации неплохо чуть почитать документации по 1С, да может даже и не по 1С для начала. Если по сути, то коротко так: СрокиВыполнения = 0; Для Каждого СтрокаТЧ Из Услуги Цикл СрокиВыполнения = СрокиВыполнения + Услуги.СрокиВыполнения; КонецЦикла; ДатаВыполнения = Дата + СрокиВыполнения * 86400; |
|||
14
PR
23.05.13
✎
19:45
|
+(13) Ну, кстати, да, есть же метод ТЧ Итог, в чем собственно проблема-то вообще?
|
|||
15
titan1993
23.05.13
✎
19:49
|
(14) Вам легко сказать что проблемы нет, а мне сложно. (13) спасибо вам
|
|||
16
PR
23.05.13
✎
19:51
|
(15) Вообще-то в (13) написан сложный алгоритм без использования итога.
чем (12)-то не устраивает? |
|||
17
PR
23.05.13
✎
19:52
|
+(16) А, понял.
ДатаВыполнения = ДатаЗаказа + Услуги.Итог("СрокиВыполнения") * 86400; |
|||
18
titan1993
23.05.13
✎
19:54
|
(12) не устраивает тем, что он работает только когда документ проведен
|
|||
19
titan1993
23.05.13
✎
20:02
|
Процедура Команда1(Команда)
СтрокаТЧ= Элементы.Услуги.ТекущиеДанные; СрокиВыполнения = 0; Для Каждого СтрокаТЧ Из Элементы.Услуги Цикл СрокиВыполнения = СрокиВыполнения + Элементы.УслугиСрокиВыполнения; КонецЦикла; ДатаВыполнения = Элементы.ДатаЗаказа + СрокиВыполнения * 86400; КонецПроцедуры не работает по причине :{Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(33)}: Итератор для значения не определен Для Каждого СтрокаТЧ Из Элементы.Услуги Цикл |
|||
20
hhhh
23.05.13
✎
20:11
|
(9) ну тогда, как в (1)
Процедура Команда1(Команда) Срок = Объект.Услуги.Итог("СрокиВыполнения") * 86400; ДатаВыполнения = ДатаЗаказа + срок; КонецПроцедуры |
|||
21
PR
23.05.13
✎
20:11
|
Мда. Почитал бы ты документацию для начала. Ну или ветку хоть может.
|
|||
22
titan1993
23.05.13
✎
20:15
|
Извиняюсь за неграмотность, я просто хочу научиться программировать в этой платформе, Читаю книжки и все такое, но данных примеров чего то подобного я не видел нигде, от того и прошу помощи.
|
|||
23
PR
23.05.13
✎
20:16
|
(22) В типовых таких примеров просто дохренища.
Ты нафига "Элементы." пишешь? |
|||
24
titan1993
23.05.13
✎
20:21
|
если не пишу говорит мол: "переменная услуги не определена"
|
|||
25
titan1993
23.05.13
✎
20:32
|
Да я знаю что я извращаюсь над 1с, но я не знаю как это сделать :(
|
|||
26
Aprobator
23.05.13
✎
21:39
|
(0) нельзя в данном сручае реквизит СрокиВыполнения брать из справочника. Надо делать отдельно реквизит ТЧ документа. Прописать процедуру его заполнения ПриИзмененииНоменклатруы, а сам реквизит справочника менять уже из ПриЗаписи документа.
|
|||
27
titan1993
23.05.13
✎
22:17
|
Спасибо всем, я нашел решение. Кому интересно вот собственно и решение:
&НаКлиентеНаСервереБезКонтекста Функция ОбновитьСрокВыполнения(ЭтаФорма) МассивУслуг = Новый Массив; Для Каждого СтрокаТЧ Из ЭтаФорма.Объект.Услуги Цикл МассивУслуг.Добавить(СтрокаТЧ.НаименованиеУслуги); КонецЦикла; ЭтаФорма.ОбщийСрокВыполнения = ПосчитатьОбщийСрокВыполнения(МассивУслуг); ЭтаФорма.Объект.ДатаВыполнения = ЭтаФорма.Объект.Дата + ЭтаФорма.ОбщийСрокВыполнения * 86400; КонецФункции &НаСервереБезКонтекста Функция ПосчитатьОбщийСрокВыполнения(МассивУслуг) Результат = 0; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СУММА(Услуга.СрокиВыполнения) КАК СрокиВыполнения |ИЗ | Справочник.Услуга КАК Услуга |ГДЕ | Услуга.Ссылка В(&Ссылки)"; Запрос.УстановитьПараметр("Ссылки", МассивУслуг); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Результат = Выборка.СрокиВыполнения; КонецЕсли; Возврат Результат; КонецФункции |
|||
28
zippygrill
23.05.13
✎
23:10
|
Клево написано в (27)
|
|||
29
Aprobator
24.05.13
✎
11:55
|
(28) +100500 не то слово. Яркий пример того, как не надо программировать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |