03. Документы

Как создать новый документ?

НовыйДокумент = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); НовыйДокумент.Дата = ТекущаяДата();

Как найти документ?

ИскомыйДокумент = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, Дата(2005, 1, 1)); Если НЕ ИскомыйДокумент.Пустая() Тогда // Выполнить действия в случае обнаружения такого документа. … КонецЕсли;

Как открыть форму документа?

Форма = ИскомыйДокумент.ПолучитьФорму(<Форма>, <Владелец>, ); Форма.Открыть();

Как изменить значение реквизита и записать документ?

ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект(); ДокОбъект.Ответственный = глТекущийПользователь; ДокОбъект.Записать(); // Запись с проведением документаДокОбъект.Записать(РежимЗаписиДокумента.Проведение); // Запись с отменой проведенияДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);

Как добавить строку в табличную часть документа, имея ссылку на документ?

ОбъектДок = Док.ПолучитьОбъект(); НоваяСтрока = ОбъектДок.Товары.Добавить(); // Заполнить значения реквизитов. НоваяСтрока.Количество = 10; НоваяСтрока.Цена = 55; // Записать документ. ОбъектДок.Записать();

Как удалить строки из табличной части документа?

ОбъектДокумента = Документ.ПолучитьОбъект(); ОбъектДокумента.Товары.Очистить();

Как перебрать строки документа?

Для Каждого ТекущаяСтрока Из Документ.Товары Цикл // Действия со строкой табличной части. КонецЦикла; СтаршийИндекс = Документ.Товары.Количество() - 1; Для Сч = 0 по СтаршийИндекс Цикл // Действия со строкой табличной части.КонецЦикла;

Как выгрузить табличную часть документа?

ТаблицаТоваровДокумента = Документ.Товары.Выгрузить();

Как посчитать итог в табличной части документа?

ВсегоПоКолонкеСумма = Документ.Товары.Итог("Сумма");

Как провести документ?

НужныйДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);

Пример процедуры проведения

//Модуль объекта Процедура ОбработкаПроведения(Отказ, Режим)

Если Не Отказ Тогда

ТаблицаПоТоварам = Товары.Выгрузить(); //Выгрузка табличной части документа

ТаблицаПоОборудованию = Оборудование.Выгрузить(); //Выгрузка табличной части документа

ТаблицаПоТоварам.Свернуть("Номенклатура, ЕдиницаИзмерения","Количество");

ТаблицаПоОборудованию.Свернуть("Номенклатура, ЕдиницаИзмерения","Количество");

// ДвиженияПоРегистрам

ДвиженияПланВыполненияЗаявок = Движения["ПланВыполненияЗаявок"];

Для Каждого СтрокаТаблицы Из ТаблицаПоТоварам Цикл

СтрокаДвижения = ДвиженияПланВыполненияЗаявок.Добавить();

СтрокаДвижения.ВидДвижения =ВидДвиженияНакопления.Приход;

СтрокаДвижения.Период = Дата;

СтрокаДвижения.Заявка = ЭтотОбъект.Ссылка;

СтрокаДвижения.ДоговорКонтрагента = ДоговорКонтрагента;

СтрокаДвижения.Номенклатура = СтрокаТаблицы.Номенклатура;

СтрокаДвижения.Количество = СтрокаТаблицы.Количество;

КонецЦикла;

Для Каждого СтрокаТаблицы Из ТаблицаПоОборудованию Цикл

СтрокаДвижения = ДвиженияПланВыполненияЗаявок.Добавить();

СтрокаДвижения.ВидДвижения =ВидДвиженияНакопления.Приход;

СтрокаДвижения.Период = Дата;

СтрокаДвижения.Заявка = ЭтотОбъект.Ссылка;

СтрокаДвижения.ДоговорКонтрагента = ДоговорКонтрагента;

СтрокаДвижения.Номенклатура = СтрокаТаблицы.Номенклатура;

СтрокаДвижения.Количество = СтрокаТаблицы.Количество;

КонецЦикла;

КонецЕсли;

Как перебрать документы?

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

Как пометить на удаление все приходные накладные?

ДокументыВида = Документы.ПоступлениеТоваровУслуг.Выбрать(); Пока ДокументыВида.Следующий() Цикл ДокОбъект = ДокументыВида.ПолучитьОбъект(); ДокОбъект.УстановитьПометкуУдаления(Истина); КонецЦикла;

