Ввод в регистр сведений

1. ranis888 102 07.05.18 10:19 Сейчас в теме
Вот полный код

)ФормаНоменклатуры = Справочники.Номенклатура.ПолучитьФормуВыбораГруппы();
	ФормаНоменклатуры.Заголовок = "Выберите группу номенклатуры";
	ФормаНоменклатуры.РежимВыбора = Истина;
	Группа = ФормаНоменклатуры.ОткрытьМодально();
	
		

	Если Товары.Количество() > 0  Тогда

		ТекстВопроса = "Перед заполнением табличная часть будет очищена. Заполнить?";
		Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да, Метаданные().Представление());
		Если Ответ <> КодВозвратаДиалога.Да Тогда
			Возврат;
		КонецЕсли; 

		Товары.Очистить();

	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда

		ОбщегоНазначения.СообщитьОбОшибке("Не выбран тип цен номенклатуры");
		// Ничего делать не надо
		Возврат;

	КонецЕсли;

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

 
 
	Пока Выборка.Следующий() Цикл
		
		СтруктураОтбора = Новый Структура();
		СтруктураОтбора.Вставить("Номенклатура", Выборка.Номенклатура);

		СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(Товары, СтруктураОтбора);
		Если СтрокаТабличнойЧасти = Неопределено и Выборка.Артикул  = артикул Тогда
			
			СтрокаТабличнойЧасти = Товары.Добавить();
				СтрокаТабличнойЧасти.Номенклатура = Выборка.Номенклатура;
			КонецЕсли;
			
			  ТекущиеЗначение = РегистрыСведений.КодПечатиЯрлыка.СоздатьНаборЗаписей();
		ТекущиеЗначение.Добавить();
		ТекущиеЗначение.Номенклатура=Выборка.Номеклатура;
		ТекущиеЗначение.КодПечати = КодПечати;

			
		КонецЦикла;
		
.
Показать



Нужно чтобы в РегистрыСведений.КодПечатиЯрлыка
добавлять записи, которые хранит Измерение- "Номенклатура" и Ресурс - "КодПечати"

Написал такой код в цикле, но данные не добавляются и не создается регистр вообще
 ТекущиеЗначение = РегистрыСведений.КодПечатиЯрлыка.СоздатьНаборЗаписей();
		ТекущиеЗначение.Добавить();
		ТекущиеЗначение.Номенклатура=Выборка.Номеклатура;
		ТекущиеЗначение.КодПечати = КодПечати;
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 07.05.18 10:24 Сейчас в теме
(1) Синтакс помощник:
КурсыВалют = РегистрыСведений.КурсыВалют;
НаборКурсов = КурсыВалют.СоздатьНаборЗаписей();
Доллар = Справочники.Валюты.НайтиПоНаименованию("USD");
НаборКурсов.Отбор.Валюта.Установить(Доллар);
НаборКурсов.Отбор.Период.Установить(НачалоДня(ТекущаяДата()));
НаборКурсов.Прочитать();
Если НаборКурсов.Количество() = 0 Тогда
    НовыйКурс = НаборКурсов.Добавить();
    НовыйКурс.Валюта = Доллар;
    НовыйКурс.Период = ТекущаяДата();
ИначеЕсли НаборКурсов.Количество() = 1 Тогда
    НовыйКурс = НаборКурсов[0];
Иначе
    Предупреждение(НСтр("ru = 'Курс валюты задается один раз в день.';"
     + " en = 'Rate is set once a day.'"), 60);
    Возврат;
