Имя: Пароль:
1C
1С v8
Помогите достать дату из документа..
,
0 FuriKuri
 
06.09.12
18:28
Требуется в документе "ВозвратОбъектаИзПроката" при выборе объекта проката, что бы автоматически подставлялось количество дней нахождения объекта в прокате. Делаю это через регистр накопления "ОбъектыПрокатаУКлиентовОстатки"

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

Так ли я делаю... при таком варианте данные вобще не могу получить :(
1 FuriKuri
 
06.09.12
18:40
Как мне получить Дату документа "ПередачаОбъектаПрокатаВПрокат" через регистр накопления....?
2 YF
 
06.09.12
18:41
Регистратор - это документ
3 VasjaIvanov
 
06.09.12
18:43
ко(2)Регистратор.Дата не?
4 FuriKuri
 
06.09.12
18:45
В таблице "ОбъектыПрокатаУКлиентовОстатки" нету же регистратора? или я чего-то недопонимаю..
5 vmv
 
06.09.12
18:49
(1) не вникал, но получить ГУИД и по нему

http://help1c.com/faq8/view/1099.html

если речь о праметре запроса
6 vmv
 
06.09.12
18:49
(4) РегистрНакопления всегда с регистратором
7 VasjaIvanov
 
06.09.12
18:51
Как мне получить Дату документа "ПередачаОбъектаПрокатаВПрокат" через регистр накопления....?

точно из регистра накопления??
8 fisher
 
06.09.12
18:52
(0) По уму тебе надо документ сдачи в прокат измерением делать. И при возврате из проката по нему списывать.
По аналогии с партионкой, короче.
9 Noroving
 
06.09.12
18:56
Не пойму одного зачем тебе здесь регистр остатков, ти никаких остатков по нему не тянеш. Возьми себе реальную таблицу, там тебе и регистратор...
10 fisher
 
06.09.12
19:00
(4) Конечно нет. Какие остатки могут быть по регистратору? Поэтому и нужно измерение. Чтобы взяв остатки можно было сразу понять, когда и по какому документу хрень числящаяся за уродцем была сдана ему в прокат.
11 FuriKuri
 
06.09.12
19:03
Ну у меня в запросе и есть через ССылку. Сейчас посмотрю, гдето чтото не так задал в запросе..
12 FuriKuri
 
06.09.12
19:21
ТаблЗнач=ЭлементыФормы.ПереченьОбъектовПроката.ТекущиеДанные;
   ТаблЗнач.Цена=ТаблЗнач.ОбъектПроката.ЦенаЗаСут;
   ТаблЗнач.Сумма=ТаблЗнач.Количество*ТаблЗнач.ДнейПроката*ТаблЗнач.Цена;
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ОбъектыПрокатаУКлиентовОстатки.ОбъектПроката,
   |    ОбъектыПрокатаУКлиентовОстатки.Клиент,
   |    ОбъектыПрокатаУКлиентовОстатки.Ссылка
   |ИЗ
   |    Документ.ПередачаОбъектаПрокатаВПрокат КАК ПередачаОбъектаПрокатаВПрокат
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОбъектыПрокатаУКлиентов.Остатки(
   |                &ДатаДок,
   |                Клиент = &Клиент
   |                    И ОбъектПроката = &Объект) КАК ОбъектыПрокатаУКлиентовОстатки
   |        ПО ПередачаОбъектаПрокатаВПрокат.Ссылка = ОбъектыПрокатаУКлиентовОстатки.Ссылка";
   Запрос.УстановитьПараметр("Объект",ТаблЗнач.ОбъектПроката);
Запрос.УстановитьПараметр("Клиент",Клиент);
Запрос.УстановитьПараметр("ДатаДок",Дата);
Выборка=Запрос.Выполнить().Выбрать();
ТаблЗнач.ДнейПроката=(НачалоДня(Дата)  - НачалоДня(Выборка.Документ.Дата)) / (60* 60 * 24);


Вообще запутался.... создал ссылку в регистре.. не понимаю как вытащить по ней дату... (извините может туплю ужасно... новичек просто)
13 Noroving
 
06.09.12
19:36
ТаблЗнач=ЭлементыФормы.ПереченьОбъектовПроката.ТекущиеДанные;
   ТаблЗнач.Цена=ТаблЗнач.ОбъектПроката.ЦенаЗаСут;
 
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ОбъектыПрокатаУКлиентовОстатки.Ссылка.Дата КАК Дата
   |ИЗ
   |    Документ.ПередачаОбъектаПрокатаВПрокат КАК ПередачаОбъектаПрокатаВПрокат
   |        ПРАВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОбъектыПрокатаУКлиентов.Остатки(
   |                &ДатаДок,
   |                Клиент = &Клиент
   |                    И ОбъектПроката = &Объект) КАК ОбъектыПрокатаУКлиентовОстатки
   |        ПО ПередачаОбъектаПрокатаВПрокат.Ссылка = ОбъектыПрокатаУКлиентовОстатки.Ссылка";
   Запрос.УстановитьПараметр("Объект",ТаблЗнач.ОбъектПроката);
Запрос.УстановитьПараметр("Клиент",Клиент);
Запрос.УстановитьПараметр("ДатаДок",Дата);
Выборка=Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
ТаблЗнач.ДнейПроката=(НачалоДня(Дата)  - НачалоДня(Выборка.Дата)) / (60* 60 * 24);
ТаблЗнач.Сумма=ТаблЗнач.Количество*ТаблЗнач.ДнейПроката*ТаблЗнач.Цена;
КонецЕсли;

Так не?
14 Noroving
 
06.09.12
19:38
только незнаю зачем там вооше соединение и документ в запросе
15 Noroving
 
06.09.12
19:47
и логика совсем не правельная. Я так понимаю ПередачаОбъектаПрокатаВПрокат делает приход по регистру, а ВозвратОбъектаИзПроката расход. Вам нужно получить дату последнего прихода по данному объекту проката для данного клиента. Тогда вам нужно делать отбор по типу регистратора или по виду движения накопления и тянуть последнюю дату регистрации с упоряд. по убыванию ПЕРВОЕ ЗНАЧЕНИЕ... Тогда может чото и получится
16 GANR
 
06.09.12
20:15
(0) Структура регистра РегистрНакопления.ОбъектыПрокатаУКлиентов не подходит для этой задачи !

Нужно в регистр добавить измерение "ДокументВыдачи" и приход / расход проводить в разрезе последнего. Либо FIFO-LIFO организовывать, либо в документе приема из проката указывать документы возврата и по ним списывать и "выковыривать" дату выдачи объекта в прокат.

А если в РегистрНакопления.ОбъектыПрокатаУКлиентов уже есть проводки - надо пробежаться по ним обработкой и заполнить это самое измерение "ДокументВыдачи". Перепроводить опасно - все остатки поедут, если данных много.
17 GANR
 
06.09.12
20:17
+(16)пардон
>в документе приема из проката указывать документы возврата
в документе приема из проката указывать документы выдачи в прокат
18 GANR
 
06.09.12
20:40
(0) Или, как вариант, можно провести инвентаризацию и "задолбить" остатки на определенную дату универсальным документом "Корректировка записей регистров".
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший