Автор Тема: Результаты сдачи экзаменов на спеца по Платформе 8.2  (Прочитано 775227 раз)

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

dhm

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
SergTH000,
 Я сейчас только задачу 1.7 и помню, где точно используется новая методика. Из тех задач, что есть в билетах в выложенном здесь не раз списке, вряд ли где-то еще нужно новую методику использовать. На самом деле на курсах эту ситуацию тоже рассматривали. Там не все так безнадежно. Просто когда Вы используете новую методику, Вы должны брать остатки на вот такой момент времени:

Запрос.УстановитьПараметр("Период", Новый Граница(МоментВремени(), ВидГраницы.Включая));

и все. таким образом движения этого документа будут включены в остатки. при старой методике берем просто на МоментВремени(), без границы.


SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Так вроде что-то проясняется. Значит на оперативное проведение забиваем вообще, выключаем его для всех документов. Если данные из регистра куда записываем нам не нужны, а нужно только проверить правильность записи используем новую методику. Когда получаем остатки из этого регистра берем МоментВремени Новый Граница(МоментВремени(), ВидГраницы.Включая).
 Если же данные из регистра нам нужны (например для расчета себестоимости), то смысла в новой методике нет.
 Вообще то такие задачи есть, где используются регистры только для контроля остатков, а для расчета себестоимости другие регистры.
 dhm, Все последний момент такой: если пользователь, что изменил задним числом, по идее надо бы последовательность использовать, чтобы знать с какого момента перепроводить документы. Ты не использовал?


dhm

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
SergTH000,
 мне показалось, что необходимость в последовательности возникает только тогда, когда без нее никуда (в данном случае я имею ввиду только экзамен, не реальную практику). как например в той же задаче 1.7 (если не ошибаюсь), там вроде в условии написано, что обработкой делаем движения с себестоимостью с самого первого документа, для которого эта себестоимость не была расчитана. вот там наверное без нее никуда, а так нет, я считаю она именно на экзамене ни к чему совсем, я не использовал.

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
dhm, все спасибо тебе огромное =)

Bitnikov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Andrey
Сдавал 27-го. Билет №6:
 Опер. учет -1.13 (немного модифицированная)
 Бух. учет -2.6
 Зарплата -3.32
 Управляемые формы -5.3 + 5.4

Сдал на 5)
 База ест-но осталась там, так бы с удовольствием выложил.

Откровенно говоря времени в обрез. Если долго думать времени может не хватить.
 Если есть вопрсы задавайте, по возможности отвечу.


SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Bitnikov, Молодец, поздравляю) Субконто одно использовал?

Bitnikov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Andrey
Спасибо) Использовал два. Контрагенты и Договоры.

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Bitnikov, ММ, опять эта путаница =)
 А, ну у тебя без двух никак, там же договор может не указываться, тогда нормально все=)
 Э-э нет это в 2.4 не указывается. А почему нельзя одно субконто, договоры? Объясни как думаешь, плз.
« Последнее редактирование: Август 29, 2010, 10:42:44 pm от Сергей »

Bitnikov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Andrey
Ну теоретически можно и обойтись одним субконто Договоры, а из него при необходимости вытаскивать контрагента. Но ИМХО, это неудобно. Ни для пользователя, ни для разработчика. Т.е. экономия на субконто Контрагенты не стоит того.

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Так погоди, пользователю вообще все равно=)Он в документе указал и норм. А отчеты мы ему сделаем)
 А для разработчика, почему не удобно? Через точку же просто обращаться к владельцу, и в вирт. таблицах указывать можно параметры на контрагента Субконто1.Договор.Контрагент = &...А вот экономия большая будет..
« Последнее редактирование: Август 29, 2010, 11:29:03 pm от Сергей »

Bitnikov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Andrey
Возможно я рассуждаю исходя из опыта работы с 1С-8 (4-х летнего smile ), когда анализируются и сами формы списков регистров накопления в пользовательском режиме (пользователями), ну и различные стандартные "оборотки".
 В рамказ текста задачи, может можно и обойтись одним субконто.
 Мне этот вопрос на экзамене не задавали, о количествах субконто на счете. Но если бы задали то нашел бы что ответить на данный вопрос. Вобщем, считаю, если есть что ответить на вопрос о выбранном вами решения, то решайте так как считаете правильным.

