Мое решение. Не смог придумать, как красиво сделать движение по РН "Продажи", т.к. добавление нового движения по продаже у меня должно было быть одновременно со списанием партии, то возникли сложности как посчитать сумму продажи. И в отчете "Остатки по товарам" не смог найти способ, как убрать надпись ИТОГО в самом низу.
1.У вас решение не на каркасной конфигурации.
2.В модуле док. Приходной накладной строка "Движения.ПартииТоваров.Очистить();" не обязательна.
3.В модуле док. расходной накладной строка "Движения.ПартииТоваров.Очистить(); и Движения.Продажи.Очистить();
" не обязательна.
4.Для чего этот фрагмент кода "
Если ДополнительныеСвойства.Проведен Тогда
Движения.ПартииТоваров.БлокироватьДляИзменения = Истина; //блокируем старые записи в ТЧ + для разделения итогов
КонецЕсли;
"
Видел много решений но такое первый раз.
5. В запросе временные таблицы нужно обязательно индексировать за это снимают балы.
6. вместо параметра "Запрос.УстановитьПараметр("ТочкаИтогов", МоментВремени());"
я бы вам посоветовал писать
"Запрос.УстановитьПараметр("ТочкаИтогов",?(Режим=РежимПроведенияДокумента.Неоперативный,Новый Граница(МоментВремени(),ВидГраницы.Включая),Неопределено));
7. Вместо
"Если ОбщийМодуль.ПолучитьУчетнуюПолитику(Дата) = Перечисления.МетодыСписания.FIFO Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПартииТоваровОстатки.Партия.МоментВремени УБЫВ",
"ПартииТоваровОстатки.Партия.МоментВремени ВОЗР");
КонецЕсли;
"
Лучше писать например так
"Если РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Дата).МетодСписания = Перечисления.УчетнаяПолитика.ФИФО Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, " УБЫВ", "");
КонецЕсли;
"
8. Сообщение пользователю также не оптимально реализовано
вместо "
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Товар " + ВыборкаИтоги.Номенклатура + " отсутствует."; // х3 как вывести в итогах Представление наименования, это минус...
Сообщение.Сообщить();
"
Лучше писать
"
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не доастаточно номенклатуры "+ВыборкаНоменклатура.Номенклатура+" в количестве "+(ВыборкаНоменклатура.Количество -ВыборкаНоменклатура.КолОст);
Сообщение.Поле = "СписркНоменклатуры[ВыборкаНоменклатура.номерСтроки-1].Номенклатура";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
"
9. Цикл по обходу результата не оптимально сделан
Посмотрите мое решение там и найдете решение по заполнению регистра Продажи.