Как, имея ссылку на документ, создать в базе его копию?

ДокументКопия = ИсходныйДокумент.Скопировать(); ДокументКопия.Дата = РабочаяДата; ДокументКопия.Записать(); ДокументКопия.Дата = ИсходныйДокумент.Дата;

Как, имея ссылку на документ, прочитать его движения по регистру?

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

Как определить, по каким регистрам документ выполнил движения?

ВЫБРАТЬ ПЕРВЫЕ 1

"Внутренние заказы" КАК Регистр

ИЗ

РегистрНакопления.ВнутренниеЗаказы КАК ВнутренниеЗаказы

ГДЕ

ВнутренниеЗаказы.Регистратор = &Регистратор

ОБЪЕДИНИТЬ

ВЫБРАТЬ ПЕРВЫЕ 1

"Заказы поставщикам" КАК Регистр

ИЗ

РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам

ГДЕ

ЗаказыПоставщикам.Регистратор = &Регистратор

ОБЪЕДИНИТЬ

ВЫБРАТЬ ПЕРВЫЕ 1

"Размещение заказов покупателей" КАК Регистр

ИЗ

РегистрНакопления.РазмещениеЗаказовПокупателей КАК РазмещениеЗаказовПокупателей

ГДЕ

РазмещениеЗаказовПокупателей.Регистратор = &Регистратор

ОБЪЕДИНИТЬ

ВЫБРАТЬ ПЕРВЫЕ 1

"Товары в резерве на складах" КАК Регистр

ИЗ

РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах

ГДЕ

ТоварыВРезервеНаСкладах.Регистратор = &Регистратор

Как в табличной части документа удалить строки с нулевым значением реквизита "Количество"?

ОбъектДок = СсылкаДок.ПолучитьОбъект(); СтруктураДляПоиска = Новый Структура("Количество", 0); ТабличнаяЧастьДок = ОбъектДок.Товары; МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска); Для каждого Строчка Из МассивПустыхСтрок Цикл ТабличнаяЧастьДок.Удалить(Строчка); КонецЦикла; ОбъектДок.Записать(); СтруктураДляПоиска = Новый Структура("Количество", 0); МассивПустыхСтрок = Товары.НайтиСтроки(СтруктураДляПоиска); Для каждого Строчка Из МассивПустыхСтрок Цикл Товары.Удалить(Строчка); КонецЦикла;

Как очистить колонку "СтавкаНДС" в табличном поле "Товары" уже заполненного документа?

Процедура ТоварыСтавкаНДСПриИзменении(Элемент) // Рассчитать реквизиты табличной части. РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект); КонецПроцедуры // ТоварыСтавкаНДСПриИзменении() Для Каждого Строчка из Товары Цикл Строчка.СтавкаНДС = Неопределено; // Передать управление на процедуру, вызываемую // из обработчика события "ПриИзменении" для поля ввода "СтавкаНДС" ЭлементыФормы.Товары.ТекущаяСтрока = Строчка; РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект); КонецЦикла;

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

НовыйСчет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент(); ЗаполнитьЗначенияСвойств(НовыйСчет, ДокументЗаказа, , "Дата"); // Заполнить табличную часть Товары. Для Каждого СтрокаТоваровЗаказа Из ДокументЗаказа.Товары Цикл ЗаполнитьЗначенияСвойств(НовыйСчет.Товары.Добавить(), СтрокаТоваровЗаказа); КонецЦикла; // Заполнить табличную часть ВозвратнаяТара Для Каждого СтрокаТарыЗаказа Из ДокументЗаказа.ВозвратнаяТара Цикл ЗаполнитьЗначенияСвойств(НовыйСчет.ВозвратнаяТара.Добавить(), СтрокаТарыЗаказа); КонецЦикла; // Заполнить табличную часть Услуги Для Каждого СтрокаУслугЗаказа Из ДокументЗаказа.Услуги Цикл ЗаполнитьЗначенияСвойств(НовыйСчет.Услуги.Добавить(), СтрокаУслугЗаказа); КонецЦикла; НовыйСчет.ЗаказПокупателя = ДокументЗаказа; Форма = НовыйСчет.ПолучитьФорму(); Форма.Открыть();

Как получить перечень приходных накладных, в которых не заполнены номенклатурные позиции?

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

Как на дату расходной накладной определить курс валюты управленческого учета?

ВЫБРАТЬ КурсыВалютСрезПоследних.Валюта КАК ВалютаУпр, КурсыВалютСрезПоследних.Курс КАК КурсУпр ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, Валюта В (ВЫБРАТЬ УчетнаяПолитикаСрезПоследних.ВалютаУправленческая ИЗ РегистрСведений.УчетнаяПолитика.СрезПоследних(&ДатаДокумента, ) КАК УчетнаяПолитикаСрезПоследних ) ) КАК КурсыВалютСрезПоследних

Как из формы документа вызвать его неоперативное проведение?

Процедура ОсновныеДействияФормыОК(Кнопка) ЭтаФорма.ИспользоватьРежимПроведения = ИспользованиеРежимаПроведения.Неоперативный; ЗаписатьВФорме(РежимЗаписиДокумента.Проведение); Закрыть(); КонецПроцедуры

Как в обработке проведения получить остатки, актуальные на позицию документа?

Запрос.Текст = "ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток, | ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ПараметрПериод, | ДоговорКонтрагента = &Договор | И | Сделка =&Сделка) КАК ВзаиморасчетыСКонтрагентамиОстатки"; Запрос.УстановитьПараметр("ПараметрПериод", МоментВремени());

Как определить количество документов и количество разных значений реквизита в таблице записей документа?

ВЫБРАТЬ КОЛИЧЕСТВО(РегистрацияПростоевВОрганизации.Ссылка) КАК Случаев, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегистрацияПростоевВОрганизации.ФизЛицо) КАК Работников ИЗ Документ.РегистрацияПростоевВОрганизации КАК РегистрацияПростоевВОрганизации ГДЕ РегистрацияПростоевВОрганизации.Проведен

В последовательность "ПартионныйУчет" добавлено измерение "Организация". Как теперь получить данные по границам последовательности для каждого значения этого измерения?

ТаблицаГраниц = Последовательности.ПартионныйУчет.ПолучитьГраницы("Организация"); Для Каждого СтрокаТаблицыГраниц Из ТаблицаГраниц Цикл Организация = СтрокаТаблицыГраниц.Организация; ДатаГП = СтрокаТаблицыГраниц.Граница.Дата; СсылкаГП = СтрокаТаблицыГраниц.Граница.Ссылка; КонецЦикла;

Как определить документ новый или нет

Если Объект.Ссылка.Пустая() Тогда

Иначе

КонецЕсли;

Как проверить наличие реквизита в документе

Реквизит = Документ.Реквизиты.Найти("Организация");

Если НЕ Реквизит = Неопределено Тогда

Сообщить("У документа - <"+Документ.Имя+"> есть реквизит организация");

КонецЕсли;

Как проверить изменена ли форма

Если (ЭтаФорма.Модифицированность) ИЛИ (Объект.Ссылка = ПредопределенноеЗначение("Документ.АвансовыйОтчет.ПустаяСсылка")) Тогда

Ответ = Вопрос("Перед выполнение действия необходимо записать документ. Записать?",

РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да, "Внимание!");

Если Ответ = КодВозвратаДиалога.Нет Тогда

//Обработка отказа

Иначе

// обработка записи

КонецЕсли;

Иначе

//Документ не новый и не изменялся

КонецЕсли;

Получить значение реквизитов через метаданные

ДанныеСчетаФактуры = Новый Структура(); ДанныеСчетаФактуры.Вставить("Ссылка", СсылкаНаОбъект); ДанныеСчетаФактуры.Вставить("Дата", СсылкаНаОбъект.Дата); ДанныеСчетаФактуры.Вставить("Номер", СсылкаНаОбъект.Номер); Для каждого РеквизитОбъекта Из Метаданные.Документы[СсылкаНаОбъект.Метаданные().Имя].Реквизиты Цикл ДанныеСчетаФактуры.Вставить(СокрЛП(РеквизитОбъекта.Имя), СсылкаНаОбъект[СокрЛП(РеквизитОбъекта.Имя)]); КонецЦикла;