Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Удаление записей регистра сведений

Как быстро удалить множество записей регистра сведений?
Отбор наложить не получится.
Ответ: () Полно в инете
Вопрос: Данные из регистра сведений в табличную часть

Здравствуйте.
Есть регистр сведений "КоэффициентыНормГСМ" с измерениями Автомобиль и Коэффициент. Ресурс: значение.
Необходимо, чтобы при выборе автомобиля заполнялся коэффициент и его значение.
Для того чтобы передать значения регистра в табличную часть путевого листа использовала следующее:

В общем модуле(ЗначенияКоэффициентов):

1C
1
2
3
4
5
Функция ЗначениеКоэффициента(АктуальнаяДата, ЭлементТранспортныеСредства, ЭлементКоэффициентыНормГСМ) Экспорт
Отбор = Новый Структура("Автомобиль,Коэффициент",ЭлементТранспортныеСредства, ЭлементКоэффициентыНормГСМ);
ЗначенияРесурсов = РегистрыСведений.КоэффициентыНормГСМ.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Значение;
КонецФункции
В модуле формы:

1C
1
2
3
4
5
6
&НаКлиенте 
Процедура ИспользованныеКоэффициентыАвтомобильПриИзменении(Элемент) 
СтрокаТабличнойЧасти = Элементы.ИспользованныеКоэффициенты.ТекущиеДанные;
 
СтрокаТабличнойЧасти.ЗначениеКоэффициента = ЗначенияКоэффициентов.ЗначениеКоэффициента(Объект.Дата,СтрокаТабличнойЧасти.Автомобиль,СтрокаТабличнойЧасти.Коэффициент);
КонецПроцедуры
Но так ничего не происходит. Где что не так?
Ответ: Хорошо,спасибо,сейчас попробую.
В таком случае уже нельзя будет изменить значение коэффициента?

Добавлено через 34 минуты
В общем ругается на ЗначениеВозврата, а потом вообще не дает запустить 1с,т.к. записи регистра сведений стали неуникальными
Вопрос: Обмен данными. Пакет XDTO. Регистр сведений

Добрый день.
Такая задача, произвести обмен данными между двумя ИБ.
Нужно выгрузить записи для регистра сведений.
Как правильно сформировать xdto схему, независимый регистр сведений? Пробовал экспортировать схему, но не понимаю, как по этой схеме записывать(Проблема с отбором).
Как правильно сформировать данные по созданной схеме в регистр сведений?
У кого-нибудь подобная задача была?
Ответ: В дереве конфигурации можно экспортировать xsd схему, описывающая структуру каждого созданного в конфигурации объекта. Если описывать подробнее, то мне нужно из одной базы, записи регистра сведений(подчиненный регистратору) перенести в другую базу, где регистр сведений независимый. Проблема с формированием xml. Вместо выборки через запрос у меня выборка из ПланаОбмена(зарегистрированные изменения). Проблема в описании отбора(Filter), через пакет xdto. Пакет xdto(xsd схема принимающей стороны) содержится только в ИБ источника.
Вопрос: История независимого регистра сведений

Доброго всем времени суток.
Возникла жизненная ситуация банальная но жизненная. Есть регистр сведений ФИОФизическихЛиц, как то можно сохранять историю кто какую запись добавлял и кто удалял, а то Физических лиц могут добавлять несколько человек. Один человек добавил запись об изменении Фамилии а другой взял и удалил а потом попробуй докажи кто что сделал и кто виноват. Должно же быть адекватное решение данной проблемы. В объектных данных можно подключить версионирование объектов а в регистрах что делать?
Заранее спасибо.
Ответ:
Ничего не сделаешь, кроме как написать проверку значений всех измерений/ресурсов/реквизитов записи регистра сведений непосредственно перед записью в БД и записывать в журнал регистрации.

Что будет при записи набором с большим количеством записей - думаю, объяснять не нужно + непонятно как регистрировать изменения при этом.
Вопрос: Конвертация 2.1 как выгружать записи регистра сведений порциями?

Есть конвертация 2.1, в ней настроена выгрузка из ЕРП в Розницу, в том числе и регистра сведений НоменклатураСегментов. У нас так получается, что периодически объем изменений в этом регистре достигает нескольких сотен тысяч записей, соответственно, при загрузке в розницу одним пакетом это все грузится часами, если не сутками. И пока не загрузится, следующие изменения в розницу не попадают, что неприемлемо.
Решил ограничить объём выгружаемых за один раз записей, в ПКО РС НоменклатураСегментов, в процедуре ПередВыгрузкой если счётчик превышает порог пишу Отказ=Истина.
Прикол в том, что, оказывается, записи РС выгружаются не сами по себе, а в составе набора записей. Т.е. выгружается узел с набором записей, а в этом наборе находится одна запись. Там, где отрабатывает Отказ=Истина, узел с набором записей всё равно создается, просто не пишется вложенный узел с самой записью. Почему так, мне не понятно. Из-за этого при обратной синхронизации из розницы регистрация изменений снимается всё равно со всех записей, и выгруженных и не выгруженных.
Есть идеи, как по другому выгружать записи РС порциями?
Сорри за многобукв.
Ответ: Они сегмент обработкой что ли присваивают в таких количествах ?
Это же как Планы обмена с регистрацией то перегружаются....
И база уже в Террабайтах меряется...
Вопрос: Удаление записей регистра сведений при удалении объекта из БД

