Подчиненный Периодический регистратор

1. G_110913743683437366230 25.11.20 12:38 Сейчас в теме
Здравствуйте мастера 1с,
Не ругайте сильно и не тролльте пожалуйста, задача такая:
Есть документ Реализация Товаров и услуг, в ее табличной части добавляется перечень мебели и с помощью кнопки осуществляется Скидка. Есть регистр сведений АкцииСкидки, в нем должны хранится данные только по той мебели по которой проводилась скидка. Как программно осуществить передачу этих данных?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. tolyan_ekb 104 25.11.20 13:42 Сейчас в теме
Что уже сделано? Можно в обработке проведения или при записи документа записывать номенклатуру у которой есть скидка.
3. G_110913743683437366230 25.11.20 13:45 Сейчас в теме
(2) не могу понять как это осуществить,
НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);

Немного покопавшись понял что Отбор По СозданномуНаборуЗаписей в подчиненном регистре можно делать только по регистратору.
Вот здесь и начался тупняк.
Не могу понять что такое ВыбранныйРегистратор в коде выше и откуда его брать
4. burgomister 59 25.11.20 13:52 Сейчас в теме
Не совсем понял. Видимо так: из регистра сведений надо прочитать данные и передать в табличную часть документа.
ВыбранныйРегистратор - это измерение в регистре сведений.

НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Доставка.Установить(ВыбранныйРегистратор);
	НаборЗаписей.Прочитать();
	Для каждого Запись из НаборЗаписей Цикл
                   ...
	КонецЦикла;
5. G_110913743683437366230 25.11.20 13:54 Сейчас в теме
(4) К сожалению нет, нужно в регистр сведений записать из Табличной части только определенные строки удовлетворяющие условию
6. burgomister 59 25.11.20 14:06 Сейчас в теме
(5) В таком виде будет просто добавляться записи в регистр.

Для каждого СтрокаТаблицыЗначений из ТЗ Цикл
МенеджерЗаписи = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьМенеджерЗаписи();
		МенеджерЗаписи.Тара                 = СтрокаТаблицыЗначений.Тара;
		МенеджерЗаписи.Лимит                 = СтрокаТаблицыЗначений.Лимит;
                МенеджерЗаписи.Записать(); 
КонецЦикла
7. G_110913743683437366230 25.11.20 14:14 Сейчас в теме
(6) В подчиненном регистре ругается на МенеджерЗаписи
8. G_110913743683437366230 25.11.20 14:18 Сейчас в теме
(6) а через СоздатьНаборЗаписей требует отбор :
Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Акция скидки)
9. ALagutin 57 25.11.20 14:31 Сейчас в теме
НаборЗаписей =РегистрыСведений.АкцииСкидки.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.Очистить();

Для Каждого СтрокаТовара Из Товары Цикл
        НСтрока = НаборЗаписей.Добавить();
        НСтрока.Регистратор = Ссылка;
        НСтрока.Номенклатура = СтрокаТовара.Номенклатура;
.....
.....
КонецЦикла;
НаборЗаписей.Записать();
Показать
10. G_110913743683437366230 25.11.20 14:33 Сейчас в теме
(9)
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка)

