Данная проблема возникает при записи данных в периодический регистр сведений (РС), в котором уже есть запись с данными значениями, в выбранном периоде, который проставлен в РС как периодичность РС. Например если у РС параметр периодичность стоит «В приделах дня»
то вторую такую запись в приделах дня уже сделать нельзя. Если же вы хотите, чтобы в приделах дня было несколько одинаковых записей то вам надо будет выбрать периодичность «В пределах секунды».
Т.е. от большего периода к меньшему.
Специалист компании ООО « Кодерлайн »
Обычно ошибка “Запись с такими ключевыми полями существует” возникает при записи данных в периодический регистр сведений. Ошибка сигнализирует о том, что за один период (день, месяц) не может быть две одинаковых записи. Например это могут быть ошибки при записи в регистр сведений “Цены номенклатуры”, “Документы учтенные при расчете НДФЛ”. По самому комментарию часто сложно определить в чем именно ошибка, поэтому к решению вопроса часто привлекают специалистов 1С, программистов.
В целом же решение проблемы сводится к следующему. Нужно открыть регистр сведений, на который ругается программа, отфильтровать данные по объекту, указанный в сообщении об ошибке и решить, какая запись неправильная или лишняя. Как правило удаление строчки в документе или изменение операции документа обновляет записи в регистре и документ проводиться в базе данных без проблем.
Никаких дополнительных технических средств, обработок для решения вопроса не требуется. Просто необходимо найти две одинаковые или несовместимые записи в регистре.
При работе с 1С у пользователей часто выскакивает окно «Запись с такими ключевыми полями существует». Это значит, что при внесении данных в одном ресурсе два раза была установлена одна и та же информация. 1С идентифицирует новую запись в качестве «клона» — и выдаёт ошибку.
Если необходимо поместить в регистр одинаковые данные, для второго файла требуется создать новое измерение типа «УникальныйИдентификатор». Для этого нужно прописать следующее:
В результате повторные записи будут помещаться в это измерение, а окно ошибки не будет появляться.
Поиск проблемы
Возможно, ситуация не требует создания нового измерения, допустим, ранее была допущена ошибка. Чтобы проверить это, есть два пути:
- В консоли запросов найти всю информацию по этому документу (например, ввести в поиске ФИО физического лица, по которому возникает ошибка);
- Необходимо пошагово изучить код в отладчике.
Фильтр регистра
Можно выполнить поиск и в регистре, при помощи фильтра. Для этого нужно создать свою форму поиска, потому что в стандартной отбор будет некорректным. Например, вы применяете фильтр следующими действиями: «Операции — Регистр сведений — Контактная информация». В результате откроется незаполненная форма. Но если зайти на карточку этого физического лица, в поле адрес уже будет указана вся информация (то есть, в базе она есть).
Дело в том, что стандартный фильтр применяет определённый отбор, которые просто не учитывает нужные строки. Чтобы найти данные, нужно отключить все конкретизирующие параметры поиска и ввести в поиске ФИО физического лица, по которому не проводится документ.
Ошибка в конфигурации 1С: Управление торговлей
В данной конфигурации цена может устанавливаться раз в сутки. Если изменения вносятся чаще – будет появляться ошибка «Запись с такими ключевыми полями существует».
Примечание: это не касается последних версий платформы, где возможно изменение цены в течение дня (каждому следующему документу соответствует новый порядковый номер).
Чтобы убрать ошибку в более ранних версиях, есть три варианта:
- Удалить более ранние данные по номенклатуре за этот день;
- Не проводить новый документ в течение текущего дня (сделать это на следующий день);
- В настройках регистра указать периодичность обновления 1 секунда.
Последний вариант – самый действенный. Он позволяет сохранить оба документа и выполнить операцию сразу, но возможны сбои в работе платформы по другим документам.
Примечание: Ошибка «Запись с такими ключевыми полями существует» означает, что в номенклатуре совпадают не только наименование и цены, но и характеристики. То есть, если характеристик несколько, то изменить цену получится.
Обычно данная ошибка является следствием невнимательности, то есть когда человек разместил определённую информацию, а спустя какое-то время пытается сделать это вновь. Если же действительно нужно создать аналогичный документ, но с другими значениями, проще всего создать новое измерение.
Ermak |
|
||
---|---|---|---|
Встала такая задача при каждом изменении реквизита Статус и сохранении документа нужно создавать новый Регистр сведений. Вот я сделал процедуру Код 1C v 8.х
Но почему то он переписывает существующую запись, как исправить? |
Yandex |
|
||
---|---|---|---|
IBReiter |
|
||
---|---|---|---|
Какие измерения в регистре? |
IBReiter |
|
||
---|---|---|---|
Ну и еще должно быть Движение.Записать(Ложь), чтобы не замещались предыдущие записи |
Ermak |
|
||
---|---|---|---|
что то я не понял. Сделал Движение.Записать(Ложь); и добавил в Процедура ПриЗаписи(Отказ) выдает ошибку что запись с такими полями уже существует и не сохраняет |
Ermak |
|
||
---|---|---|---|
Изменения Реквизита Статус. По задумки статус может постоянной менять, при изменении статуса создается новый регистр с новой датой |
IBReiter |
|
||
---|---|---|---|
Вам нужно еще одно измерение, скорее всего ДатаСтатуса |
IBReiter |
|
||
---|---|---|---|
Не новый регистр, а новая запись регистра |
IBReiter |
|
||
---|---|---|---|
|
В регистре не может быть две записи с одинаковыми измерениями |
Ermak |
|
||
---|---|---|---|
я создал новое измерение ДатаСтатуса |
Ermak |
|
||
---|---|---|---|
Вот я добавил в процедуру Код 1C v 8.х
Когда я меняю статус, создает регистр Номер строки 2, где меняется Дата статуса, а сам статус принимает одинаковое значение в Номере строки 1 и 2, по задумки Статус должен быть разный. |
Ermak |
|
||
---|---|---|---|
|
Ermak |
|
||
---|---|---|---|
Выдает ошибку{Документ.ЗаявкаЕдиноеОкно.Форма.ФормаДокумента.Форма(23)}: Ошибка при вызове метода контекста (Записать) Движение.Записать(Ложь); по причине: Запись с такими ключевыми полями существует! : СтатусЗаявокЕдиноеОкно: 12.10.2015 0:00:00, Заявка единое окно 000000003 от 12.10.2015 0:00:00, 12.10.2015 0:00:00, Заявка единое окно 000000003 от 12.10.2015 0:00:00, 102 100 012, Ремонт плиты, фыфафа, 12.10.2015 0:00:00 (Регистр сведений: Статус заявок единое окно; Номер строки: 3) |
IBReiter |
|
||
---|---|---|---|
Вы отладчиком посмотрите, в какой момент статус меняется |
IBReiter |
|
||
---|---|---|---|
А период разный почему у записей? Может его нужно как дата документа устанавливать, а не тек дата? |
Ermak |
|
||
---|---|---|---|
Период исправил на дату документа, почему больше двух не создается? |
IBReiter |
|
||
---|---|---|---|
|
Больше двух чего? и в какой момент? |
Ermak |
|
||
---|---|---|---|
На счет почему меняется Статус во всех записях регистра мне не понятно, может что то не так я в коде сделал Код 1C v 8.х
и второй код когда я записываю в регистр сведений Код 1C v 8.х
|
Ermak |
|
||
---|---|---|---|
|
Больше двух записей в регистре сведений не создается, а задумка должна создаваться запись в регистре сведений при изменении статуса, тем самым записей может быть около 5 |
Ermak |
|
||
---|---|---|---|
Статус добавлен в регистр сведений в Ресурсы, может я тут что то не правильно сделал? |
IBReiter |
|
||
---|---|---|---|
Да с ресурсом это нормально… Уберите из обработки проведения код для этого регистра |
Ermak |
|
||
---|---|---|---|
|
Убрал код из обработки проведения, но новую запись по прежнему не создает, теперь переписывает существующую запись. Я исправил на Движение.Записать(Ложь);, и все равно переписывает. |
Ermak |
|
||
---|---|---|---|
Убрав код обработки проведения при создании нового документа не записывает в регистр |
IBReiter |
|
||
---|---|---|---|
Скрин сделайте развернутого регистра |
Ermak |
|
||
---|---|---|---|
|
|
IBReiter |
|
||
---|---|---|---|
Так вроде все норм Только лишние данные: заявка – это регистратор, ДатаЗаявки – это период, можно убрать лишние измерения Вы ПриЗаписи проследите отладчиком, что с набором записей происходит, чего гадать-то. Начиная от Прочитать – что в него попало, потом добавили – каким стал набор, потом записался – еще раз шифтф9 нажмите, там же будет видно Либо у вас еще где-то регистр пишется – может у регистра в модуле менеджера или подписки на события, вариантов еще тьма, на самом деле |
Ermak |
|
||
---|---|---|---|
Я так понимаю код у меня правильный для создания новой записи регистра при изменении Статуса? |
Ermak |
|
||
---|---|---|---|
Я так понимаю чтобы мой код работал нужно Записать(Ложь); |
IBReiter |
|
||
---|---|---|---|
У вас все там правильно, и с истиной должно все работать, потому что вы добавляете запись к набору |
Ermak |
|
||
---|---|---|---|
|
я решил по пробовать другим способом, я сделал регистр Независимым, создал форму в нем. Прописал код при изменении Статус Код 1C v 8.х
Когда изменяю статус создается новая запись в регистре, когда сохраняю регистр, то все созданные ранее записи переписывают значение Статуса на последнее, как запретить переписывать значение у ранее созданных записей? |
IBReiter |
|
||
---|---|---|---|
Давай cf, так хз |
IBReiter |
|
||
---|---|---|---|
Тот, где еще набор записей был |
Ermak |
|
||
---|---|---|---|
Вот cf файл. Регистр сведений СтатусЗаявокЕдиноеОкно http://zalil.su/704219 |
IBReiter |
|
||
---|---|---|---|
В обработке проведения у вас там пипец просто…я ж вам говорю, уберите все из нее, что касается регистра Вы там чего сделать пытаетесь? При записи в форме у вас уже пишется этот регистр, причем независимый…какие там могут быть еще движения? |
Ermak |
|
||
---|---|---|---|
Я же писал выше что переделал регистр сведений. В документе я наворотил спору нет. Подскажите как правильно сделать |
IBReiter |
|
||
---|---|---|---|
Убирайте из обработки проведения все, в форме пусть пишется ПриЗаписи, там же все правильно сделано |
Ermak |
|
||
---|---|---|---|
Убрал все из обработки проведения, документ создает при помощи обработки. Теперь когда создаю документ в регистр запись не создается. |
Ermak |
|
||
---|---|---|---|
Не создает новые записи а переписывает существующую |
IBReiter |
|
||
---|---|---|---|
|
Нужно вернуть подчинение регистратору для РС В модуле формы все убрать – оставить только это (записи будут при каждом изменении статуса документа) Код 1C v 8.х
В модуле объекта все проверьте, чтобы этот регистр нигде не упоминался |
Ermak |
|
||
---|---|---|---|
Сделал как написали. При создании документа в РС запись не создалась, при изменении статуса создается запись в РС, когда сохраняю документ запись в РС удаляется. |
IBReiter |
|
||
---|---|---|---|
Процедура ПриЗаписи в модуле объекта, пишется там регистр? Процедура ОбработкаПроведения, пишется там регистр? Вам зачем при записи документа в регистр писать? вы при изменении статуса все пишете А при создании какой у него статус должен быть? в этом случае можно проверить, при изменении, если набор записей пустой, тогда добавить первую запись в набор с нужным вам статусом для нового документа |
IBReiter |
|
||
---|---|---|---|
Ну или при открытии формы, если ЭтоНовый, вызовите процедуру при изменении |
Ermak |
|
||
---|---|---|---|
Процедура ПриЗаписи в модуле объекта, пишется там регистр? НЕТ, ВСЕ УДАЛИЛ Процедура ОбработкаПроведения, пишется там регистр? ННЕТ, ВСЕ УДАЛИЛ |
IBReiter |
|
||
---|---|---|---|
ПриЗаписи в форме? |
Ermak |
|
||
---|---|---|---|
Что то я запутался. Почему он не создает при каждом изменении статуса новую запись в РС |
Ermak |
|
||
---|---|---|---|
ПриЗаписи в форме ВСЕ УДАЛИЛ |
Ermak |
|
||
---|---|---|---|
13102015.zip Вот cf файл |
IBReiter |
|
||
---|---|---|---|
Свойство документа “Удаление движений” поставьте – “Не удалять” |
Ermak |
|
||
---|---|---|---|
Это где находится Свойство документа “Удаление движений” |
IBReiter |
|
||
---|---|---|---|
|
Встаете на документе в дереве конфигурации и Alt+Enter |
Ermak |
|
||
---|---|---|---|
Я как сделать теперь чтобы при создании документа появлялась запись, а то процедура обработка проведения на данный РС нет кода |
IBReiter |
|
||
---|---|---|---|
При создании она не появится, нужно записывать документ сначала, чтобы ссылка у регистратора была Можно поставить проверку при изменении статуса – если это новый – тогда отказ – уведомить пользователя и попросить записать документ Когда он записан, при изменении статуса ссылка уже есть, и проверить: если набор записей пустой, тогда писать запись со статусом из Ссылка.Статус, а потом уже тот код выполняется, который есть, т.е. просто добавляется запись в набор |
Ermak |
|
||
---|---|---|---|
Можете показать на примере как уведомить пользователя и попросить записать документ |
IBReiter |
|
||
---|---|---|---|
Код 1C v 8.2 УП
|
Ermak |
|
||
---|---|---|---|
Я сделал так Код 1C v 8.х
Но не работает, почему? |
IBReiter |
|
||
---|---|---|---|
Движения без регистра вы не запишете, а вы как раз и пытаетесь это сделать, пока документ новый, у него нет ссылки и соответственно нет регистратора Из обработки проведения убирайте это все дело Код 1C v 8.х
|
IBReiter |
|
||
---|---|---|---|
Вот эту строку после условия нужно поставить, это тот код, который и был у вас уже Остальнгое, также как и для других записей |
Ermak |
|
||
---|---|---|---|
Это получается не корректно, так как Дата статуса будет одинакова, что у Открытого что у Выполненного статуса, а мне надо отследить дату открытого статуса и дату когда выполнился статус |
IBReiter |
|
||
---|---|---|---|
|
Ну сделайте переменную в модуле, которая запомнит момент создания документа |
Ermak |
|
||
---|---|---|---|
Дак у меня переменная дата статуса, и что вы имеете ввиду. Как мне эту переменную запись в регистр, мне что то не понятно чем отличается переменная от даты статуса? |
IBReiter |
|
||
---|---|---|---|
Переменных может быть очень много… Вот что я имел ввиду: Перем ДатаСозданияДокумента; В форме событие, например, перед открытием: ДатаСозданияДокумента = ТекущаяДата(); Потом, в том месте при изменении статуса в условии, где проверили на количество записей в РС, вам нужно у добавленной записи ДатаСтатуса = ДатаСозданияДокумента, а не ТекДата |
Ermak |
|
||
---|---|---|---|
Спасибо большое! Все получилось |
Ermak |
|
||
---|---|---|---|
При тестировании появились вопросы, подскажите как быть, сейчас при изменении Статуса в каждый раз добавляется РС, но это не правильно, в РС должен добавляться запись если изменили Статус и сохранили или записали документ. Вот мне не понятно как это сделать. Я сделал в процедуре ОбработкаПроведения Код 1C v 8.х
Код 1C v 8.х
Но тут не проверяется изменился статус или нет, постоянно создает запись если сохранять документ а мне надо если статус изменился и сохранил документ то создалась запись в РС |
IBReiter |
|
||
---|---|---|---|
Нужно сравнить Статус и Ссылка.Статус |
Ermak |
|
||
---|---|---|---|
А как это сделать, можете подсказать начала а дальше я сам |
IBReiter |
|
||
---|---|---|---|
Начало уже давно у вас есть…тут вопрос в конце Зачем вот это: Если Движение.Количество() > 0 Тогда ? Вы теперь только в обработке проведения пишете? или также при изменении? Что происходит с регистром сейчас при проведении? Сохраняется история изменения статусов или нет? |
IBReiter |
|
||
---|---|---|---|
А условие будет Если Статус <> Ссылка.Статус Тогда Делаете запись в регистр КонецЕсли |
Ermak |
|
||
---|---|---|---|
Сейчас история сохраняется при каждом сохранении документа и если документ новый то сохраняет с ДатаСозданияДок |
Ermak |
|
||
---|---|---|---|
Мне не понятно как сделать если я изменяю Статус и сохраняю документ то появляется новая запись в РС |
IBReiter |
|
||
---|---|---|---|
А при изменении не появляется? |
Ermak |
|
||
---|---|---|---|
Я отключил при изменении статуса, так как при каждом изменении статуса создается новая запись в РС хотя документ еще не сохранен, вот такой код бы Код 1C v 8.х
Но мне нужно код статус изменили и сохранили документ, после этого появилась запись в РС, а не при каждом изменении статуса как сейчас |
IBReiter |
|
||
---|---|---|---|
Тогда этот код нужно поместить при записи, и перед началом этого кода добавить условие Если Статус <> Ссылка.Статус Тогда |
Ermak |
|
||
---|---|---|---|
Вообще не создает новую запись в РС при изменении статуса Код 1C v 8.х
|
Ermak |
|
||
---|---|---|---|
В отладчике посмотрел это условие Статус <> Ссылка.Статус не срабатывает |
IBReiter |
|
||
---|---|---|---|
А вы меняете статус? |
Ermak |
|
||
---|---|---|---|
да, конечно меняю |
Ermak |
|
||
---|---|---|---|
Статус и Ссылка.Статус принимает одинаковое значение |
IBReiter |
|
||
---|---|---|---|
Ссори…перед записью, в при записи они уже совпадают, т.к. запись уже состоялась |
Ermak |
|
||
---|---|---|---|
Спасибо большое! Работает |
Ermak |
|
||
---|---|---|---|
Пытаюсь сохранить значения табличного поля в РС, т.е если в ТП 2 строки с данными то в РС будет 2 записи, но у меня почему то записывает только первую строку, хотя стоит цикл, что не так Код 1C v 8.х
|
IBReiter |
|
||
---|---|---|---|
Первую только и будет, у вас условие на кол-во записей, добавляется запись только тогда, когда набор пустой. Условие уберите или измените |
Ermak |
|
||
---|---|---|---|
Спасибо, все получилось! Пишу условие такое, при изменении статуса в ТЧ на Отменено или Выполнено после чего статус документа принимает значение Выполнено. Сейчас я меняю статус в любой строке ТЧ сразу же меняется статус документа, но это не правильно Вот код Код 1C v 8.х
|
IBReiter |
|
||
---|---|---|---|
Не понимаю, что вам нужно… Если неправильно, значит по-другому делайте |
Ermak |
|
||
---|---|---|---|
Не понятно почему статус документа меняется сразу же после изменения статус в одной из строки табличной части , нужно чтобы в табличной части изменил статус во всех строчках после чего изменился статус в документа |
IBReiter |
|
||
---|---|---|---|
Потому что обработчик ТабОтветственныхСтатусПриИзменении на строке висит, вот и меняется У вас цикл проверяет, если хотя бы для одной строки условие выполняется, тогда изменить статус документа Если так нужно, тогда после изменения статуса в строке, нужно проверить, скорее всего на равенство его статусам в остальных строках и тогда уже менять статус документа |
Ermak |
|
||
---|---|---|---|
Можете на примере показать |
IBReiter |
|
||
---|---|---|---|
Код 1C v 8.3
|
dyuha |
|
||
---|---|---|---|
Предлагаю статус документа и историю статусов хранить отдельно. Статус для списков, а историю, если понадобится для отчетов по срокам исполнения… У документа в конкретный момент времени может быть только один статус. Когда документов станет очень много, система офигеет перебирать по всей истории последнее значение.Вероятно, статус документа может поменять некий другой документ (например, регистрирующий факт исполнения заявки). В связи с этим регистратор не равно заявка.Измерения не ссылочного типа – зло, крадущее поля для индекса виртуальной таблицы. По этому дата смены статуса – период. И больше ни каких дат не надо. |
Ermak |
|
||
---|---|---|---|
Спасибо большое, все получилось |
Ermak |
|
||
---|---|---|---|
НЕ могу понять что случилось, почему не работает условие. Не записывает в РС когда добавляем новую строку в ТЧ ТабОтветственных Код 1C v 8.х
|
Подсказка: Вы можете добавить любую страничку в Избранное щелкнув по значку |
Запись с такими ключевыми полями существует |
Я |
27.03.23 – 15:52
Помогите исправить. Плохо в теме разбираюсь и наверняка ошибка тупая, но прочитанные темы мне не дали ответа.
Нетиповой документ при наступлении определенных условий, делает движение в независимый нетиповой РС:
Процедура СделатьДвижения(Знач ТЗЦенообразование, Ссылка)
ТЗ = ТЗЦенообразование.Выгрузить();
НаборЗаписей = РегистрыСведений.АБ_ЛистыСогласованияСебестоимость.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка);
// Добавить записи в созданный набор записей
ТЗ = ТЗЦенообразование.Выгрузить();
Для Каждого ТекСтрока Из ТЗ Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Регистратор = Ссылка;
НоваяЗапись.ДатаЗаписи = ТекущаяДата();
НоваяЗапись.Строка = ТекСтрока.НомерСтроки;
НоваяЗапись.Номенклатура = ТекСтрока.Номенклатура;
НоваяЗапись.Склад = ТекСтрока.Склад;
НоваяЗапись.Партнер = Объект.Клиент;
НоваяЗапись.Себестоимость = ТекСтрока.Себестоимость;
НоваяЗапись.СебестоимостьБезНДС = ТекСтрока.СебестоимостьБезНДС;
НоваяЗапись.Цена = ТекСтрока.Цена;
НоваяЗапись.Рентабельность = ТекСтрока.Рентабельность;
НоваяЗапись.Доход = ТекСтрока.Доход;
КонецЦикла;
// Записать набор записей с замещением старого, соответствующего той же грануле
НаборЗаписей.Записать(Истина);
КонецПроцедуры
только в половине случаев ошибка
Ошибка при вызове метода контекста (Записать)
{Документ.АБ_ЛистСогласования.Форма.ФормаДокументаНов.Форма(3382)}:НаборЗаписей.Записать(Истина);
….
по причине:
Запись с такими ключевыми полями существует! : <ИмяРС>: <Номенклатура>, <Склад>, 1 (Регистр сведений: (АБ) Листы согласования себестоимость; Номер строки: 2)
Как поправить?
1 – 27.03.23 – 15:54
по причине:
Запись с такими ключевыми полями существует! : <ИмяРС>: <Номенклатура>, <Склад>, <Строка>(Регистр сведений: (АБ) Листы согласования себестоимость; Номер строки: 2)
При этом в ТЧ по которой делается обход всего 1 строка и цикл обходит ее только один раз. Откуда номер строки 2?
2 – 27.03.23 – 15:58
Проблема не в номере строки
А в полном совпадении измерений другого документа
Добавьте в свой нетиповой РС еще одно измерение “Документ” и пишите туда Регистратора
3 – 27.03.23 – 15:59
(1) >Откуда номер строки 2?
Из ранее проведенного документа
4 – 27.03.23 – 16:00
(0) И да.
Что за конфа то?
Вижу что движения делаются вручную а не как в современных типовых через запрос и таблицу движений.
5 – 27.03.23 – 16:01
(2) а то что отбор по регистратору уже устанавливается, этого не достаточно, да?
НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка);
(4) УТ 11.5, доработки поверху
6 – 27.03.23 – 16:02
Ну или периодическим регистр сделать. С периодом регистратор.
7 – 27.03.23 – 16:02
8 – 27.03.23 – 16:02
(6) Нафуя делать его периодическим?
9 – 27.03.23 – 16:03
(5) Регистратор это не измерение
10 – 27.03.23 – 16:04
(8) Ну мало ли 🙂 Кто ж их знает какие там цели. Очень даже может быть, что как раз понадобится смотреть историю.
11 – 27.03.23 – 16:04
(7)+ Там разобраться с нуля сложно
Но как разберетесь все становится вполне логично и понятно
12 – 27.03.23 – 16:06
(10) Проще свое поле типа Дата добавить
Периодическим надо делать РС в очень редких случаях
Когда требуется специфическое поведение по умолчанию, для получения промежуточных значений = последнее установленное
13 – 27.03.23 – 16:07
(10) Кстати как раз историю смотреть с периодического РС не очень то удобно ))
И неудобно когда надо развернуть таблицу
14 – 27.03.23 – 16:08
(13)+ Например когда некая запись должна действовать только С … По
То логичней вместо периодического сделать два поля ДатаНачала и ДатаОкончания
15 – 27.03.23 – 16:10
то есть как “горячее” решение мне надо добавить Измерение регистратор?
и еще вопрос: даже если такая запись уже существует, то разве моя новая запись не должна ее перезаписать поверху?
НаборЗаписей.Записать(Истина);
это же вроде режим перезаписи?
17 – 27.03.23 – 16:12
(15) да, это самое простое решение
если же надо запрещать проведение при совпадении измерений
то делайте вместо документа нечто свое
но так чтобы у разных правильных документов хотя бы чем то измерения отличались
19 – 27.03.23 – 16:15
(16) Напоминаю: правило №1 “Не ругайтесь и не оскорбляйте других.”
20 – 27.03.23 – 16:20
(17) Большое спасибо за подсказки и ссылки.
21 – 27.03.23 – 16:24
Хорошо что у вас УТ11 а не КА/ERP
Там еще и проводки таким же способом через запросы
Доработка проведения в ERP 2.5 (регистр бухгалтерии Хозрасчетный)
https://infostart.ru/1c/articles/1427044/
22 – 27.03.23 – 16:34
Непринципиально, но: если изменения в регистр сведений вносятся с помощью документов, а в записях регистра есть специальное поле “Регистратор”, которое указывает на это самый документ – то это “признаки” регистра сведений, подчинённого регистратору. Вы или сделайте подчинение регистратору, или не используйте “Регистратор”, а то Вы уже сами запутались: “НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор)”, как правило, используют для регистра сведений, подчиненного регистратору.
23 – 27.03.23 – 16:37
PS: желательно было бы структуру регистра озвучивать в первом посте, иначе ветка для телепатов форума:)
Garykom
24 – 27.03.23 – 17:11
(22) Регистратор <> Измерение