|
Добавление проведения по своему регистру с неоднозначными ключевыми полями | ☑ | ||
---|---|---|---|---|
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)
Всё, понял. >>То есть можно ввести информацию о том, как называется данная позиция номенклатуры в информационной базе поставщика. >>Эта информация будет записана и регистр сведений Номенклатура контрагентов при записи цен. Совсем для других целей используется. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |