Имя: Пароль:
1C
1С v8
Не работает программный код из книжки. В документе старая цена
,
0 ROMA1927
 
19.02.16
15:02
Привет!
Не работает программный код. Все делал по книжке. Синтаксических ошибок нет.
Указывается в документе ОказаниеУслуги старая цена. Хотя в регистре сведений записал новую цену с новой датой.

Из общего модуля:
Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт
          // Создать вспомогательный объект "Отбор".
         Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);
        // Получить актуальные значения ресурсов регистра.
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор);
      Возврат ЗначенияРесурсов.Цена;
КонецФункции

В модуле формы:
&НаКлиенте
Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
     // Получить текущую строку табличной части.
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
// Установить цену.
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
// Пересчитать сумму строки
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
    // Вставить содержимое обработчика.
КонецПроцедуры

Спасибо за ответ!
1 Волшебник
 
модератор
19.02.16
15:03
Что за книжка-то? Кто автор?
2 ROMA1927
 
19.02.16
15:04
Радченко М.Г. 1С- Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы (2013)
3 Сильф
 
19.02.16
15:05
(0) А дата документа, случайно, не раньше даты установки новой цены?
4 ROMA1927
 
19.02.16
15:06
Нет, новая дата 19.02.16, а старая 08.01.16
5 Сильф
 
19.02.16
15:06
+ (3) вместе со временем
6 Nuobu
 
19.02.16
15:07
(4) А в регистре какие даты стоят?
7 ROMA1927
 
19.02.16
15:08
Как разместить принтскрин ?
8 aka AMIGO
 
19.02.16
15:09
(4) Отладчик включал? что там находится в АктуальнаяДата, оператор
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор);

(7) http://pics.rsh.ru/
9 ROMA1927
 
19.02.16
15:10
В регистре сведений у меня 2 записи, одна старая, другая новая.
10 Cyberhawk
 
19.02.16
15:10
Цену-то записал с новой датой, а у документа дату не поменял...
11 Cyberhawk
 
19.02.16
15:11
Убери первый параметр в вызове метода "ПолучитьПоследнее" и убедись, что все работает
12 ROMA1927
 
19.02.16
15:13
Я открыл документ со старой датой. Поменял дату на новую и при выборе номенклатуры, цена остаётся старой.
13 Лефмихалыч
 
19.02.16
15:14
(0) значит старая цена равна новой. Или ты запустил не тот код, в который смотришь
14 salvator
 
19.02.16
15:14
(12) Записал документ?
15 ROMA1927
 
19.02.16
15:17
Я разместил код из общего модуля и из модуля формы документа. Как отправить Вам ИБ?
16 shuhard
 
19.02.16
15:19
(15)[Как отправить Вам ИБ?]
а зачем она форуму ?
17 Cyberhawk
 
19.02.16
15:22
(15) Ну давай, скидывай ИБ мне по почте
18 ROMA1927
 
19.02.16
15:23
(11) Убрал первый параметр, выдает ошибку.
19 ROMA1927
 
19.02.16
15:24
Хорошо скину, спасибо!
20 bolder
 
19.02.16
15:24
(4) поставь новую дату 18.02.2016 и проверь.
21 salvator
 
19.02.16
15:24
(18) Документ записываешь перед изменением номенклатуры или нет?
22 Cyberhawk
 
19.02.16
15:31
Посмотрел базу - все работает, цена берется нужная в зависимости от даты в документе
(21) Что ты прицепился к этому - это никак не влияет, он же передает дату из реквизита "Объект" перед каждым вызовом получения цены
23 ROMA1927
 
19.02.16
15:31
Нет, сначала выбираю номенклатуру. Выбираю номенклатуру, цена остается старой
24 salvator
 
19.02.16
15:35
(22) Понял уже :)
25 ROMA1927
 
19.02.16
15:36
(22) Снова открываю документ. Меняю дату на 19.02.16, выбираю номенклатуру. Цена старая 5 руб.
26 ROMA1927
 
19.02.16
15:38
Новая цена 7 руб.
27 ROMA1927
 
19.02.16
15:39
Cyberhawk
У меня не работает. Все равно указывается старая цена
28 Nuobu
 
19.02.16
15:41
(26) Какая дата стоит возле цены в 7 рублей?
29 ROMA1927
 
19.02.16
15:42
В регистре 19.02.16
30 Nuobu
 
19.02.16
15:43
(29) делал (20) ??
31 salvator
 
19.02.16
15:43
(29) А время в документе и в регистре какое?
32 ROMA1927
 
19.02.16
15:45
Менял дату на 18.02.16 - цена старая 5 руб
33 Nuobu
 
19.02.16
15:47
(32) закомментируй строку
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

И вместо неё напиши:
Сообщить(Объект.Дата);

И скажи, что выведет.
34 ROMA1927
 
19.02.16
15:48
Хорошо
35 ROMA1927
 
19.02.16
15:51
Сообщение 19.02.16.0:00:00
36 Nuobu
 
19.02.16
15:52
(35) Цена осталась старой?
37 ROMA1927
 
19.02.16
15:52
Да
38 Nuobu
 
19.02.16
15:54
(37) а там сделай:
СообщитЬ(РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура));
39 ROMA1927
 
19.02.16
15:55
Проблема в том, в поле цена появляется старая цена, должна появляться новая согласно коду в общем модуле.
40 ROMA1927
 
19.02.16
15:55
Хорошо сделаю
41 ROMA1927
 
19.02.16
15:57
Сделал, сообщение 5, т.е. цена старая
42 Nuobu
 
19.02.16
15:59
(41) Думай теперь.
Может, номенклатура не совпадает во второй строке, где цена 7 и сегодняшняя дата?
43 ROMA1927
 
19.02.16
15:59
Может глюк
44 Одинесю
 
19.02.16
16:01
Скрины документа и регистра бы выложил уже давно через (8)
45 ROMA1927
 
19.02.16
16:06
Спасибо Всем. Я нашел ошибку. У меня новая запись в регистре от 19.02.16. Провожу документ тоже по дате 19.02.16. А надо чтобы разница по времени была хоть на одну секунду. Изменил дату записи в регистре на дату 18.02.16 и все работает.
46 Nuobu
 
19.02.16
16:07
А как же (32) (20) ??
47 Одинесю
 
19.02.16
16:08
а (32) что было?
48 ROMA1927
 
19.02.16
16:08
(46) Я менял в документе, не в регистре.
Нужно, что бы была разница по времени
49 Nuobu
 
19.02.16
16:09
(48) Поменять в документе - это гениально, Ватсон!
50 ROMA1927
 
19.02.16
16:11
Когда Вы советовали поменять дату, я думал что в документе.
Все равно Всем спасибо. На ошибках учатся.
51 ROMA1927
 
19.02.16
16:14
Вот только странно получается, что документ проводится с 0 часов 00 минут того же дня
52 Nuobu
 
19.02.16
16:15
(51) иди книжки читай.
53 ROMA1927
 
19.02.16
16:20
Я читаю.
Казус был в том, что запись в регистр и движение в документе по одной дате, т.е. сегодня. Новичок это сразу не заметит. Записи проводятся с нуля часов, с нуля минут.
Все равно Вам спасибо.
54 Одинесю
 
19.02.16
16:24
После (22) можно было уже разбегаться всем.
55 ROMA1927
 
19.02.16
16:27
Все большое спасибо.
Программист всегда исправляет последнюю ошибку.