|   |   | 
| 
 | Как сделать отбор по регистру сведений? | ☑ | ||
|---|---|---|---|---|
| 0
    
        life 04.11.12✎ 20:35 | 
        Всем привет, как сделать отбор по регистру сведений, где есть измерение "Цена" которое ссылается на перечисление цены. Я это пробую сделать в форме приходной накладной при выборе номенклатуры.
  [CODE]Процедура ПриходТаблицаТМЦПриИзменении(Элемент) ТекСтрока = Элементы.ПриходТаблица.ТекущиеДанные; ТекСтрока.Цена = ПриходнаяЦена(Объект.Дата, ТекСтрока.ТМЦ); КонецПроцедуры [/CODE] а вот функция которая должна получать значение цены [CODE]Функция ПриходнаяЦена(ТекТМЦ, ТекДата) Отбор = Новый Структура("ТМЦ", ТекТМЦ); ЗначениеЦены = РегистрыСведений.Цены.ПолучитьПоследнее(ТекДата, Отбор); Возврат ЗначениеЦены.Цена; КонецФункции[/CODE] вот как здесь можно отсортировать по значению из перечисления Цены, приходные | |||
| 16
    
        life 04.11.12✎ 21:03 | 
        спасибо, но ошибка не исчезла
  {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(23)}: Значение не является значением объектного типа (Цена) &НаКлиенте Процедура ПриходТаблицаТМЦПриИзменении(Элемент) ТекСтрока = Элементы.ПриходТаблица.ТекущиеДанные; ТекСтрока.Цена = ПриходнаяЦена(Объект.Дата, ТекСтрока.ТМЦ); КонецПроцедуры Функция ПриходнаяЦена(ТекТМЦ, ТекДата) Отбор = Новый Структура("ТМЦ, ВидЦены", ТекТМЦ, Перечисления.ВидЦены.Приходная); ЗначениеЦены = РегистрыСведений.Цены.ПолучитьПоследнее(ТекДата, Отбор); Возврат ЗначениеЦены.Цена; КонецФункции | |||
| 17
    
        Wobland 04.11.12✎ 21:04 | 
        а цена-то есть?     | |||
| 18
    
        zak555 04.11.12✎ 21:05 | 
        &НаСервере
  Функция ПриходнаяЦена(ТекТМЦ, ТекДата) Отбор = Новый Структура("ТМЦ, ВидЦены", ТекТМЦ, Перечисления.ВидЦены.Приходная); ЗначениеЦены = РегистрыСведений.Цены.ПолучитьПоследнее(ТекДата, Отбор); Возврат ЗначениеЦены.Цена; КонецФункции | |||
| 19
    
        zak555 04.11.12✎ 21:06 | 
        &НаСервере
  Функция ПриходнаяЦена(ТекТМЦ, ТекДата) Отбор = Новый Структура; Отбор.Вставить("ТМЦ", ТекТМЦ); Отбор.Вставить("ВидЦены", Перечисления.ВидЦены.Приходная); ЗначениеЦены = РегистрыСведений.Цены.ПолучитьПоследнее(ТекДата, Отбор); Возврат ЗначениеЦены.Цена; КонецФункции | |||
| 20
    
        life 04.11.12✎ 21:07 | 
        да, я их сразу занес в регистр 
  вот картинка http://s019.radikal.ru/i600/1211/62/d84a220de708.jpg (не смотри плиз на наименования тмц, это пример только) | |||
| 21
    
        Wobland 04.11.12✎ 21:07 | 
        (18) &НаСервере - это по умолчанию. но лучше ставить, конечно     | |||
| 22
    
        Wobland 04.11.12✎ 21:07 | 
        (20) не вижу     | |||
| 23
    
        Wobland 04.11.12✎ 21:08 | 
        +(22) вижу, что даты не вижу, остальное не вижу     | |||
| 24
    
        life 04.11.12✎ 21:09 | 
        наверно это из-за дат, сейчас исправлю     | |||
| 25
    
        Wobland 04.11.12✎ 21:09 | 
        я тоже был молодым когда-то. но до седых волос дожил,а не знаю, как ругается платформа на ПолучитьПоследнее к непериодическому регистру     | |||