petrov86

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Петров
Quote (alice)
Таким образом, получается следующее, что так как в платформе 8.2 используется по умолчанию управляемый режим блокировок, то необходимо их разработчику прописывать самостоятельно. При этом, если сначала делается запись в регистр, а потом чтение, тогда нужно использовать БлокироватьДляИзменения, так только в этом случае будут заблокированы только те записи, которые соотв. требуемой комбинации измерений. То есть платформа сама блокирует то, что ей нужно. Если же сначала данные считываются, тогда нужно создать объект типа БлокировкаДанных и описать его соотв. образом, чтобы было, как можно меньше избыточно заблокированных данных. Также нужно понимать, в каком режиме блокировать данные: исключительный или разделяемый, в зависимости от задачи. Привелигированный режим может понадобится, если какой- то участок кода (например, проведение документа) нужно выполнить макс. быстро.

 Может кто, нашёл хорошую инфу как пользоватся блокировками в 8.2?
 У меня такое ощущение, что объект типа БлокировкаДанных - это из 8.1 и в 8.2 им не нужно пользоватся, что БлокироватьДляИзменения сделано именно для замены этой громоздкой конструкции.
 Для меня это полное шаманство.
 Когда я тупо записываю данные я пользуюсь конструктором и не парюсь.
 Когда мне нужен какой то анализ и потом запись, я вверху ставлю.
 Движения.Взаиморасчёты.Очистить();
 Движения.Взаиморасчёты.Записать();
 Движения.Взаиморасчёты.БлокироватьДляИзменения = Истина;
 и
 в конце
 Если НЕ Отказ тогда
 Движения.Взаиморасчёты.Записывать = Истина;
 конецЕсли;
 Что система на самом делает понятия не имею.
 Если с очисткой и записью более менее понятно. Раз очистили то надо и записать.
 То с блокировкой не понятно. Написано блокироваться должна только интересующая нас комбинация.
 А как система узнает какая нас интересует комбинация?
 Короче как то сложно.
 Может кто скажет где можно почитать или объяснит на пальцах?
 Спасибо.
« Последнее редактирование: Август 31, 2010, 02:49:30 pm от Петров »

Bitnikov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Andrey
petrov86, то что у тебя в цитате и есть правильный ответ.

Т.е. если нужна "мгновенная" блокировка, то используется объект БлокировкаДанных и его метод заблокировать(). В момент вызова метода происходит непосредственная блокировка (того, что заблокировано) до момента завершения транзакции.
 А если использовать св-во регистра БлокироватьДляИзменения - то сама блокировка происходит в момент записи регистра (до момента завершения транзакции), т.е. не в момент установки этого свойства, а в момент записи самого регистра. При использовании свойства система блокирует записи с указанными измерениями регистра.

Стало понятней?

« Последнее редактирование: Август 31, 2010, 03:51:15 pm от Andrey »

petrov86

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Петров
Quote (Bitnikov)
petrov86, то что у тебя в цитате и есть правильный ответ. Т.е. если нужна "мгновенная" блокировка, то используется объект БлокировкаДанных и его метод заблокировать(). В момент вызова метода происходит непосредственная блокировка (того, что заблокировано) до момента завершения транзакции.

 Т.е. от начала до конца. Я вижу те кто используют БлокировкаДанных, пишут этот код в начале.
 То же самое происходит и с БлокироватьДляИзменения
 
Quote (Bitnikov)

 А если использовать св-во регистра БлокироватьДляИзменения - то сама блокировка происходит в момент записи регистра (до момента завершения транзакции), т.е. не в момент установки этого свойства, а в момент записи самого регистра. При использовании свойства система блокирует записи с указанными измерениями регистра.

 А смысл? запись пройдёт одним sql запросом. Смысл блокировать на момент записи? Если по какой то причине запись будет не удачной, вся транзакция откатится. И это будет уже не из за наших блокировок а из за дедлоков sql.
 Я понимаю, что блокировка нужна для того что бы предотваратить такую ситуацию:
 1) Выбрали остатки для документа1 = 10 шт
 2) Выбрали остатки для документа2 тоже 10 шт (вообще с другого компа)
 3) По результатам 1 стали делать какие то действия и они затянулись. Может в том документе есть номенклатуры с очень большими остатками или алгоритм расчёта длительный или ещё что-то не важно. Важно они затянулись и проскочило 4.
 4) По результатам 2 создали движения в регистрах по документу2.
 5) По результатам 1 создали движения в регистрах по документу1
 Движения по документу1 уже не верны. Т.к. за это время эти 10 шт взял другой документ.
 Т.е. другой ситуации я не знаю для использования блокировки.
 Так зачем на одну и туже ситуация два механизма блокирования.
 Или есть какая то очень существенная разница или что то ещё.
 Про то что вы написали. Что одна блокировка длинна другая нет, я как то с трудом верю. Вернее может оно и так, но не понимаю вообще для чего использовать короткую блокировку. sql сам, без нас создаст эту короткую блокировку.

Bitnikov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Andrey
При использовании вышеописанных блокировок блокировки осуществляются не СУБД, а менеджером блокировок 1С.

По поводу короткой блокировки - то не совсем так. Блокировка накладывается на случай чтения из регистра. Т.е. свойство регистра устанавливается, например, в таком случае:
 1. списываем товар
 2. записываем движения
 3. проверяем остатки с учетом записанных движений, если что-то в минусе - отказ.

В этом случае блокировка действует с момента записи до конца, т.е. т.к. запись происходит в пункте 2, то от пункта 2 до конца.

Если же движения просто записываются без чтения, то никаких блокировок устанавливать не нужно.