|   |   | 
| 
 | Добавление проведения по своему регистру с неоднозначными ключевыми полями | ☑ | ||
|---|---|---|---|---|
| 0
    
        Midasu 11.10.13✎ 11:14 | 
        1С 8.1. УТ 10.3.
 Документ - "Поступление товаров и услуг". Задача: заносить в свой регистр данные о поступающий товарах от контрагента, регистр не периодичный, нужно просто, чтобы там хранилась информация о том, что когда-либо поступало от контрагента, без дублирования. Создаю свой регистр сведений - "ТоварыНаПоступление". В нём 2 измерения - Контрагент и Номенклатура. В модуле "Поступление товаров и услуг" в процедуре "Обработка проведения" добавляю: Движения.ТоварыНаПоступление.Очистить(); Для Каждого Товар Из Товары Цикл Движение = Движения.ТоварыНаПоступление.Добавить(); Движение.Контрагент = Контрагент; Движение.Номенклатура = Товар.Номенклатура; Движения.ТоварыНаПоступление.Записать(Истина); КонецЦикла; В итоге при попытке проведения ещё одного документа с таким же контрагентом и номенклатурой выдаёт ошибку о дублировании записей. Хотелось бы, чтобы он или заменял их или даже не пытался записывать. Мне нужно проверять наличие такого контрагента-товара перед проведением? Или какими-то простыми настройками можно этого добиться? | |||
| 1
    
        Godofsin 11.10.13✎ 11:15 | 
        Тебе нужно проверять     | |||
| 2
    
        Ненавижу 1С гуру 11.10.13✎ 11:15 | 
        добавь измерение Поступление     | |||
| 3
    
        Midasu 11.10.13✎ 11:23 | 
        (2) 
 Так он для каждого поступления будет дублировать номенклатуру? Не хотелось бы этого. Такой же я результат могу получить из регистра ТоварыНаСкладах, выбрав только приход. Хотелось бы, чтобы был самый шустрый регистр. | |||
| 4
    
        MrStomak 11.10.13✎ 11:25 | 
        пара вариантов:
 1. сделай регистр независимым и допиши обработку удаления движений при распроведении. 2. сделай оборотный регистр накопления | |||
| 5
    
        exwill 11.10.13✎ 11:27 | 
        (0) В чем сложность проверки?     | |||
| 6
    
        ДенисЧ 11.10.13✎ 11:28 | 
        Наложи отбор, прочитай. Если там есть твои данные, то продолжить,     | |||
| 7
    
        Godofsin 11.10.13✎ 11:28 | 
        (4) Нахера оборотный РН? я так понимаю, единственная цель этого регистра - показать, что этот контрагент является поставщиком этого товара.     | |||
| 8
    
        Лодырь 11.10.13✎ 11:30 | 
        (3) Без измерения документ будет плохо. Представь что ты отменяешь проведение некого документа, в нем была некая "Номенклатура". Как узнать была она еще в каких то документах или нет?     | |||
| 9
    
        Midasu 11.10.13✎ 11:31 | 
        (5) 
 Сложности нет, но я надеялся, что Бориска Нуралиев придумал что-то более стандартизированое, когда ключевые поля становятся ключевыми только при их одновременном совпадении. | |||
| 10
    
        MrStomak 11.10.13✎ 11:32 | 
        (7) оборотный РН с этим отлично справится.     | |||
| 11
    
        Midasu 11.10.13✎ 11:32 | 
        (8) 
 А мне не надо узнавать по документам. Мне важен только факт, что товар когда-либо поступал. Я хочу этот регистр использовать как данные для подбора номенклатуры при следующем поступлении, чтобы не лазить по всему списку, ибо у нас товары чаще всего не меняются от одного контрагента. | |||
| 12
    
        Лодырь 11.10.13✎ 11:35 | 
        (11) Еще раз,при отмене проведения, как ты узнаешь удалять товар из регистра или нет?     | |||
| 13
    
        exwill 11.10.13✎ 11:36 | 
        (9) Он лично ничего не придумывает.
 А те, кто должны придумывать за него, уже давно разучились. | |||
| 14
    
        Midasu 11.10.13✎ 11:37 | 
        (12) 
 Ну, я и не буду удалять. | |||
| 15
    
        Godofsin 11.10.13✎ 11:37 | 
        (14) Получишь фиктивную инфу     | |||
| 16
    
        Godofsin 11.10.13✎ 11:38 | 
        Сделают ошибочное проведение поступления на не того контрагента, записи об этом останутся, а по факту он товар не поставлял     | |||
| 17
    
        exwill 11.10.13✎ 11:38 | 
        (14) Наоборот, ставь проверку наличия при проведении. Тогда при отмене ничего дополнительно делать не надо будет.     | |||
| 18
    
        Лодырь 11.10.13✎ 11:39 | 
        (14) Ок, неверно занесли товар, или не на того контрагента. В итоге навсегда остались неверные записи.     | |||
| 19
    
        MrStomak 11.10.13✎ 11:42 | 
        (17) это медленно...     | |||
| 20
    
        Defender aka LINN 11.10.13✎ 12:12 | 
        Сделать регистр периодическим     | |||
| 21
    
        exwill 11.10.13✎ 12:20 | 
        (19) В смысле? Долго код писать?     | |||
| 22
    
        Midasu 11.10.13✎ 12:22 | 
        (20) 
 Делать периодическим - куча ненужных записей, лишний вес, лишнее время на обработку. (21) Будет проведение ещё более долгим. | |||
| 23
    
        exwill 11.10.13✎ 12:24 | 
        (22) Моментальным оно будет. Один запрос к не очень большому регистру.     | |||
| 24
    
        Midasu 11.10.13✎ 12:25 | 
        (10) 
 Хм, ну, оборотный я сделал. Он дублирует записи по каждой накладной. Т.е. впринципе в моей ситуации всё-равно, что если бы я сделал регистр сведений с периодичностью по позиции регистратора. Мне надо, чтобы записей была как можно меньше. | |||
| 25
    
        Defender aka LINN 11.10.13✎ 12:25 | 
        (22) А, типа, то, что ты пытаешься сделать - это что-то другое, да?
 Что будешь делать, если отменят проведение документа с первым поступлением товара? Перепроведешь все последующие, чтобы в непонятном регистре, без которого 99,9% пользователей спокойно обходятся, записи на место встали? | |||
| 26
    
        Midasu 11.10.13✎ 12:26 | 
        (23) 
 Похоже, единственный вариант. Чуть большая задержка при проведении лучше задержки при подборе в периодичном регистре. | |||
| 27
    
        МойКодУныл 11.10.13✎ 12:27 | 
        (0)>Хотелось бы, чтобы он или заменял их или даже не пытался записывать. 
 Писать через менеджер записи, он автоматом перезапишет при совпадении ключевых полей. | |||
| 28
    
        exwill 11.10.13✎ 12:27 | 
        (24) В модуле проведения делай записи не по таб. части, а по результату запроса. Вот и все решение.     | |||
| 29
    
        Defender aka LINN 11.10.13✎ 12:27 | 
        (27) На подчиненном регистре не взлетит     | |||
| 30
    
        Defender aka LINN 11.10.13✎ 12:27 | 
        (28) См. про отмену проведения     | |||
| 31
    
        exwill 11.10.13✎ 12:28 | 
        (30) См. в свой мозг!
 Отмена будет работать штатно. | |||
| 32
    
        MrStomak 11.10.13✎ 12:29 | 
        (24) записи дублируются, но таблица оборотов - нет, из неё всё будет быстро доставаться. Плюс решается проблема отмены проведения.     | |||
| 33
    
        1Сергей 11.10.13✎ 12:30 | 
        (24) Дублирующие записи - это не проблема, а защита от гемороя. Просто надо уметь правильно брать данные из этого регистра (см Срез последних)     | |||
| 34
    
        Midasu 11.10.13✎ 12:30 | 
        (28) 
 Да не, дубли не из позиций приходной накладной, а дубли получаются если провести ещё одну такую же накладную. Вобщем, буду проверять при проведении, есть в регистре или нету. | |||
| 35
    
        Midasu 11.10.13✎ 12:31 | 
        (33) 
 Мне лучше геморой, чем регистр весом в несколько раз больше. Я же говорю, такие же данные я мог бы и из стандартного получить. Я не собираюсь изобретать велосипед, у меня просто регистр для других целей. | |||
| 36
    
        1Сергей 11.10.13✎ 12:32 | 
        (34) это не правильно.     | |||
| 37
    
        МойКодУныл 11.10.13✎ 12:32 | 
        (30) в(0) такого не было)) я следую ТЗ.
 (31) Отмена проведения? как это. Если регистр независимый - не отработает. А если подчинен регистратору - слишком много записей и не было бы проблемы с неуникальными записями как в (0) | |||
| 38
    
        Михаил Козлов 11.10.13✎ 12:35 | 
        (0) В типовых РС "Номенклатура контрагентов" не подходит?     | |||
| 39
    
        Midasu 11.10.13✎ 12:37 | 
        (38) 
 Зобавно. Не думал о таком. Ну, на данный момент регистр пустой. Через какую константу включается? | |||
| 40
    
        exwill 11.10.13✎ 12:40 | 
        (37) Регистр подчинен регистратору.
 При проведении вносятся только уникальные записи. При отмене проведения записи (если они есть) удаляются. | |||
| 41
    
        Midasu 11.10.13✎ 13:05 | 
        (38) 
 Всё, понял. >>То есть можно ввести информацию о том, как называется данная позиция номенклатуры в информационной базе поставщика. >>Эта информация будет записана и регистр сведений Номенклатура контрагентов при записи цен. Совсем для других целей используется. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |