Видео
Основные замечания
- Объект нужен для записи, Ссылка - для чтения.
- Поиск ссылок на документы и справочники необходимо производить через запросы или через методы НайтиПоНаименованию, НайтиПоКоду, НайтиПоНомеру.
- При записи в регистры необходимо устанавливать отборы.
Код обработки
&НаКлиенте
Процедура СоздатьТовары(Команда)
СоздатьТоварыНаСервере();
КонецПроцедуры
&НаСервере
Процедура СоздатьТоварыНаСервере()
Счетчик = 0;
Пока Счетчик <=1000 Цикл
Счетчик = Счетчик + 1;
СправочникОбъект = Справочники.ксТовары.СоздатьЭлемент();
СправочникОбъект.Наименование = "Товар1";
СправочникОбъект.Записать();
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНакладную(Команда)
СоздатьНакладнуюНаСервере();
КонецПроцедуры
&НаСервере
Процедура СоздатьНакладнуюНаСервере()
ДокументОбъект = Документы.ксПриходнаяНакладная.СоздатьДокумент();
ДокументОбъект.Дата = Дата("20220308112653"); // можно ТекущаяДата()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ксТовары.Ссылка КАК Ссылка
|ИЗ
| Справочник.ксТовары КАК ксТовары";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТоварыНоваяСтрока = ДокументОбъект.Товары.Добавить();
ТоварыНоваяСтрока.Товар = Справочники.ксТовары.НайтиПоНаименованию("Товар1");
ТоварыНоваяСтрока.Количество = 10;
КонецЦикла;
ДокументОбъект.Записать();
КонецПроцедуры
&НаКлиенте
Процедура ПровестиНакладную(Команда)
ПровестиНакладнуюНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПровестиНакладнуюНаСервере()
//ДокументСсылка = Документы.ксПриходнаяНакладная.НайтиПоНомеру("000000001", Дата("20220308112653"));
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ксПриходнаяНакладная.Ссылка КАК Ссылка
|ИЗ
| Документ.ксПриходнаяНакладная КАК ксПриходнаяНакладная
|ГДЕ
| ксПриходнаяНакладная.Номер = &Номер";
Запрос.УстановитьПараметр("Номер", "000000001");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ДокументСсылка = ВыборкаДетальныеЗаписи.Ссылка;
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
НаборЗаписей = РегистрыНакопления.ксТоварыНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
Для каждого СтрокаТовары из ДокументСсылка.Товары Цикл
Запись = НаборЗаписей.Добавить();
Запись.Период = ДокументСсылка.Дата;
Запись.Товар = СтрокаТовары.Товар;
Запись.Количество = СтрокаТовары.Количество;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
&НаКлиенте
Процедура УдалитьВсе(Команда)
УдалитьВсеНаСервере();
КонецПроцедуры
&НаСервере
Процедура УдалитьВсеНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ксПриходнаяНакладная.Ссылка КАК Ссылка
|ИЗ
| Документ.ксПриходнаяНакладная КАК ксПриходнаяНакладная
|ГДЕ
| ксПриходнаяНакладная.Номер = &Номер";
Запрос.УстановитьПараметр("Номер", "000000001");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ДокументСсылка = ВыборкаДетальныеЗаписи.Ссылка;
КонецЦикла;
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.Удалить();
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ксТовары.Ссылка КАК Ссылка
|ИЗ
| Справочник.ксТовары КАК ксТовары";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
СправочникОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
СправочникОбъект.Удалить();
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры