Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 12:02

Дипломка. Застрял

Автор nicolas174, 02 мая 2023, 22:11

0 Пользователей и 1 гость просматривают эту тему.

nicolas174

Приветствую форумчане! Изучаю программирование с недавнего времени, учусь. Подошло время сдавать дипломный проект и я застрял на создании ПланаЗакупок. Очень прошу вашей помощи, заранее благодарен! ТЗ проекта прикрепил в аттач.

Вот так выглядит мой код: Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиНаСкладах.Записывать = Истина;

Блокировка = Новый БлокировкаДанных;
ТаблицаБлокировки = Спецификация.Выгрузить(,"Товар");
ТаблицаБлокировки.Колонки.Добавить("Склад");
ТаблицаБлокировки.ЗаполнитьЗначения(Склад,"Склад");

ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНаСкладах");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = ТаблицаБлокировки;

ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура","Товар");
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Склад","Склад");

Блокировка.Заблокировать();


Запрос = Новый Запрос;
Запрос.Текст =

"ВЫБРАТЬ
| РасходнаяНакладнаяСпецификация.Товар КАК Товар,
| СУММА(РасходнаяНакладнаяСпецификация.Количество) КАК Количество
|ПОМЕСТИТЬ ВТ_Данные
|ИЗ
| Документ.РасходнаяНакладная.Спецификация КАК РасходнаяНакладнаяСпецификация
|ГДЕ
| РасходнаяНакладнаяСпецификация.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяСпецификация.Товар
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_Данные.Товар КАК Товар,
| ВТ_Данные.Количество КАК Количество,
| ЕСТЬNULL(ОстаткиНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ОстаткиНаСкладахОстатки.СуммаОстаток, 0) КАК СуммаОстаток
|ИЗ
| ВТ_Данные КАК ВТ_Данные
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНаСкладах.Остатки(
| &Дата,
| Номенклатура В
| (ВЫБРАТЬ
| ВТ_Данные.Товар КАК Номенклатура
| ИЗ
| ВТ_Данные КАК ВТ_Данные)
| И Склад = &Склад) КАК ОстаткиНаСкладахОстатки
| ПО ВТ_Данные.Товар = ОстаткиНаСкладахОстатки.Номенклатура";

Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);



ТЗ = Новый ТаблицаЗначений;   


ТЗ.Колонки.Добавить("Номенклатура");
ТЗ.Колонки.Добавить("Количество");

Пока ВыборкаНоменклатура.Следующий() Цикл

Если ВыборкаНоменклатура.Количество > ВыборкаНоменклатура.КоличествоОстаток Тогда

НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Количество = ВыборкаНоменклатура.Количество - ВыборкаНоменклатура.КоличествоОстаток;
НоваяСтрока.Номенклатура = ВыборкаНоменклатура.Товар;
Сообщить("Нет товара");
Отказ = Истина;
Продолжить;

КонецЕсли;


ВыборкаЗаписей = ВыборкаНоменклатура.Выбрать();

ОсталосьПродать = ВыборкаНоменклатура.Количество;

Пока ВыборкаЗаписей.Следующий() И ОсталосьПродать > 0 Цикл

ОстатокКСписанию = 0;
СуммаКСписанию = 0;

Если ОсталосьПродать > ВыборкаЗаписей.КоличествоОстаток Тогда
ОстатокКСписанию = ВыборкаЗаписей.КоличествоОстаток;
СуммаКСписанию = ВыборкаЗаписей.Сумма;
ОсталосьПродать = ОсталосьПродать - ВыборкаЗаписей.КоличествоОстаток;
Иначе
ОстатокКСписанию = ОсталосьПродать;
СебестоимостьЕд = ВыборкаЗаписей.Сумма/ВыборкаЗаписей.КоличествоОстаток;
СуммаКСписанию = СебестоимостьЕд * ОстатокКСписанию;
ОсталосьПродать = 0;
КонецЕсли;

Движение = Движения.ОстаткиНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаЗаписей.Номенклатура;
Движение.Склад = Склад;   
Движение.Количество = ОстатокКСписанию;
Движение.Сумма = СуммаКСписанию;


КонецЦикла;
КонецЦикла;

Если

ТЗ.Количество() < 5 Тогда
СоздатьПланЗакупок(ТЗ);


КонецЕсли;


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

Процедура СоздатьПланЗакупок(ТЗ)

НовыйДокумент = Документы.ПланЗакупок.СоздатьДокумент();
НовыйДокумент.Дата = НачалоНедели(Дата);



НовыйДокумент.Записать();




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

А затупки у меня произошли на процедуре "СоздатьПланЗакупок(ТЗ)" не могу корректно написать создание документа.

Теги:
Рейтинг@Mail.ru

Поиск