Автор Тема: 2.37 (2016-2018 г.) "Плохие" серии  (Прочитано 1054 раз)

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

Natic221

  • Новичок
  • *
  • Сообщений: 9
2.37 (2016-2018 г.) "Плохие" серии
« : Январь 05, 2018, 08:51:19 pm »
Всем привет!
Задача присутствует в третьем билете.

В задаче написано, что отчет должен показывать:
Поставщика
Дату поставки
Номенклатуру/Серию
Наличие на складе
Клиента(которому был предан товар)

Вопрос: в 11.3 мы ведь не можем отследить кто является поставщиком продаваемого товара. И дату поставки этого товара тоже не можем посмотреть.
Или может быть имеется ввиду, что при поступлении поставщик наш контрагент, а при отгрузке поставщиком всегда являемся мы? И дата поставки это всегда дата документа движения серий?  <===== как-то это странно, такую задачу ставить..

Поделитесь мыслями ::)
« Последнее редактирование: Январь 08, 2018, 10:10:15 am от Natic221 »

Natic221

  • Новичок
  • *
  • Сообщений: 9
Re: 2.37 (2016г.) "Плохие" серии
« Ответ #1 : Январь 08, 2018, 10:09:50 am »
Первый раз готовлюсь к СПЕЦУ. Подскажите, если что упустил или не правильно сделал. :)

Для контроля использования "плохих" серий в документах сделал:
1. Создал общий модуль, в нем создал процедуру. В процедуру передается ссылка на документ, в зависимости от типа документа, определенный запрос проверяет документ на наличие плохих серий. В случае если серии присутствуют, выдается сообщение со списком серий.
Примечание: В складских документах(ордерах), при наличии "плохих" серий 1С указывает на поле, первое в таблице, в котором установлена "плохая" серия.
В документах ПТиУ и РТиУ реализовать указатель не удалось, т.к. для серий используется отдельная ТЧ. <=== если кто поправит меня будет хорошо)

2. В модуле объекта (ПриходныйОрдерНаТовары, РасходныйОрдерНаТовары, ПоступлениеТоваровУслуг, РеализацияТоваровУслуг), в процедуре "ПередЗаписью" вызываю мою процедуру проверки из общего модуля.


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

Запрос.УстановитьПараметр("Док", ДокументПроверки);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ВДЗ = Запрос.Выполнить().Выбрать();
Если РезультатЗапроса.Количество() > 0 Тогда
ПерваяСтрока = РезультатЗапроса.Получить(0);
СтрокаССерией = ПерваяСтрока[0];

Сообщение = Новый СообщениеПользователю;
Сообщение.Поле = "Объект.Товары[" + (СтрокаССерией-1) + "].Серия";
Сообщение.Текст = "Используются плохие серии!";
Сообщение.Сообщить();
Пока ВДЗ.Следующий() Цикл
Сообщить("У номенклатуры " + ВДЗ.Номенклатура + ", " + ВДЗ.Характеристика + "указана плохая серия : " + ВДЗ.Серия,СтатусСообщения.Внимание);
КонецЦикла;
КонецЕсли;

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

Запрос.УстановитьПараметр("Док", ДокументПроверки);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ВДЗ = Запрос.Выполнить().Выбрать();
Если РезультатЗапроса.Количество() > 0 Тогда
ПерваяСтрока = РезультатЗапроса.Получить(0);
СтрокаССерией = ПерваяСтрока[0];

Сообщение = Новый СообщениеПользователю;
Сообщение.Поле = "Объект.ОтгружаемыеТовары[" + (СтрокаССерией-1) + "].Серия";
Сообщение.Текст = "Используются плохие серии!";
Сообщение.Сообщить();
Пока ВДЗ.Следующий() Цикл
Сообщить("У номенклатуры " + ВДЗ.Номенклатура + ", " + ВДЗ.Характеристика + "указана плохая серия : " + ВДЗ.Серия,СтатусСообщения.Внимание);
КонецЦикла;
КонецЕсли;

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

Если ВДЗ.Количество() > 0 Тогда
Сообщить("Используются плохие серии!");
Пока ВДЗ.Следующий() Цикл
Сообщить("У номенлатуры " + ВДЗ.Номенклатура + ", " + ВДЗ.Характеристика + "указана плохая серия: " + ВДЗ.Серия);                                               
КонецЦикла;
КонецЕсли;

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

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

Если ВДЗ.Количество() > 0 Тогда
Сообщить("Используются плохие серии!");
Пока ВДЗ.Следующий() Цикл
Сообщить("У номенлатуры " + ВДЗ.Номенклатура + ", " + ВДЗ.Характеристика + "указана плохая серия: " + ВДЗ.Серия);                                       
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Natic221

  • Новичок
  • *
  • Сообщений: 9
Re: 2.37 (2016-2018 г.) "Плохие" серии
« Ответ #2 : Январь 08, 2018, 11:00:08 am »
Создал отчет для контроля плохих серий. В задании просят указать дату поставки и поставщика. Как я понял в 11.3 партионный учет не ведется, поэтому поставщиком считаем того кто отдает товар в документе движения серий.

Запрос отчета:
ВЫБРАТЬ
ДвиженияСерийТоваровОбороты.Регистратор КАК Регистратор,
ВЫБОР
КОГДА ДвиженияСерийТоваровОбороты.Отправитель ССЫЛКА Справочник.Партнеры
ТОГДА ДвиженияСерийТоваровОбороты.Отправитель
ИНАЧЕ "Наша компания"
КОНЕЦ КАК Отправитель,
ВЫБОР
КОГДА ДвиженияСерийТоваровОбороты.Получатель ССЫЛКА Справочник.Партнеры
ТОГДА ДвиженияСерийТоваровОбороты.Получатель
ИНАЧЕ "Наша компания"
КОНЕЦ КАК Получатель,
ДвиженияСерийТоваровОбороты.Номенклатура КАК Номенклатура,
ДвиженияСерийТоваровОбороты.Характеристика КАК Характеристика,
ДвиженияСерийТоваровОбороты.Серия КАК Серия
ИЗ
РегистрНакопления.ДвиженияСерийТоваров.Обороты(
,
,
Регистратор,
(Номенклатура, Характеристика, Серия) В
(ВЫБРАТЬ
РегистрСведений.Борзов_ПлохиеСерии.Номенклатура,
РегистрСведений.Борзов_ПлохиеСерии.Характеристика,
РегистрСведений.Борзов_ПлохиеСерии.Серия
ИЗ
РегистрСведений.Борзов_ПлохиеСерии)) КАК ДвиженияСерийТоваровОбороты

freez1301

  • Пользователь
  • **
  • Сообщений: 68
Re: 2.37 (2016-2018 г.) "Плохие" серии
« Ответ #3 : Январь 18, 2018, 11:49:14 pm »
2 Natic221
Ваш алгоритм будет работать не правильно при проведении нового документа
5 проф.
спец платформа, ут 11.3

Anna-arbuz

  • Новичок
  • *
  • Сообщений: 2
Re: 2.37 (2016-2018 г.) "Плохие" серии
« Ответ #4 : Май 07, 2019, 04:27:39 pm »
Поделитесь пожалуйста условием задачи 2.37