helpf.pro
Регистрация
 0 
Распечатать

Как поменять период у записей периодического независимого регистра, соответствующих ряду условий?

В периодическом независимом регистре сведений ОтветственныеЛицаОрганизации все записи, касающиеся организации с наименованием Групп-трейдинг, период которых меньше 01 января 2005 года, необходимо перенести на 01 января 2004 года. Но записи с указанием должностей Продавец и Кладовщик должны остаться на своих местах.

Сначала получим таблицу записей, которые подлежат модификации. Поскольку условий несколько, да еще и не на равенство, оптимальнее это сделать при помощи запроса. А потом, перебирая результат запроса, добьемся требуемого результата:
Код 1C v 8.х
 // Изменение записей регистра
Процедура ЗаменаПериода()

	Запрос = Новый Запрос;
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ОтветственныеЛицаОрганизации.Период,
	|	ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница,
	|	ОтветственныеЛицаОрганизации.ОтветственноеЛицо
	|ИЗ
	|	РегистрСведений.ОтветственныеЛицаОрганизации КАК ОтветственныеЛицаОрганизации
	|ГДЕ
	|	ОтветственныеЛицаОрганизации.Период <= ДАТАВРЕМЯ(2005, 1, 1)
	|	И 
	|	ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница.Наименование ПОДОБНО ""Групп-Трейдинг""
	|	И 
	|	(ОтветственныеЛицаОрганизации.Должность.Наименование ЕСТЬ NULL 
	|	 ИЛИ 
	|	 НЕ(ОтветственныеЛицаОрганизации.Должность.Наименование ПОДОБНО ""Продавец"" 
	|		ИЛИ 
	|		ОтветственныеЛицаОрганизации.Должность.Наименование ПОДОБНО ""Кладовщик""))";

	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
		
	Запись = РегистрыСведений.ОтветственныеЛицаОрганизации.СоздатьМенеджерЗаписи();

	Пока Выборка.Следующий() Цикл
		
		Запись.Период = Выборка.Период;
		Запись.СтруктурнаяЕдиница = Выборка.СтруктурнаяЕдиница;
		Запись.ОтветственноеЛицо  = Выборка.ОтветственноеЛицо;
		
		Запись.Прочитать();
 
		Если Запись.Выбран() Тогда
			Запись.Период = Дата(2004, 1, 1);
			
			Запись.Записать();		 
			
		КонецЕсли;
		
	КонецЦикла;

КонецПроцедуры;   

Результат запроса – таблица, в которой по каждой записи заполнены все поля измерений из регистра и поле Период. Именно эту информацию мы используем для получения каждой нужной записи.
Источником данных для запроса послужила таблица РегистрСведений.ОтветственныеЛицаОрганизации.
Отборы были применены так, чтобы в результат попали записи с периодом менее 1 января 2005 года, наименование структурных единиц в которых – Групп-трейдинг, а наименования должностей не относятся к Продавец и Кладовщик. Кроме того, необходимо позаботиться о случае, когда должность вообще не указана, то есть ее наименование имеет значение NULL. Такие записи тоже нужно будет переносить.
Запрос выполнен, далее перебираем его результат и посредством менеджера записи регистра ОтветственныеЛицаОрганизации добиваемся желаемого. При каждом проходе цикла считываем очередную запись, предварительно указав значение ее поля Период и полей измерений.
Далее меняем значение поля Период у считанной записи и записываем ее в регистр.
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 21615
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 53
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 2
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э
PostgreSQL: установка, настройка, обслуживание 12
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!