03. Документы
Как создать новый документ?
НовыйДокумент = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); НовыйДокумент.Дата = ТекущаяДата();
Как найти документ?
ИскомыйДокумент = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, Дата(2005, 1, 1)); Если НЕ ИскомыйДокумент.Пустая() Тогда // Выполнить действия в случае обнаружения такого документа. … КонецЕсли;
Как открыть форму документа?
Форма = ИскомыйДокумент.ПолучитьФорму(<Форма>, <Владелец>, ); Форма.Открыть();
Как изменить значение реквизита и записать документ?
ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект(); ДокОбъект.Ответственный = глТекущийПользователь; ДокОбъект.Записать(); // Запись с проведением документаДокОбъект.Записать(РежимЗаписиДокумента.Проведение); // Запись с отменой проведенияДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
Как добавить строку в табличную часть документа, имея ссылку на документ?
ОбъектДок = Док.ПолучитьОбъект(); НоваяСтрока = ОбъектДок.Товары.Добавить(); // Заполнить значения реквизитов. НоваяСтрока.Количество = 10; НоваяСтрока.Цена = 55; // Записать документ. ОбъектДок.Записать();
Как удалить строки из табличной части документа?
ОбъектДокумента = Документ.ПолучитьОбъект(); ОбъектДокумента.Товары.Очистить();
Как перебрать строки документа?
Для Каждого ТекущаяСтрока Из Документ.Товары Цикл // Действия со строкой табличной части. КонецЦикла; СтаршийИндекс = Документ.Товары.Количество() - 1; Для Сч = 0 по СтаршийИндекс Цикл // Действия со строкой табличной части.КонецЦикла;
Как выгрузить табличную часть документа?
ТаблицаТоваровДокумента = Документ.Товары.Выгрузить();
Как посчитать итог в табличной части документа?
ВсегоПоКолонкеСумма = Документ.Товары.Итог("Сумма");
Как провести документ?
НужныйДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Пример процедуры проведения
//Модуль объекта Процедура ОбработкаПроведения(Отказ, Режим)
Если Не Отказ Тогда
ТаблицаПоТоварам = Товары.Выгрузить(); //Выгрузка табличной части документа
ТаблицаПоОборудованию = Оборудование.Выгрузить(); //Выгрузка табличной части документа
ТаблицаПоТоварам.Свернуть("Номенклатура, ЕдиницаИзмерения","Количество");
ТаблицаПоОборудованию.Свернуть("Номенклатура, ЕдиницаИзмерения","Количество");
// ДвиженияПоРегистрам
ДвиженияПланВыполненияЗаявок = Движения["ПланВыполненияЗаявок"];
Для Каждого СтрокаТаблицы Из ТаблицаПоТоварам Цикл
СтрокаДвижения = ДвиженияПланВыполненияЗаявок.Добавить();
СтрокаДвижения.ВидДвижения =ВидДвиженияНакопления.Приход;
СтрокаДвижения.Период = Дата;
СтрокаДвижения.Заявка = ЭтотОбъект.Ссылка;
СтрокаДвижения.ДоговорКонтрагента = ДоговорКонтрагента;
СтрокаДвижения.Номенклатура = СтрокаТаблицы.Номенклатура;
СтрокаДвижения.Количество = СтрокаТаблицы.Количество;
КонецЦикла;
Для Каждого СтрокаТаблицы Из ТаблицаПоОборудованию Цикл
СтрокаДвижения = ДвиженияПланВыполненияЗаявок.Добавить();
СтрокаДвижения.ВидДвижения =ВидДвиженияНакопления.Приход;
СтрокаДвижения.Период = Дата;
СтрокаДвижения.Заявка = ЭтотОбъект.Ссылка;
СтрокаДвижения.ДоговорКонтрагента = ДоговорКонтрагента;
СтрокаДвижения.Номенклатура = СтрокаТаблицы.Номенклатура;
СтрокаДвижения.Количество = СтрокаТаблицы.Количество;
КонецЦикла;
КонецЕсли;
Как перебрать документы?
ВыборкаДокументов = Документы.Расходная.Выбрать(НачалоГода(ТекущаяДата()), КонецГода(ТекущаяДата())); Пока ВыборкаДокументов.Следующий() Цикл // Действия с документом - элементом выборки, // его значение содержится в переменной ВыборкаДокументов КонецЦикла Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Контрагент = &Контрагент | И | (РеализацияТоваровУслуг.Номер < 100 | ИЛИ | РеализацияТоваровУслуг.Дата < ДАТАВРЕМЯ(2005, 1, 1)) | И | РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)"; Запрос.УстановитьПараметр("Контрагент", ОтбКонтрагент); Запрос.УстановитьПараметр("Номенклатура", ОтбНоменклатура); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // действия с документом - элементом выборки, // его значение содержится в переменной Выборка КонецЦикла;
Как пометить на удаление все приходные накладные?
ДокументыВида = Документы.ПоступлениеТоваровУслуг.Выбрать(); Пока ДокументыВида.Следующий() Цикл ДокОбъект = ДокументыВида.ПолучитьОбъект(); ДокОбъект.УстановитьПометкуУдаления(Истина); КонецЦикла;
Как, имея ссылку на документ, создать в базе его копию?
ДокументКопия = ИсходныйДокумент.Скопировать(); ДокументКопия.Дата = РабочаяДата; ДокументКопия.Записать(); ДокументКопия.Дата = ИсходныйДокумент.Дата;
Как, имея ссылку на документ, прочитать его движения по регистру?
Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ * |ИЗ | РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры |ГДЕ | ОстаткиНоменклатуры.Регистратор = &Регистратор"; Запрос.УстановитьПараметр("Регистратор", ПолеВводаРегистратор); НаборЗаписейРегистра = Движения.ОстаткиНоменклатуры; НаборЗаписейРегистра.Прочитать(); Для Каждого Запись из НаборЗаписейРегистра Цикл // Чтение и модификация очередного движения. КонецЦикла; Для Каждого НаборЗаписейРегистра из Движения Цикл НаборЗаписейРегистра.Прочитать(); Для Каждого Запись из НаборЗаписейРегистра Цикл // Чтение и модификация очередного движения. КонецЦикла; КонецЦикла;
Как определить, по каким регистрам документ выполнил движения?
ВЫБРАТЬ ПЕРВЫЕ 1
"Внутренние заказы" КАК Регистр
ИЗ
РегистрНакопления.ВнутренниеЗаказы КАК ВнутренниеЗаказы
ГДЕ
ВнутренниеЗаказы.Регистратор = &Регистратор
ОБЪЕДИНИТЬ
ВЫБРАТЬ ПЕРВЫЕ 1
"Заказы поставщикам" КАК Регистр
ИЗ
РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
ГДЕ
ЗаказыПоставщикам.Регистратор = &Регистратор
ОБЪЕДИНИТЬ
ВЫБРАТЬ ПЕРВЫЕ 1
"Размещение заказов покупателей" КАК Регистр
ИЗ
РегистрНакопления.РазмещениеЗаказовПокупателей КАК РазмещениеЗаказовПокупателей
ГДЕ
РазмещениеЗаказовПокупателей.Регистратор = &Регистратор
ОБЪЕДИНИТЬ
ВЫБРАТЬ ПЕРВЫЕ 1
"Товары в резерве на складах" КАК Регистр
ИЗ
РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
ГДЕ
ТоварыВРезервеНаСкладах.Регистратор = &Регистратор
Как в табличной части документа удалить строки с нулевым значением реквизита "Количество"?
ОбъектДок = СсылкаДок.ПолучитьОбъект(); СтруктураДляПоиска = Новый Структура("Количество", 0); ТабличнаяЧастьДок = ОбъектДок.Товары; МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска); Для каждого Строчка Из МассивПустыхСтрок Цикл ТабличнаяЧастьДок.Удалить(Строчка); КонецЦикла; ОбъектДок.Записать(); СтруктураДляПоиска = Новый Структура("Количество", 0); МассивПустыхСтрок = Товары.НайтиСтроки(СтруктураДляПоиска); Для каждого Строчка Из МассивПустыхСтрок Цикл Товары.Удалить(Строчка); КонецЦикла;
Как очистить колонку "СтавкаНДС" в табличном поле "Товары" уже заполненного документа?
Процедура ТоварыСтавкаНДСПриИзменении(Элемент) // Рассчитать реквизиты табличной части. РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект); КонецПроцедуры // ТоварыСтавкаНДСПриИзменении() Для Каждого Строчка из Товары Цикл Строчка.СтавкаНДС = Неопределено; // Передать управление на процедуру, вызываемую // из обработчика события "ПриИзменении" для поля ввода "СтавкаНДС" ЭлементыФормы.Товары.ТекущаяСтрока = Строчка; РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект); КонецЦикла;
Как заполнить значения свойств нового документа на основании существующего?
НовыйСчет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент(); ЗаполнитьЗначенияСвойств(НовыйСчет, ДокументЗаказа, , "Дата"); // Заполнить табличную часть Товары. Для Каждого СтрокаТоваровЗаказа Из ДокументЗаказа.Товары Цикл ЗаполнитьЗначенияСвойств(НовыйСчет.Товары.Добавить(), СтрокаТоваровЗаказа); КонецЦикла; // Заполнить табличную часть ВозвратнаяТара Для Каждого СтрокаТарыЗаказа Из ДокументЗаказа.ВозвратнаяТара Цикл ЗаполнитьЗначенияСвойств(НовыйСчет.ВозвратнаяТара.Добавить(), СтрокаТарыЗаказа); КонецЦикла; // Заполнить табличную часть Услуги Для Каждого СтрокаУслугЗаказа Из ДокументЗаказа.Услуги Цикл ЗаполнитьЗначенияСвойств(НовыйСчет.Услуги.Добавить(), СтрокаУслугЗаказа); КонецЦикла; НовыйСчет.ЗаказПокупателя = ДокументЗаказа; Форма = НовыйСчет.ПолучитьФорму(); Форма.Открыть();
Как получить перечень приходных накладных, в которых не заполнены номенклатурные позиции?
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ПриходнаяТовары.Ссылка как Накладные |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПриходнаяТовары |ГДЕ | ПриходнаяТовары.Номенклатура = &ПустаяНоменклатура"; Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка()); ТаблицаНакладных = Запрос.Выполнить();
Как на дату расходной накладной определить курс валюты управленческого учета?
ВЫБРАТЬ КурсыВалютСрезПоследних.Валюта КАК ВалютаУпр, КурсыВалютСрезПоследних.Курс КАК КурсУпр ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, Валюта В (ВЫБРАТЬ УчетнаяПолитикаСрезПоследних.ВалютаУправленческая ИЗ РегистрСведений.УчетнаяПолитика.СрезПоследних(&ДатаДокумента, ) КАК УчетнаяПолитикаСрезПоследних ) ) КАК КурсыВалютСрезПоследних
Как из формы документа вызвать его неоперативное проведение?
Процедура ОсновныеДействияФормыОК(Кнопка) ЭтаФорма.ИспользоватьРежимПроведения = ИспользованиеРежимаПроведения.Неоперативный; ЗаписатьВФорме(РежимЗаписиДокумента.Проведение); Закрыть(); КонецПроцедуры
Как в обработке проведения получить остатки, актуальные на позицию документа?
Запрос.Текст = "ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток, | ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ПараметрПериод, | ДоговорКонтрагента = &Договор | И | Сделка =&Сделка) КАК ВзаиморасчетыСКонтрагентамиОстатки"; Запрос.УстановитьПараметр("ПараметрПериод", МоментВремени());
Как определить количество документов и количество разных значений реквизита в таблице записей документа?
ВЫБРАТЬ КОЛИЧЕСТВО(РегистрацияПростоевВОрганизации.Ссылка) КАК Случаев, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегистрацияПростоевВОрганизации.ФизЛицо) КАК Работников ИЗ Документ.РегистрацияПростоевВОрганизации КАК РегистрацияПростоевВОрганизации ГДЕ РегистрацияПростоевВОрганизации.Проведен
В последовательность "ПартионныйУчет" добавлено измерение "Организация". Как теперь получить данные по границам последовательности для каждого значения этого измерения?
ТаблицаГраниц = Последовательности.ПартионныйУчет.ПолучитьГраницы("Организация"); Для Каждого СтрокаТаблицыГраниц Из ТаблицаГраниц Цикл Организация = СтрокаТаблицыГраниц.Организация; ДатаГП = СтрокаТаблицыГраниц.Граница.Дата; СсылкаГП = СтрокаТаблицыГраниц.Граница.Ссылка; КонецЦикла;
Как определить документ новый или нет
Если Объект.Ссылка.Пустая() Тогда
Иначе
КонецЕсли;
Как проверить наличие реквизита в документе
Реквизит = Документ.Реквизиты.Найти("Организация");
Если НЕ Реквизит = Неопределено Тогда
Сообщить("У документа - <"+Документ.Имя+"> есть реквизит организация");
КонецЕсли;
Как проверить изменена ли форма
Если (ЭтаФорма.Модифицированность) ИЛИ (Объект.Ссылка = ПредопределенноеЗначение("Документ.АвансовыйОтчет.ПустаяСсылка")) Тогда
Ответ = Вопрос("Перед выполнение действия необходимо записать документ. Записать?",
РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да, "Внимание!");
Если Ответ = КодВозвратаДиалога.Нет Тогда
//Обработка отказа
Иначе
// обработка записи
КонецЕсли;
Иначе
//Документ не новый и не изменялся
КонецЕсли;
Получить значение реквизитов через метаданные
ДанныеСчетаФактуры = Новый Структура(); ДанныеСчетаФактуры.Вставить("Ссылка", СсылкаНаОбъект); ДанныеСчетаФактуры.Вставить("Дата", СсылкаНаОбъект.Дата); ДанныеСчетаФактуры.Вставить("Номер", СсылкаНаОбъект.Номер); Для каждого РеквизитОбъекта Из Метаданные.Документы[СсылкаНаОбъект.Метаданные().Имя].Реквизиты Цикл ДанныеСчетаФактуры.Вставить(СокрЛП(РеквизитОбъекта.Имя), СсылкаНаОбъект[СокрЛП(РеквизитОбъекта.Имя)]); КонецЦикла;