КонецЕсли;
НовыйКурс.Курс = 31.44;
НовыйКурс.Кратность = 1;
НаборКурсов.Записать();
Сообщить(НСтр(ru = 'Курс '; en = 'Rate ') 
    + СокрЛП(НовыйКурс.Валюта) 
    + НСтр(ru = ' на сегодня: "+"; en = ' for today: ') 
    + НовыйКурс.Курс + НСтр(ru = ' руб.'; en = ' roub.'"));
Показать
3. plebedinskiy 51 07.05.18 10:27 Сейчас в теме
(1)Действительно, где метод Записать()?


ТекущиеЗначение.Записать()
6. ranis888 102 07.05.18 10:34 Сейчас в теме
(3) Документ.ВидПечати.Форма.ФормаДокументаДляПечатиВид.Форма(88)}: Поле объекта не обнаружено (Номеклатура)
Если так тоже ругается на это
4. harvester_sorrow 24 07.05.18 10:32 Сейчас в теме
Попробуйте так

ТекущиеЗначение = РегистрыСведений.КодПечатиЯрлыка.СоздатьНаборЗаписей();
ТекущиеЗначение.Отбор.Номенклатура.Установить(Выборка.Номеклатура);
	
ТекущиеЗначение.Прочитать();	
	
	Если ТекущиеЗначение.Количество()Тогда
	    ТекущиеЗначение[0].Номенклатура = Выборка.Номеклатура;
		ТекущиеЗначение.КодПечати = КодПечати;
	Иначе
		ТекущиеЗначение.Добавить();
        ТекущиеЗначение.Номенклатура=Выборка.Номеклатура;
        ТекущиеЗначение.КодПечати = КодПечати;
	КонецЕсли;
	
	ТекущиеЗначение.Записать(Ложь);
Показать
5. ranis888 102 07.05.18 10:33 Сейчас в теме
(4)


Документ.ВидПечати.Форма.ФормаДокументаДляПечатиВид.Форма(88)}: Поле объекта не обнаружено (Номеклатура)
7. ranis888 102 07.05.18 10:35 Сейчас в теме +1 $m
А точно, номенклатура в табличной части Товары же
8. ranis888 102 07.05.18 10:36 Сейчас в теме
А хотя это указано в коде
9. harvester_sorrow 24 07.05.18 10:39 Сейчас в теме
(8) Может на это ругается?

ТекущиеЗначение.Номенклатура=Выборка.Номеклатура;

А должно быть

ТекущиеЗначение.Номенклатура=Выборка.Номенклатура;
14. ranis888 102 07.05.18 11:14 Сейчас в теме
(9)

{Документ.ВидПечати.Форма.ФормаДокументаДляПечатиВид.Форма(94)}: Поле объекта не обнаружено (КодПечати)
10. harvester_sorrow 24 07.05.18 10:39 Сейчас в теме
Опечатка в слове Номеклатура
11. harvester_sorrow 24 07.05.18 10:40 Сейчас в теме
Из запроса вытягивается Выборка.Номенклатура ,а Вы подставляете Выборка.Номеклатура
12. harvester_sorrow 24 07.05.18 10:43 Сейчас в теме
Попробуйте заменить на это

ТекущиеЗначение = РегистрыСведений.КодПечатиЯрлыка.СоздатьНаборЗаписей(); 
	ТекущиеЗначение.Отбор.Номенклатура.Установить(Выборка.Номенклатура); 
	
	ТекущиеЗначение.Прочитать();	
	
	Если ТекущиеЗначение.Количество()Тогда 
		ТекущиеЗначение[0].Номенклатура = Выборка.Номенклатура; 
		ТекущиеЗначение.КодПечати = КодПечати; 
	Иначе 
		ТекущиеЗначение.Добавить(); 
		ТекущиеЗначение.Номенклатура=Выборка.Номенклатура; 
		ТекущиеЗначение.КодПечати = КодПечати; 
	КонецЕсли; 
	
	ТекущиеЗначение.Записать(Ложь);
Показать
13. ranis888 102 07.05.18 11:10 Сейчас в теме
(12) что-то не то с этим. создал он регистры, только без отбора и код печати не поставил
17. ranis888 102 07.05.18 11:29 Сейчас в теме
(12)
ТекущиеЗначение[0].КодПечати = КодПечати;



{Документ.ВидПечати.Форма.ФормаДокументаДляПечатиВид.Форма(96)}: Ошибка при вызове метода контекста (Записать)
ТекущиеЗначение.Записать(Ложь);
по причине:
Запись не верна! Значение поля не соответствует установленному отбору: КодПечати: (Регистр сведений: Код печати ярлыка; Поле: Номенклатура)
15. ranis888 102 07.05.18 11:15 Сейчас в теме
{Документ.ВидПечати.Форма.ФормаДокументаДляПечатиВид.Форма(94)}: Поле объекта не обнаружено (КодПечати)
16. ranis888 102 07.05.18 11:28 Сейчас в теме
{Документ.ВидПечати.Форма.ФормаДокументаДляПечатиВид.Форма(96)}: Ошибка при вызове метода контекста (Записать)
ТекущиеЗначение.Записать(Ложь);
по причине:
Запись не верна! Значение поля не соответствует установленному отбору: КодПечати: (Регистр сведений: Код печати ярлыка; Поле: Номенклатура)
18. harvester_sorrow 24 07.05.18 12:40 Сейчас в теме
(16) Какие типы у измерения Номенклатура и ресурса КодПечати?

И что приходит в выборке() и какой тип имеет реквизит КодПечати
Оставьте свое сообщение

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