Файл: Разработка конфигурации «Планирование закупок и размещение заказов поставщикам» в среде 1С Предприятие 8.3.pdf
Добавлен: 27.06.2023
Просмотров: 439
Скачиваний: 7
СОДЕРЖАНИЕ
1.1. Выбор комплекса задач автоматизации
1.2. Характеристика документооборота, возникающего при решении задачи
1.3. Обоснование проектных решений по информационному обеспечению
2.2. Характеристика разработанных экранных форм документов в среде 1С:Предприятие
2.2.2 Описание разработанных форм отчетов, необходимых для отражения результатов решения задачи
2.3. Описание реализации периодических расчетов в среде 1С:Предприятие
2.4. Описание созданной / откорректированной карты маршрута бизнес процесса в среде 1С:Предприятие
2.7. Контрольный пример реализации проекта в среде 1С:Предприятие и его описание
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Заказ") Тогда
// Заполнение шапки
Основание = ДанныеЗаполнения;
Для Каждого ТекСтрокаЗаказы Из ДанныеЗаполнения.Заказы Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Количество = ТекСтрокаЗаказы.Количество;
НоваяСтрока.Сумма = ТекСтрокаЗаказы.Сумма;
НоваяСтрока.Товар = ТекСтрокаЗаказы.Товар;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.Закупка.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Закупка.Дата,
| Закупка.Номер,
| Закупка.Основание,
| Закупка.Поставщик,
| Закупка.СуммаДокумента,
| Закупка.Товары.(
| НомерСтроки,
| Товар,
| Количество,
| ЦенаЗакупки,
| Сумма
| )
|ИЗ
| Документ.Закупка КАК Закупка
|ГДЕ
| Закупка.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Подвал = Макет.ПолучитьОбласть("Подвал");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьТоварыШапка);
ВыборкаТовары = Выборка.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
КонецЦикла;
Подвал.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Подвал);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, Режим)
Если Режим = РежимПроведенияДокумента.Неоперативный Тогда
РаботаСРегистрами.ЗаписатьНаборВБазу(ЭтотОбъект,"Продажа");
Иначе
РаботаСРегистрами.ЗаписатьНаборВБазу(ЭтотОбъект,"Продажа");
Запрос = Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| ОстаткиОстатки.Товар,
| ОстаткиОстатки.КоличествоОстаток КАК НехваткаТовара ,
| Док.НомерСтроки
|ИЗ
| (ВЫБРАТЬ
| МИНИМУМ(РеализацияТовары.НомерСтроки) КАК НомерСтроки,
| РеализацияТовары.Товар КАК Товар
| ИЗ
| Документ.Реализация.Товары КАК РеализацияТовары
|
| СГРУППИРОВАТЬ ПО
| РеализацияТовары.Товар) КАК Док
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки(
| &Момент,
| Товар В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТовары.Товар
| ИЗ
| Документ.Реализация.Товары КАК РеализацияТовары
| ГДЕ
| РеализацияТовары.Ссылка = &Ссылка)) КАК ОстаткиОстатки
| ПО Док.Товар = ОстаткиОстатки.Товар
|ГДЕ
| ОстаткиОстатки.КоличествоОстаток < 0";
Граница = Новый Граница(МоментВремени(),ВидГраницы.Включая);
Запрос.УстановитьПараметр("Ссылка",Ссылка);
ЗАпрос.УстановитьПараметр("Момент",Граница);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Отказ=Истина;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Нехватка позиций в количестве: "+(-Выборка.НехваткаТовара);
Сообщение.Поле ="Товары["+(Выборка.НомерСтроки-1)+"].Количество";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента =Товары.Итог("Сумма");
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Закупка") Тогда
// Заполнение шапки
СуммаДокумента = ДанныеЗаполнения.СуммаДокумента;
Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Количество = ТекСтрокаТовары.Количество;
НоваяСтрока.Сумма = ТекСтрокаТовары.Сумма;
НоваяСтрока.Товар = ТекСтрокаТовары.Товар;
НоваяСтрока.Цена = ТекСтрокаТовары.ЦенаЗакупки;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.Реализация.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Реализация.Дата,
| Реализация.Клиент,
| Реализация.Номер,
| Реализация.СуммаДокумента,
| Реализация.Товары.(
| НомерСтроки,
| Товар,
| Количество,
| Цена,
| Сумма
| )
|ИЗ
| Документ.Реализация КАК Реализация
|ГДЕ
| Реализация.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Подвал = Макет.ПолучитьОбласть("Подвал");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьТоварыШапка);
ВыборкаТовары = Выборка.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
КонецЦикла;
Подвал.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Подвал);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
// регистр Остатки Приход
Движения.Остатки.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.Остатки.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Товар = ТекСтрокаТовары.Товар;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма = ТекСтрокаТовары.Сумма;
Движение.ЗакупочнаяЦена = ТекСтрокаТовары.Цена;
КонецЦикла;
// регистр Продажа
Движения.Продажа.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.Продажа.Добавить();
Движение.Период = Дата;
Движение.Клиент = Клиент;
Движение.Товар = ТекСтрокаТовары.Товар;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма = ТекСтрокаТовары.Сумма;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента =Товары.Итог("Сумма");
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Закупка") Тогда
// Заполнение шапки
СуммаДокумента = ДанныеЗаполнения.СуммаДокумента;
Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Количество = ТекСтрокаТовары.Количество;
НоваяСтрока.Сумма = ТекСтрокаТовары.Сумма;
НоваяСтрока.Товар = ТекСтрокаТовары.Товар;
НоваяСтрока.Цена = ТекСтрокаТовары.ЦенаЗакупки;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.Реализация.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Реализация.Дата,
| Реализация.Клиент,
| Реализация.Номер,
| Реализация.СуммаДокумента,
| Реализация.Товары.(
| НомерСтроки,
| Товар,
| Количество,
| Цена,
| Сумма
| )
|ИЗ
| Документ.Реализация КАК Реализация
|ГДЕ
| Реализация.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Подвал = Макет.ПолучитьОбласть("Подвал");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьТоварыШапка);
ВыборкаТовары = Выборка.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());