Продукты
Кефир жирность 1.5% МПР-0342
|
6.90
|
9.32
|
шт.
|
Яблоки "Голден" ФРЯ-908
|
17.50
|
25
|
кг.
|
Теперь нажмем [Печать] в форме списка справочника. Это будет выглядеть примерно так. Любуемся результатом;
Полученную табличную печатную форму мы можем послать на принтер;
Выходим из 1С:Предприятия. Так как сохранить изменения в конфигураторе мы можем только если ВСЕ пользователи выйдут из программы 1С:Предприятие. Не вышедших можно найти, если воспользоваться Монитором, но и он ничего не покажет, если кто-то открыл окно для ввода имени пользователя и пароля и не вошел. Таких надо учить...
2.6 Продолжение работы с товарами.
У нас есть справочник номенклатуры. В нем у каждого товара мы указали основную единицу измерения. Но мы ведь можем работать и с большими количествами. Например мы можем продать ящик яблок, в ящике, к примеру, 25 кг. Или ящик с тарелками, где их 12 штук. Мы можем пользоваться и другими единицами, если их занесем, соответственно, как значения перечисления ЕдИзм. Это не возбраняется. Хорошо посмотреть "Общероссийский классификатор единиц измерения". Но вернемся к нашей программе. Мы пришли к выводу, что нам необходимо как-то указать, что товар может измеряться не только в базовой единице, но и в каких-то кратных ей других единицах измерения. Так яблоки у нас будут либо в килограммах, либо в ящиках по 25 кг., тарелки либо в штуках, либо в ящиках комплектом на дюжину персон, кефир либо в пакетах по 1 штуке, либо в ящиках по 15 штук пакетов.
Эта задача в 1С решается следующим способом. Мы заведем новый справочник подчиненный справочнику товаров. Подчиненность означает, что каждая запись справочника товаров может иметь, принадлежащие только ей, одну, либо несколько, либо вообще не иметь, записей в подчиненном справочнике. Тут неплохо ознакомится с теорией реляционных баз данных. Литературы по этому вопросу есть много. Например книги Баркера, любая книжка по MS Access для начинающих и т.д.
Опишем каким мы хотим видеть наш подчиненный справочник. Название ему дадим "Единицы". В нем должны быть перечислены единицы измерения товара, включая базовую, и коэффициенты пересчета этих единиц в базовую, для базовой это "1". Реализуем нашу идею.
Создаем новый справочник;
Идентификатор - "Единицы", Комментарий - "единицы измерения товара";
В интерфейс вставлять не будем, это служебный справочник;
[Готово]. Появилось окно свойств справочника;
ГЛАВНОЕ: В поле подчинен выбираем справочник "Номенклатура". Этим мы и указываем характер их отношений;
Количество уровней - 1, следовательно групп у нас не будет, и зачем?. Длина кода - 5, длина наименования - 0. Мы не будем использовать это поле за ненадобностью. Серии кодов в пределах подчинения, тип кода - текст, сюда мы будем заносить текстовое представление названия единицы измерения, основное представление - код (другого варианта и нет). Автоматическая нумерация и контроль уникальности нам не нужны;
Занесем два новых реквизита: Первый - "Ед", тип - П.ЕдИзм. Второй - "Коэффициент", тип Число 5.0, неотрицательный;
Редактировать будем в диалоге;
Создаем форму элемента;
Если Вы обратили внимание, предопределенное поле Наименование нам для выбора не предложили, это потому, что мы указали его длину = 0;
Расставим поля как-нибудь поудобнее, но можем оставить и так;
Поле ввода кода сделаем недоступным - сюда мы будем, как и договорились ранее, автоматически заносить строковое представление названия единицы измерения;
Пусть поле ввода "Коэффициент" у нас будет с кнопкой выбора - так симпатичнее;
В поле ввода "Ед" добавим в формулу процедуру Ед();
В модуле формы пишем код процедуры Ед():
Процедура Ед()
Код=Строка(Ед);
// Здесь функцией Строка() мы получаем строковое
// представление значения перечисления
КонецПроцедуры
Еще мы хотим при вводе новой единицы измерения нам по умолчанию бы ставилось то значение, которое стоит у товара-владельца в качестве основного, ну соответственно и коэффициент должен ставиться равным единице. Пишем знакомую уже нам предопределенную процедуру:
Процедура ВводНового()
Ед=Владелец.ЕдИзм;
// А вот это важно. Здесь "Владелец" это указание на запись в справочнике
// "Номенклатура", которой будет принадлежать эта единица измерения
Коэффициент=1;
Код=Строка(Ед);
КонецПроцедуры
В 1С ссылки на реквизиты таблиц имеют такой же вид как и ссылки на атрибуты и методы объектов (через "."), а не как в VBA, где используется "!";
Для закрепления информации о ссылке "Владелец" внесем текстовое поле, которое в форме элемента будет нам выводить код и наименование товара-владельца:
В диалоге вставим из меню Вставить командой "Текст" текстовое поле;
В окошке свойств этого текста очистим поле "Заголовок";
На закладке "Дополнительно" введем формулу "("+СокрЛП(Владелец.Код)+") "+СокрЛП(Владелец.Наименование)
Здесь СокрЛП() - это функция, которая удаляет пробелы в конце и в начале текстовой строки, "(" - текстовое выражение в коде в 1С заключают в кавычки, + в 1С служит и знаком конкатенации текстовых выражений;
На закладке "Шрифт" выберем какой нибудь шрифт и оформление по нашему вкусу;
Нажмем [ОК];
Разместим это текстовое поле где ни будь сверху формы;
Скопируем это текстовое поле в буфер обмена;
Форма элемента готова. Закроем ее;
Создадим форму списка;
Растянем поля пошире, чтоб заголовки полей были видны полностью, и вставим наверх из буфера обмена текстовое поле;
Форму списка можно закрыть;
Сохраняем изменения и входим в 1С:Предприятие;
Войдем в справочник номенклатуры;
Найдем "Кефир" и установим на него курсор;
Из меню Действия командой "Подчиненный справочник" вызовем справочник "Единицы". Если бы у нас было несколько справочников подчиненных справочнику товаров, то нам пришлось бы выбирать из списка;
Введем новый элемент. Это будет элемент с базовой единицей. Ничего изменять не будем и сохраним его;
Теперь введем еще один элемент - с производной единицей измерения;
Единица Ц ящик (ящ.), коэффициент - 15;
В списке единиц у нас две записи;
Переключимся в справочник товаров и установим курсор на яблоках;
Возвращаемся в справочник единиц - он пуст. Две единицы, что мы только что ввели относятся к кефиру, соответственно в списке записей относящихся к яблокам их и не должно быть;
Введем аналогичным образом две записи для яблок: килограмм (кг.) коэффициент - 1, ящик (ящ.) коэффициент - 25;
Для остальных товаров внесем записи, как было сказано в начале главы. Обратите внимание, мы не можем создать подчиненные записи к элементу типа группа;
Разместив на экране рядом справочники товаров и единиц и переходя курсором по записям о товарах, мы можем видеть как в справочнике единиц меняются наборы записей;
Закроем справочник товаров. Установим курсор в справочнике единиц на любой записи;
Через меню Действия выполним команду "Иерархический список";
В справочнике единиц стало видно сразу множество записей;
Переходя по ним курсором, мы видим как меняется содержание текстового поля вверху списка, где мы указали выводить код и наименование владельца;
Остановимся на какой либо из записей;
Через меню Действия выполним команду "Иерархический список";
Снова в списке остались только записи относящиеся к какому-то одному товару;
Через меню Действия выполним команду "Справочник-владелец";
Открылся справочник товаров. Курсор в нем установился на том товаре, который являлся владельцем текущей единицы измерения;
Если мы будем выключать-включать иерархический список в справочнике товаров, то мы будем видеть соответственно либо все товары и группы сразу, либо только относящиеся к текущей группе/подгруппе;
Закроем 1С:Предприятие.
Содержание раздела