Есть документ. Есть регистра сведений с записью со ссылкой на это документ.

Как перехватить событие удаление документа (окончательное), чтобы почистить этот регистр?

Суть проблемы. Документ пометили на удаление, а записи в регистре остались. Нужно именно при окончательном удалении документа из БД чистить этот регистр.

Просто при пометке на удаление документа - чистить рано.
Вариант у измерения в регистре поставить галке "ведущее" - не интересен
Ответ: () по каким пользователям? В форме в командном интерфейсе открываешь Перейти и снимаешь на нем галки.
Вопрос: Получение одной последней записи регистра сведений через СрезПоследних, период - секунда

Здравствуйте. Скажите пжт, у меня регистр сведений с периодичностью - в пределах секунды. В регистре три записи (рис 1).
Мне нужно вытащить из этого регистра, одну последнюю запись (то есть актуальное состояние данного устройства на выбранную дату). Применяю срез последних, он выдает мне две записи (рис 2). Подскажите пжт как исправить?

1C
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
28
29
30
31
32
33
34
&НаСервереБезКонтекста
Функция Команда1НаСервере(ВыбДата)
#Если Не МобильноеПриложениеСервер Тогда    
ТабДок = Новый ТабличныйДокумент;   
Макет = Отчеты.ОтчетНаличиеПланшетов.ПолучитьМакет("МакетНаличиеПланшетов");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Запрос = Новый Запрос("ВЫБРАТЬ
                      | ПланшетыСрезПоследних.Планшет.IMEI,
                      | ПланшетыСрезПоследних.Планшет.SIM,
                      | ПланшетыСрезПоследних.Сотрудник.Наименование,
                      | ПланшетыСрезПоследних.Регистратор
                      |ИЗ
                      | РегистрСведений.Планшеты.СрезПоследних(&НаДату, ) КАК ПланшетыСрезПоследних");
Запрос.УстановитьПараметр("НаДату",ВыбДата);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
    ОбластьСтрока.Параметры.НомерПланшета = Результат.ПланшетIMEI;
    ОбластьСтрока.Параметры.СимКарта = Результат.ПланшетSIM;
    ОбластьСтрока.Параметры.Сотрудник = Результат.СотрудникНаименование;
    ОбластьСтрока.Параметры.АктРег = Результат.Регистратор;
    
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
 
Возврат ТабДок;
#КонецЕсли
КонецФункции
 
&НаКлиенте
Процедура Команда1(Команда)
ВыбДата=Дата(ЭтаФормА.Элементы.НаДату.ТекстРедактирования + " 20:42:22");
Таб =   Команда1НаСервере(ВыбДата);
Таб.Показать();
КонецПроцедуры
Ответ: Оставил в измерении только планшет. Вроде получилось. Огромное спасибо!
Вопрос: [РЕШЕНО] Заполнение ТЧ УФ документа записями регистра сведений

Уважаемые эксперты, прошу совета.
1С:Комплексная автоматизация 2 (2.2.2.157)
В документе есть ТЧ ПлановыеТрудозатраты, куда при выборе Подразделения должна подтягиваться СтавкаЧД из соответствующего регистра сведений.
Создал обработчик:
Код:
&НаСервере
Процедура ПлановыеТрудозатратыПодразделениеПриИзмененииНаСервере()
   
    СтрокаТабличнойЧасти = ЭтаФорма.ПлановыеТрудозатраты.ТекущиеДанные;
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Подразделение", СтрокаТабличнойЧасти.Подразделение);

Запрос.Текст =
"ВЫБРАТЬ
|    СССтавкиЧД.СтавкаЧД КАК СтавкаЧД
|ИЗ
|    РегистрСведений.СССтавкиЧД.СрезПоследних(Подразделение = &Подразделение) КАК СССтавкиЧД";

Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
СтрокаТабличнойЧасти.СтавкаЧД = 0;
Иначе
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаТабличнойЧасти.СтавкаЧД = Выборка.СтавкаЧД;
КонецЦикла;
КонецЕсли;
   
КонецПроцедуры

&НаКлиенте
Процедура ПлановыеТрудозатратыПодразделениеПриИзменении(Элемент)
    ПлановыеТрудозатратыПодразделениеПриИзмененииНаСервере();
КонецПроцедуры
и при выборе Подразделения в строке ТЧ получаю ошибку:
Если вместо "ЭтаФорма" пишу "ЭлементыФормы" - тоже ругается.
Что я делаю не так?
Ответ:
вот итоговый рабочий вариант:
Код:
&НаСервере
Функция ПлановыеТрудозатратыПодразделениеПриИзмененииНаСервере(Параметр)
  
    //СтрокаТабличнойЧасти = Элементы.ПлановыеТрудозатраты.ТекущиеДанные;
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Подразделение", Параметр); 
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());  
  
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СССтавкиЧД.СтавкаЧД КАК СтавкаЧД
    |ИЗ
    |    РегистрСведений.СССтавкиЧД.СрезПоследних(&Дата,Подразделение = &Подразделение) КАК СССтавкиЧД";
  
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
        СтавкаЧД = 0;
    Иначе
        Выборка = Результат.Выбрать();
        Пока Выборка.Следующий() Цикл
            СтавкаЧД = Выборка.СтавкаЧД;
        КонецЦикла;
    КонецЕсли;
  
    Возврат СтавкаЧД
      
