Добавлено (27.09.2013, 09:55)
---------------------------------------------
Поправлю сам себя... Если ордер по приходу в ключен, тосерии указываются в ордере и нужно сделать проверку на приход плохих серий еще и в ордере... Думаю так...
Добавлено (29.10.2013, 13:53)
---------------------------------------------
На экзамене попалась данная задача. Сдавал удаленно. Сдал.
Но сняли бал за то, что "пользователю позволяется ввести неверные данные, которые потом будут проконтролированы".
Сдавая очно, я конечно пободался бы с экзаменатором, т.к. иначе бы пришлось изменять форму подбора серий. Через подписки на события это не сделаешь (покрайней мере в 1С 8.2). И следовательно при таком стиле программирования, обновлять потом замучаешься. Но видать с точки зрения экзаменатора это все вторично, а именно, плевать на легкость дальнейшего обновления.
Так что имейте ввиду то, что им нравиться проведения контроля данных как можно раньше.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Если ПараметрКоманды = Неопределено ИЛИ НЕ ТипЗнч(ПараметрКоманды) = Тип("СправочникСсылка.Номенклатура") Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура("ВидНоменклатуры", ПолучитьЗначнеиеРеквизитаНаСервере(ПараметрКоманды, "ВидНоменклатуры"));
ОткрытьФорму("Справочник.СерииНоменклатуры.Форма.Экзамен_ФормаСписка", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры
&НаСервере
Функция ПолучитьЗначнеиеРеквизитаНаСервере(Объект, ИмяРеквизита)
Возврат Объект[ИмяРеквизита];
КонецФункции // ПолучитьЗначнеиеРеквизитаНаСервере()
Процедура ПередЗаписью_ПриходныйОрдерНаТовары(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ТабличнаяЧастьСерии = Источник.Серии.Выгрузить();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТабличнаяЧастьСерии", ТабличнаяЧастьСерии);
Запрос.Текст =
"ВЫБРАТЬ
| ТабличнаяЧастьСерии.НомерСтроки,
| ТабличнаяЧастьСерии.Количество,
| ТабличнаяЧастьСерии.КоличествоУпаковок,
| ТабличнаяЧастьСерии.Номенклатура,
| ТабличнаяЧастьСерии.Серия КАК СерияНоменклатуры,
| ТабличнаяЧастьСерии.Упаковка,
| ТабличнаяЧастьСерии.Характеристика
|ПОМЕСТИТЬ ВТ_ТабличнаяЧастьСерии
|ИЗ
| &ТабличнаяЧастьСерии КАК ТабличнаяЧастьСерии
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_ТабличнаяЧастьСерии.Номенклатура,
| ВТ_ТабличнаяЧастьСерии.СерияНоменклатуры,
| ВТ_ТабличнаяЧастьСерии.Характеристика
|ИЗ
| ВТ_ТабличнаяЧастьСерии КАК ВТ_ТабличнаяЧастьСерии
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры.ДополнительныеРеквизиты КАК СерииНоменклатурыДополнительныеРеквизиты
| ПО ВТ_ТабличнаяЧастьСерии.СерияНоменклатуры = СерииНоменклатурыДополнительныеРеквизиты.Ссылка
| И (СерииНоменклатурыДополнительныеРеквизиты.Свойство.Наименование = ""Плохая серия"")
|ГДЕ
| ЕСТЬNULL(СерииНоменклатурыДополнительныеРеквизиты.Значение, ЛОЖЬ) = ИСТИНА";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Отказ = Истина;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ТекстСообщения = "";
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТекстСообщения = ТекстСообщения + ?(ТекстСообщения = "", "", Символы.ПС)
+ "Для номенклатуры: " + ВыборкаДетальныеЗаписи.Номенклатура
+ ?(ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Характеристика), " с х/н: " + ВыборкаДетальныеЗаписи.Характеристика, " ") + Символы.ПС
+ "Установлена ""Плохая серия"": " + ВыборкаДетальныеЗаписи.СерияНоменклатуры;
КонецЦикла;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ТекстСообщения;
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
Процедура ПодпискаНаСобытиеСерииПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПлохиеСерииСрезПоследних.Серия,
| ПлохиеСерииСрезПоследних.Номенклатура,
| ПлохиеСерииСрезПоследних.Характеристика
|ИЗ
| РегистрСведений.ПлохиеСерии.СрезПоследних(
| &Дата,
| Серия В (&Серии)
| И Характеристика В (&Характеристика)
| И Номенклатура В (&Номенклатура)) КАК ПлохиеСерииСрезПоследних";
Запрос.УстановитьПараметр("Дата", Источник.Дата);
Запрос.УстановитьПараметр("Серии", Источник.Серии.ВыгрузитьКолонку("Серия"));
Запрос.УстановитьПараметр("Характеристика", Источник.Серии.ВыгрузитьКолонку("Характеристика"));
Запрос.УстановитьПараметр("Номенклатура", Источник.Серии.ВыгрузитьКолонку("Номенклатура"));
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТекстОшибки = НСтр("ru='В документе есть номенклатура с плохой серией, документ заблокирован: ""%НомерСерии%""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%НомерСерии%", ВыборкаДетальныеЗаписи.Серия.Номер);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Источник, , , Отказ);
КонецЦикла;
КонецПроцедуры
Затем делаю отчет ВЫБРАТЬ
ПлохиеСерииСрезПоследних.Номенклатура,
ПлохиеСерииСрезПоследних.Характеристика,
ПлохиеСерииСрезПоследних.Серия
ПОМЕСТИТЬ ПлохиеСерии
ИЗ
РегистрСведений.ПлохиеСерии.СрезПоследних КАК ПлохиеСерииСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДвиженияСерийТоваровОбороты.Номенклатура,
ДвиженияСерийТоваровОбороты.Характеристика,
ДвиженияСерийТоваровОбороты.Серия,
МАКСИМУМ(ДвиженияСерийТоваровОбороты.Период) КАК ДатаПоставки,
ДвиженияСерийТоваровОбороты.СкладскаяОперация,
ДвиженияСерийТоваровОбороты.Документ.Партнер КАК Партнер
ПОМЕСТИТЬ Поставки
ИЗ
РегистрНакопления.ДвиженияСерийТоваров.Обороты(
,
,
Регистратор,
(Номенклатура, Характеристика, Серия) В
(ВЫБРАТЬ
ПлохиеСерии.Номенклатура,
ПлохиеСерии.Характеристика,
ПлохиеСерии.Серия
ИЗ
ПлохиеСерии КАК ПлохиеСерии)) КАК ДвиженияСерийТоваровОбороты
СГРУППИРОВАТЬ ПО
ДвиженияСерийТоваровОбороты.Номенклатура,
ДвиженияСерийТоваровОбороты.Характеристика,
ДвиженияСерийТоваровОбороты.Серия,
ДвиженияСерийТоваровОбороты.СкладскаяОперация,
ДвиженияСерийТоваровОбороты.Документ.Партнер
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура,
ТоварыНаСкладахОстатки.Характеристика,
ТоварыНаСкладахОстатки.Серия,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииНаСкладе
ПОМЕСТИТЬ Остатки
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(
,
(Номенклатура, Характеристика, Серия) В
(ВЫБРАТЬ
ПлохиеСерии.Номенклатура,
ПлохиеСерии.Характеристика,
ПлохиеСерии.Серия
ИЗ
ПлохиеСерии КАК ПлохиеСерии)) КАК ТоварыНаСкладахОстатки
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Поставки.ДатаПоставки,
Поставки.Номенклатура,
Поставки.Характеристика,
Поставки.Серия,
Остатки.ВНаличииНаСкладе,
Поставки.СкладскаяОперация,
Поставки.Партнер
ИЗ
Поставки КАК Поставки
ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
ПО Поставки.Номенклатура = Остатки.Номенклатура
И Поставки.Характеристика = Остатки.Характеристика
И Поставки.Серия = Остатки.Серия
Пытаюсь это запустить, но вылезает ошибка метаданных, обновляю метаданные обработкой разработчика и отчет стал открываться, но вот данных в нем... в чем может быть проблема? Такое и с другими отчетами, которые вначале не открывались, а потом после обновления метаданных пустые... пытаюсь открыть отчеты и других людей, делавших эту задачуЗадача на конфигурирование: задание выполнено некорректно, пользователю предоставляется возможность работы с плохими сериями, после чего выполняется контроль, приводящий к отмене действий
Не забудьте сделать проверку на плохие серии и при указании / подборе серий (помимо обработки проведения), иначе -2 балла гарантировано.
Были случаи?
http://www.youtube.com/watch?v=y0bYqScpJ-4
Ошибиться в решении не могли? Делал на этой версии, документы перепроводятся.
Так и я о том же. Документ поступления перепроводится.