Чему равна переменная ссылка в скобках?
11. ALagutin 57 25.11.20 14:35 Сейчас в теме
(10) Если делать в модуле объекта, процедуры ОбработкаПроведения, достаточно просто написать Ссылка
В вашем случае будет Ссылка документа Реализации товаров и услуг
13. G_110913743683437366230 25.11.20 14:37 Сейчас в теме
(11) "В вашем случае будет Ссылка документа Реализации товаров и услуг"- Ссылка проведенного уже документа?
12. G_110913743683437366230 25.11.20 14:36 Сейчас в теме
(9) Поле объекта не обнаружено (Регистратор)
Почему он его не видит? Регистр подчинен документу
14. ALagutin 57 25.11.20 14:38 Сейчас в теме +0.15 $m
(12) Режим записи у регистра сведений какой?
(13) ОбработкаПроведения - Описание:
Возникает при проведении документа. Основное назначение процедуры-обработчика данного события - генерация движений по документу. Выполняется в транзакции записи.
15. G_110913743683437366230 25.11.20 14:50 Сейчас в теме
(14) По первому - В пределах секунды и подчиненнный регистратору
По второму - а есть чтото похожее но для формы документа?
16. ALagutin 57 25.11.20 14:51 Сейчас в теме
(15) Весь код который получается покажите пожалуйста
17. G_110913743683437366230 25.11.20 14:53 Сейчас в теме
(16)
Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ
			|	АкцияСкидки.Подразделение,
			|	АкцияСкидкиТовары.Номенклатура,
			|	АкцияСкидкиТовары.ПроцентСкидки,
			|	АкцияСкидкиТовары.ДатаНачалаАкции,
			|	АкцияСкидкиТовары.ДатаОкончанияАкции,
			|	РеализацияТоваровУслуг.Ссылка
			|ИЗ
			|	Документ.АкцияСкидки.Товары КАК АкцияСкидкиТовары
			|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.АкцияСкидки КАК АкцияСкидки
			|		ПО АкцияСкидкиТовары.Ссылка = АкцияСкидки.Ссылка,
			|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
			|ГДЕ
			|	АкцияСкидки.Подразделение = &Подразделение
			|	И АкцияСкидкиТовары.Номенклатура = &Номенклатура";
		
		Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура);
		Запрос.УстановитьПараметр("Подразделение", Подразделение);
		
		РезультатЗапроса = Запрос.Выполнить();
		
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			Если  Строка.Скидка Тогда
				
				
					 //НаборЗаписей = РегистрыСведений.АкцияСкидки.СоздатьНаборЗаписей();
					 //НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.Регистратор);
					 //НоваяЗапись = НаборЗаписей.Добавить();
					 //НоваяЗапись.Номенклатура = Строка.Номенклатура;
					 //НоваяЗапись.Контрагент = Контрагент;
					 //НоваяЗапись.ПроцентСкидки = ВыборкаДетальныеЗаписи.ПроцентСкидки;
					 //НаборЗаписей.Записать(Ложь);
					НаборЗаписей = РегистрыСведений.АкцияСкидки3.СоздатьНаборЗаписей();
					НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.Регистратор);
					НоваяЗаписьНабора = НаборЗаписей.Добавить();
					НоваяЗаписьНабора.Период = Дата;
					НоваяЗаписьНабора.Номенклатура = Строка.Номенклатура;
					НоваяЗаписьНабора.Дата = Дата;
					НоваяЗаписьНабора.Регистратор1 = ВыборкаДетальныеЗаписи.Ссылка;
					НоваяЗаписьНабора.Контрагент = Контрагент;
					НоваяЗаписьНабора.ПроцентСкидки = ВыборкаДетальныеЗаписи.ПроцентСкидки;
					НоваяЗаписьНабора.ДатаНачалаАкции = ВыборкаДетальныеЗаписи.ДатаНачалаАкции;
					НоваяЗаписьНабора.ДатаОкончанияАкции = ВыборкаДетальныеЗаписи.ДатаОкончанияАкции;
					НаборЗаписей.Записать(Ложь);
				КонецЕсли;

		КонецЦикла;
Показать
18. ALagutin 57 25.11.20 15:00 Сейчас в теме
(17)В Запросе не выбирается поле Регистратор, попробуйте так: НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.Ссылка);

Да и вообще запрос какой-то не однозначный и кривой
19. G_110913743683437366230 26.11.20 06:05 Сейчас в теме
(18)
Запрос кривоват. надеюсь с опытом будет все хорошо
НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.Ссылка);
Пробовал, ругается на то что документ существует
20. G_110913743683437366230 26.11.20 06:26 Сейчас в теме
(19) Можно только один раз проводить, а потом ругается на проведенный документ
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)