• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Пожалуйста, помогите с транспортом

  • Автор темы Leonid
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

Leonid

Заканчиваю курсы. Попалось задание:Задание 1

Организация занимается оказанием транспортных услуг. Оказание услуг оформляется документом «Реализация товаров услуг». В типовой конфигурации «Бухгалтерия предприятия» разработать подсистему учета транспорта, включающую следующие функции:

• учет пробега автомобилей
• учет норм расхода топлива
• учет топлива в разрезе водителей и топливных карт
• необходимую отчетность

Нормативно-справочная информация
Необходимо разработать справочники для хранения информации об автомобилях и моделях автомобилей (модель автомобиля является свойством автомобиля) .
(дополнительных реквизитов, кроме наименования, кода а также реквизита для связи информации между автомобилем и моделью автомобиля создавать не нужно)

Информация о водителях должна храниться в справочнике «Физические лица»
(справочник дорабатывать не нужно)

Информация о топливных картах должна храниться в справочнике «Номенклатура»
(справочник дорабатывать не нужно)

Учет топлива в разрезе водителей и топливных карт
Для отражения операций по поступлению топлива по топливным картам необходимо разработать новый документ «Поступление топливных карт», которым можно было бы оформлять поступление топлива на одного водителя по нескольким топливным картам
(в табличной части «Топливные карты» указывается топливная карта, сумма топливной карты и количество литров топлива)
Реализовать регистр накоплений для хранения информации о топливе в разрезе водителей и топливных карт в количественно-суммовом выражении
При проведении документа должны формироваться проводки
Д 10-3 – К 60.1

Списание топлива производиться по нормам расходов топлива, действующих на дату документа по методу ФИФО при проведении документа «Реализация товаров услуг» исходя из информации о пробеге автомобиля и его модели, при этом должны формироваться следующие проводки по списанию топлива:
Д 20.1.1 – К 10.3
Необходимо в форме документа «Реализация товаров услуг» добавить вкладку «Информация о рейсе», где указывать водителя, автомобиль, а также данные о пробеге.

Реализовать соответствующие объекты в конфигурации и доработать документ «Реализация товаров услуг»


Реализовать отчет, по движению топлива в разрезе топливных карт и водителей (показывающий остаток на начало периода, приход, расход, остаток на конец периода)
Учет пробега автомобилей

Пробег автомобиля указывается в километрах в документе «Реализация товаров услуг» на вкладке «Информация о рейсе».

Внести изменения в документ, разработать соответствующие объекты в конфигурации для хранения информации о пробеге автомобилей, разработать отчет о пробеге автомобилей следующего вида:
Автомобиль\Контрагент Пробег
<Автомобиль> <Пробег в км>
<Контрагент> <Пробег в км>

Учет норм расхода топлива
Нормы расхода топлива устанавливаются для каждой модели автомашин и могут меняться со временем.

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

До списания топлива все сделал далее ступор. Если можно помогите!!!
 
G

Guest

Leonid
В чем именно проблема?
Если в отчете по движению топлива, то аналогично Ведомости по партиям, ведь регистр у вас уже должен быть.
В нем должны быть измерения Поступление (документ новый поступления топлевных карт), Топливная карта, Водитель; Ресурсы Количество (литров) и Стоимость. Списание реализовать как в партиях- расчет цены литра исходя из остатка по партии. Тут главное не забыть, что при списании последнего количества (списание до нуля) нужно списывать всю сумму, иначе будут зависать копейки из-за округления.

Пробег учитывать в отдельном регистре с измерениями Автомобиль, Контрагент и ресурсом Пробег. Все эти данные есть в Реализации.

Нормы расхода топлива нужно хранить в периодическом регистре сведений. Аналог например регистр "Цены номенклатуры". Измерение "Марка" и ресурс "НормаРасхода". Периодичность день.
 
L

Leonid

Проблема именно в части: Списание топлива производиться по нормам расходов топлива, действующих на дату документа по методу ФИФО при проведении документа «Реализация товаров услуг» исходя из информации о пробеге автомобиля и его модели, при этом должны формироваться следующие проводки по списанию топлива:
Д 20.1.1 – К 10.3
Необходимо в форме документа «Реализация товаров услуг» добавить вкладку «Информация о рейсе», где указывать водителя, автомобиль, а также данные о пробеге.

Реализовать соответствующие объекты в конфигурации и доработать документ «Реализация товаров усл

