Основные объекты: Ввод на основании

-- Ну, милый, моя жена тоже больна.
Правда, Мусик, у тебя легкие не в порядке?
Но я не требую на этом основании,
чтобы вы... ну... продали мне,
положим, ваш пиджак за тридцать копеек.
(И. Ильф, Е. Петров. Двенадцать стульев)

 

Говоря о конфигурировании системы 1С невозможно не упомянут возможность ввода данных “на основании”. Пользователю предоставляется возможность вводить данные одних объектов (например, справочников, документов, групп планов видов характеристик и т. д.) на основании данных других объектов. Чаще всего, таким основанием в системе 1С являются документы и справочники.

Рассмотрим конфигурирование ввода документа “Расходная” на основании документа “Приходная”.

Откроем в конфигураторе документ “Расходная” и на закладке “Ввод на основании” укажем, что основанием для данного документа будет являться документ “Приходная”:

Для использования конструктора процедуры “ОбработкаЗаполнения” нажмем на кнопку “Конструктор ввода на основании”:

Заполним выражения Конструктора с помощью кнопки “Заполнить выражения”:

Поле “Покупатель” мы оставляем незаполненным, так как определить покупателя товара на основании приходной накладной невозможно.

В результате, после нажатия на кнопку OK, будет сформирована следующая процедура:

Процедура ОбработкаЗаполнения(Основание)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(Основание) = Тип("ДокументСсылка.Приходная") Тогда
// Заполнение шапки
КонтактноеЛицо = Основание.КонтактноеЛицо;
Сотрудник = Основание.Сотрудник;
СуммаДокумента = Основание.СуммаДокумента;
Для Каждого ТекСтрокаТовары Из Основание.Товары Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Количество = ТекСтрокаТовары.Количество;
НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;
НоваяСтрока.Сумма = ТекСтрокаТовары.Сумма;
НоваяСтрока.Цена = ТекСтрокаТовары.Цена;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры

Далее можно установить цену продажи на 30% выше цены покупки и убрать из процедуры параметры СуммаДокумента, Количество и Сумма:

Проверим созданный механизм в пользовательском режиме 1С. Для этого нужно открыть форму списка документа “Приходная”, на основании которого формируется новый документ “Расходная”. Обратим внимание, что в командной панели документа “Приходная” появляется новый значок “Ввести на основании” (). После щелчка левой кнопкой мыши по указанному значку открывается выпадающий список объектов, которые можно ввести на основании данного документа “Приходная”. В нашем случае данный список включает в себя только один элемент – документ “Расходная”:

После выбора в указанном списке документа “Расходная” мы получаем “заготовку” новой расходной накладной, включающей в себя все товары из приходной накладной, взятой нами за “основание”:

Упражнение: Создайте документ “Счет”, который вводится на основании документа “Расходная”. У документа “Счет” один реквизит “Покупатель” (тип “СправочникСсылка.ПоставщикиИПотребители”), одна табличная часть “Товары”, содержащая реквизиты “Номенклатура” (тип “СправочникСсылка.Номенклатура”), “Количество” (тип “Число, 10, 0”), “Стоимость” (тип “Число, 10, 2”). Проведение документа “Счет” запрещается. Проверьте работу созданного механизма в пользовательском режиме 1С.