Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Волшебство программирования на 1С:Предприятие 7.7 Выпуск 1


Служба Рассылок Subscribe.Ru

Волшебство программирования на 1С:Предприятие 7.7

Вступительное слово Волшебника

Первым примером, демонстрирующим легкость программирования на 1С, у нас станет конфигурация "Мини-склад". Это классическая задача учета материалов, на которой можно показать элементарные приемы программирования. Конфигурация состоит из 2 справочников, 2 документов и 1 отчета. Эта конфигурация уже знакома внимательным читателям Учебника по 1С на сайте www.mista.ru. Первые несколько выпусков рассылки предлагаются читателям "для разогреву", для сбора отзывов и пожеланий.


Мини-склад

- Только что здесь была моя ладья, а теперь ее нет.
- Нет - значит не было. Я ее съел.
- На каком ходу?
- На четырнадцатом. Что вы мне голову морочите?
- Позвольте! У меня все ходы записаны!


Постановка задачи

Требуется создать простейшую систему складского учета для нескольких складов, которая позволит приходовать и отпускать материалы, а также формировать отчет по остаткам материалов. Материалы объединяются в группы, например, строительные материалы, лакокрасочные материалы. Отчет по остаткам должен показывать материалы по группе и по складам. В отчете по остаткам должна быть возможность отключения детализации по складам.


Объекты конфигурации

Справочники:

  • Материалы (количество уровней: 3)
  • Склады

Документы

  • Приход
    (реквизиты шапки: Склад,
    реквизиты табличной части: Материал, Количество)
  • Расход
    (реквизиты шапки: Склад,
    реквизиты табличной части: Материал, Количество)

При создании документов не забудьте поставить галочку "Оперативный учет", чтобы данный документ мог делать движения в регистрах.

Журнал документов Складские

Регистр ОстаткиМатериалов (измерения: Материал, Склад, ресурсы: Количество, тип регистра: регистр остатков)

Отчет ОстаткиМатериалов


Документ "Приход"

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

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал = Материал;
Регистр.ОстаткиМатериалов.Склад = Склад;
Регистр.ОстаткиМатериалов.Количество = Количество;
Регистр.ОстаткиМатериалов.ДвижениеПриходВыполнить();

КонецЦикла;

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


Документ "Расход"

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

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал = Материал;
Регистр.ОстаткиМатериалов.Склад = Склад;
Регистр.ОстаткиМатериалов.Количество = Количество;
Регистр.ОстаткиМатериалов.ДвижениеРасходВыполнить();

КонецЦикла;

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


Отчет "Остатки материалов"

Экранная форма диалога отчета содержит поля ВыбрСклад и ВыбрМатериалГруппа. Если указан склад, тогда отчет должен выводить сведения только по указанному складу. Если склад не указан, тогда по всем складам. Аналогично с реквизитом ВыбрМатериалГруппа. Единственное отличие такое, что в этом реквизите может быть указана группа материалов, тогда отчет должен показать сведения только по материалам, входящим в указанную группу.

Кроме того отчет должен содержать флажок "Не выводить детализацию по складам". Если этот флажок будет указан, тогда детализация по складам должна быть отключена и выводятся сводные остатки материалов по всем складам.

Шаблон печатной формы в Конфигураторе содержит секции: Заголовок, Группа, Материал, Склад.

Модуль отчета:

Процедура Сформировать()

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "
|Материал = Регистр.ОстаткиМатериалов.Материал;
|Склад = Регистр.ОстаткиМатериалов.Склад;
|Количество = Регистр.ОстаткиМатериалов.Количество;
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка Материал;
|Группировка Склад;
|Условие (Материал в ВыбрМатериалГруппа);
|Условие (Склад в ВыбрСклад);
|";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
...Возврат;
КонецЕсли;

Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Заголовок");

Пока Запрос.Группировка(1) = 1 Цикл

Если Запрос.Материал.ЭтоГруппа()=1 Тогда
... Таб.ВывестиСекцию("Группа");
Иначе

Таб.ВывестиСекцию("Материал");

Если Фл_НеВыводитьСклады = 0 Тогда
...Пока Запрос.Группировка(2) = 1 Цикл
......Таб.ВывестиСекцию("Склад");
...КонецЦикла;
КонецЕсли;

КонецЕсли;

КонецЦикла;

Таб.Опции(0);
Таб.Показать("ОстаткиМатериалов", "");

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


Дополнительные функции

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

  • Единицы измерения для каждого материала. У материала есть основная единица измерения (выбирается из справочника ЕдиницыИзмерения), в которых хранятся остатки в регистре. При приходовании и расходовании материала пользователь может указать любую единицу измерения, допустимую для данного материала (выбирается из подчиненного справочника ЕдИзмМатериалов). Программа пересчитывает указанное количество в основную единицу измерения с использованием коэффициента пересчета из справочника ЕдИзмМатериалов. В отчет добавляется новая колонка "Ед. изм."

  • Учет денежного выражения. В регистр Материалы добавляется новый ресурс СуммаРуб. (название Сумма не рекомендуется, так как есть встроенная функция Сумма в языке запросов). В отчете выводятся две колонки: Количество и Сумма. Должна быть возможность выводить только одну колонку по требованию пользователя. По колонке Сумма должны выводиться итоги по каждой группе материалов и по всему отчету.

  • Отчет о движении материалов за период. Пользователь в диалоге указывает период. В отчете выводятся колонки: Материал, Остаток на начало период, Приход за период, Расход за период, Остаток на конец периода. Для ускорения работы отчета на больших базах можно создать оборотный регистр ДвижениеМатериалов, тогда каждый документ должен делать движения по двум регистрам.

  • Партионный учет. Списание материалов по средней себестоимости / по методу FIFO / LIFO. В регистр добавляется новое измерение Партия (типа Документ). При расходовании материала подсчитывается сумма списания по заданному методу. Метод задается пользователем в константе МетодСписанияМатериалов (выбирается из перечисления МетодыСписанияМатериалов).

Что можно скачать

По адресу http://www.mista.ru/tutor_1c/files можно скачать конфигурацию "Мини-склад" (15К)


Заключительно слово Волшебника

Ваши отзывы и пожелания направляйте по адресу stasmit@mail.ru или оставляйте в Гостевой книге.
Официальный сайт рассылки: Информационные системы www.mista.ru

Предлагайте свои идеи, что еще можно автоматизировать.
Если у вас есть готовые разработки с описанием, то присылайте!

С уважением,
Волшебник Станислав



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное