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

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

POW

  • Новичок
  • *
  • Сообщений: 8
  • ФИО: Каргаполов Владимир
Re: 1.3
« Ответ #240 : Январь 20, 2017, 02:40:15 pm »
Мое решение) Нуждаюсь в критике и оценке!)) Заранее большое спасибо)
P.S. Как вести учёт по услугам?
Смотрите чуть Выше)

jonik

  • Проверенный
  • ***
  • Сообщений: 135
Re: 1.3
« Ответ #241 : Май 11, 2017, 01:40:46 pm »
Добрый день, коллеги. Буду рад конструктивным отзывам.


iliya

  • Новичок
  • *
  • Сообщений: 7
  • ФИО: Илья Никитин
Re: 1.3
« Ответ #242 : Август 19, 2017, 06:08:18 pm »
Коллеги, добрый день!
По задаче непонятно:
Параграф 3. необходимо предупреждение о нехватке номенклатуры
Параграф 4. необходимо предупреждение о нехватке товара по конкретной партии указанной в в документе.
Получается, что нужно по два предупрепреждающих сообщения на каждую номенклатуру выводить. Есть ли в этом хоть какой-то смысл?
Допустим в документе указан одна номенклатура и партия в разных строках. Для привязки сообщения об ошибки к конкретной строке документа, как определить на какой строке документа партия закончилась? Походу никто кроме меня не обратил вниманиия на сей момент в постановке задачи.

Какие будут мысли???

Вместо того чтобы выкладывать базу привожу самое интересное по задаче, а именно сам запрос которым я получаю все данные для проведения по регистрам остаткитоваров и продажи:

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

СГРУППИРОВАТЬ ПО
   Расходная.Номенклатура,
   Расходная.Партия

ИНДЕКСИРОВАТЬ ПО
   Номенклатура,
   Партия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Остатки.Номенклатура КАК Номенклатура,
   Остатки.Партия,
   ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК КоличествоПартии,
   ЕСТЬNULL(Остатки.СуммаОстаток, 0) КАК СуммаПартии,
   ДанныеДокумента.Количество КАК КоличествоДокумента,
   ДанныеДокумента.Сумма КАК СуммаДокумента,
   ДанныеДокумента.НомерСтроки КАК НомерСтроки,
   ВЫБОР
      КОГДА ДанныеДокумента.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
         ТОГДА ЛОЖЬ
      ИНАЧЕ ИСТИНА
   КОНЕЦ КАК Товар
ИЗ
   втДанныеДокумента КАК ДанныеДокумента
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
            &Момент,
            (Номенклатура, Партия) В
               (ВЫБРАТЬ
                  ДанныеДокумента.Номенклатура,
                  ДанныеДокумента.Партия
               ИЗ
                  втДанныеДокумента КАК ДанныеДокумента)) КАК Остатки
      ПО ДанныеДокумента.Номенклатура = Остатки.Номенклатура
         И ДанныеДокумента.Партия = Остатки.Партия
ИТОГИ
   СУММА(КоличествоПартии),
   СУММА(КоличествоДокумента),
   СУММА(СуммаДокумента),
   МИНИМУМ(НомерСтроки),
   МИНИМУМ(Товар)
ПО
   Номенклатура


Говлюсь к сдаче осилил всю ветку. Походу так и нет единого мнения по методике проведения расходной и количеству регистров.
Хочу высказать свое мнение. Новую методику нужно использовать только в системах где используется метод допроведение документов неоперативно по себестоимости.
Использовать методику только для оперативного списания товара только по количественному учету в течении месяца. По концу месяца обработочкой проходимся и пишем среднюю взвешанную за месяц по документам. Как правило скользящая оценка стоимости искажает финансовые данные.
Из сказанного следует, что методику нового проведения нет нужды реализовывать на экзамене ибо таких задач на допроведение в задачнике нет.
« Последнее редактирование: Август 19, 2017, 06:12:12 pm от iliya »

angelivoin

  • Пользователь
  • **
  • Сообщений: 25
Re: 1.3
« Ответ #243 : Сентябрь 29, 2017, 09:52:45 pm »
Коллеги, добрый день!
По задаче непонятно:
Параграф 3. необходимо предупреждение о нехватке номенклатуры
Параграф 4. необходимо предупреждение о нехватке товара по конкретной партии указанной в в документе.
Получается, что нужно по два предупрепреждающих сообщения на каждую номенклатуру выводить. Есть ли в этом хоть какой-то смысл?
Допустим в документе указан одна номенклатура и партия в разных строках. Для привязки сообщения об ошибки к конкретной строке документа, как определить на какой строке документа партия закончилась? Походу никто кроме меня не обратил вниманиия на сей момент в постановке задачи.

Какие будут мысли???

Вместо того чтобы выкладывать базу привожу самое интересное по задаче, а именно сам запрос которым я получаю все данные для проведения по регистрам остаткитоваров и продажи:

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

СГРУППИРОВАТЬ ПО
   Расходная.Номенклатура,
   Расходная.Партия

ИНДЕКСИРОВАТЬ ПО
   Номенклатура,
   Партия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Остатки.Номенклатура КАК Номенклатура,
   Остатки.Партия,
   ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК КоличествоПартии,
   ЕСТЬNULL(Остатки.СуммаОстаток, 0) КАК СуммаПартии,
   ДанныеДокумента.Количество КАК КоличествоДокумента,
   ДанныеДокумента.Сумма КАК СуммаДокумента,
   ДанныеДокумента.НомерСтроки КАК НомерСтроки,
   ВЫБОР
      КОГДА ДанныеДокумента.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
         ТОГДА ЛОЖЬ
      ИНАЧЕ ИСТИНА
   КОНЕЦ КАК Товар
ИЗ
   втДанныеДокумента КАК ДанныеДокумента
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
            &Момент,
            (Номенклатура, Партия) В
               (ВЫБРАТЬ
                  ДанныеДокумента.Номенклатура,
                  ДанныеДокумента.Партия
               ИЗ
                  втДанныеДокумента КАК ДанныеДокумента)) КАК Остатки
      ПО ДанныеДокумента.Номенклатура = Остатки.Номенклатура
         И ДанныеДокумента.Партия = Остатки.Партия
ИТОГИ
   СУММА(КоличествоПартии),
   СУММА(КоличествоДокумента),
   СУММА(СуммаДокумента),
   МИНИМУМ(НомерСтроки),
   МИНИМУМ(Товар)
ПО
   Номенклатура


Говлюсь к сдаче осилил всю ветку. Походу так и нет единого мнения по методике проведения расходной и количеству регистров.
Хочу высказать свое мнение. Новую методику нужно использовать только в системах где используется метод допроведение документов неоперативно по себестоимости.
Использовать методику только для оперативного списания товара только по количественному учету в течении месяца. По концу месяца обработочкой проходимся и пишем среднюю взвешанную за месяц по документам. Как правило скользящая оценка стоимости искажает финансовые данные.
Из сказанного следует, что методику нового проведения нет нужды реализовывать на экзамене ибо таких задач на допроведение в задачнике нет.

Первые две задачи решаются по новой методике, в них мы можем записать движение в регистр остатки и проверить ушли в минус или нет.
В данной задаче мы не можем этого сделать, т.к после записи движения в регистр остатки мы можем в минус не уйти,  а при списывании с партии указанной в табличной части, можно в минус уйти, т.е надо проверять остаток, а раз проверять  надо будет все равно остаток, значит новая методика не подходит, используем старую.

angelivoin

  • Пользователь
  • **
  • Сообщений: 25
Re: 1.3
« Ответ #244 : Октябрь 01, 2017, 01:36:00 pm »
Решение моей задачи. Должно быть идеально!

bkmz

  • Пользователь
  • **
  • Сообщений: 32
  • ФИО: Яковенко ИльяПетрович
Re: 1.3
« Ответ #245 : Ноябрь 12, 2017, 07:54:36 pm »
Цитировать
Решение моей задачи. Должно быть идеально!
Могу предложить не использовать в сообщалках Номенклатура ссылочного типа, в запросе выбери Номенклатура.Представление и используй его в сообщалках. В виде Чистова по подготовке к спецу по платформе говорилось что если этого не сделать то могут снять то ли пол бала то ли бал.

Вместо сообщалки что партия в табличной части не заполнена поставь в реквизит партия проверка заполнения "Выдавать ошибку".

И может не стоит писать дважды сообщение что не хватает по данной номенклатуре товара в целом и отдельно сообщение что по данной партии и данной номенклатуре. И ограничится только проверкой по детальным записям?

jonik

  • Проверенный
  • ***
  • Сообщений: 135
Re: 1.3
« Ответ #246 : Ноябрь 21, 2017, 10:22:42 am »
Добрый день, коллеги. Буду рад конструктивным отзывам.
Подкорректировал
« Последнее редактирование: Ноябрь 25, 2017, 01:03:39 pm от jonik »

Romulka

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Roman
Re: 1.3
« Ответ #247 : Январь 11, 2018, 11:26:52 am »
Вместо сообщалки что партия в табличной части не заполнена поставь в реквизит партия проверка заполнения "Выдавать ошибку".

Все бы ничего, но у нас в одной ТЧ находятся и Номенклатура, и Услуги...

bkmz

  • Пользователь
  • **
  • Сообщений: 32
  • ФИО: Яковенко ИльяПетрович
Re: 1.3
« Ответ #248 : Январь 26, 2018, 02:44:16 pm »
Цитировать
Все бы ничего, но у нас в одной ТЧ находятся и Номенклатура, и Услуги...

Ок. Согласен.

Ну тогда добавить в начале обработки проведения в Расходной код:

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

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

bkmz

  • Пользователь
  • **
  • Сообщений: 32
  • ФИО: Яковенко ИльяПетрович
Re: 1.3
« Ответ #249 : Январь 26, 2018, 03:01:32 pm »
Мое решение. Прошу оценить

bkmz

  • Пользователь
  • **
  • Сообщений: 32
  • ФИО: Яковенко ИльяПетрович
Re: 1.3
« Ответ #250 : Январь 26, 2018, 03:52:05 pm »
Не уверен нужно ли делать РегистрыНакопления.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина; при очистке старых движений.
Я заблокирую пустой набор записей? Или набор записей до очистки, или тут вообще блокировка избыточна?

ToroNatali

  • Новичок
  • *
  • Сообщений: 5
Re: 1.3
« Ответ #251 : Декабрь 13, 2019, 06:04:00 pm »
Здравствуйте! А эта тема еще жива? Очень хотелось бы узнать мнение о моем решении 3 задачи сборника :)

Евгений_нвкз

  • Пользователь
  • **
  • Сообщений: 18
Re: 1.3
« Ответ #252 : Сентябрь 07, 2020, 09:30:27 am »
Всем привет. Мое решение на обозрение)

Sdnv

  • Новичок
  • *
  • Сообщений: 4
Re: 1.3
« Ответ #253 : Октябрь 21, 2020, 04:47:26 pm »
Что-то много запросов в модуле расходной накладной
Структурно их же два
1. формируем таблицу из расходной накладной и оборотов по регистру накопления
2. пишем в регистр попутно проверяя отрицательные значения или
3. проверяем отрицательные (хотя и при записи в первом можно их проверить)
+
блок записи в продажи
И в последнем запросе разве не "Обороты" надо использовать?

Sdnv

  • Новичок
  • *
  • Сообщений: 4
Re: 1.3
« Ответ #254 : Октябрь 22, 2020, 08:57:52 pm »
Пример запроса проверки остатков с партиями
Процедура ОбработкаПроведения (Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

КонецПроцедуры
« Последнее редактирование: Октябрь 22, 2020, 08:59:36 pm от Sdnv »