Автор Тема: 2.34  (Прочитано 9155 раз)

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

sudo90

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Иван
2.34
« : Сентябрь 25, 2013, 12:02:37 pm »
Здравствуйте, есть какие-нибудь соображения по этой задаче?

AlexShubin87

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: AlexShubin
2.34
« Ответ #1 : Сентябрь 25, 2013, 01:43:31 pm »
Есть)) Я сделал так:

 1) Заводим регистр сведений плохие серии. Периодический в пределах дня, т.к. дата документа "оперативная" формируется в момент записи, а до записи начало дня. Изм. - серия.

 2) в проверке заполнения поступления (т.к. ордер отключен по приходу, что бы были доступны серии на ордерном складе... в ранних релизах УТ надо было проставлять в складе ордерную схему по всем операциям, а теперь надо снимать галку "по поступлению", если я не прав поправьте меня, смотрел по коду не разобралдся как по-другому серии врубить...) код:

 Добавлено (25.09.2013, 13:32)
 ---------------------------------------------
 Запрос = Новый Запрос;
 Запрос.Текст =
 "ВЫБРАТЬ
 | ПлохиеСерииСрезПоследних.Серия
 |ИЗ
 | РегистрСведений.ПлохиеСерии.СрезПоследних(&Дата, Серия В (&Серии)) КАК ПлохиеСерииСрезПоследних";
 Запрос.УстановитьПараметр("Дата", Дата);
 Запрос.УстановитьПараметр("Серии", Серии.ВыгрузитьКолонку("Серия"));
 Результат = Запрос.Выполнить();
 ВыборкаДетальныеЗаписи = Результат.Выбрать();

 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

 ТекстОшибки = НСтр("ru='Закупка плохой серии блокирована: ""%НомерСерии%""'");
 ТекстОшибки =  СтрЗаменить(ТекстОшибки, "%НомерСерии%", ВыборкаДетальныеЗаписи.Серия.Номер);

 ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
 ТекстОшибки,
 ЭтотОбъект,
 ,
 ,
 Отказ);

 КонецЦикла;

 Добавлено (25.09.2013, 13:35)
 ---------------------------------------------
 Даллее строим отчет в скд. Я сделал такой запрос. Смысл что сначала собираем приходы плохих серий, а потом остальную инфу левым соединением (остатки и реализации).... Как то так:

 Добавлено (25.09.2013, 13:35)
 ---------------------------------------------
 ВЫБРАТЬ
 ТоварыНаСкладах.Склад КАК Склад,
 ТоварыНаСкладах.Номенклатура,
 ТоварыНаСкладах.Характеристика,
 ТоварыНаСкладах.Серия,
 ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваровУслуг).Контрагент КАК Постащик,
 ТоварыНаСкладах.Период КАК ДатаПоставки
 ПОМЕСТИТЬ ПриходыПлохихСерий
 ИЗ
 РегистрСведений.ПлохиеСерии КАК ПлохиеСерии
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
 ПО ПлохиеСерии.Серия = ТоварыНаСкладах.Серия
 И (ТоварыНаСкладах.ВНаличии > 0)
 ГДЕ
 ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
 {ГДЕ
 ТоварыНаСкладах.Период}
 ;
 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
 ТоварыНаСкладах.Склад,
 ТоварыНаСкладах.Номенклатура,
 ТоварыНаСкладах.Характеристика,
 ТоварыНаСкладах.Серия,
 ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.РасходныйОрдерНаТовары).Распоряжение.Контрагент КАК Клиент
 ПОМЕСТИТЬ РасходыПлохихСерий
 ИЗ
 РегистрСведений.ПлохиеСерии КАК ПлохиеСерии
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
 ПО ПлохиеСерии.Серия = ТоварыНаСкладах.Серия
 И (ТоварыНаСкладах.ВНаличии > 0)
 ГДЕ
 ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
 {ГДЕ
 ТоварыНаСкладах.Период}
 ;
 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
 ТоварыНаСкладахОстатки.Склад,
 ТоварыНаСкладахОстатки.Номенклатура,
 ТоварыНаСкладахОстатки.Характеристика,
 ТоварыНаСкладахОстатки.Серия,
 ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
 ПОМЕСТИТЬ Остатки
 ИЗ
 РегистрНакопления.ТоварыНаСкладах.Остатки(
 ,
 Номенклатура, Характеристика, Серия) В
 ВЫБРАТЬ РАЗЛИЧНЫЕ
 ПриходыПлохихСерий.Номенклатура,
 ПриходыПлохихСерий.Характеристика,
 ПриходыПлохихСерий.Серия
 ИЗ
 ПриходыПлохихСерий КАК ПриходыПлохихСерий)) КАК ТоварыНаСкладахОстатки
 ;
 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
 ПриходыПлохихСерий.Склад,
 ПриходыПлохихСерий.Номенклатура,
 ПриходыПлохихСерий.Характеристика,
 ПриходыПлохихСерий.Серия,
 ПриходыПлохихСерий.Постащик,
 ПриходыПлохихСерий.ДатаПоставки,
 РасходыПлохихСерий.Клиент,
 Остатки.Остаток
 ИЗ
 ПриходыПлохихСерий КАК ПриходыПлохихСерий
 ЛЕВОЕ СОЕДИНЕНИЕ РасходыПлохихСерий КАК РасходыПлохихСерий
 ПО ПриходыПлохихСерий.Склад = РасходыПлохихСерий.Склад
 И ПриходыПлохихСерий.Номенклатура = РасходыПлохихСерий.Номенклатура
 И ПриходыПлохихСерий.Характеристика = РасходыПлохихСерий.Характеристика
 И ПриходыПлохихСерий.Серия = РасходыПлохихСерий.Серия
 ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
 ПО ПриходыПлохихСерий.Серия = Остатки.Серия
 И ПриходыПлохихСерий.Склад = Остатки.Склад
 И ПриходыПлохихСерий.Номенклатура = Остатки.Номенклатура
 И ПриходыПлохихСерий.Характеристика = Остатки.Характеристика

 Добавлено (25.09.2013, 13:43)
 ---------------------------------------------
 Идея моя (с регистром сведений) в том, что есть какой то момент времени, когда работники узнают что серия плохая, соответственно до этого момента мы можем делать поступления по этим сериям, а после - уже нет. Но отчет мы должны строить по плохи сериям вне зависимости от того когда узнали что они плохие.
« Последнее редактирование: Сентябрь 25, 2013, 03:09:10 pm от AlexShubin »


sudo90

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Иван
2.34
« Ответ #2 : Сентябрь 25, 2013, 03:22:39 pm »
А я в справочник серии номенклатуры просто добавил доп реквизит с типом Булево плохая серия, а запрос примерно такой же составил только по регистру ДвижениеСерийТоваров

AlexShubin87

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: AlexShubin
2.34
« Ответ #3 : Сентябрь 27, 2013, 09:55:10 am »
Имхо это плохо тем, что Вы не сможете провести уже существующие поступления "после того как работники организации узнали что серия плохая". Хотя для экзамена может и прокатит...

Добавлено (27.09.2013, 09:55)
---------------------------------------------
Поправлю сам себя... Если ордер по приходу в ключен, тосерии указываются в ордере и нужно сделать проверку на приход плохих серий еще и в ордере... Думаю так...


asu2

  • Новичок
  • *
  • Сообщений: 2
  • ФИО: asu2
2.34
« Ответ #4 : Октябрь 01, 2013, 11:46:46 am »
У меня по проще получилось. Поправьте если есть ошибки...
Вложения:
_2.34.docx

asu2

  • Новичок
  • *
  • Сообщений: 2
  • ФИО: asu2
2.34
« Ответ #5 : Октябрь 01, 2013, 11:47:33 am »
А вот и сам отчет
Вложения:
9210395.erf

AlexShubin87

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: AlexShubin
2.34
« Ответ #6 : Октябрь 02, 2013, 10:47:53 am »
Цитата (asu2)
У меня по проще получилось. Поправьте если есть ошибки... Прикрепления: _2.34.docx(154Kb)


  
 Привет. Глянул бегло... Лично мне не оч. нравится, что документы уже проведенные по плохим сериям вы уже не перепроведете (вы же можете провести "старую" реализацию, несмотря на то что "на текущий момент" остатков может не быть), это раз. При ордерной схеме при поступлении, наверное надо добавить проверку в ордере, ибо серии будут указываться там.

 В отчете ошибка, что у вирт таблицы нет параметров - вы сначала собираете все остатки, а используете лишь их часть после соединения.

VaKiSe

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: VaKiSe
2.34
« Ответ #7 : Октябрь 02, 2013, 07:04:42 pm »
Мое решение:
 Ставим галку Характеристиканом. и Серии (Настройка номенклатур), у склада делаем полную ордерную схему, у
 вида номенклатуры включаем характеристики и учет по сериям делаем «Партия
 товаров, имеющих одинаковый номер серии»
 Политика для склада
 «Управление остатками серий». Вводим поступление и ордер(с указанием серий) так
 же вводи реализацию и ордера (с указанием серий). Создаем Рег.Св периодический ,3 измерения Ном, Хар, Сери( обязательносвязь с номенкл). Создаем обработчик событий перед записью и проверяем ордера на наличие плохих серий если есть то ругаемся! Делаем отчет выбираем все Н/Х/С изрег. свед. Помещаем в ВТ, далее Рег ДвижениеСерий с параметрами из ВТ,  Берем Н/Х/С, СкладскаяОперация, Дата и
 Партнера, и левым соединением по Н/Х/С ОстаткиТоваровНаСкладах тоже с
 параметрами из ВТ и Складом! Делаемтри группировки Н/Х/С остальное дет зап. Результат отчета в файле
Вложения:
s3617038.jpg

reckoner

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: reckoner
2.34
« Ответ #8 : Октябрь 02, 2013, 10:14:53 pm »
AlexShubin87, как Вы в своем решении обходите вариант когда последующий раз перепроводится Поступление с плохой серией?
 Я думаю, что такое поведение (проведенные документы нельзя перепровести) нормально...

VaKiSe

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: VaKiSe
2.34
« Ответ #9 : Октябрь 02, 2013, 10:29:41 pm »
reckoner, я думаю что не нормальное. Вот смотри, допустим ты закупал эту серию в прошлом месяце, а в этом только узнал. Получается ты не сможешь перепровести документы прошлого периода (еще не закрытого) из-за этого. В задаче четкое требование "В дальнейшем закупка таких серий должна блокироваться системой"!

reckoner

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: reckoner
2.34
« Ответ #10 : Октябрь 03, 2013, 10:08:28 am »
VaKiSe, ну допустим. 
 Тогда как вы в своем решении обходите этот момент? Чтобы и блокировалась закупка и проведенный ранее документ с оказавшейся сейчас плохой серией мог перепроводиться.

AlexShubin87

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: AlexShubin
2.34
« Ответ #11 : Октябрь 03, 2013, 12:00:07 pm »
reckoner, у VaKiSe регистр сведений с "плохими" периодический. Период означает момент, когда сотрудники узнали, что серия "плохая". При проведении он смотрит на дату записив РС относительно даты дока. Согласен с решением VaKiSe

reckoner

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: reckoner
2.34
« Ответ #12 : Октябрь 03, 2013, 01:03:52 pm »
AlexShubin87VaKiSe, Действительно. С таким решением согласен.

SanPav

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
2.34
« Ответ #13 : Октябрь 29, 2013, 01:53:37 pm »
Ордерную схему учета при поступлении и  реализации товаров использовать не обязательно, в условии задачи про это не сказано.
 А это лишнее время. Документов и вариантов прихода и расхода по сериям много, все их учитывать времени не хватит.
 Серии прекрасно работают и без них, нужно лишь в настройках склада установить флаг использования ордеров "При отражении излишков, недостач и порчи".

 Добавлено (08.10.2013, 15:08)
 ---------------------------------------------
 Мой вариант подписки на событие перед записью документа "Поступление товаров и услуг":

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

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

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

 И сам отчет:

Добавлено (29.10.2013, 13:53)
---------------------------------------------
На экзамене попалась данная задача. Сдавал удаленно. Сдал.
 Но сняли бал за то, что "пользователю позволяется ввести неверные данные, которые потом будут проконтролированы".
 Сдавая очно, я конечно пободался бы с экзаменатором, т.к. иначе бы пришлось изменять форму подбора серий. Через подписки на события это не сделаешь (покрайней мере в 1С 8.2).  И следовательно при таком стиле программирования, обновлять потом замучаешься. Но видать с точки зрения экзаменатора это все вторично, а именно, плевать на легкость дальнейшего обновления.
 Так что имейте ввиду то, что им нравиться проведения контроля данных как можно раньше.


Вложения:
4365588.erf
« Последнее редактирование: Октябрь 08, 2013, 03:09:00 pm от Александр »

Avet

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Аветис
2.34
« Ответ #14 : Ноябрь 05, 2013, 01:08:09 pm »
Сдавал удаленно.Попалась эта задача.Билет №9.Снизили балы за то,что проверка делалась только для документа ПТиУ:"блокируется только поступление товаров.При
 оприходовании товара по разным сериям,пользователь не поймет какая из них заблокирована."
 Экзамен сдал на 3
« Последнее редактирование: Ноябрь 05, 2013, 01:18:56 pm от Аветис »