Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.52/31: Рейтинг темы: голосов - 31, средняя оценка - 4.52
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
1

Выборка из регистра накопления

22.12.2012, 20:56. Просмотров 5832. Ответов 30
Метки нет (Все метки)

Вообщем надо сделать конфигурацию для библиотеки.
Надо сделать так чтобы на форме где осуществляется прием взятой книги,по нажатию специальной кнопки(команды) выходил список книг которые на данный момент находятся на руках у выбранного читателя.
Запись в регистр накопления осуществляется по следующему принципу.У книг есть 2 местоположения:в библиотеке и у читателя.Следовательно когда книга передается из библиотеки читателю она меняет свое местоположение. Происходит расход у библиотеки и приход у читателя.При выдаче книг читателю для КАЖДОЙ книги указывается дата когда книгу надо вернуть обратно.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Процедура ЗаполнитьТЧКниги()
    Документ = РеквизитФормыВЗначение("Объект");
    
        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ДвижениеКнигОстатки.Книга
        |ИЗ
        |   РегистрНакопления.ДвижениеКниг.Остатки(&ДатаКон, МестоРазмещения = &МестоРазмещения) КАК ДвижениеКнигОстатки";
 
    Запрос.УстановитьПараметр("ДатаКон", Документ.Дата);
    Запрос.УстановитьПараметр("МестоРазмещения", Документ.Читатель);
    
 
    Результат = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Строка = Документ.Книги.Добавить();
        Строка.Книга = ВыборкаДетальныеЗаписи.Книга;
        //Строка.ДатаВозврата=ВыборкаДетальныеЗаписи.ДатаВозврата;
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    ЗначениеВРеквизитФормы(Документ, "Объект");
КонецПроцедуры
Данный код работает правильно если я не произвожу выборку значения ДатыВозвращения. ДатаВозвращения в РегистреНакоплений является Измерением.
Если я пытаюсь "вытащить" из регистра накопления значения ДатыВозвращения:
начиная запрос вот так:
1C
1
2
3
4
Запрос.Текст = 
        "ВЫБРАТЬ
        |   *
        |ИЗ
ОБРАТИТЕ ВНИМАНИЕ НА ЗВЕЗДОЧКУ
и снимаю слешы с
:
1C
1
//Строка.ДатаВозврата=ВыборкаДетальныеЗаписи.ДатаВозврата;
То команда начинает работать не корректно.Понимаю,что вопрос трудно уловить так сразу.Возможно кто то заплатно сможет мне немного помочь
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2012, 20:56
Ответы с готовыми решениями:

Доступ к ресурсу регистра накопления
Есть регистр накопления ОбъектыУКлиентов у него несколько измерений и ресурс длительность делаю...

Запрос по реквизиту регистра накопления в 8.0
Вообщем ситуация простая: необходимо переписать типовой отчет "Остатки товаров" так как в регистре...

Выборка данных из регистра сведений и регистра остатков
Нужно написать отчет по з.п, продавцы получают з.п в зависимости от того сколько они продали, т.е...

Как из Регистра Накопления взять обороты только за один месяц
Всем добрый вечер) У кого есть свободное время,помогите мне пожалуйста с несложным вопросом. Как...

Как из регистра накопления получить стоимость для расх. накладной?
Добрый день подскажите пожалуйста как из регистра накопления с ресурсами "Количество и сумма"...

30
Xomych
667 / 589 / 90
Регистрация: 01.11.2012
Сообщений: 2,090
22.12.2012, 21:04 2
Как некорректно начинает работать? Можно поконкретнее?
1
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
22.12.2012, 21:14  [ТС] 3
Цитата Сообщение от Xomych Посмотреть сообщение
Как некорректно начинает работать? Можно поконкретнее?
Допустим.первого числа я взял книгу.второго числа я вернул книгу(запрос сработало хорошо).Но если ещё раз сделать запрос о моих долгах то появится 2 записи,а их быть не должно.Очевидно и в первый раз запрос выхватывает не совсем то.

