Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 02:05

Реализация функции получающая данные на на основе другого документа

Автор Sasha1C, 23 янв 2023, 10:51

0 Пользователей и 1 гость просматривают эту тему.

Sasha1C

Здравствуйте, я начинающий 1С программист. при создании пробной конфигурации 1С: Библиотека столкнулся с проблемой, которую пытаюсь решить. Есть документ "Выданные книги", и на основание этого документа создается второй "СдачаКниг" с реквизитом "ДокументОснование " на первый документ. И на основании первого документа, мы должны видеть сколько книг нам нужно сдать во втором документе. Я пробовал записать ссылку на "Выданные книги" в регистр накопления, также хотел   впихнуть в запрос в модуле объекта реквизит "ДокументОснование", но все безрезультатно. Возможно реквизит "ДокументОснование надо передать, как параметр, но у меня не получается это сделать. Подскажите пожалуйста как реализовать данный функционал :dfbbdrfb: 


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

Максим75

Sasha1C
смотри, я правильно понял задачу:
Есть документ ВыдачаКниг, потом в документ СдачаКниг залетает этот документ в реквизит ДокументОснование, так?
Теперь, что в регистре остатков хранится? Остатки по магазину и по книгам? ВыдачаКниг двигает "приход", СдачаКниг двигает "расход" по регистру? Теперь что значит вот это: "И на основании первого документа, мы должны видеть сколько книг нам нужно сдать во втором документе"?. Чтобы это видеть, проще всего в регистре рисовать реквизит типа Документ.ВыдачаКниг и в него писать при проведении и выдачи и сдачи ссылку на документ выдачи, тогда можно будет видеть остаток по конкретному документу. ну а потом уже с остатками разбираться, тогда будет проще получить остатки в регистре на нужную дату по нужному магазину и документу, т.е. видеть сколько на этом магазине по конкретному документу осталось книг и каких.

Sasha1C

Максим75,
1)Есть документ ВыдачаКниг, потом в документ СдачаКниг залетает этот документ в реквизит ДокументОснование, так?
Да, иенно так
2) Теперь, что в регистре остатков хранится?
Хранятся данные в разрезе Названия Книг и Книжного Магазина
3)ВыдачаКниг двигает "приход", СдачаКниг двигает "расход" по регистру?
Верно
4)Теперь что значит вот это: "И на основании первого документа, мы должны видеть сколько книг нам нужно сдать во втором документе"?
Я имею ввиду что нам необходимо проверить может быть все книги уже были возвращены, и тогда нам нельзя проводить еще книги при проведении "СдачаКниг"
5)Чтобы это видеть, проще всего в регистре рисовать реквизит типа Документ.ВыдачаКниг и в него писать при проведении и выдачи и сдачи ссылку на документ выдачи, тогда можно будет видеть остаток по конкретному документу.
 Я так понял, что нужно создать измерение, куда мы впишем реквизит типа Документ.ВыдачаКниг, я правилно понимаю?


Максим75

Sasha1C,
5)Чтобы это видеть, проще всего в регистре рисовать реквизит типа Документ.ВыдачаКниг и в него писать при проведении и выдачи и сдачи ссылку на документ выдачи, тогда можно будет видеть остаток по конкретному документу.
 Я так понял, что нужно создать измерение, куда мы впишем реквизит типа Документ.ВыдачаКниг, я правилно понимаю?

Да, правильно.
Так проще всего реализовать. Можно и по другому, но тогда придется выгребать из документа ВыдачаКниг сколько выдано, потом по СдачеКниг выгребать сколько вернули по документу ВыдачаКниг, ну и считать сколько осталось. Можно, но с регистра гораздо быстрее получать да и понятнее.

Afinogen

)))есть  тут подводный камень)))
учтите что  один  и тот же человек может брать несколько дней подряд  книги и насколько я понимаю у вас каждая выдача ему будет проходить отдельным документом "Выдача",  а потом он решит все книги сдать единым чохом, тогда вам еще нужно получать остаток и в разрезе клиента возможно :D

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск