Задача : Реквизит «сумма» табличной части документа должен проинциализироваться автоматически при выборе объекта проката исходя из даты передачи этого объекта в прокат и цены 1 суток проката.
Документ ПередачаОбъектаВПрокат и документ ВозвратОбъектаИзПроката, из 1-ого документа должен брать значения,обрабатывать и при открытии второго ставить в табличное поле.
Помогите плиз.
---
aguilar, цена проката за сутки указывается в документе или хранится в справочнике?

Вы можете получить Период из регистра. Период обязательное поле - оно заполняется при проведении документа. В 90% случаев это дата документа.

Соответственно имея дату выдачи клиенту вы можете использовать функцию РазностьДат(ДатаДокВыдачи,ТекущаяДата(),Секунда) - получаем сколько секунд он у клиента. Можно конечно и в днях считать но тогда система сама округлит. А имея более детальную информацию вы можете сами выбрать правило расчета целых дней.

Можете получить НачалоДня(ДатаДокаВыдачи) и НачалоДня(ТекущаяДата())
Разность этих двух переменных будет равна кол-ву секунд собстно. Делим на кол-во секунд в сутках получаем кол-во дней.

Умножаем на стоимость проката, где бы она у вас там не хранилась. Вы можете сделать это как в запросе и загрузить данные в ТЧ выгрузив результат запроса. Или просто перебрав построчно ТЧ документа возврата. Как вашей душе будет угодно.
---
aguilar, тут два варианта, на мой взгляд, создавать документ ВозвратОбъектаИзПроката на основании документ ПередачаОбъектаВПрокат тогда заполниться табличная часть или указать документ ПередачаОбъектаВПрокат в качестве реквизита в таб части или в шапкеи при выборе заполнять сумму. В любом случае потребуется доработка.
---
Если что могу подробнее инфы кинуть...
---
Первый вариант мне не подходит к сожалению,а насчет второго можно поподробнее. Или подскажет кто как обратится к табличной части другого документа...
---
Если добавить реквизит "документ" в табличную часть или документ, то можно обратиться к табличной части этого документа. Оттуда и взять нужную информацию.
---
tolyan_ekb, Собственно это и интересует,как обратится не могли бы написать пожалуйста?
---
Очень просто в любом событии элемента формы в котором идет выбор дописываете проверку суммы
---
Допустим. Разместили реквзит "Документ" в ТЧ с типом ПередачаОбъектаВПрокат.
В таб части встаем на этот реквизит и выбирем событие ОбработкаВыбора. Заходим в процедуру и пишем.

СтрокаТабличнойЧасти = ЭлементыФормы.[ИмяТабичнойЧасти].ТекущиеДанные;
СтрокаТабличнойДокумента = СтрокаТабличнойЧасти.Документ.[ИмяТабичнойЧасти документ ПередачаОбъектаВПрокат].Найти (<Значение>, <Колонки>) ; значение - нужное значение, колонка - "Сумма"
СтрокаТабличнойЧасти.Сумма=СтрокаТабличнойДокумента.Сумма;

ИмяТабичнойЧасти и ИмяТабичнойЧасти документ ПередачаОбъектаВПрокат - имена нужных таб частей.
---
а документ то ПередачаОбъектаВПрокат движений никаких не делает? может из регистров лучше, если таковые есть
---
Akuji, Через регистры тоже не вариант.
(8) tolyan_ekb, Спасибо,я как проверю этот код то сразу отпишусь.
---
По идее.. был бы регистр "ОбъектыВПрокате" 1й док Помещает туда объект (количество +1), второй обнуляет -1 и рассчитывает сумма необходимым способом. И отчеты потом полегче строится будут
---
Akuji,
(1) aguilar,

плюсую предложение
Обращение к объектам менее адекватно чем к регистрам.

Если тебе нужна информация то сделай следующие
1) Сделай регистр
2) Организуй запись в регистр
3) Организуй расчет "Суммы" на основании данных в регистре.
---
а почему не вариант?)
---
Akuji, Потому что задание сделать надо без регистров эту операцию :)
(12) KlesAlex, Я понимаю,но к сожалению это не вписывается в мои условия(
---
aguilar,а в чем состоят условия ты объясни.
И почему использование регистра не вписывается?
Может просто надо правильно его организовать?)
---
Указывается номер документа возврата, дата документа возврата, клиент (контрагент / физ. лицо), договор контрагента (в случае возврата от юр. лица), перечень объектов проката, сумма. Реквизит «сумма» табличной части документа должен проинциализироваться автоматически при выборе объекта проката исходя из даты передачи этого объекта в прокат и цены 1 суток проката.
Тоесть этому документу "Возврат объекта из проката", предшествует документ "Передача объекта в прокат" ,и из него нужно вытянуть данные при подстановке какого-либо объекта в документ Возврат объекта из проката.
Условия :
 Регистры сведений
a. Рейтинг фильмов
b. Качество объекта проката
c. Износ объекта проката

 Регистры накопления
a. Остатки объектов проката
b. Взаиморасчеты с контрагентами
c. Объекты проката у клиентов
---
aguilar, цена проката за сутки указывается в документе или хранится в справочнике?

Вы можете получить Период из регистра. Период обязательное поле - оно заполняется при проведении документа. В 90% случаев это дата документа.

Соответственно имея дату выдачи клиенту вы можете использовать функцию РазностьДат(ДатаДокВыдачи,ТекущаяДата(),Секунда) - получаем сколько секунд он у клиента. Можно конечно и в днях считать но тогда система сама округлит. А имея более детальную информацию вы можете сами выбрать правило расчета целых дней.