Добавлено через 1 минуту
И такое происходит просто если поставить звездочку в запросе.
0
Xomych
667 / 589 / 90
Регистрация: 01.11.2012
Сообщений: 2,090
22.12.2012, 21:26 4
Я бы честно говоря запись ДатыВозврата делал не в регистре, а в документе выдачи книги, ибо она по сути является справочной
А ты уверен. что у тебя датаВозврата заполняется как при выдаче книги так и при возврате от читателя и она одинаковая?
1
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
22.12.2012, 23:21  [ТС] 5
Цитата Сообщение от Xomych Посмотреть сообщение
Я бы честно говоря запись ДатыВозврата делал не в регистре, а в документе выдачи книги, ибо она по сути является справочной
А ты уверен. что у тебя датаВозврата заполняется как при выдаче книги так и при возврате от читателя и она одинаковая?
Суть в том что человеку могут дать за один заход несколько книг и каждая из них будет иметь свой срок сдачи.Дело даже не в том что вообще находится в этом поле,будь это ДатаВозврата или ещё что нибудь другое что мне придет в голову там запостить. Отвечая на вопрос:да,дата одинаковая. Только при повторном выполнении запроса выходит 2 записи:
1)Книга с местонахождением у меня ко мне пришло.
2)Книга с местонахождением у меня от меня ушло.
Срок сдачи нужен для того чтобы узнать человек платит штрафа за то что сдал не во время.

Добавлено через 1 час 47 минут
Может кто нибудь подскажет как можно хранить Дату возвращения книги?
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
22.12.2012, 23:48 6
Если эта дата - измерение - тогда при закрывающем движении надо её синхронизировать.
Отдал книгу.
Приход: Книга1, Дата1, 1шт
Вернули книгу.
1. Поднимаем остатки по Книга1.
2. Берём из них дату1
3. Расход: Книга1, Дата1, 1шт
1
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
23.12.2012, 00:28  [ТС] 7
Цитата Сообщение от duk337 Посмотреть сообщение
Если эта дата - измерение - тогда при закрывающем движении надо её синхронизировать.
Отдал книгу.
Приход: Книга1, Дата1, 1шт
Вернули книгу.
1. Поднимаем остатки по Книга1.
2. Берём из них дату1
3. Расход: Книга1, Дата1, 1шт
Спасибо за ответ!Я почти понял что вы сказали.Но никак не доходит как же теперь это реализовать.Я сделал два скрина на втором как раз видно что если стоит
1C
1
Выбрать *
то ошибочно выходит 2 записи.И когда я вытянул Дату Возвращения надо как то их анигилировать
То есть на первом скрине правильный результат(книга была сдана и её вернули),на втором (книга сдана и её вернули,после того как вернули сделали повторную проверку и вышли не нужные записи)
0
Миниатюры
Выборка из регистра накопления   Выборка из регистра накопления  
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
23.12.2012, 00:41 8
Цитата Сообщение от duk337 Посмотреть сообщение
Вернули книгу.
1. Поднимаем остатки по Книга1.
2. Берём из них дату1
3. Расход: Книга1, Дата1, 1шт
Давайте медленно: Движение расход. Там пустая дата. Поэтому остатки по одной дате +1, по другой -1.
Почему дата пустая? Потому что при проведении возврата книги мы её не знаем. Она записана в измерении остатка по этой книге, поэтому перед проведением мы поднимаем остатки по этой книге. ("Выбрать Дата, Количество Из Остатки()". т= Запрос.Выполнить().Выгрузить() ) И по каждому остатку закрываем его проводкой Расход.
0
Xomych
667 / 589 / 90
Регистрация: 01.11.2012
Сообщений: 2,090
23.12.2012, 14:35 9
Ещё бы были желательны скрины движения регистра по книге и этому покупателю, выдача книги (т.е. приход по регистру) и возврат книги (т.е. расход по регистру). Но судя по уже имеющимся скринам моё предположение оказалось верным, датаВозврата разная в этих движениях. Поэтому Запрос по Измерению книга работает верно и даёт 0, но как только включается в Запрос измерение ДатаВозврата получается не правильно из-за того, что при выдаче книги ДатаВозврата проставлена была в измерение, а при возврате ДатаВозврата пустая, а должна быть точно такая же как и при выдаче.
Т.е. при проведении документа возврата книги, ты должен получить остаток по Регистру не только по этой Книге, но и по ДатеВозврата и сделать обратную проводку с точно такими же измерениями, как и написано у duk337.
Но, имхо, такое построение Регистра неправильно. ДатуВозврата надо убрать из измерения и оставить в Документе выдачи книг в табличной части(Для каждой книги своя), ну или запихнуть её в реквизит регистра. А докумет возврата книга формировать на основании Документа выдачи книги. тогда проблем с определением даты возврата не будет никаких.
0
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
23.12.2012, 19:09  [ТС] 10
Цитата Сообщение от Xomych Посмотреть сообщение
Ещё бы были желательны скрины движения регистра по книге и этому покупателю, выдача книги (т.е. приход по регистру) и возврат книги (т.е. расход по регистру). Но судя по уже имеющимся скринам моё предположение оказалось верным, датаВозврата разная в этих движениях. Поэтому Запрос по Измерению книга работает верно и даёт 0, но как только включается в Запрос измерение ДатаВозврата получается не правильно из-за того, что при выдаче книги ДатаВозврата проставлена была в измерение, а при возврате ДатаВозврата пустая, а должна быть точно такая же как и при выдаче.
Т.е. при проведении документа возврата книги, ты должен получить остаток по Регистру не только по этой Книге, но и по ДатеВозврата и сделать обратную проводку с точно такими же измерениями, как и написано у duk337.
Но, имхо, такое построение Регистра неправильно. ДатуВозврата надо убрать из измерения и оставить в Документе выдачи книг в табличной части(Для каждой книги своя), ну или запихнуть её в реквизит регистра. А докумет возврата книга формировать на основании Документа выдачи книги. тогда проблем с определением даты возврата не будет никаких.
Конечно так было бы просто.Однако это не совсем подходит под предметную область.Допустим человек может брать книги А,Б,С за один раз.Он придет ещё раз и отдаст книгу А и С,и возьмет книги Б и В.Как в таком случае поступать?
Скрины сейчас будут
0
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
23.12.2012, 19:11  [ТС] 11
Итак,тут 3 основных вещи.пришло 3 книги.Одну книгу отдали а потом приняли.
0
Миниатюры
Выборка из регистра накопления  
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
23.12.2012, 19:20 12
Цитата Сообщение от aidarr Посмотреть сообщение
Конечно так было бы просто.Однако это не совсем подходит под предметную область.Допустим человек может брать книги А,Б,С за один раз.Он придет ещё раз и отдаст книгу А и С,и возьмет книги Б и В.Как в таком случае поступать?
запрос по книгам а и с и закрытие их по ИХ дате. приход ещё одной б и в. не вижу разницы

Добавлено через 4 минуты
Цитата Сообщение от aidarr Посмотреть сообщение
Итак,тут 3 основных вещи.пришло 3 книги.Одну книгу отдали а потом приняли.
так у вас и поступление тут? обдумайте алгоритм. то есть, у вас книга на руки - это расход. возврат - приход, поступление/закупка - тоже приход. наименование - это что: измерение или реквизит?

Добавлено через 2 минуты
при таком алгоритме дату надо выводить из измерений. у вас получается остаки книг в библ., а не оборот литературы
0
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
23.12.2012, 19:23  [ТС] 13
Цитата Сообщение от duk337 Посмотреть сообщение
запрос по книгам а и с и закрытие их по ИХ дате. приход ещё одной б и в. не вижу разницы
Уверяю вас прописание ДатаВозврата при Возврате книг ничего не изменит.Я вручную прописывал эти даты(то есть не запрашивал из регистра) и это никак не повлияло.Просто я никак не понимаю почему в одном и том же запросе если мы ставим Звездочку и Ставим конкретное поле результаты разные.Со звездочкой 2 результата без звездочки нет результатов.

Добавлено через 2 минуты
Цитата Сообщение от duk337 Посмотреть сообщение
так у вас и поступление тут? обдумайте алгоритм. то есть, у вас книга на руки - это расход. возврат - приход, поступление/закупка - тоже приход. наименование - это что: измерение или реквизит?
Если это реквизитом сделать.то,извиняюсь за глупый вопрос,как его можно вытащить?
Скорее всего вы правы и надо сделать ДатуВозврата реквизитом.
ДатаВозврата нужна только для того чтобы знать когда надо книгу вернуть,не факт что её вернут в это время.
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
23.12.2012, 19:27 14
сделайте отдельно остатки без даты, отдельно обороты. по аналогии с продажами товара
0
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
23.12.2012, 20:15  [ТС] 15
Цитата Сообщение от duk337 Посмотреть сообщение
сделайте отдельно остатки без даты, отдельно обороты. по аналогии с продажами товара
точно!что то я сразу то не подумал.
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
23.12.2012, 20:22 16
я вот ещё подумал: грамотнее второй регистр сделать "На руках", по клиенту, а дата будет исполнять функцию партии возврата.
0
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
23.12.2012, 20:34  [ТС] 17
Цитата Сообщение от duk337 Посмотреть сообщение
я вот ещё подумал: грамотнее второй регистр сделать "На руках", по клиенту, а дата будет исполнять функцию партии возврата.
Да я так и подумал.Просто будет регистр накоплений по остаткам где записываются даты и получатели.А как проверить запрос на пустоту(тоесть пустая выборка)?ведь получается проверять на ДатуВозврата надо в том случае если первый запрос какие то результаты.
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
23.12.2012, 20:46 18
По-игроцки любое списание делается по остаткам. Для проверки, есть ли они. Ну и для закрытия по аналитике типа "партия" (это м.б. и документ выдачи, кстати). Приход в регистр "НаРуках" возможен только в случае расхода из регистра "ОстаткиВБиблиотеке". Возврат книги делать по партии, т.е. дате. Допустим одно наименования в двух экземплярах с разными датами возврата. Но с датой надо ещё подумать: а какой отчет, связанный со сроками возврата, мы хотим иметь? От этого и идти. И у меня всё больше уверенности, что это не дата, а документ, в котором дата возврата один из нескольких нужных для отчета атрибутов.
0
aidarr
0 / 0 / 2
Регистрация: 20.11.2009
Сообщений: 73
23.12.2012, 20:49  [ТС] 19
Цитата Сообщение от duk337 Посмотреть сообщение
По-игроцки любое списание делается по остаткам. Для проверки, есть ли они. Ну и для закрытия по аналитике типа "партия" (это м.б. и документ выдачи, кстати). Приход в регистр "НаРуках" возможен только в случае расхода из регистра "ОстаткиВБиблиотеке". Возврат книги делать по партии, т.е. дате. Допустим одно наименования в двух экземплярах с разными датами возврата. Но с датой надо ещё подумать: а какой отчет, связанный со сроками возврата, мы хотим иметь? От этого и идти. И у меня всё больше уверенности, что это не дата, а документ, в котором дата возврата один из нескольких нужных для отчета атрибутов.
С помощью ДатыВозврата и датой когда фактически вернули книгу можно узнать на сколько дней просрочил читатель держание книги на руках. Это нужно для отчета черного списка читателей.
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
23.12.2012, 20:56 20
Цитата Сообщение от aidarr Посмотреть сообщение
С помощью ДатыВозврата и датой когда фактически вернули книгу можно узнать на сколько дней просрочил читатель держание книги на руках. Это нужно для отчета черного списка читателей.
Вот и я думаю, что для вычислений могут понадобиться и стоимость, и размер штрафа, и красные карточки и т.п. Поэтому выгодней сразу в "Партию" запихать весь документ, повесив на него ещё какой-нибудь справочник или периодический регистр сведений с историей клиента.
0
23.12.2012, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2012, 20:56

выборка из двух схожим регистров накопления
есть два регистра накопления, у каждого из них примерно одинаковые поля, только в один пишется...

Выборка из регистра сведений
Доброе время суток! Необходима ваша помощь: Существует регистр сведений ЗаписьНаВремя. В нем...

Получение данных из регистра накопления
Всем добрый день. Я только начинаю изменять типовые решения в 1С. И вот интересно, почему у меня не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru