Файл: Разработка конфигурации «Покупка сырья и материалов» в среде 1С: ПРЕДПРИЯТИЕ 8.3.pdf
Добавлен: 03.07.2023
Просмотров: 64
Скачиваний: 3
СОДЕРЖАНИЕ
Выбор комплекса задач автоматизации
Характеристика документооборота, возникающего при решении задачи
Обоснование проектных решений по информационному обеспечению
Описание реализации периодических расчетов в среде 1С:Предприятие
Описание созданной / откорректированной карты маршрута бизнес-процесса в среде 1С:Предприятие
Описание разработанных подсистем в среде 1С:Предприятие
Описание разработанного интерфейса пользователя в среде 1С:Предприятие
Контрольный пример реализации проекта в среде 1С:Предприятие и его описание
Описание разработанных подсистем в среде 1С:Предприятие
Подсистемы - это общие объекты конфигурации. На их основе платформа формирует командный интерфейс прикладного решения и визуально разделяет всю функциональность программы на крупные и мелкие блоки.
Документы в 1С — это электронные аналоги обычных бумажных документов, одно из основных понятий системы 1С:Предприятие. При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и корректировка.
Регистры сведений - это прикладные объекты конфигурации. Они позволяют хранить в прикладном решении произвольные данные в разрезе нескольких измерений. Например, в регистре сведений можно хранить курсы валют в разрезе валют, или цены предприятия в разрезе номенклатуры и типа цен.
Регистры накопления - прикладные объекты конфигурации в системе 1С:Предприятие, которые используются для накопления информации о наличии и движении средств - товарных, денежных и других. Информация о хозяйственных операциях в регистры накопления вводится с использованием документов (регистраторов) и используется, например, для получения отчетных форм.
В настоящей конфигурации создана подсистема УчетМатериаловСырья.
В подсистему входят объекты:
Справочники
- Номенклатура
- ПроизводственныйОтдел
- Поставщики
- Договоры
- Склад
Документы
- ПоступлениеМатериалов
- ПриходнаяНакладная
Перечисления
- ДаНет
- ЦелостностьПартии
- ЗаявкаНаЗакупку
Отчеты
- ОстаткиНоменклатуры
Регистры сведений
- ЗаканныеМатериалы
Регистры накопления
- МатериалыОплата
- МатериалыПоставка
- ОстаткиМатериалов
Описание разработанного интерфейса пользователя в среде 1С:Предприятие
Сценарий диалога (рис.1):
Сценарий диалога (рис.1)
Контрольный пример реализации проекта в среде 1С:Предприятие и его описание
Создадим пустую базу в конфигураторе, назовем ее «ПупОк» (рис.2)
Создание конфигурации Рис.2
Организуем подсистему Учет Материалов и сырья (рис.3)
Подсистема учет материалов и сырья рис.3
Сначала добавим перечисления : ДаНет, ЦелостностьПартии и ЗаявкаНаЗакупку , которые нам понадобятся в дальнейшем. Состав перечислений виден на Рис.4
Перечисления рис.4
Сконфигурируем простые справочники Номенклатура и ПроизводственныйОтдел (рис.5).
Справочники Номенклатура и ПроизводственныйОтдел рис. 5
Реквизиту НаименованиеМатериала в справочнике ПроизводственныйОтдел присвоим тип ссылка на справочник Номенклатура рис. 6
Присвоение типа ссылки НаименованиеМатериала рис. 6
Все сформированные объекты конфигурации надо включить в состав подсистемы УчетМатериалов (рис.7)
Состав подсистемы УчетМатериалов рис. 7
Далее заведем справочник Поставщики и справочник Договоры (рис. 8). Отметим, что справочник Договоры кроме реквизитов имеет еще и табличную часть Спецификация.
Справочники Поставщики и Договоры рис. 8
В справочнике Договоры несколько реквизитов имеют тип ссылки :
НаименованиеМатериала – СправочникСсылка.Номенклатура
Поставщик – СправочникСсылка.Поставщики
Состояние - ПеречислениеСсылка.ЦелостностьПартии.
Для дальнейшего тестирования программы заполним в режиме Предприятие по нескольку строк в открытых нами справочниках. Сначала заполняем простые справочники, потом – справочники с реквизитами ссылками (рис. 9)
Заполнение простых справочников рис. 9
Далее добавляем в конфигурацию документы.
Сконфигурируем в дереве объектов конфигурации объект документ ПоступлениеМатериалов с реквизитами и табличной частью Номенклатура (рис.10).
Документ ПоступлениеМатериалов рис.10
Регистров накопления у нас в конфигурации пока нет – закладка Движение для документа остается пустой. Поскольку нам надо будет писать свою обработку документа, а пишется программный код в модуле формы документа, то и создадим эту самую форму (рис.11).
Модуль формы ПоступлениеМатериалов рис. 11
Делаем все по умолчанию, Форма – Добавить – ФормаДокумента.
Использовать данный документ будем при поступлении на склад как новых материалов, так и заменённых по гарантии.
Для учета поступления материалов заводим регистр накопления МатериалыОплата с измерениями, ресурсами и реквизитами (рис.12).
Регистр накопления МатериалыОплата рис.12
В закладке Регистраторы указываем наш документ ПоступлениеМатериалов. Сохраняем конфигурацию.
Возвращаемся по дереву объектов в документ ПоступлениеМатериалов. На закладке Движение выбираем регистр МатериалыОплата, запускаем Конструктор движений и заполняем поле Выражение значениями реквизитов документа (Рис.13).
ПоступлениеМатериалов закладке Движение рис.13
Жмем ОК и попадаем в Модуль объекта документа , где и видим уже созданный Конструктором движения регистров программный код (рис.14).
Модуль объекта документа рис.14
Далее необходимо добавить в Модуль объекта программный код, для обеспечения следующего функционала при проведении документа ПоступлениеМатериалов.
При поступлении нового материала (покупка) в справочнике Материалы должна добавляться строка с уникальным номером материала и соответствующими (из документа) реквизитами. При этом реквизит СостояниеМатериала будет иметь значение «Новый», а реквизит Местоположение – значение «Склад». Табличная часть справочника Материалы при этом не заполняется.
По алгоритму работы программы изначально надо занести каждый материал со своим уникальным номером в справочник Материалы документом ПоступлениеМатериалов.
При поступлении материала по гарантии считается, что материал с таким номером уже есть в справочнике Материалы, и в этом случае при проведении документа ПоступлениеМатериалов, добавляется строка в Табличную часть Возврат и меняются значения реквизитов Местонахождение и Состояние у текущего материала.
Теперь можно провести первую пробу работоспособности программы. В Предприятие создаем документ ПоступлениеМатериалов (рис.15).
Документ ПоступлениеМатериалов рис.15
Нажимаем кнопку Провести и закрыть. Переходим в справочник Материалы и видим, что в нем появилась строчка с реквизитами купленного материала с пустой табличной частью (рис.16).
Реквизиты купленного материала с пустой табличной частью рис.16
Реквизиты и табличная часть документа Номенклатура показаны на рис. 5. Подходящих регистров накопления и сведений у нас в конфигурации пока нет, в закладка Движение для документа не будем ничего отмечать. Поскольку нам надо будет писать обработку документа, то создаем ФормуДокумента по умолчанию.
Для учета поставки материала заводим для регистра сведений ЗаказанныеМатериалы с измерениями и реквизитами (рис.17).
Регистр сведений ЗаказанныеМатериалы рис.17
В закладке Регистраторы указываем наш документ ПоступлениеМатериалов.
Сохраняем конфигурацию. Возвращаемся по дереву объектов в документ ПоступлениеМатериалов. На закладке Движение выбираем регистр МатериалыПоставка, запускаем Конструктор движений и заполняем поле Выражение значениями реквизитов документа. Жмем ОК и попадаем в Модуль объекта документа, где и видим уже созданный Конструктором движения регистров программный код (рис.18).
Регистр МатериалыПоставка рис.18
Теперь добавляем в Модуль объекта программный код, для обеспечения следующего функционала при проведении документа ПоступлениеМатериалов. В справочнике Договоры для Объекта, на который поставляется материал должна добавиться строка в табличной части Спецификация со значениями реквизитов из документа и изменится значение реквизита НомерМатериалаСейчас. В справочнике Материалы у поставленного материала изменятся значения реквизитов Местоположение и Состояние. Доработанная процедура обработки проведения документа ПоступлениеМатериалов показана ниже.
Процедура ОбработкаПроведения(Отказ, Режим)
// используемые справочники
Договоры = Справочники.Договоры;
Материалы = Справочники.Материалы;
// конец вставки используемые справочники
// регистр МатериалыПоставка
Движения.МатериалыПоставка.Записывать = Истина;
Для Каждого ТекСтрокаНоменклатура Из Номенклатура Цикл
Движение = Движения.МатериалыПоставка.Добавить();
Движение.Номенклатура = НоменклатураМатериала;
Движение.СнятМатериалНомер = ТекСтрокаНоменклатура.СнятМатериалНомер;
Движение.ПоступилМатериалНомер=
ТекСтрокаНоменклатура.ПоступилМатериалНомер;
Движение.МодельМатериала = Объект;
Движение.АдресОбъекта = ТекСтрокаНоменклатура.АдресОбъекта;
Движение.АдресОбъекта =
ТекСтрокаНоменклатура.АдресОбъекта;
Движение.НаименованиеМатериала = ТекСтрокаНоменклатура.НаименованиеМатериала;
Движение.Ответственный = Ответственный;
Движение.НомерДоговора = ТекСтрокаНоменклатура.НомерДоговора;
// изменяем справочник Договоры
СтрокаНаименования = ТекСтрокаНоменклатура.АдресОбъекта;
НайденнаяСсылка = Договоры.НайтиПоРеквизиту("АдресОбъекта",СтрокаНаименования);
Если НЕ НайденнаяСсылка = Договоры.ПустаяСсылка()
Тогда ТекущийОбъект =
Договоры.НайтиПоРеквизиту("АдресОбъекта",СтрокаНаименования).ПолучитьОбъект();
ТекущийОбъект.НомерМатериалаСейчас =
ТекСтрокаНоменклатура.МатериалПоставлен;
НоваяСтрока = ТекущийОбъект.Спецификация.Добавить();
НоваяСтрока.ДатаПоставки = Дата;
НоваяСтрока.Артикул = ТекСтрокаНоменклатура.НаименованиеМатериала;
НоваяСтрока.НаименованиеМатериала =
ТекСтрокаНоменклатура.ПоставленМатериал
НоваяСтрока.НомерЗаявки =
ТекСтрокаНоменклатура.ЗаявкаМатериал;
НоваяСтрока.Ответственный = Ответственный;
НоваяСтрока.НомерДоговора = ТекСтрокаНоменклатура.НомерДоговора;
ТекущийОбъект.Записать();
КонецЕсли;
// изменяем справочник Материалы - поставка
СтрокаНаименования = ТекСтрокаНоменклатура.ПоставленМатериал;
НайденнаяСсылка = Материалы.НайтиПоРеквизиту("Номер",СтрокаНаименования);
Если НЕ НайденнаяСсылка = Материалы.ПустаяСсылка()
тогда ТекущийОбъект =
Материалы.НайтиПоРеквизиту("Номер",СтрокаНаименования).ПолучитьОбъект();
Строка = " ";
Строка = Строка + Объект + " " +
ТекСтрокаНоменклатура.АдресОбъекта + " " +
ТекСтрокаНоменклатура.АдресОбъекта;
ТекущийОбъект.МестоНахождения = Строка;
ТекущийОбъект.Записать();
КонецЕсли;
// заявка на поставку
СтрокаНаименования = ТекСтрокаНоменклатура.НомерЗаявки;
НайденнаяСсылка = Материалы.НайтиПоРеквизиту("Номер",СтрокаНаименования);
Если НЕ НайденнаяСсылка = Материалы.ПустаяСсылка()
тогда ТекущийОбъект =
Материалы.НайтиПоРеквизиту("Номер",СтрокаНаименования).ПолучитьОбъект();
ТекущийОбъект.МестоНахождения = "Склад";
ТекущийОбъект.Состояние = Перечисления.ЗаявкаПроработка;
ТекущийОбъект.Записать();
КонецЕсли;
// конец изменения справочников
КонецЦикла;
КонецПроцедуры;