КонецФункции

&НаКлиенте
Процедура ПлановыеТрудозатратыПодразделениеПриИзменении(Элемент)
    СтрокаТабличнойЧасти = Элементы.ПлановыеТрудозатраты.ТекущиеДанные;
    СтрокаТабличнойЧасти.СтавкаЧД = ПлановыеТрудозатратыПодразделениеПриИзмененииНаСервере(СтрокаТабличнойЧасти.Подразделение);
КонецПроцедуры
Вопрос: Обработка создания новых записей в регистре сведений.

НаборЗаписей = РегистрыСведений.ЦеныНоменклатурыКонтрагентов.СоздатьНаборЗаписей();
    
    НаборЗаписей.Отбор.Период.Установить(Дата);
    НаборЗаписей.Отбор.Номенклатура.Установить(Номенклатура);
    
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Период,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Контрагент,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.ЕдИзм,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Организация,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена
                 |ИЗ
                 |    РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних";
    Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
    Запрос.УстановитьПараметр("Дата",Дата);
    ТЗ=Запрос.Выполнить().Выгрузить();
    Для Каждого СтрокаТЗ Из ТЗ Цикл 
        //записываем все элементы из табличной части в регистр сведений "ЦеныНоменклатурыКонтрагентов"

        НовЗапись = НаборЗаписей.Добавить();
        //

        НовЗапись.Период        =    Дата;
        НовЗапись.Номенклатура    =    Номенклатура;
        НовЗапись.Контрагент    =    СтрокаТЗ.Контрагент;
        НовЗапись.Цена            =    Цена;
        НовЗапись.ТипЦен        =    СтрокаТЗ.ТипЦен;
        НовЗапись.ЕдИзм            =    Номенклатура.ОсновнаяЕдиницаИзмерения;
        НовЗапись.Организация    =    СтрокаТЗ.Организация;
    КонецЦикла;
    Попытка
        НаборЗаписей.Записать(ИСТИНА); 
    Исключение
    КонецПопытки;
На данный момент, этот код переделывает уже существующие записи в регистре. Как сделать что бы не заменял старые а создавал новые записи?
Ответ: () не только не послали, но и в () ответили

РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Записать (Write)
Синтаксис:

Записать(<Замещать>)
Параметры:

<Замещать> (необязательный)

Тип: Булево. Определяет режим замещения существующей записи в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям
Значение по умолчанию: Истина
Описание:

Записывает набор записей в базу данных. В зависимости от переданного параметра, может быть выполнено добавление записей или их замещение.
Вопрос: 1С 8.3 Подбор цен из регистра сведений Цены

Здравствуйте, нужна ваша помощь. Имеется регистр сведений Цены и документ Установка цен, при помощи которого делаются записи в регистр. Но в документе Оказание услуг при реализации берутся цены не те которые нужны, но в регистре они хранятся. Помогите исправить данную ошибку. Нужно очень срочно сделать до вечера. Заранее спасибо всем!
Ответ:

Не по теме:

murad8665, зачем я рассказывала про выгрузку информационной базы...


Ладно, вопрос: зачем вам два идентичных регистра сведений? Зачем вам в регистре сведений Цены два измерения? Почему при получении цены вы делаете отбор только по одному из них?

Для периодического регистра сведений при получении значения ресурса через ПолучитьПоследнее() необходимо указать в отборе значения всех измерений и дату.
Так что два варианта: либо избавляйтесь от второго измерения и перепроводите документы Установки цен, либо при получении цены выставляйте в отборе значение второго измерения(Поставщик).
Можно конечно не менять ничего и получать значение цены запросом) Но тогда все равно вопрос: зачем вам два идентичных регистра сведений?)