| 26
    
        zak555 04.11.12✎ 21:09 | 
        (23) получитьПоследнее и для непериодчиского же действует     | |||
| 27
    
        Wobland 04.11.12✎ 21:10 | 
        (26) СП против     | |||
| 28
    
        life 04.11.12✎ 21:13 | 
        поставил периодичность в пределах секунды, сделал новые записи в регистр. теперь такая ошибка 
  {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(24)}: Ошибка при вызове метода контекста (ПолучитьПоследнее) ЗначениеЦены = РегистрыСведений.Цены.ПолучитьПоследнее(ТекДата, Отбор); по причине: Несоответствие типов (Параметр номер ""1"") Несоответствие типов (Параметр номер ""1"") | |||
| 29
    
        Wobland 04.11.12✎ 21:14 | 
        (28) сказать тебе, что ТекДата - это не дата или сам догадаешься?     | |||
| 30
    
        Wobland 04.11.12✎ 21:14 | 
        +(29) точно, она у тебя ТМЦ     | |||
| 31
    
        zak555 04.11.12✎ 21:15 | 
        (27) действительно     | |||
| 32
    
        zak555 04.11.12✎ 21:15 | 
        забыл     | |||
| 33
    
        life 04.11.12✎ 21:15 | 
        так это же только аргумент по назначению?
  Процедура ПриходТаблицаТМЦПриИзменении(Элемент) ТекСтрока = Элементы.ПриходТаблица.ТекущиеДанные; ТекСтрока.Цена = ПриходнаяЦена(Объект.Дата, ТекСтрока.ТМЦ); КонецПроцедуры | |||
| 34
    
        Wobland 04.11.12✎ 21:16 | 
        (33) ну. внутри своей функции ТекТМЦ у тебя - это дата, а ТекДата - это ТекСтрока.ТМЦ     | |||
| 35
    
        life 04.11.12✎ 21:18 | 
        спасибо,поменял местами. просто не думал что тут параметры только по ссылку можно передавать (это я про 1с)     | |||
| 36
    
        Wobland 04.11.12✎ 21:20 | 
        (35) я вот сейчас ничего не понял кроме спасибо. ты не мог бы уже сразу сказать, что всё заработало, всем большое спасибо?     | |||
| 37
    
        Wobland 04.11.12✎ 21:20 | 
        +(36) и ответить на сакральный вопрос     | |||
| 38
    
        life 04.11.12✎ 21:22 | 
        спасибо большое всем, работает. что за вопрос?     | |||
| 39
    
        Wobland 04.11.12✎ 21:22 | 
        (38) -> (3)(14)     | |||
| 40
    
        life 04.11.12✎ 21:26 | 
        в тестовом задании написано так сделать. в принципе все логично, сначала вносятся цены, потом приходуется товар. а что не так?     | |||
| 41
    
        Wobland 04.11.12✎ 21:29 | 
        (40) цены определяются поступлением. по сколько дали, столько и цена. и действовать тут надо наоборот как раз - при проведении поступления менять регистр про цены. ну это по моей скромной логике вещей     | |||
| 42
    
        Wobland 04.11.12✎ 21:30 | 
        вот юзер взял портянку на 250 позиций, пробежался, вбил цены в регистр. потом пошёл создавать документ поступление, опять пошёл сканировать портянку...     | |||
| 43
    
        life 04.11.12✎ 21:41 | 
        завтра уточню этот момент, спасибо за советы.     | |||
| 44
    
        hhhh 04.11.12✎ 21:51 | 
        (42) нет ну если постоянный поставщик, он прайсы пересылает заранее в экселе, почему нет?     | |||
| 45
    
        Wobland 04.11.12✎ 21:53 | 
        (44) а ни о чём таком автор не говорил. почему бы и нет, конечно     | |||
| 46
    
        Wobland 04.11.12✎ 21:56 | 
        >сначала вносятся цены
  ладно, убедил. необязательно руками вносятся ;) | |||
| 47
    
        life 04.11.12✎ 22:17 | 
        а как можно получить значение реквизита документа? метод ТекущиеДанные не работает     | |||
