среда, 8 июня 2016 г.

1С-ное.(Заметки быдло-ученика-погромиста), 26 занятие: подборы и ввод на основании.

Я почти закончил читать книжку!!

Что такое подбор?
На самом деле в книжке этот вопрос немного некорректен. Ведь по факту мы создаем отдельную процедуру, которая срабатывает по нажатию кнопки. Вместо подбора мы бы могли сделать заполнение табличной части целиком по какому-либо алгоритму, да и вообще.  В данном случае мы реализуем Подбор – это когда пользователь выбирает данные в табличную часть документа из подчиненного справочника.

Как организовать различные виды подбора в табличную часть формы документа?
В данном случае мы это реализуем командой ОткрытьФорму.
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) – посмотреть параметры можно в синтакс-помощнике.  Играясь с этими настройками, мы можем получать разные виды подбора.

Что такое Ввод на основании?
С точки зрения обывателя ввод на основании – это способ создавать новые объекты (документы, например), не вводя повторно уже имеющиеся данные. Мы просто их копируем через механизм на новый объект с объекта основания.
Но с точки зрения бизнес-процесса получается интересный инструмент, который позволяет выстраивать четкую структуру подчиненности объектов, как правило, документов:


Это полностью отражает одно из главных бухгалтерских правил – ни одна цифра, документ, объект не берется из воздуха. В реальной жизни вы увидите, а может, и будете расследовать пропажу копеек в цепочках типа Договор контрагента - Заявка на расходование денежных средств – Платежное поручение и куча всяких других.

Как организовать ввод одних объектов конфигурации на основании других?
2 способа. Первый – через конструктор ВводаНаОсновании  - правый клик по объекту – раздел «Ввод на основании» - указываем объект, на основании которого вводим текущий объект либо наоборот – указываем те объекты, которые будем вводить и работает с конструктором:


Второй способ – сделать программно. Во первых, можно открыть форму нового объекта со структурным параметром  типа «Основание», ОбъектКоторыйБудетОснованием (смотри в книжке, как мы решали вопрос с подбором):


После такого открытия будет работать процедура ОбработкаЗаполнения, в который надо бы ввести какой-нибудь код, если мы хотим, чтобы все работало, после чего форма откроется для редактирования пользователю.
Если мы не хотим светить перед пользователем нашим новым объектом, а хотим сразу же его заполнить и тут же записать, то процедуру ОбработкаЗаполнения можно вызвать методом объекта «Заполнить», например, в первой строчке создадим новый документ:
НовыйДок = Документы.ОказаниеУслуги.СоздатьДокумент();
А второй строчкой вызовем метод у созданного объекта:
НовыйДок.Заполнить(<Сюда мы можем впихнуть параметры для процедуры ОбработкаЗаполнения>);



Как с помощью критерия отбора вывести список объектов, введенных на основании текущего объекта?
Можно не только введенные на основании, но вообще делать отбор по любому реквизиту, который используется где-то еще. Например, хотим посмотреть, где заблудилась вся наша номенклатура. Создаем объект КритерийОтбора (так же, как и раньше, правым кликом и «Создать» в древе конфигурации), на закладке «Данные» выбираем критерий, по которому и будем искать (Справочник.Номенклатура), и за закладке Состав  система нам любезно подсказывает, где мы сможем увидеть нашу номенклатуру:


Нащелкиваем нужные объекты и проверяем:



Обратите внимание, что если бы мы в учебнике не ввели бы реквизит «ОбъектОснование», то фиг бы мы что нашли.

4 комментария:

  1. хорошо описал ответы + бонусы. Как раз читаю.

    ОтветитьУдалить
  2. спасибо! а то радченку пока до конца дочитаешь уже и начало забудешь (

    ОтветитьУдалить
  3. Жаль не отображаются картинки

    ОтветитьУдалить