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

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

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
1.3
« Ответ #45 : Июль 09, 2011, 11:05:22 pm »
Мой вариант решения. Если можно проведите анализ и тестирование не предвзятым взглядом. Мне кажется что учел все?
Вложения:
kow19761.3.dt

Oliver

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Юрий
1.3
« Ответ #46 : Август 05, 2011, 07:14:00 am »
Моё решение. Прошу оценить.
Вложения:
1_3_Oliver.dt


kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
1.3
« Ответ #47 : Август 05, 2011, 08:50:57 am »
Oliver,

 1. Есть срок продажи в отчете, получается, что услуга у вас хранилась на складе 26 дней
 2. У вас нет параметров виртуальной таблицы, а данные вы отсекаете на уровне связи. Это очень большое преступление для 1С
 3. Нет индексации
Вложения:
s9866899.jpg

Oliver

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Юрий
1.3
« Ответ #48 : Август 13, 2011, 12:44:03 pm »
kow1976, большое спасибо за Ваши замечания.
 Всё поправил. Особо ценное это про параметры в системе компоновки (я компоновку ещё не разбирал). Я смотрел параметры компоновки на Вашем примере - и там есть маленький недочёт.
 1. В отчёте Остатки товаров - в округляете дату до конца дня. А сам параметр - значения дата,время.
 Успехов в подготовке!

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
1.3
« Ответ #49 : Август 13, 2011, 01:26:36 pm »
Спасибо

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

 Параметры я имел в ввиду не в отчете, а в обработкепроведения расх. Нак (запросе).
« Последнее редактирование: Август 13, 2011, 01:30:19 pm от Олег »

Oliver

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Юрий
1.3
« Ответ #50 : Август 18, 2011, 11:21:03 am »
kow1976
 Вот теперь я понял о чём Вы мне толковали. Действительно, когда торопится забываешь очевидные вещи (но фатальные для сдачи) - это в моём случае. А я первоначально подумал об этом (см. рис.)
 И у меня возник вопрос: необходимо ли явно указывать в компановке параметры виртуальных таблиц (рис. 1)?
 Или это избыточно (рис. 2)?

 Спасибо за внимание к моим вопросам.
Вложения:
s8195771.jpg
s1276526.jpg

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
1.3
« Ответ #51 : Август 18, 2011, 01:41:20 pm »
Oliver,

 Не могу вам ответить точно, считается это ошибкой на экзамене или нет. Но в задании написано так:
 «Продажи с 01.01.2010 по 31.03.2010»
 Нет не каких секунд и часов. Поэтому считаю надежнее указать функции параметров приводящих к концу секунды заданного дня.

Oliver

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Юрий
1.3
« Ответ #52 : Август 18, 2011, 03:10:57 pm »
Спасибо. Вопрос закрыт.

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #53 : Октябрь 05, 2011, 07:45:22 pm »
На сайте http://ax-online.ru описано решение данной задачи, в котором следующим образом используются блокировки:
 Блокировка = Новый БлокировкаДанных;
 ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
 ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
 ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
 Блокировка.Заблокировать();
 
 Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
 Движения.ОстаткиНоменклатуры.Записать();
 К этому участку кода приведено такое описание:
 "Перед тем как выполнить чтение данных из регистра ОстаткиНоменклатуры, мы стираем прежние движения этого документа, если они были, записывая пустой набор движений. Но ещё прежде мы указываем, что все остатки и обороты, на которые влияли наши прежние движения, следует БлокироватьДляИзменения. Это на тот случай, если по итогам проверки остатков в партиях, мы решимся отказаться от записи новых движений и вернуть прежние. Ведь пока мы производим проверки и формируем движения, другой документ может забрать то, что временно освободилось, когда мы стерли прежние движения. "
 Подскажите пожалуйста, является ли правильным такое использование блокировок и, если да, то стоит ли его применять на экзамене?

chilli

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
1.3
« Ответ #54 : Октябрь 12, 2011, 10:51:07 pm »
Доброго времени суток, присутствующим!
 Я буксую, почему в отчете продажи у меня поле Срок не доступно для использования в отчете?

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

 Есть у меня грубые нарушения устава 1С? lol
Вложения:
chilli_1_3.dt
« Последнее редактирование: Октябрь 12, 2011, 11:00:59 pm от Дмитрий »

Кенгуру

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кенгуру
1.3
« Ответ #55 : Октябрь 13, 2011, 01:35:16 pm »
Посмотрите, пожалуйста, есть ли косяки smile

 Добавлено (13.10.2011, 13:35)
 ---------------------------------------------
 Chilli

 1. Излишняя строка
 "Движения.Продажи.Записать(); "

 ОстанкиНоменклатуры.Записать() - для того, чтобы при проведении документа мы не читали записи самого проводимого документа, этой командой мы записываем пустые записи.

 Из регистра Продажи мы ничего не читаем, поэтому не нужно Записать(), новые записи лягут поверх старых.

 2. Не понял зачем тебе столько ресурсов в отчете продажи, поясни плиз.
 Если для того, чтобы порядок колонок был как требуемом отчете, то из-за отсутствия в нем итогов можно без ресурсов вообще сделать. Смысла суммировать(или другие операции) например Срок не вижу.

 ------------

 3. Расчет Стоимости
 Движение.Стоимость = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;
 думаю будет лучше
 Движение.Стоимость = Выборка.Количество * Выборка.СтоимостьОстаток / Выборка.КоличествоОстаток;
 т.е. сначала умножаем, а потом делим, чтобы не терять микроскопических копеек.

 4. В приходной накладной можно делать запрос с группировкой дублей строк, не знаю насколько это важно, я делаю.
 ---------------
 5. Из твоей работы вынесу для себя параметры виртуальной таблицы ОстаткиНоменклатурыОстатки, я что-то по партиям не отобрал biggrin
Вложения:
-3--.dt
« Последнее редактирование: Октябрь 13, 2011, 01:40:51 pm от Кенгуру »

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #56 : Октябрь 13, 2011, 02:18:33 pm »
Кенгуру

 1. В свойствах конфигурации режим управления блокировкой данных установлен в "Автоматический", а нужно в "Управляемый".
 2. Блокировка данных в процедуре проведения расходной накладной должна осуществляться перед чтением остатков, т.е. до выполнения запроса.

 3.
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
 БлокировкаДанных.Заблокировать();

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

 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура, Партия", "Номенклатура, Партия")

aveego

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
1.3
« Ответ #57 : Октябрь 13, 2011, 04:03:19 pm »
Quote (Кенгуру)
3. Расчет Стоимости
 Движение.Стоимость = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;
 думаю будет лучше
 Движение.Стоимость = Выборка.Количество * Выборка.СтоимостьОстаток / Выборка.КоличествоОстаток;
 т.е. сначала умножаем, а потом делим, чтобы не терять микроскопических копеек.


 А какая разница делишь в начале или в конце, если взять наобум числа
 Выборка.Количество = 3
 Выборка.КоличествоОстаток = 7
 Выборка.СтоимостьОстаток = 8
 Подставляем в обе формулы 3/7*8 = 3.42 или 3*8/7 = 3.42

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #58 : Октябрь 13, 2011, 04:21:14 pm »
aveego

 Чтобы регистр всегда выходил в ноль, т.е. чтобы не зависали копейки лучше писать так:

 Движение.Стоимость = ?(Выборка.Количество = Выборка.КоличествоОстаток, Выборка.СтоимостьОстаток, Выборка.Количество * Выборка.СтоимостьОстаток / Выборка.КоличествоОстаток);

aveego

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
1.3
« Ответ #59 : Октябрь 13, 2011, 04:37:01 pm »
Romdavid,
 С последним согласен, если количество списываемого равно количеству в партии то списываем все количество и всю сумму партии.
 Хотя тут тоже наверное лучше проверять не на равенство, просто если Выборка.Количество больше чем Выборка.КоличествоОстаток, то нужно тоже списывать все количество и всю сумму партии. Это как раз можно сделать если будет проверка на Выборка.КоличествоОстаток > Выборка.Количество, формула расчета будет применять только в том случаи когда Выборка.Количество меньше КоличествоОстаток, а если они равны или Выборка.Количество больше то будет списываться вся партия.

 Выше постом я спросил в чем разница этих формул, что так что так получаются копейки

 
Quote (Кенгуру)
3. Расчет Стоимости
 Движение.Стоимость = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;
 думаю будет лучше
 Движение.Стоимость = Выборка.Количество * Выборка.СтоимостьОстаток / Выборка.КоличествоОстаток;
 т.е. сначала умножаем, а потом делим, чтобы не терять микроскопических копеек.