| 48
    
        Wobland 04.11.12✎ 22:28 | 
        (47) какого и зачем*?     | |||
| 49
    
        Wobland 04.11.12✎ 22:29 | 
        и где? ТекущиеДанные - это для таблицы на форме. телпатирую: Объект.Реквизит     | |||
| 50
    
        life 04.11.12✎ 22:32 | 
        в документе расходная накладная есть реквизит цены, который ведет на перечисление виды цен, при его изменении должна меняться значение цены в табличной части.
  т.е. я так понимаю нужно узнать значение этого реквизита и сделать выборку из регистра сведений по этому значению. | |||
| 51
    
        Wobland 04.11.12✎ 22:35 | 
        (50) Объект.ТипЦен или как там у тебя     | |||
| 52
    
        life 04.11.12✎ 22:39 | 
        то что нужно, спасибо.     | |||
| 53
    
        Wobland 04.11.12✎ 22:44 | 
        а ну-ка вопрос на засыпку. скажи, зачем нужен реквизит Цена в ТЧ документа? цены ж и без этого в регистре есть     | |||
| 54
    
        life 04.11.12✎ 22:50 | 
        что бы их в ручную можно было править, в случаи необходимости.     | |||
| 55
    
        Wobland 04.11.12✎ 22:50 | 
        и что делать, если я завтра новый тип цен захочу, и насколько это будет удобно     | |||
| 56
    
        Wobland 04.11.12✎ 22:51 | 
        (54) изменишь в документе руками. что от этого изменится, кроме самого документа?     | |||
| 57
    
        Wobland 04.11.12✎ 22:53 | 
        а сумму в ТЧ менять можно? цена пересчитывается?     | |||
| 58
    
        life 04.11.12✎ 22:53 | 
        я так глубоко не вникал в такие вопросы, я еще учусь.     | |||
| 59
    
        Wobland 04.11.12✎ 22:53 | 
        (58) а я тебя учу. делай так, чтоб твоя поделка не рухнула от любых допустимых действий     | |||
| 60
    
        life 04.11.12✎ 22:55 | 
        я с тобой согласен. но мне нужно сделать т.к. дали в задании, это на вакансию джуниора типа)     | |||
| 61
    
        Wobland 04.11.12✎ 22:58 | 
        (60) дык делай. при изменении количества сумму считаешь - это из задания? а про цену ничего не сказано? додумай     | |||
| 62
    
        Wobland 04.11.12✎ 22:58 | 
        (61) *про сумму     | |||
| 63
    
        Wobland 04.11.12✎ 22:58 | 
        дойдёшь до реализации - скажи, фокус покажу ;)     | |||
| 64
    
        life 04.11.12✎ 23:16 | 
        а цена должно меняться, если изменено значение Виды цен ( это реквизит расходной накладно, перечисление которое) и нужно еще меня когда выбирается контрагент. и вот тут еще один вопрос, в  справочники контрагентов есть реквизит Вид цены (все то же, многострадальное перечисление) вот как получить этот атрибут при выборе в реквизитах расходной накладной? 
  ТекЦена = Объект.Контрагент. - и здесь тип цены которое у него в реквизите указано | |||
| 65
    
        life 04.11.12✎ 23:17 | 
        оффтоп. а как тут форматировать код?     | |||
| 66
    
        Wobland 04.11.12✎ 23:19 | 
        >справочники контрагентов есть реквизит Вид цены
  представь себе контрагента, который продаёт нам и покупает у нас. кривое проектирование налицо вопрос не понял. Объект.Контрагент.ТипЦены - не оно? {1С}тут код{/1С} - только с квадратными скобками | |||
| 67
    
        life 04.11.12✎ 23:23 | 
        насчет проектирования согласен, но это же только учебный пример.
  ТекЦена = Объект.Контрагент.ВидЦены; ошибка : Поле объекта не обнаружено (ВидЦены) но этот реквизит есть у справочника и заполнен. | |||
| 68
    
        Wobland 04.11.12✎ 23:25 | 
        (67) нету этого реквизита
  ты же видишь, как я ломаю твою учебную поделку. будет лучше, если её будет ломать кто-то другой и в более официальной обстановке? | |||