Можете получить НачалоДня(ДатаДокаВыдачи) и НачалоДня(ТекущаяДата())
Разность этих двух переменных будет равна кол-ву секунд собстно. Делим на кол-во секунд в сутках получаем кол-во дней.

Умножаем на стоимость проката, где бы она у вас там не хранилась. Вы можете сделать это как в запросе и загрузить данные в ТЧ выгрузив результат запроса. Или просто перебрав построчно ТЧ документа возврата. Как вашей душе будет угодно.
---
KlesAlex, Хранится в документе по условию задачи,в том же ПередачаОбъектаВПрокат
Вообщем попробывал и так и сяк,что-то заработало,но решил вывести в сумму количество дней и получилось 734345,где я ошибся

```1c
    СтрокаТабличнойЧасти.Сумма = Цел((НачалоДня( ТекущаяДата() )- НачалоДня(СтрокаТабличнойЧастиДокумента.Дата ))/86400);
```

Еще не понятно как сумму вытянуть.

(26) mozz, я понимаю) Но у меня такое условие задачи....
---
aguilar, Вообщем попробывал и так и сяк,что-то заработало,но решил вывести в сумму количество дней и получилось 734345,где я ошибся
СтрокаТабличнойЧасти.Сумма = Цел((НачалоДня( ТекущаяДата() )- НачалоДня(СтрокаТабличнойЧастиДокумента.Дата ))/86400);

Посмотрите ваши даты внимательно в отладчике.
У меня похожая цифра получилась при расчете Цел((НачалоДня( ТекущаяДата() )- НачалоДня(Дата('00010101')))/86400).

То есть дата в документе не заполнена. И берется разность дат от текущей минус 01.01.0001 год.
---
т.е. регистры уже даже есть!
---
По идее этот: c.Объекты проката у клиентов
При возврате найти объект в остатках клиента, узнать дату и расчитать
---
Да?) Можете поподробнее написать как это реализовать,пожалуйста.
 Одновременно вопрос,в задаче нужно исходя из даты проведения того документа вычесть текущую дату и умножить на цену. Разве можно вычитать дату из даты и еще умножать на цену?
---
Например так:

```1c
    КоличествоДней = Цел((НачалоДня(ДатаВыдачиВПрокат) - НачалоДня(ДатаВозврата))/24*60*60);
    СуммаЗаПрокат = ЦенаЗаПрокат * КоличествоДней;
```
---
Перечисли измерения и ресурсы регистров: Рейтинг фильмов, Качество объекта проката, Износ объекта проката.
Я так понимаю цена каким-то образом зависит от 2-х регистров: Качества и Износа - и у тебя с этим проблема возникает...

З.Ы. Можешь кинуть cf-ник
---
titakovserg, судя по регистрам я так полагаю цена где то в справочнике)... если вообще хранится где нибудь
---
Да какая разница где она хранится? Всё равно не вижу смысла на такую задачу заводить документ. Пиши себе напрямую в регистр. Можно не только даты и ссылки на объект туда писать, цену на момент выдачи в прокат тоже можно писать.
---
mozz, есть смысл делать именно документом хотя бы потому, что в случае ошибки (выбрал не того клиента или не тот продукт) проведение документа можно отменить и переделать. В случае обработки исправление ошибок куда более сложно.
---
А кто мешает запись в регистре править обработкой? Одна обработка, которая делает всё: выдача в прокат, возврат из проката, правка есличё...
---
mozz, дак все можно делать обработкой, но зачем-то придумали документы
---
Я про данную конкретную задачу рассуждаю.

А вообще кроме регистров, документов и обработок существуют еще объекты метаданных.
Давайте в этой задаче используем еще планы обмена, бизнес процессы, внешние источники данных, критерии отбора, подписки на события и еще чёрта в стуле...
---
По моему тут вообще не нужно документов, тем более столько.
Один периодический регистр сведений и обработка которая пишет в этот регистр и читает из него. Она же при возврате из проката рассчитывает сумму.

И отчёты по этому регистру рисовать.База не будет пухнуть, а будет летать как ласточка.
---
В предыдущем сообщении конечно же от даты возврата отнимаем дату выдачи - ступил малёха...
---
PS: Возможно в вашем случае не надо даты в начало дня перекидывать. Просто вычесть дату возврата из даты выдачи и поделить на количество секунд в сутках, и округлить до целого в большую сторону.
---
И как через регистр обращатся. Вот получил я что-то вроде этого

```1c
    Движения.ОбъектыПрокатаУКлиентов.Записывать = Истина;
    Движения.ОбъектыПрокатаУКлиентов.Очистить();
    Для Каждого ТекСтрокаОбщее Из Общее Цикл
    Движение = Движения.ОбъектыПрокатаУКлиентов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Фильм = ТекСтрокаОбщее.ПереченьОбъектовПроката;
    Движение.Клиент = Клиент;
    Движение.Количество = ТекСтрокаОбщее.НомерСтроки;
    КонецЦикла;
```

Но когда пытаюсь вставить в код,он вообще ничего не видит(
---
ну тут наверн уже почитать Радченко нан
---
ну тут уже вопросов сильно много на 10 маней), если тут все расписывать... не понятно для лабораторной или так просто
---
Akuji, ну тут уже вопросов сильно много на 10 маней)
Либо просто напрямую с кем то договорится за Nную сумму на выполнение этой задачи.
Тем более что. учитывая простоту оной - цена вопроса тривиальна.
---
спасибо разобрался!
---
Деньги выдал KlesAlex.