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

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) Можно только один раз проводить, а потом ругается на проведенный документ
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот