Для примера реализации используется независимый регистр сведений «усОстаткиТоваров»
Регистры сведений
В том случае, когда в каком-то регистре сведений нужно заменить несколько видов значений какого-то конкретного ресурса на заданное значение, лучше использовать вот такую универсальную процедуру (при ее вызове достаточно подставить название регистра, название ресурса и передать старые заменяемые значения и новое, на которое они заменяются):
В том случае, когда в каком-то регистре сведений нужно заменить несколько видов значений какого-то конкретного измерения на заданное значение, при простой попытке замены с помощью метода СоздатьНаборЗаписей(), возможно возникновение ситуации попытки записи неуникального набора измерений. При этом могут потеряться числовые значения ресурсов регистра. Код 1С, универсально решающий такую задачу:
Примеры работы с регистами сведений см. также в Шпаргалке по программированию для системы 1С:Предприятие 8.2 Оглавление 1. Как из регистра сведений «РасчетчикиЗарплатыОрганизации» получить в виде массива всех расчетчиков зарплаты определенного подразделения организации 2. Как добавить запись в непериодический независимый регистр сведений 3. Как считать содержимое непериодического независимого регистра сведений «СобственныеКонтрагенты» […]
Вопрос Как установить связь по владельцу в форме Предположим, что где-то, например, в форме списка регистра, требуется дать пользователю возможность интерактивно указать единицу хранения номенклатуры. «Номенклатура» — это справочник. «Единица хранения» — справочник, подчиненный номенклатуре. Справочник «Номенклатура» обычно содержит очень много элементов. Если мы в форме списка регистра просто добавим […]
Как добавить запись в регистр сведений Рассмотрим на примере. Требуется выполнить отбор в регистре по значениям измерений и затем создать запись.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | // создаем НаборЗаписей НаборД = РегистрыСведений.НашРегистр.СоздатьНаборЗаписей(); // устанавливаем параметры отбора по полному набору Измерений регистра: НаборД.Отбор.Измерение1.Установить(Значение1); НаборД.Отбор.Измерение2.Установить(Значение2); НаборД.Отбор.Измерение3.Установить(Значение3); // Создаем новую строку в этом наборе записей: СтрокаДанных = НаборД.Добавить(); // определяем значения Измерений этой строки: СтрокаДанных.Измерение1 = Значение1; СтрокаДанных.Измерение2 = Значение2; СтрокаДанных.Измерение3 = Значение3; // определяем значения Ресурсов СтрокаДанных.Ресурс1 = Значение4; СтрокаДанных.Ресурс2 = Значение5; // определяем значения Реквизитов СтрокаДанных.Реквизит1 = Значение6; // пример другого варианта присвоения значения, когда, например, внутри цикла нужно указать значение ресурса, перебирая в цикле разные имена ресурсов (ИмяПоля): СтрокаДанных[ИмяПоля] = Значение7; // где ИмяПоля - наименование измерения, ресурса или реквизита регистра НаборД.Записать(); |
Как использовать управляемый режим блокировки данных Рассмотрим на примере удаления записей из регистра сведений. 1. В свойствах объекта, для которого используется управляемый режим блокировки данных установить поле «Режим управления блокировкой данных» в значение «Управляемый» (иначе будет сообщение об ошибке «Автоматический режим блокировки недопустим в этой транзакции»). Причем если это делается […]
Как в запросе отобрать элементы, значение которых — «битая ссылка», т.е. «объект не найден» Для этого используется логический оператор ЕСТЬ NULL функций языка запросов. Например, допустим, в регистре накопления «ПартииТоваровНаСкладах» мы хотим найти записи, в которых измерение «ДокументОприходования» оказалось такой вот битой ссылкой на «объект не найден». Запрос будет выглядеть […]
Вопрос Можно ли в запросах 1С v8 всегда заменять условие «ГДЕ» параметрами среза виртуальной таблицы? Ответ Часто встречающаяся рекомендация по выполнению опимизации запросов: переносить условие из конструкции ГДЕ в параметры виртуальной таблицы. Однако без понимания, как это работает, легко совершить ошибку.
Как в 1С v8 спозиционироваться на конкретной записи регистра сведений и изменить ее Метод можно использовать только для регистров, у которых Режим записи установлен Независимый. Вообще, строго говоря, метод СоздатьМенеджерЗаписи() обычно используется для записи новой строки в регистр или для удаления существующей строки. Для редактирования регистра лучше использовать метод СоздатьНаборЗаписи(). […]
Как в 1С v8 перебрать записи регистра сведений и изменить их, используя Менеджер Записи Покажем на примере.
1 2 3 4 5 6 7 8 9 | Рег = РегистрыСведений.агКроссыАртикулов; Выборка = Рег.Выбрать(); Пока Выборка.Следующий() Цикл Запись = Выборка.ПолучитьМенеджерЗаписи(); Запись.Прочитать(); Запись.КодАналога = Корректировка(СтрЗаменить(Строка(Выборка.КодАналога)," ","")); Запись.КодОригинала = Корректировка(СтрЗаменить(Строка(Выборка.КодОригинала)," ","")); Запись.Записать(); КонецЦикла; |
См. также: Как в 1С v8 изменить запись регистра сведений с помощью метода СоздатьМенеджерЗаписи
Как перебрать записи регистра Рассмотрим на примере: перебирая записи регистра требуется сообщить о расхождении между двумя числовыми параметрами. Как всегда, в 1с масса способов сделать одно и то же действие. Один из них — простой перебор записей регистра.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #Если Клиент Тогда // выполним контроль приемок РегистрКонтрольПриемки = РегистрыСведений.усКонтрольПриемки; ОтборПоДокументу = Новый Структура("ОжидаемаяПриемка"); ОтборПоДокументу.ОжидаемаяПриемка = Ссылка; ВыборкаПоДокументу = РегистрКонтрольПриемки.Выбрать(ОтборПоДокументу); СообщатьОРасхождении = Ложь; Пока ВыборкаПоДокументу.Следующий() Цикл Если ВыборкаПоДокументу.ЗапланированоБазовых - ВыборкаПоДокументу.ПринятоБазовых <> 0 Тогда СообщатьОРасхождении = Истина; Прервать; КонецЕсли; КонецЦикла; Если СообщатьОРасхождении Тогда Если Вопрос("Существуют расхождения между запланированным и принятым количеством товара. Вы уверены, что нужно завершить приемку?", РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Нет) = КодВозвратаДиалога.Нет Тогда Предупреждение("Приемка не завершена!"); Возврат; КонецЕсли; КонецЕсли; #КонецЕсли |
Вопрос Чем реквизит отличается от измерения — это понятно всем. А вот чем реквизит отличается от ресурса? Регистр сведений – это вырожденный случай регистров. Поэтому у него «не все так», как у «настоящих» регистров (накопления, бухгалтерии, расчета). И чтобы не путаться дальше будем рассматривать все в несколько в упрощенном виде. […]
1С: AXELOT логистика: Программисту: Док. Приемка — движения в регистрах