| 69
    
        life 04.11.12✎ 23:27 | 
        мне тяжело дать однозначный ответ =) но я склоняюсь к тому что следует выполнять задания строго по ТЗ.     | |||
| 70
    
        Wobland 04.11.12✎ 23:30 | 
        (69) слушай, а покажи. я падавана нагружу     | |||
| 71
    
        life 04.11.12✎ 23:35 | 
        завтра фотик -сфоткаю, а то на теле камера плохая. 
  посмотри пожалуйста на реквизит http://s57.radikal.ru/i156/1211/5a/a4aa4c0fcc66.jpg | |||
| 72
    
        life 04.11.12✎ 23:36 | 
        завтра заберу фотик*
  а как тут свои сообщения редактировать? | |||
| 73
    
        Wobland 04.11.12✎ 23:37 | 
        (71) ты продолжаешь издеваться мелким разрешением?     | |||
| 74
    
        Wobland 04.11.12✎ 23:37 | 
        (72) никак     | |||
| 75
    
        Wobland 04.11.12✎ 23:38 | 
        контрагент у тебя не контрагент     | |||
| 76
    
        life 04.11.12✎ 23:41 | 
        почему? ссылка на справочник контрагенты есть.     | |||
| 77
    
        Wobland 04.11.12✎ 23:42 | 
        (76) Объект.Контрагент какого типа?     | |||
| 78
    
        life 04.11.12✎ 23:45 | 
        вот такого СправочникСсылка.Контрагенты     | |||
| 79
    
        Wobland 04.11.12✎ 23:48 | 
        (78) тогда где-то врёшь. покажи по аналогии с этим: справочники контрагентов есть реквизит Вид цены     | |||
| 80
    
        Wobland 04.11.12✎ 23:48 | 
        тфу, с этим: http://screencast.com/t/FQZ59bLle2Qv     | |||
| 81
    
        life 04.11.12✎ 23:52 | 
        http://s017.radikal.ru/i412/1211/38/540cd110afb6.jpg ссори за разрешение.     | |||
| 82
    
        Wobland 04.11.12✎ 23:54 | 
        а, нуда. за этим придётся на сервер сходить     | |||
| 83
    
        life 04.11.12✎ 23:56 | 
        спасибо заработало, а как ты определил?     | |||
| 84
    
        Wobland 04.11.12✎ 23:57 | 
        (83) посмотрел внимательными глазами. я вообще мелкое разрешение не разглядывал     | |||
| 85
    
        life 05.11.12✎ 00:01 | 
        ошибки нет, но и не выводит нечего
  &НаСервере Процедура КонтрагентПриИзменении(Элемент) ТекЦена = Объект.Контрагент.ВидЦены; Сообщить(ТекЦена); КонецПроцедуры | |||
| 86
    
        Wobland 05.11.12✎ 00:03 | 
        (85) Сообщить("От такой вот вид цены: "+Объект.Контрагент.ВидЦены);     | |||
| 87
    
        life 05.11.12✎ 00:05 | 
        все равно не какого сообщения нет     | |||
| 88
    
        life 05.11.12✎ 00:08 | 
        сообщения не выводятся только в этой процедуре 
  &НаСервере Процедура КонтрагентПриИзменении(Элемент) ТекЦена = Объект.Контрагент.ВидЦены; Сообщить(ТекЦена + "sss"); Сообщить("От такой вот вид цены: "+Объект.Контрагент.ВидЦены); Сообщить("От такой вот вид цены: "); КонецПроцедуры | |||
| 89
    
        Wobland 05.11.12✎ 00:09 | 
        хм, даже на клиенте
  &НаКлиенте Процедура КонтрагентПриИзменении(Элемент) Сообщить("От такой вот вид цены: "+Объект.Контрагент.ВидЦены); КонецПроцедуры http://screencast.com/t/c2RE27OZfwj | |||
| 90
    
        Wobland 05.11.12✎ 00:09 | ||||
| 91
    
        life 05.11.12✎ 00:11 | 
        это значит что у меня....?     | |||
