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

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

Автор utkin295, 17 мая 2015, 12:13

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

utkin295

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

ЗЫ. 1С 8.2

Дмитрий@

Направление для изучения: форма выбора справочника, в которой находится динамический список, в этом динамическом списке можно сделать необходимый вам запрос.

Iric28

utkin295, в таком случае вам необходимо будет создать форму подбора, в которой и выводить список имеющихся книг. Форму открывать при выборе книги и выбранный элемент проверять на уникальность.

utkin295

Спасибо за ответы.
Можно немного подробней? Я так понимаю это нужно делать в реквизитах? Где-то можно взять подобный пример (необязательно регистр накопления)? Или форма подбора необходимо задавать в самом справочнике?

Дмитрий@

Примеров в книжках полно.
Вы сделайте что-то а мы направим.

Rolliielf

  Попробуйте действительно с динамическим списком. На форме выдачи книги при выборе книги в табличной части формируем данные выбора сами. Например так
&НаКлиенте
Процедура ТоварыКнигиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   СформироватьСписокКнигНаСервере();
   ДанныеВыбора =  СформироватьСписокКнигНаСервере();

КонецПроцедуры


&НаСервереБезКонтекста
Функция СформироватьСписокКнигНаСервере()
   
   СписокКниг = Новый СписокЗначений;
        
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   Книги.Ссылка
      |ИЗ
      |   Справочник.Книги КАК Книги";

   РезультатЗапроса = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
         СписокКниг.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
    КонецЦикла;
   
   Возврат СписокКниг;
   
КонецФункции

Только запросом нужно выбрать книги из регистра остатков (я его не создавала).

utkin295

ЦитироватьВы сделайте что-то а мы направим.
Я сделал для справочника форму выбора, она неосновная. Там есть Список с типом ДинамическийСписок. В свойствах указал для пункта Основная таблица свой регистр накопления ХранилищеКниг.Остатки. Окошко в дизайнере перестроилось в соответствии походим на правду (если судить по названиям колонок). Далее перешел в свой документ, на Форму Документа и в табличной части на список в котором идет отсылка к справочнику с книгами (прям нажал на название колонки в таблице) в пункте ФормаВыбора указал свою форму выбора. При запуске показывается все книги, но не отдельным окошком, а просто выпадающим списком. Пытался добиться прямой связи из формы документа (это еще до того как мне подсказали с формой выбора) с регистром накопления, но не нашел как этого добиться. Также пытался сделать общую форму в конфигурации в пункте Общие, по примеру из инета. Но там требовалось писать код ручками, что естественно не осилил.
Также хочу сообщить что знания мои в 1с весьма и весьма поверхностны. Наш преподаватель ушел в декрет и вместо нее преподавала другая тетка, которая давала программирование для 1с 8.0, причем в весьма узком спектре (упражнение и код к нему, любое отклонение от задания уже все преподаватель ответить не могла). Работаем мы в версии 8.2 и большую часть заданий удавалось сделать автоматически (исключение - подсчет суммы, количество* на цену). Запросы как мне показалось писать проще, 8.2 в этом плане наверно более автоматизирована.
Конечно мы изучали дерево объектов (опять же на примерах к 8.0), но этого явно недостаточно. Прежде чем обратиться сюда, я пытался найти ответ в информационных материалах к программе 1с версии обучения программированию, в частности в книге "Практическое пособие разработчика". Но там именно то, что мне нужно не реализовано и склад свободно загоняется в минуса (можно выдать со склада больше чем положили). Так я могу и сам сделать. Мне нужно получать информацию именно с регистра накопления (и желательно без кнопки Подбор, чтобы у пользователя даже возможности не было выбрать что-то не то).
ЦитироватьНа форме выдачи книги при выборе книги в табличной части формируем данные выбора сами.
Спасибо за код. Я попробую его адаптировать под свои нужды (правда понимаю его чуть более чем никак).
Вообще для моей контрольной это основная загвоздка :D, все остальное примитив (типа ввести в свою работу перечисления и константы, сделать отчеты и т.д.) и ранее на лпз эти вопросы мы рассматривали. Главная проблема - логическая целостность в регистре накопления и учитывая, что в коде я шарю чуть более чем никак, хочется сделать это автоматически средствами 1с, без программирования. 

Rolliielf

Цитата: utkin295 от 18 мая 2015, 20:54в коде я шарю чуть более чем никак
Очень грустно. Я уже хотела вам предложить организовать подбор, т.к. выпадающий список конечно здорово, но искать в нем нужную книгу очень не просто. А с подбором, я боюсь, вы не справитесь.

Добавлено: 19 мая 2015, 12:15


Цитата: utkin295 от 17 мая 2015, 12:13(все книги в единственном экземпляре, то есть имеется универсальный код, который позволяет отличать даже одноименные книги)
Получается, что книга в фонде либо есть, либо нет. Нельзя добавить в фонд одну книгу 5 штук. И выдать две одинаковые книги тоже нельзя. я правильно поняла?

utkin295

ЦитироватьОчень грустно. Я уже хотела вам предложить организовать подбор, т.к. выпадающий список конечно здорово, но искать в нем нужную книгу очень не просто. А с подбором, я боюсь, вы не справитесь.
Да, мне на примере запросов казалось, что эту функцию можно выполнить "мышкой". Я вообще сначала искренне верил, что решение возможно как в документе в реквизитах просто делаю ссылку на регистр накопления да и все.
ЦитироватьПолучается, что книга в фонде либо есть, либо нет. Нельзя добавить в фонд одну книгу 5 штук. И выдать две одинаковые книги тоже нельзя. я правильно поняла?
Да. Формально они уникальны по инвентарному номеру, по всем остальным показателям могут совпадать (ну там наименование, жанр и автор). То есть могут быть несколько книг Война и Мир Толстого, но у них будут разные инвентарные номера.

Rolliielf

Может тогда отслеживать книги через регистр сведений. Измерение-книга, ресурс - Наличие булевского типа. Пришла книга - наличие = истина. выдали книгу - наличие = ложь. Тогда предложенный выше динамический список можно формировать запросом

   Запрос.Текст =
      "ВЫБРАТЬ
      |   КнижныйФонд.Книга
      |ИЗ
      |   РегистрСведений.КнижныйФонд КАК КнижныйФонд
      |ГДЕ
      |   КнижныйФонд.Наличие = ИСТИНА";
Только выдавать книги придется по одной, т.е. реквизитом, а не в таблице.

Теги:

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

Рейтинг@Mail.ru

Поиск