Не могу прописать движение в регистре накопления. Туплю весь день. А по партиям я списывал тупо копируя запрос из пособия.
Так, что проблема с запросом.
 
L

Leonid

Так в этом-то и проблема, что запроса нет. Когда решал задачу по складам копировал текст запроса по партиям и менял слово "партия" на "слад". Теперь это не получается.
 
G

Guest

Leonid
давай сюда свой текст запроса, который есть у тебя и не работает.
 
L

Leonid

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

Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Запрос.Текст = Запрос.Текст +" ИЗМЕНЕНИЯ
|РегистрНакопления.ОстаткиНоменклатуры.Остатки";
КонецЕсли;

Запрос.Текст = Запрос.Текст +" УПОРЯДОЧИТЬ ПО
| Номенклатура,
| Ост.Партия.Дата ВОЗР
|ИТОГИ
|Сумма(КолОст),
|Сумма(СуммаОст),
|Максимум(КолДок),
|Максимум(СуммаДок)
|ПО Накл.Номенклатура, Ост.Партия";

Запрос.УстановитьПараметр("ПарСсылка",Ссылка);
Запрос.УстановитьПараметр("Момент", МоментВремени());
РезультатЗапроса = Запрос.Выполнить();

ВыборкаТоваров = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Номенклатура");
Пока ВыборкаТоваров.Следующий() Цикл //10
Остаток = ?(ВыборкаТоваров.КолОст = Null,0,ВыборкаТоваров.КолОст);
КолДок = ?(ВыборкаТоваров.КолДок = Null,0,ВыборкаТоваров.КолДок);
СуммаДок = ?(ВыборкаТоваров.СуммаДок = Null,0,ВыборкаТоваров.СуммаДок);
Нехватка = КолДок - Остаток;
Если Нехватка>0 Тогда
Сообщить("Нехватка товара " + СокрЛП(ВыборкаТоваров.Номенклатура) + ": " + Нехватка);
Сообщить("Расходная " + Номер+ " от " +Дата+" не проводится!");
Отказ = Истина;
КонецЕсли;

// списание партий
НадоСписать = КолДок;
//12

ВыборкаПартий=ВыборкаТоваров.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Партия");
Пока ВыборкаПартий.Следующий() Цикл
КолПартии = ?(ВыборкаПартий.КолОст = Null, 0,ВыборкаПартий.КолОст); //13
СуммаПартии = ?(ВыборкаПартий.СуммаОст = Null, 0,
ВыборкаПартий.СуммаОст);
//Вычисление количества списания и себестоимости
Если НадоСписать<КолПартии Тогда
//списываем часть партии
КоличествоСп = НадоСписать;
СебестоимостьСп = СуммаПартии/КолПартии*КоличествоСп;
НадоСписать = 0;
Иначе
//списываем всю партию
КоличествоСп = КолПартии;
СебестоимостьСп = СуммаПартии;
НадоСписать =НадоСписать-КолПартии;
КонецЕсли;
//по регистру "ОстаткиНоменклатуры" //14
Движение=Движения.ОстаткиНоменклатуры.ДобавитьРасход();
Движение.Период = Дата;
Движение.Регистратор = Ссылка;
Движение.Номенклатура = ВыборкаПартий.Номенклатура;
Движение.Партия = ВыборкаПартий.Партия;
Движение.Количество = КоличествоСп;
Движение.Сумма = СебестоимостьСп;
Если НадоСписать=0 Тогда //15
Прервать;
КонецЕсли;
КонецЦикла;
//по регистру "Продажи"
Движение = Движения. Продажи.Добавить();
Движение.Период = Дата;
Движение.Регистратор = Ссылка;
Движение.Номенклатура = ВыборкаТоваров.Номенклатура;
Движение.Контрагент=Контрагент;
Движение.Количество = КолДок;
Движение.Сумма = СуммаДок;
КонецЦикла;
Движения.ОстаткиНоменклатуры.Записать();

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

Guest

1. Используй виртуальные таблицы! Дважды обращаться к таблице документов Реализация это ты зря.
2. Проверку на NULL нужно делать прямо в запросе. NULL + 1 = NULL
3. Сумма в документе реализации тебе совершенна не важна, это лишний показатель.
4. У тебя количество не указано явно в документе. Его нужно получать из регистра с нормами.
 
L

Leonid

Спасибо за помощь. Все получилось.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!