| 92
    
        Wobland 05.11.12✎ 00:12 | 
        (91) не оттуда растут руки ;)
  платформа какая? | |||
| 93
    
        life 05.11.12✎ 00:12 | 
        8.2     | |||
| 94
    
        Wobland 05.11.12✎ 00:12 | 
        (93) это я понял     | |||
| 95
    
        Wobland 05.11.12✎ 00:13 | 
        у меня 1С:Предприятие 8.2 (8.2.16.352)     | |||
| 96
    
        Wobland 05.11.12✎ 00:13 | 
        плин, а я не верил, что сотню сделаем     | |||
| 97
    
        life 05.11.12✎ 00:16 | 
        а из-за чего это процедура может не работать?     | |||
| 98
    
        life 05.11.12✎ 00:18 | 
        это ппц какой то, для аналогично реквизита склад все работает(     | |||
| 99
    
        Wobland 05.11.12✎ 00:18 | 
        (97) фантазировать не хочу, мож, в платформе что-то испортилось     | |||
| 100
    
        Wobland 05.11.12✎ 00:18 | 
        (98) конфигурацию обновил?     | |||
| 101
    
        life 05.11.12✎ 00:24 | 
        да, вообщем все нормально пока не дописываю метод .ВидЦены
  если на клиенте, то поле объекта не обноружено если на сервере, вообще не каких действий, как будет процедура не отрабатывается. | |||
| 102
    
        Wobland 05.11.12✎ 00:27 | 
        (101) это не метод, а свойство, если уж ты начал пользоваться терминологией ООП. наружено, никаких.
  ф7 нажимал перед тем, как проверять? | |||
| 103
    
        life 05.11.12✎ 00:43 | 
        неа, а что это должно дать?     | |||
| 104
    
        life 05.11.12✎ 00:44 | 
        Синтаксических ошибок не обнаружено!     | |||
| 105
    
        life 05.11.12✎ 00:46 | 
        что то вообще не могу получить доступ к реквизитам справочников в РН, уже и по дописывал обычные строки для проверки, все равно поле объекта не обнаружено.     | |||
| 106
    
        crotnn 05.11.12✎ 10:27 | 
        (105) Потому что за реквизитами надо на сервер ходить. На клиенте есть только ссылка. Примерно так:
  
  | |||
| 107
    
        Wobland 05.11.12✎ 10:57 | 
        (106) сможешь объяснить (89)?     | |||
| 108
    
        crotnn 05.11.12✎ 11:30 | 
        (107) Та же проблема, ты на клиенте хочешь получить значение реквизита от ссылки "Объект.Контрагент.ВидЦены".     | |||
| 109
    
        Wobland 05.11.12✎ 11:39 | 
        (108) я тебе больше скажу: я его получаю     | |||
| 110
    
        life 05.11.12✎ 17:05 | 
        спасибо  большое, такой вариант работает.     | |||
| 111
    
        life 05.11.12✎ 17:31 | 
        у меня еще вопрос, как обновить колонку Сумма для всех строк при изменении контрагента или вида цены?
  Процедура КонтрагентПриИзменении(Элемент) ТекЦена = ПолучитьВидЦеныКонтрагента(Объект.Контрагент); ТекСтрока = Элементы.РасходТаблица.ТекущиеДанные; ТекСтрока.Цена = ВидЦеныИзменение(Объект.Дата, ТекСтрока.ТМЦ, ТекЦена); ТекСтрока.Сумма = ТекСтрока.Количество * ТекСтрока.Цена; КонецПроцедуры так обновляется только та что в фокусе. | |||
| 112
    
        Wobland 05.11.12✎ 17:57 | 
        (111) а ты пройдись по всем строкам. только не элемента формы, а ТЧ объекта     | |||
| 113
    
        Wobland 05.11.12✎ 17:58 | 
        и, наверное, было бы хорошим тоном спросить у юзера, нужно ли ему это. вопрос в помощь     | |||
| 114
    
        Wobland 05.11.12✎ 18:00 | 
        а я уже спрашивал, на кой хрен цена в ТЧ нужна, когда все цены живут в регистре?     | |||
| 115
    
        life 05.11.12✎ 18:16 | 
        спасибо, получилось     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |