|
Запись с такими ключевыми полями существует | ☑ | ||
---|---|---|---|---|
0
atlantika
27.03.23
✎
15:52
|
Помогите исправить. Плохо в теме разбираюсь и наверняка ошибка тупая, но прочитанные темы мне не дали ответа.
Нетиповой документ при наступлении определенных условий, делает движение в независимый нетиповой РС: Процедура СделатьДвижения(Знач ТЗЦенообразование, Ссылка) ТЗ = ТЗЦенообразование.Выгрузить(); НаборЗаписей = РегистрыСведений.АБ_ЛистыСогласованияСебестоимость.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка); // Добавить записи в созданный набор записей ТЗ = ТЗЦенообразование.Выгрузить(); Для Каждого ТекСтрока Из ТЗ Цикл НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Регистратор = Ссылка; НоваяЗапись.ДатаЗаписи = ТекущаяДата(); НоваяЗапись.Строка = ТекСтрока.НомерСтроки; НоваяЗапись.Номенклатура = ТекСтрока.Номенклатура; НоваяЗапись.Склад = ТекСтрока.Склад; НоваяЗапись.Партнер = Объект.Клиент; НоваяЗапись.Себестоимость = ТекСтрока.Себестоимость; НоваяЗапись.СебестоимостьБезНДС = ТекСтрока.СебестоимостьБезНДС; НоваяЗапись.Цена = ТекСтрока.Цена; НоваяЗапись.Рентабельность = ТекСтрока.Рентабельность; НоваяЗапись.Доход = ТекСтрока.Доход; КонецЦикла; // Записать набор записей с замещением старого, соответствующего той же грануле НаборЗаписей.Записать(Истина); КонецПроцедуры только в половине случаев ошибка Ошибка при вызове метода контекста (Записать) {Документ.АБ_ЛистСогласования.Форма.ФормаДокументаНов.Форма(3382)}:НаборЗаписей.Записать(Истина); .... по причине: Запись с такими ключевыми полями существует! : <ИмяРС>: <Номенклатура>, <Склад>, 1 (Регистр сведений: (АБ) Листы согласования себестоимость; Номер строки: 2) Как поправить? |
|||
1
atlantika
27.03.23
✎
15:54
|
по причине:
Запись с такими ключевыми полями существует! : <ИмяРС>: <Номенклатура>, <Склад>, <Строка>(Регистр сведений: (АБ) Листы согласования себестоимость; Номер строки: 2) При этом в ТЧ по которой делается обход всего 1 строка и цикл обходит ее только один раз. Откуда номер строки 2? |
|||
2
Garykom
27.03.23
✎
15:58
|
Проблема не в номере строки
А в полном совпадении измерений другого документа Добавьте в свой нетиповой РС еще одно измерение "Документ" и пишите туда Регистратора |
|||
3
Garykom
27.03.23
✎
15:59
|
(1) >Откуда номер строки 2?
Из ранее проведенного документа |
|||
4
Garykom
27.03.23
✎
16:00
|
(0) И да.
Что за конфа то? Вижу что движения делаются вручную а не как в современных типовых через запрос и таблицу движений. |
|||
5
atlantika
27.03.23
✎
16:01
|
(2) а то что отбор по регистратору уже устанавливается, этого не достаточно, да?
НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка); (4) УТ 11.5, доработки поверху |
|||
6
Ногаминебить
27.03.23
✎
16:02
|
Ну или периодическим регистр сделать. С периодом регистратор.
|
|||
7
Garykom
27.03.23
✎
16:02
|
(5) >УТ 11.5, доработки поверху
эээ изучить! https://infostart.ru/1c/articles/1343740/ https://infostart.ru/1c/articles/1651438/ https://infostart.ru/public/510334/ |
|||
8
Garykom
27.03.23
✎
16:02
|
(6) Нафуя делать его периодическим?
|
|||
9
Garykom
27.03.23
✎
16:03
|
(5) Регистратор это не измерение
|
|||
10
Ногаминебить
27.03.23
✎
16:04
|
(8) Ну мало ли :) Кто ж их знает какие там цели. Очень даже может быть, что как раз понадобится смотреть историю.
|
|||
11
Garykom
27.03.23
✎
16:04
|
(7)+ Там разобраться с нуля сложно
Но как разберетесь все становится вполне логично и понятно |
|||
12
Garykom
27.03.23
✎
16:06
|
(10) Проще свое поле типа Дата добавить
Периодическим надо делать РС в очень редких случаях Когда требуется специфическое поведение по умолчанию, для получения промежуточных значений = последнее установленное |
|||
13
Garykom
27.03.23
✎
16:07
|
(10) Кстати как раз историю смотреть с периодического РС не очень то удобно ))
И неудобно когда надо развернуть таблицу |
|||
14
Garykom
27.03.23
✎
16:08
|
(13)+ Например когда некая запись должна действовать только С ... По
То логичней вместо периодического сделать два поля ДатаНачала и ДатаОкончания |
|||
15
atlantika
27.03.23
✎
16:10
|
то есть как "горячее" решение мне надо добавить Измерение регистратор?
и еще вопрос: даже если такая запись уже существует, то разве моя новая запись не должна ее перезаписать поверху? НаборЗаписей.Записать(Истина); это же вроде режим перезаписи? |
|||
17
Garykom
27.03.23
✎
16:12
|
(15) да, это самое простое решение
если же надо запрещать проведение при совпадении измерений то делайте вместо документа нечто свое но так чтобы у разных правильных документов хотя бы чем то измерения отличались |
|||
19
Serg_1960
27.03.23
✎
16:15
|
(16) Напоминаю: правило №1 "Не ругайтесь и не оскорбляйте других."
|
|||
20
atlantika
27.03.23
✎
16:20
|
(17) Большое спасибо за подсказки и ссылки.
|
|||
21
Garykom
27.03.23
✎
16:24
|
Хорошо что у вас УТ11 а не КА/ERP
Там еще и проводки таким же способом через запросы Доработка проведения в ERP 2.5 (регистр бухгалтерии Хозрасчетный) https://infostart.ru/1c/articles/1427044/ |
|||
22
Serg_1960
27.03.23
✎
16:34
|
Непринципиально, но: если изменения в регистр сведений вносятся с помощью документов, а в записях регистра есть специальное поле "Регистратор", которое указывает на это самый документ - то это "признаки" регистра сведений, подчинённого регистратору. Вы или сделайте подчинение регистратору, или не используйте "Регистратор", а то Вы уже сами запутались: "НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор)", как правило, используют для регистра сведений, подчиненного регистратору.
|
|||
23
Serg_1960
27.03.23
✎
16:37
|
PS: желательно было бы структуру регистра озвучивать в первом посте, иначе ветка для телепатов форума:)
|
|||
24
Garykom
27.03.23
✎
17:11
|
(22) Регистратор <> Измерение
|
Форум | Правила | Описание | Реклама | Секции | Поиск | Книга знаний | Вики-миста |