Автор Тема: Билет 1. Спец по платформе V8  (Прочитано 256045 раз)

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

Fizk_11

  • Пользователь
  • **
  • Сообщений: 10
  • ФИО: Дмитрий
Re: Билет 1. Спец по платформе V8
« Ответ #315 : Февраль 21, 2017, 11:42:12 am »

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

andrig

  • Пользователь
  • **
  • Сообщений: 42
Re: Билет 1. Спец по платформе V8
« Ответ #316 : Февраль 22, 2017, 08:39:41 am »
Здравствуйте друзья. Решил разобраться и в старой и новой методике. Сделал 2 варианта ОУ 1 билета.
Просьба посмотреть и прокомментить.
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(

может ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(

просто чаще используется ЛЕВОЕ СОЕДИНЕНИЕ, да и вроде проверил также выдает результат


Да. там одна таблица исправил


freemaestro

  • Пользователь
  • **
  • Сообщений: 79
  • ФИО: Сергей А.
Re: Билет 1. Спец по платформе V8
« Ответ #317 : Февраль 23, 2017, 12:22:30 am »
Добрый день, Andrig!

Смотрел твоё решение по новой методике.

1. Как верно заметил dendzu, соединение в запросе должно быть ЛЕВОЕ, а не ВНУТРЕННЕЕ.

2.   // А. БЛОКИРОВКА Загрузка таблицы значений в набор записей   
   Движения.ОстаткиНоменклатуры.Загрузить(РезультатЗапроса.Выгрузить());

В правилах приема экзамена есть такой пункт: выгрузка результата запроса в таблицу значений без необходимости.
Если уверены - делайте так. Но будьте готовы доказать на экзамене, что это действительно необходимо.
 
3. Далее, перед запросом по регистру Себестоимость не делается блокировка по нему - вот это уже серьезная
ошибка. Регистр надо блокировать с помощью объекта БлокировкаДанных.

4. В цикле по списанию партий есть код:

         Если выборкаПартии = 0  Тогда
            Продолжить;
         КонецЕсли;

выборкаПартии - это объект типа ВыборкаИзРезультатаЗапроса, он нулю не может быть равен никогда.

5. Движение.Сумма = Движение.Количество * выборкаПартии.СуммаОстаток/выборкаПартии.КоличествоОстаток;

    перед делением надо анализировать выборкаПартии.КоличествоОстаток на ноль.

6. В списание партий неплохо бы добавить код что-то типа:

            Если Списать = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
               Сумма = ВыборкаДетальныеЗаписи.СуммаОстаток
            Иначе
               Сумма = Списать * ВыборкаДетальныеЗаписи.СуммаОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток;   
            КонецЕсли;   
   
     Смысл такой - чтобы не "зависали" копейки сумм на остатках, надо всю сумму досписывать, если мы видим,
     что всё количество списывается в ноль.

Ну вот как-то так.
« Последнее редактирование: Февраль 23, 2017, 01:00:20 pm от freemaestro »

andrig

  • Пользователь
  • **
  • Сообщений: 42
Re: Билет 1. Спец по платформе V8
« Ответ #318 : Февраль 24, 2017, 04:52:47 pm »
Добрый день, Andrig!

Смотрел твоё решение по новой методике.

1. Как верно заметил dendzu, соединение в запросе должно быть ЛЕВОЕ, а не ВНУТРЕННЕЕ.

2.   // А. БЛОКИРОВКА Загрузка таблицы значений в набор записей   
   Движения.ОстаткиНоменклатуры.Загрузить(РезультатЗапроса.Выгрузить());

В правилах приема экзамена есть такой пункт: выгрузка результата запроса в таблицу значений без необходимости.
Если уверены - делайте так. Но будьте готовы доказать на экзамене, что это действительно необходимо.
 
3. Далее, перед запросом по регистру Себестоимость не делается блокировка по нему - вот это уже серьезная
ошибка. Регистр надо блокировать с помощью объекта БлокировкаДанных.

4. В цикле по списанию партий есть код:

         Если выборкаПартии = 0  Тогда
            Продолжить;
         КонецЕсли;

выборкаПартии - это объект типа ВыборкаИзРезультатаЗапроса, он нулю не может быть равен никогда.

5. Движение.Сумма = Движение.Количество * выборкаПартии.СуммаОстаток/выборкаПартии.КоличествоОстаток;

    перед делением надо анализировать выборкаПартии.КоличествоОстаток на ноль.

6. В списание партий неплохо бы добавить код что-то типа:

            Если Списать = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
               Сумма = ВыборкаДетальныеЗаписи.СуммаОстаток
            Иначе
               Сумма = Списать * ВыборкаДетальныеЗаписи.СуммаОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток;   
            КонецЕсли;   
   
     Смысл такой - чтобы не "зависали" копейки сумм на остатках, надо всю сумму досписывать, если мы видим,
     что всё количество списывается в ноль.

Ну вот как-то так.
Здравствуй freemaestro!
Спасибо за подробный разбор.
Я делал 2 файла, по новой и старой методике. Указывай, пожалуйста в каком ошибка.
В свое оправдание могу пояснить следующее :).

1.Исправил, ответ выше по ветке.
2.В этом вопросе не спец, но..
Это все теория. Зависит от экзаменатора. Доказывать что-то профессору – самоубийство.
Я действовал по методике Евгения Гилева.
По моему мнению. Выгружается временная таблица. Срок ее жизни – не долог. Можете «добить» ее в конце запроса.
3.Не согласен по ошибке.
РН «себестоимость» «работает» после РН «Остатки номенклатуры». Блокировка первого не позволяет делать записи во второй, только после записи движений в первый.
4. Моя ошибка - исправил.
Если выборкаПартии. КоличествоОстаток= 0  Тогда
5. Отпадает по П4.
6. Все списывается в 0.
Списать  = 3
ВыборкаДетальныеЗаписи.СуммаОстаток  = 10,33
ВыборкаДетальныеЗаписи.КоличествоОстаток = 3   
3*10,33/3 =10,33
Х*Y/X = Y   
СуммаОстаток  Y списывается полностью.
 

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 1. Спец по платформе V8
« Ответ #319 : Февраль 24, 2017, 06:00:28 pm »
... Зависит от экзаменатора. Доказывать что-то профессору – самоубийство.
Я действовал по методике Евгения Гилева.
По моему мнению. Выгружается временная таблица...
На сколько я помню, на экзамене нет задач, в которых есть необходимость использовать выгрузку.
И ни в коем случае не ссылайтесь на Гилева, это точно не будет плюсом к вашему решению.
А доказывать надо, но только тогда, когда точно знаешь, что прав ("профессора" иногда так шутят - говорят, что есть ошибка там, где на самом деле ее нет - проверяют понимание).

andrig

  • Пользователь
  • **
  • Сообщений: 42
Re: Билет 1. Спец по платформе V8
« Ответ #320 : Февраль 24, 2017, 06:49:17 pm »
... Зависит от экзаменатора. Доказывать что-то профессору – самоубийство.
Я действовал по методике Евгения Гилева.
По моему мнению. Выгружается временная таблица...
На сколько я помню, на экзамене нет задач, в которых есть необходимость использовать выгрузку.
И ни в коем случае не ссылайтесь на Гилева, это точно не будет плюсом к вашему решению.
А доказывать надо, но только тогда, когда точно знаешь, что прав ("профессора" иногда так шутят - говорят, что есть ошибка там, где на самом деле ее нет - проверяют понимание).
остальное в порядке?

freemaestro

  • Пользователь
  • **
  • Сообщений: 79
  • ФИО: Сергей А.
Re: Билет 1. Спец по платформе V8
« Ответ #321 : Февраль 24, 2017, 09:58:27 pm »

3.Не согласен по ошибке.
РН «себестоимость» «работает» после РН «Остатки номенклатуры». Блокировка первого не позволяет делать записи во второй, только после записи движений в первый.



Доброго дня, andrig!

Поясни, пожалуйста, что ты имел в виду.

Вообще говоря, "новая методика" работает так: мы пишем в регистр остатков с "БлокироватьДляИзмененения" - и регистр блокируется. А далее, мы делаем запрос к регистру себестоимости - но предварительно надо его заблокировать с помощью объекта БлокировкаДанных.


Вот статья Павла Чистова на сайте Инфостарт:
http://expert.chistov.pro/public/195591/
« Последнее редактирование: Февраль 25, 2017, 01:10:28 am от freemaestro »

andrig

  • Пользователь
  • **
  • Сообщений: 42
Re: Билет 1. Спец по платформе V8
« Ответ #322 : Февраль 25, 2017, 08:06:43 am »

3.Не согласен по ошибке.
РН «себестоимость» «работает» после РН «Остатки номенклатуры». Блокировка первого не позволяет делать записи во второй, только после записи движений в первый.



Доброго дня, andrig!

Поясни, пожалуйста, что ты имел в виду.

Вообще говоря, "новая методика" работает так: мы пишем в регистр остатков с "БлокироватьДляИзмененения" - и регистр блокируется. А далее, мы делаем запрос к регистру себестоимости - но предварительно надо его заблокировать с помощью объекта БлокировкаДанных.


Вот статья Павла Чистова на сайте Инфостарт:
http://expert.chistov.pro/public/195591/
Здравствуй,freemaestro!
На самом деле при свойство БлокироватьДляИзменения не устанавливает управляемую блокировку, оно лишь выключает режим разделения итогов регистра при записи. 
Важно. Мы не накладываем блокировку на регистр «Себестоимость». Почему? Такая блокировка являлась бы излишней (а это определенная нагрузка на сервер 1С), поскольку движения в регистры «Остатки номенклатуры» и «Себестоимость» выполняются всегда синхронно, то есть последовательно друг за другом. Поэтому, заблокировав товары из «Остатки номенклатуры», мы не допустим другие транзакции до этих товаров и в регистре «Себестоимость».
http://курсы-по-1с.рф/articles/2017-02-13-realtimeposting-and-datalock/

freemaestro

  • Пользователь
  • **
  • Сообщений: 79
  • ФИО: Сергей А.
Re: Билет 1. Спец по платформе V8
« Ответ #323 : Февраль 25, 2017, 02:32:58 pm »
Доброго времени суток, andrig !

Про "БлокироватьДляИзмененения"  - точнее было бы сказать - для нас важно, что никто параллельно с нами читать данные из регистра по тем товарам, движения по которым были сформированы, не сможет. Это из статьи Павла Чистова, ссылку на которую я тебе дал. Но, блокировка всё-таки устанавливается - открываем синтакс-помощник:
"Устанавливает режим, при котором в процессе записи набора будет установлена управляемая блокировка для всех комбинаций измерений в соответствии с записями набора записей. Имеет смысл использовать, если проверка итогов регистра выполняется после записи и заблокировать нужно именно те комбинации, по которым записываются записи. В этом случае можно не использовать объект БлокировкаДанных.
".

Хотел поблагодарит тебя за ссылку.
Для меня информация оказалась новой и полезной.

Но моё мнение - на экзамене так делать не стоит, т.к. не факт, что проверяющий ожидает увидеть и услышать такое объяснение. Ещё посмотри комментарии к этой статье. Обрати внимание на комментарий mrvaldem и ответ Гилева на этот комментарий.
mrvaldem:
"Добрый день. В примечании Вы говорите о том, что не требуется накладывать блокировку на РН «Себестоимость», т.к. блокировки для РН «Свободные остатки» достаточно. Но это если допустить, что в системе все документы двигают эти оба регистра одновременно. Но это врядли. Поэтому, наверное, блочить «Свободные остатки и если проверка на отрицательность прошла, то блочить «Себестоимость» и проводить.   Источник: ©Курсы-по-1С.рф"
Евгений Гилев (Мастер-тренер):
"Добрый день! Разумеется, могут быть случаи, когда нужно будет накладывать блокировки на регистр «Себестоимость товаров». Но, например, в типовой УТ 11 блокировка на этот регистр не накладывается. Почему? Разработчики облегчили себе жизнь — работу с себестоимостью они вынести за рамки проведения документов, в регламентные операции закрытия месяца."   Источник: ©Курсы-по-1С.рф

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

Так что используй всё это так, как посчитаешь нужным, удачи на экзамене.
« Последнее редактирование: Февраль 26, 2017, 03:51:15 pm от freemaestro »

andrig

  • Пользователь
  • **
  • Сообщений: 42
Re: Билет 1. Спец по платформе V8
« Ответ #324 : Февраль 27, 2017, 06:56:22 am »
Доброго времени суток, andrig !

Про "БлокироватьДляИзмененения"  - точнее было бы сказать - для нас важно, что никто параллельно с нами читать данные из регистра по тем товарам, движения по которым были сформированы, не сможет. Это из статьи Павла Чистова, ссылку на которую я тебе дал. Но, блокировка всё-таки устанавливается - открываем синтакс-помощник:
"Устанавливает режим, при котором в процессе записи набора будет установлена управляемая блокировка для всех комбинаций измерений в соответствии с записями набора записей. Имеет смысл использовать, если проверка итогов регистра выполняется после записи и заблокировать нужно именно те комбинации, по которым записываются записи. В этом случае можно не использовать объект БлокировкаДанных.
".

Хотел поблагодарит тебя за ссылку.
Для меня информация оказалась новой и полезной.

Но моё мнение - на экзамене так делать не стоит, т.к. не факт, что проверяющий ожидает увидеть и услышать такое объяснение. Ещё посмотри комментарии к этой статье. Обрати внимание на комментарий mrvaldem и ответ Гилева на этот комментарий.
mrvaldem:
"Добрый день. В примечании Вы говорите о том, что не требуется накладывать блокировку на РН «Себестоимость», т.к. блокировки для РН «Свободные остатки» достаточно. Но это если допустить, что в системе все документы двигают эти оба регистра одновременно. Но это врядли. Поэтому, наверное, блочить «Свободные остатки и если проверка на отрицательность прошла, то блочить «Себестоимость» и проводить.   Источник: ©Курсы-по-1С.рф"
Евгений Гилев (Мастер-тренер):
"Добрый день! Разумеется, могут быть случаи, когда нужно будет накладывать блокировки на регистр «Себестоимость товаров». Но, например, в типовой УТ 11 блокировка на этот регистр не накладывается. Почему? Разработчики облегчили себе жизнь — работу с себестоимостью они вынести за рамки проведения документов, в регламентные операции закрытия месяца."   Источник: ©Курсы-по-1С.рф

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

Так что используй всё это так, как посчитаешь нужным, удачи на экзамене.

Здравствуй, freemaestro!
спасибо за дискуссию. Я и сделал по 2-м методам, чтобы обсудить, потому,что все делают по-разному.
Если тебе не сложно, то просьба сделать свой вариант. Можно прямо в моем файле только РН.
Будет интересно посмотреть. 

freemaestro

  • Пользователь
  • **
  • Сообщений: 79
  • ФИО: Сергей А.
Re: Билет 1. Спец по платформе V8
« Ответ #325 : Февраль 27, 2017, 08:07:29 am »
Доброго времени суток, andrig!

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

   Движения.ОстаткиНоменклатуры.Записывать = Истина;
   Движения.ОстаткиНоменклатуры.Очистить();
   
   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

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

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

   КонецЦикла;

    Движения.СебестоимостьНоменклатуры.Записывать = Истина;

« Последнее редактирование: Февраль 27, 2017, 08:09:04 am от freemaestro »

freemaestro

  • Пользователь
  • **
  • Сообщений: 79
  • ФИО: Сергей А.
Re: Билет 1. Спец по платформе V8
« Ответ #326 : Февраль 27, 2017, 08:22:58 am »
Andrig, а ты бух. учет делать будешь?
Можно тоже обсудить.

vaasec

  • Пользователь
  • **
  • Сообщений: 35
Re: Билет 1. Спец по платформе V8
« Ответ #327 : Февраль 27, 2017, 11:33:13 am »
   Движения.ОстаткиНоменклатуры.Записывать = Истина;
   Движения.ОстаткиНоменклатуры.Очистить();

Зачем это делать? Движения и так пустые при оперативном проведении. Белоусов в курсе говорит, что это делать не надо.

   
Движения.СебестоимостьНоменклатуры.Записывать = Истина;
   Движения.СебестоимостьНоменклатуры.Очистить();
   Движения.СебестоимостьНоменклатуры.Записать();


Зачем так сложно?
 Достаточно
 Движения.СебестоимостьНоменклатуры.Записать(); // так как новых движений нет то система перезапишет РН.СебестоимостьНоменклатуры пустыми стоками
 или
Движения.СебестоимостьНоменклатуры.Записывать = Истина;
Движения.Записать();

Почему Движения.Записать() а не Движения.СебестоимостьНоменклатуры.Записать(), так как могут возникнуть взаимоблокировки см http://курсы-по-1с.рф/articles/2017-02-13-realtimeposting-and-datalock/

   
 |   ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.Партия, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)) КАК Партия,

В РН.СебестоимостьНоменклатуры измерение Партия обязательная к заполнению. Следовательно не будет у вас случая когда Партия Null. Следовательно проверять не надо на Null.


Все что сказано это мое мнение. В данный момент сам готовлюсь.

freemaestro

  • Пользователь
  • **
  • Сообщений: 79
  • ФИО: Сергей А.
Re: Билет 1. Спец по платформе V8
« Ответ #328 : Февраль 27, 2017, 01:27:21 pm »
Доброго времени суток, vaasec!



Движения.ОстаткиНоменклатуры.Записывать = Истина;
   Движения.ОстаткиНоменклатуры.Очистить();

Зачем это делать? Движения и так пустые при оперативном проведении. Белоусов в курсе говорит, что это делать не надо.



Я вообще оперативное проведение отключаю в документах.
В правилах приема экзамена сказано:
"Если при проведении документа используются каким-то образом данные,
считываемые из регистров, обязательно требуется предусмотреть получение
таких данных на момент проведения документа" - минус 1 балл на экзамене.
Почитай здесь же на форуме это обсуждают.
Но это - на свой страх и риск, лично я буду так делать.



Почему Движения.Записать() а не Движения.СебестоимостьНоменклатуры.Записать(),
так как могут возникнуть взаимоблокировки см
 http://курсы-по-1с.рф/articles/2017-02-13-realtimeposting-and-datalock/



Я готовлюсь по курсу Дмитрия Гончарова.
Он говорит о том, что при Движения.Записать()
соблюдается гарантированная системная последовательность записи движений,
что минимизирует шанс появления блокировок.



|   ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.Партия, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)) КАК Партия,

В РН.СебестоимостьНоменклатуры измерение Партия обязательная к заполнению.
Следовательно не будет у вас случая когда Партия Null. Следовательно проверять не надо на Null.



Партия может и не может быть пустым - это как ты регистр накопления настроил.
Есть такое правило при приеме экзамена:
"Отсутствие проверки на NULL" - минус 1 балл на экзамене.
А так как здесь левое соединение, то NULL может быть,
хотя бы теоретически.
Поэтому проверка далеко не лишняя.

vaasec

  • Пользователь
  • **
  • Сообщений: 35
Re: Билет 1. Спец по платформе V8
« Ответ #329 : Февраль 27, 2017, 03:04:24 pm »
Доброго времени суток, vaasec!
....

У меня документ проводиться  оперативно. А данные для расчета себестоимости и количества получаю на моментвремени() без использования границы, так как и так данные получаю на начала моментвремени(), а не на неопределенно (как это раньше было для 8.2).

На счет  Движения.Записать() согласен, но Очищать движения считаю лишним. А что за курс и какого он года?

Все измерения в РН должны быть заполнены, так говорит Белоусов, и в билете 3 нельзя записывать пустую партию , а надо использовать документ Учетная Политика (см. комментарии).
В вашем случае это будет лишнее использование NULL, либо думаю спросят в каком случае у вас партия будет не заполнена.