Demy,
1) Можно приходовать услуги
2) Чистов советовал в качестве источника данных для блокировки использовать не табличную часть, а результат запроса к табличной части. В самом запросе соотв. использовать менеджер временных таблиц. Это позволяет избежать двух запросов к табличной части.
3) При оперативном проведении дату итогов нужно использовать пустую (Дата(1,1,1))
4) При расчете себестоимости для списания нельзя просто писать как у вас:
Стоимость = КСписанию * ДетальнаяВыборка.СуммаОстатка / ДетальнаяВыборка.Остаток;
- нужна "защита от копеек", 1С рекомендует делать это вот так:
Если КСписанию = ДетальнаяВыборка.Остаток Тогда
Стоимость = ДетальнаяВыборка.СуммаОстатка;
Иначе
Стоимость = КСписанию * ДетальнаяВыборка.СуммаОстатка / ДетальнаяВыборка.Остаток;
КонецЕсли;
5) Это мелочь конечно, но в задаче явно попутали имена переменных (стоимость и себестоимость). Должно быть: Списывается - себестоимость, приходуется в продажи - стоимость, у вас наоборот.
зы. Чтобы проверять на услугу, лучше (проще) использовать реквизит типа булево "ЭтоУслуга", а не возиться с перечислением. Мелочь, а приятно =)
Добавлено (27.05.2014, 11:25)
---------------------------------------------
program1Cer, то-же, что и в предидущем сообщении. Услуги при оприходовании проверяете, но я все привык через запросы делать, не знаю, по моему правильно только так.
Да, в корне конфигурации режим управления блокировкой - не выставлен в управляемый, это сразу минус.
И то, что блокировки не используете в принципе - тоже не допустимо на экзамене, прочитайте требования.
Я бы не стал проверять значение учетной политики четко для текущего года. Т.е. отказ от проведения - только если его нет в срезе последних (да и то, можно просто по-умолчанию ФИФО использовать, и об этом пользователю сообщать).
В самих запросах 1С рекомендует избегать вложенных запросов, в пользу временных таблиц.
Добавлено (27.05.2014, 11:34)
---------------------------------------------
+ Не тратьте время на расчет сумм при изменении цены/количества. Вообще формы документов нужно создавать, если об этом явно сказано.
Я удаляю просто неиспользуемые реквизиты "Цена" из табл. части и "СуммаДокумента" - из шапки, если по задаче не надо, никто этого не требует.
Вот модуль приходной накладной, как мне кажется самый идеальный вариант (Павел приводил такой пример где-то, потом говорил, что все-равно как оприходовать. Но мне этот вариант больше всех импонирует):
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Движения.ОстаткиНоменклатуры.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура,
| СУММА(ПриходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
| СУММА(ПриходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма,
| &Дата КАК Период,
| &Ссылка КАК Партия
|ИЗ
| Документ.ПриходнаяНакладная.СписокНоменклатуры КАК ПриходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| ПриходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
| И ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура.ЭтоУслуга = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура";
Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Движения.ОстаткиНоменклатуры.Загрузить(РезультатЗапроса.Выгрузить());
КонецПроцедуры