Каждый документ проходит один и тот же путь. A1sDocs даёт по одной функции на каждый шаг:
Of / OfAuto — создать документ и заполнить шапку
Of(Name, Header)
создаёт объект документа и заполняет шапку из структуры.
Документ ещё не записан — только создан в памяти. Записывать будем в конце через Post
или Write.
OfAuto — то же
самое, но строковые значения в шапке автоматически разрешаются в ссылки через метаданные.
НовДок = Документы .ВыпускПродукцииУслуг .СоздатьДокумент(); НовДок.Дата = '20260201'; НовДок.Организация = МояОрг; НовДок.Склад = СкладГП; НовДок.Комментарий = "Корпус А"; // ... и это ещё без ТЧ ...
Dok = A1sDocs.Of( "ВыпускПродукцииУслуг", A1sDS.Of( "Дата", '20260201', "Организация", МояОрг, "Склад", СкладГП, "Комментарий", "Корпус А"));
// ── Of: передаём готовые ссылки ─────────────────────────────────────────── Dok = A1sDocs.Of("ВыпускПродукцииУслуг", A1sDS.Of( "Дата", '20260201', // дата "Организация", МояОрг, // ссылка "Склад", СкладГП, // ссылка "Комментарий", "Загружено из Excel")); // ── OfAuto: строки → ссылки автоматически ──────────────────────────────── // Если значение реквизита — строка — OfAuto сам найдёт/создаст ссылку // через EnsureByType по типу реквизита из метаданных Dok = A1sDocs.OfAuto("ВыпускПродукцииУслуг", A1sDS.Of( "Дата", '20260201', "Организация", "ООО Ромашка", // строка → найдёт в справочнике Организации "Склад", "Основной склад")); // строка → найдёт в справочнике Склады // ── Минимальная шапка: только дата ─────────────────────────────────────── // Остальное платформа заполнит значениями по умолчанию или оставит пустым Dok = A1sDocs.Of("ВыпускПродукцииУслуг", A1sDS.Of("Дата", ТекущаяДата())); // ── Set: дополнить шапку после создания ────────────────────────────────── Dok = A1sDocs.Of("РеализацияТоваровУслуг", A1sDS.Of("Дата", ТекущаяДата())); A1sDocs.Set(Dok, "Контрагент", КонтрагентСсылка); A1sDocs.Set(Dok, "Договор", ДоговорСсылка); // ── FillHeaderAuto: заполнить шапку уже созданного документа ───────────── A1sDocs.FillHeaderAuto(Dok, A1sDS.Of( "Организация", "ООО Ромашка", // строка → ссылка "Склад", СкладГП)); // ссылка → как есть
Of вы получаете объект в памяти. Он существует
только внутри переменной — в базе ничего нет. Запись происходит только при вызове Post или
Write. Это позволяет заполнить все ТЧ до единственного обращения к базе.
OfBase / Copy — создать на основании или скопировать
OfBase(Name, Base, Overrides?)
— создаёт документ через платформенный Заполнить() по документу-основанию.
Copy(DocRef, Overrides?)
— копирует документ с перекрытием нужных реквизитов.
Оба возвращают незаписанный объект.
// ── OfBase: документ на основании другого ──────────────────────────────── // Например: счёт-фактура из реализации — платформа сама перенесёт нужные поля СчётФактура = A1sDocs.OfBase( "СчётФактураВыданный", РеализацияСсылка, A1sDS.Of("Комментарий", "Сформирован автоматически")); Ссылка = A1sDocs.Post(СчётФактура); // ── Copy: копия документа с изменёнными реквизитами ────────────────────── // Сценарий: ежемесячно копировать документ прошлого месяца, меняя только дату НовыйВыпуск = A1sDocs.Copy( ВыпускФевральСсылка, A1sDS.Of( "Дата", '20260301', // новая дата "Комментарий", "Корпус А — март 2026")); // новый комментарий // ТЧ, организация, склад — скопированы из оригинала Ссылка = A1sDocs.Post(НовыйВыпуск); // ── Шаблонный паттерн: фабричная функция ───────────────────────────────── // Создаём выпуск на каждый месяц по шаблону Функция СоздатьВыпускМесяца(ШаблонСсылка, МесяцДата) Возврат A1sDocs.Copy(ШаблонСсылка, A1sDS.Of( "Дата", НачалоМесяца(МесяцДата), "Комментарий", "Авто: " + Формат(МесяцДата, "ДФ=ММММ ГГГГ"))); КонецФункции
A1sDocs предлагает шесть способов заполнить ТЧ. Вот как выбрать нужный:
AddRow / AddRowAuto — одна строка в ТЧ
AddRow — когда
у вас уже есть ссылки.
AddRowAuto —
когда данные пришли из внешней системы как строки,
и нужно найти/создать соответствующие ссылки автоматически.
// ── AddRow: ссылки уже есть ─────────────────────────────────────────────── A1sDocs.AddRow(Dok, "Продукция", A1sDS.Of( "Номенклатура", Кв101Ссылка, // готовая ссылка "Количество", 1, "Сумма", 3500000, "Цена", 3500000)); // ── AddRow по условию: добавляем только если площадь > 40 ──────────────── Для Каждого Кв Из СписокКвартир Цикл Если Кв.Площадь > 40 Тогда A1sDocs.AddRow(Dok, "Продукция", A1sDS.Of("Номенклатура", Кв.Ссылка, "Количество", 1, "Сумма", Кв.Цена)); КонецЕсли; КонецЦикла; // ── AddRowAuto: строки → ссылки по метаданным ТЧ ───────────────────────── // Поле "Номенклатура" в ТЧ имеет тип СправочникСсылка.Номенклатура // AddRowAuto увидит что значение — строка, и вызовет EnsureByType автоматически A1sDocs.AddRowAuto(Dok, "Продукция", A1sDS.Of( "Номенклатура", "Квартира 101", // строка → найдёт/создаст ссылку "Количество", 1, // число → как есть "Сумма", 3500000)); // число → как есть // ── ExportRows: выгрузить ТЧ в ТаблицуЗначений ─────────────────────────── ТЗПродукция = A1sDocs.ExportRows(Dok, "Продукция"); // все колонки ТЗСуммы = A1sDocs.ExportRows(Dok, "Продукция", "Номенклатура, Сумма"); // только нужные Сообщить("Строк в ТЧ: " + A1sDocs.RowCount(Dok, "Продукция"));
AddRows — загрузить ТЧ из ТаблицыЗначений
AddRows(Doc, TabName, Source, FieldMapping?)
принимает ТаблицуЗначений или массив структур.
Если имена колонок совпадают с реквизитами ТЧ — маппинг не нужен.
Если отличаются — передаётся структура маппинга.
// ── Из ТЗ с совпадающими именами колонок ───────────────────────────────── // ТЗКвартиры содержит колонки: Номенклатура, Количество, Сумма, Цена A1sDocs.AddRows(Dok, "Продукция", ТЗКвартиры); // ── Из массива структур ─────────────────────────────────────────────────── Строки = A1sAR.Of( A1sDS.Of("Номенклатура", Кв101, "Количество", 1, "Сумма", 3500000), A1sDS.Of("Номенклатура", Кв102, "Количество", 1, "Сумма", 3100000), A1sDS.Of("Номенклатура", Кв201, "Количество", 1, "Сумма", 4400000)); A1sDocs.AddRows(Dok, "Продукция", Строки); // ── С маппингом: колонки ТЗ отличаются от реквизитов ТЧ ────────────────── // ТЗ из внешней системы: колонки "Товар", "Кол", "Стоимость" // ТЧ "Товары": реквизиты "Номенклатура", "Количество", "Сумма" МаппингКолонок = A1sDS.Of( "Товар", "Номенклатура", // колонка ТЗ → реквизит ТЧ "Кол", "Количество", "Стоимость", "Сумма"); A1sDocs.AddRows(Dok, "Товары", ТЗВнешняя, МаппингКолонок); // ── SetRows: очистить ТЧ и загрузить заново ─────────────────────────────── // Используется когда документ уже существует и нужно заменить строки A1sDocs.SetRows(ДокСсылка, "Продукция", НовыеСтроки); // Эквивалентно: ClearRows + AddRows — в одну строку
LoadRows / LoadRowsMapped — массив строк с авторазрешением
LoadRows — это
AddRowAuto для всего массива за один вызов.
Каждая строка обрабатывается через метаданные ТЧ: строки → ссылки, числа и даты — как есть.
LoadRowsMapped
= RenameFields + LoadRows в одном вызове — для JSON с чужими именами полей.
Для Каждого Стр Из JSON Цикл Ном = A1sCatalogs.Ensure( "Номенклатура", Стр.item); A1sDocs.AddRow(Dok, "Продукция", A1sDS.Of( "Номенклатура", Ном, "Количество", Стр.qty, "Сумма", Стр.sum)); КонецЦикла;
A1sDocs.LoadRowsMapped( Dok, "Продукция", JSON, A1sDS.Of( "item", "Номенклатура", "qty", "Количество", "sum", "Сумма")); // Строки → ссылки автоматически!
// ── LoadRows: имена полей совпадают с реквизитами ТЧ ───────────────────── // JSON содержит поля "Номенклатура" (строка), "Количество", "Сумма" ДанныеJSON = A1sAR.Of( A1sDS.Of("Номенклатура", "Квартира 101", "Количество", 1, "Сумма", 3500000), A1sDS.Of("Номенклатура", "Квартира 102", "Количество", 1, "Сумма", 3100000)); // LoadRows прогоняет каждую строку через AddRowAuto: // строка "Квартира 101" → найдёт/создаст ссылку → добавит в ТЧ КоличествоСтрок = A1sDocs.LoadRows(Dok, "Продукция", ДанныеJSON); Сообщить("Добавлено строк: " + КоличествоСтрок); // ── LoadRowsMapped: имена полей отличаются ──────────────────────────────── // JSON из внешней системы: поля "item", "unit", "qty", "price" // ТЧ документа: "Номенклатура", "ЕдиницаИзмерения", "Количество", "Цена" A1sDocs.LoadRowsMapped( Dok, "Продукция", МассивИзJSON, A1sDS.Of( "item", "Номенклатура", // строка → ссылка через метаданные "unit", "ЕдиницаИзмерения", // строка → ссылка "qty", "Количество", // число → как есть "price", "Цена")); // число → как есть // Поля, которых нет в схеме маппинга — копируются с оригинальными именами // ── SetLoadRows: очистить ТЧ и загрузить заново ─────────────────────────── // Для обновления существующего документа — заменить все строки ТЧ A1sDocs.SetLoadRows(ДокОбъект, "Продукция", НовыеСтроки); // Эквивалентно: ClearRows("Продукция") + LoadRows("Продукция", НовыеСтроки) // ── Полный сценарий: JSON → документ → провести ─────────────────────────── Dok = A1sDocs.Of("ВыпускПродукцииУслуг", A1sDS.Of("Дата", ТекущаяДата(), "Организация", МояОрг)); A1sDocs.LoadRowsMapped(Dok, "Продукция", МассивИзJSON, A1sDS.Of("item", "Номенклатура", "qty", "Количество", "sum", "Сумма")); Ссылка = A1sDocs.Post(Dok);
ClearRows · SetRows · ExportRows — управление ТЧ
// ── ClearRows: очистить ТЧ ─────────────────────────────────────────────── A1sDocs.ClearRows(Dok, "Продукция"); // ── SetRows: очистить + загрузить из ТЗ (без авторазрешения) ───────────── A1sDocs.SetRows(Dok, "Товары", НоваяТЗ); // ── RowCount: количество строк в ТЧ ───────────────────────────────────── КолСтрок = A1sDocs.RowCount(Dok, "Продукция"); Если КолСтрок = 0 Тогда ВызватьИсключение "Нельзя провести документ с пустой ТЧ"; КонецЕсли; // ── ExportRows: выгрузить ТЧ в ТаблицуЗначений ─────────────────────────── ТЗПродукция = A1sDocs.ExportRows(Dok, "Продукция"); // → ТаблицаЗначений с колонками как реквизиты ТЧ // Только нужные колонки ТЗСуммы = A1sDocs.ExportRows(Dok, "Продукция", "Номенклатура, Количество, Сумма"); // ── Паттерн: обновить ТЧ существующего документа ───────────────────────── ДокОбъект = A1sDocs.GetObject(ДокСсылка); // получить объект из ссылки A1sDocs.ClearRows(ДокОбъект, "Продукция"); Для Каждого Стр Из НовыеДанные Цикл A1sDocs.AddRow(ДокОбъект, "Продукция", A1sDS.Of("Номенклатура", Стр.Ссылка, "Количество", Стр.Кол, "Сумма", Стр.Сумма)); КонецЦикла; A1sDocs.Post(ДокОбъект);
Post / Write / Unpost — проведение и отмена
Три функции. Post — записать и
провести (двигает регистры).
Write —
записать без проведения (черновик).
Unpost —
отменить проведение.
Все три возвращают ссылку на документ.
// ── Post: записать и провести ───────────────────────────────────────────── Ссылка = A1sDocs.Post(Dok); Сообщить("Документ проведён: " + Ссылка); // Force=Истина: перепровести даже если уже проведён (для пересчёта) Ссылка = A1sDocs.Post(Dok, Истина); // ── Write: записать без проведения (черновик) ───────────────────────────── Ссылка = A1sDocs.Write(Dok); // Документ сохранён в базе, но регистры не сдвинуты // ── Unpost: отменить проведение ─────────────────────────────────────────── A1sDocs.Unpost(ДокСсылка); // Если документ не проведён — просто вернёт ссылку без ошибки // ── Update: обновить реквизит существующего записанного документа ───────── A1sDocs.Update( ДокСсылка, A1sDS.Of( "Комментарий", "Исправлено вручную", "Ответственный", НовыйОтветственный)); // Открывает объект, меняет реквизиты, записывает — три шага в одной строке // ── MarkForDeletion: пометить на удаление ──────────────────────────────── A1sDocs.MarkForDeletion(ДокСсылка); // ── Полный цикл создания документа ─────────────────────────────────────── Dok = A1sDocs.Of("ВыпускПродукцииУслуг", A1sDS.Of("Дата", ТекущаяДата(), "Организация", МояОрг)); A1sDocs.LoadRows(Dok, "Продукция", СтрокиДанных); Ссылка = A1sDocs.Post(Dok); Сообщить("✓ Выпуск создан и проведён: " + Ссылка);
ДокСсылка — функция сначала
откроет объект через GetObject(), потом проведёт. Если передать уже открытый
ДокОбъект — дополнительного запроса не будет. При массовых операциях передавайте объект если
он уже открыт.
PostAll / UnpostAll — провести пачку документов
Обе функции принимают массив ссылок и возвращают структуру {Success: Array, Failed: Array}.
Упавший документ не останавливает обработку остальных — если StopOnError = Ложь.
// ── PostAll: провести массив, не останавливаться на ошибках ─────────────── НепроведённыеЗаФевраль = A1sDocs.AllUnposted( "ВыпускПродукцииУслуг", '20260201', '20260228'); Итог = A1sDocs.PostAll(НепроведённыеЗаФевраль); // StopOnError=Ложь по умолчанию Сообщить("✓ Проведено: " + Итог.Success.Количество()); Сообщить("✗ С ошибками: " + Итог.Failed.Количество()); // Показать что именно упало Для Каждого ДокСсылка Из Итог.Failed Цикл Сообщить(" ✗ Ошибка: " + ДокСсылка); КонецЦикла; // ── PostAll с остановкой на первой ошибке ──────────────────────────────── Итог = A1sDocs.PostAll(МассивДоков, Истина); // StopOnError = Истина // ── UnpostAll: отменить проведение у массива ─────────────────────────────── ВсеВыпускиQ1 = A1sDocs.AllPosted( "ВыпускПродукцииУслуг", '20260101', '20260331'); Итог = A1sDocs.UnpostAll(ВсеВыпускиQ1); Сообщить("Отменено проведений: " + Итог.Success.Количество()); // ── ProcessAll: произвольное действие над массивом ──────────────────────── Итог = A1sDocs.ProcessAll(МассивДоков, "Проведение"); // или "ОтменаПроведения", "Запись" // ── UnpostedDocs: отфильтровать непроведённые из массива ───────────────── ВсеДоки = A1sDocs.AllInPeriod("ВыпускПродукцииУслуг", '20260201', '20260228'); Непроведённые = A1sDocs.UnpostedDocs(ВсеДоки); Сообщить("Из " + ВсеДоки.Количество() + " документов не проведено: " + Непроведённые.Количество());
UpdateAll — изменить реквизит у множества документов
// ── Переназначить ответственного всем выпускам за квартал ───────────────── ВыпускиQ1 = A1sDocs.AllInPeriod( "ВыпускПродукцииУслуг", '20260101', '20260331'); Итог = A1sDocs.UpdateAll( ВыпускиQ1, A1sDS.Of( "Ответственный", НовыйОтветственный, "Комментарий", "Q1 2026 — скорректировано")); Сообщить("Обновлено: " + Итог.Success.Количество()); Сообщить("С ошибками: " + Итог.Failed.Количество()); // ── Выборочно: только непроведённые из периода ─────────────────────────── Непроведённые = A1sDocs.AllUnposted("ВыпускПродукцииУслуг", '20260201', '20260228'); A1sDocs.UpdateAll(Непроведённые, A1sDS.Of("Комментарий", "Требует проверки перед проведением")); // ── Комбо: обновить + провести ──────────────────────────────────────────── Доки = A1sDocs.Refs( "ВыпускПродукцииУслуг", "НЕ Проведен И Организация = &Орг", A1sDS.Of("Орг", МояОрг)); A1sDocs.UpdateAll(Доки, A1sDS.Of("Комментарий", "Загружено автоматом")); A1sDocs.PostAll(Доки);
AllInPeriod / AllPosted / AllByBase — выборки по периоду и основанию
// ── AllInPeriod: все документы за период ───────────────────────────────── ВсеВыпуски = A1sDocs.AllInPeriod( "ВыпускПродукцииУслуг", '20260201', // начало '20260228'); // конец // С фильтром по организации — FilterStruct ВыпускиПоОрг = A1sDocs.AllInPeriod( "ВыпускПродукцииУслуг", '20260201', '20260228', A1sDS.Of("Организация", МояОрг)); // реквизит = значение // ── AllPosted / AllUnposted ─────────────────────────────────────────────── Проведённые = A1sDocs.AllPosted("ВыпускПродукцииУслуг", '20260201', '20260228'); Непроведённые = A1sDocs.AllUnposted("ВыпускПродукцииУслуг", '20260201', '20260228'); Сообщить("Проведено " + Проведённые.Количество() + " из " + (Проведённые.Количество() + Непроведённые.Количество())); // ── AllByBase: все документы по документу-основанию ────────────────────── СчётаФактуры = A1sDocs.AllByBase( "СчётФактураВыданный", РеализацияСсылка); // ищет где ДокументОснование = РеализацияСсылка // Другой реквизит основания (не "ДокументОснование") ДокиПоЗаказу = A1sDocs.AllByBase( "ВыпускПродукцииУслуг", ЗаказСсылка, "ЗаказНаПроизводство"); // имя реквизита-основания // ── PickByAttr: массив ссылок по значениям реквизита (IN-запрос) ────────── ВыпускиПоКонтрагентам = A1sDocs.PickByAttr( "РеализацияТоваровУслуг", "Контрагент", A1sAR.Of(Контрагент1, Контрагент2, Контрагент3));
Refs · Details · ByNumber — гибкий поиск и чтение
// ── Refs: произвольное WHERE ────────────────────────────────────────────── ВыпускиСклада = A1sDocs.Refs( "ВыпускПродукцииУслуг", "Склад = &Склад И НЕ Проведен", A1sDS.Of("Склад", МойСклад), "Дата УБЫВ"); // сортировка // ── Count: сколько документов с условием ───────────────────────────────── КоличествоЗаМесяц = A1sDocs.Count( "ВыпускПродукцииУслуг", "Дата МЕЖДУ &Нач И &Кон И Проведен", A1sDS.Of("Нач", '20260201', "Кон", '20260228')); // ── Exists: есть ли такой документ? ────────────────────────────────────── УжеЕстьВыпуск = A1sDocs.Exists( "ВыпускПродукцииУслуг", "Дата = &Д И Организация = &О", A1sDS.Of("Д", ТекущаяДата(), "О", МояОрг)); Если УжеЕстьВыпуск Тогда Сообщить("ВНИМАНИЕ: выпуск за сегодня уже существует"); КонецЕсли; // ── Details: реквизиты документа без GetObject ─────────────────────────── Инфо = A1sDocs.Details(ДокСсылка); // → { Type:"ВыпускПродукцииУслуг", Number:"ВП-000042", // Date:Дата, Posted:Истина, DeletionMark:Ложь } Сообщить(Инфо.Number + " от " + Формат(Инфо.Date, "ДФ=дд.ММ.гг") + " — проведён: " + Инфо.Posted); // С дополнительными реквизитами Инфо = A1sDocs.Details(ДокСсылка, "Организация, Склад, Комментарий"); Сообщить(Инфо.Организация + " / " + Инфо.Комментарий); // ── ByNumber: найти по номеру ───────────────────────────────────────────── ВыпускСсылка = A1sDocs.ByNumber("ВыпускПродукцииУслуг", "ВП-000042"); // С ограничением периода (быстрее на больших базах) ВыпускСсылка = A1sDocs.ByNumber( "ВыпускПродукцииУслуг", "ВП-000042", '20260228', // EndDate — искать до этой даты '20260101'); // StartDate — искать от этой даты // ── ByAttr / ByGUID ─────────────────────────────────────────────────────── ДокПоАтрибуту = A1sDocs.ByAttr("ВыпускПродукцииУслуг", "Организация", МояОрг); ДокПоGUID = A1sDocs.ByGUID("ВыпускПродукцииУслуг", "12345678-1234-...");
TabSchema · AttrType — читать метаданные ТЧ и реквизитов
Функции метаданных позволяют в коде узнать типы реквизитов, имена ТЧ и их колонок. Это фундамент для data-driven подходов — код адаптируется к любому документу без хардкода.
// ── AttrType: тип реквизита шапки ──────────────────────────────────────── ТипОрг = A1sDocs.AttrType("ВыпускПродукцииУслуг", "Организация"); // → ОписаниеТипов (содержит "СправочникСсылка.Организации") // Используем в EnsureByType: ОргСсылка = A1sCatalogs.EnsureByType(ТипОрг, "ООО Ромашка"); // ── TabAttrType: тип реквизита строки ТЧ ───────────────────────────────── ТипНом = A1sDocs.TabAttrType( "ВыпускПродукцииУслуг", "Продукция", "Номенклатура"); // → ОписаниеТипов "СправочникСсылка.Номенклатура" // ── TabSchema: схема всех реквизитов ТЧ ────────────────────────────────── // Каждый элемент: {Имя, Тип, ТипСтрока, ЭтоСправочник, ИмяСсылки} СхемаТЧ = A1sDocs.TabSchema("ВыпускПродукцииУслуг", "Продукция"); // Перебрать схему для диагностики Для Каждого Поле Из СхемаТЧ Цикл Если Поле.ЭтоСправочник Тогда Сообщить(Поле.Имя + " → ссылка на " + Поле.ИмяСсылки); Иначе Сообщить(Поле.Имя + " → " + Поле.ТипСтрока); КонецЕсли; КонецЦикла; // ── AttrSchema: схема реквизитов шапки ─────────────────────────────────── СхемаШапки = A1sDocs.AttrSchema("ВыпускПродукцииУслуг"); // ── TabNames: имена всех ТЧ документа ──────────────────────────────────── ИменаТЧ = A1sDocs.TabNames("ВыпускПродукцииУслуг"); Сообщить("ТЧ документа: " + A1sAR.Join(ИменаТЧ, ", ")); // → "ТЧ документа: Продукция, Услуги, Возвраты" // ── TabColumnNames: имена реквизитов конкретной ТЧ ──────────────────────── КолонкиТЧ = A1sDocs.TabColumnNames("ВыпускПродукцииУслуг", "Продукция"); Сообщить("Колонки ТЧ Продукция: " + A1sAR.Join(КолонкиТЧ, ", ")); // ── MetaNames: список всех документов конфигурации ─────────────────────── ВсеДокументы = A1sDocs.MetaNames(); КолвоДокументов = A1sDocs.MetaCount(); Сообщить("Всего видов документов: " + КолвоДокументов);
EnsureByType, для остальных копируете напрямую. Именно так работает
AddRowAuto внутри.
A1sDocs — все экспортируемые функции
| Функция | Сигнатура | Что делает |
|---|---|---|
| Проверки типа | ||
| IsDocument | IsDocument(Value) → Bool | Является ли документом |
| IsRef | IsRef(Value) → Bool | Является ли ссылкой на документ |
| IsObject | IsObject(Value) → Bool | Является ли объектом документа |
| GetObject | GetObject(Value) → DocumentObject | Привести к объекту |
| GetRef | GetRef(Value) → DocumentRef | Привести к ссылке |
| Manager | Manager(Name) → DocumentManager | Менеджер документа по имени |
| Empty | Empty(Name) → DocumentRef | Пустая ссылка |
| Создание | ||
| Of | Of(Name, Header?) → DocumentObject | Создать документ с шапкой (не записан) |
| OfAuto | OfAuto(Name, Header?) → DocumentObject | Создать с авторазрешением строк шапки |
| OfBase | OfBase(Name, Base, Overrides?) | Создать на основании другого документа |
| Copy | Copy(DocRef, Overrides?) | Скопировать документ с перекрытием реквизитов |
| Шапка | ||
| FillHeader | FillHeader(Doc, Data) | Заполнить шапку из структуры |
| FillHeaderAuto | FillHeaderAuto(Doc, Data) | Заполнить с авторазрешением строк |
| Set | Set(Doc, Key, Value) | Установить один реквизит шапки |
| Update | Update(DocRef, Fields, Write?) | Обновить реквизиты существующего документа |
| Табличные части | ||
| AddRow | AddRow(Doc, Tab, RowData) | Добавить строку (ссылки готовы) |
| AddRowAutov2.1 | AddRowAuto(Doc, Tab, RawData) | Добавить строку с авторазрешением ссылок |
| AddRows | AddRows(Doc, Tab, Source, Map?) | Массово из ТЗ или массива структур |
| LoadRowsv2.1 | LoadRows(Doc, Tab, Rows[]) | Массово с авторазрешением ссылок |
| SetLoadRowsv2.1 | SetLoadRows(Doc, Tab, Rows[]) | Очистить + LoadRows |
| LoadRowsMappedv2.1 | LoadRowsMapped(Doc, Tab, Rows[], Map) | RenameFields + LoadRows за один вызов |
| SetLoadRowsMappedv2.1 | SetLoadRowsMapped(Doc, Tab, Rows[], Map) | Очистить + LoadRowsMapped |
| ClearRows | ClearRows(Doc, Tab) | Очистить ТЧ |
| SetRows | SetRows(Doc, Tab, Source, Map?) | ClearRows + AddRows |
| ExportRows | ExportRows(Doc, Tab, Cols?) | Выгрузить ТЧ в ТаблицуЗначений |
| RowCount | RowCount(Doc, Tab) → Num | Количество строк в ТЧ |
| Запись и проведение | ||
| Write | Write(Doc) → DocumentRef | Записать без проведения |
| Post | Post(Doc, Force?) → DocumentRef | Записать и провести |
| Unpost | Unpost(Doc) → DocumentRef | Отменить проведение |
| MarkForDeletion | MarkForDeletion(DocRef) → Bool | Пометить на удаление |
| PostAll | PostAll(Docs[], Stop?) → {Success, Failed} | Провести массив |
| UnpostAll | UnpostAll(Docs[]) → {Success, Failed} | Отменить проведение у массива |
| ProcessAll | ProcessAll(Docs[], Action, Stop?) | Произвольное действие над массивом |
| UpdateAll | UpdateAll(Docs[], Fields) → {Success, Failed} | Обновить реквизиты массива |
| Поиск | ||
| ByNumber | ByNumber(Name, Num, End?, Start?) | По номеру |
| ByAttr | ByAttr(Name, AttrName, Value) | По реквизиту |
| ByGUID | ByGUID(Name, GUIDStr) | По GUID |
| AllInPeriod | AllInPeriod(Name, Start, End, Filter?) | Все за период с фильтром |
| AllPosted | AllPosted(Name, Start, End) | Проведённые за период |
| AllUnposted | AllUnposted(Name, Start, End) | Непроведённые за период |
| AllByBase | AllByBase(Name, BaseDoc, AttrName?) | Все по документу-основанию |
| PickByAttr | PickByAttr(Name, AttrName, Values[]) | IN-запрос по массиву значений |
| Refs | Refs(Name, Where?, Params?, Order?) | Произвольное WHERE → массив ссылок |
| Count | Count(Name, Where?, Params?) → Num | Количество с условием |
| Exists | Exists(Name, Where?, Params?) → Bool | Проверить наличие с условием |
| Валидация | ||
| IsPosted | IsPosted(DocRef) → Bool | Документ проведён? |
| IsEmpty | IsEmpty(Name, Value) → Bool | Пустая ссылка? |
| Details | Details(DocRef, ExtraAttrs?) → Structure | Реквизиты без GetObject |
| UnpostedDocs | UnpostedDocs(Docs[]) → Array | Отфильтровать непроведённые |
| Метаданные | ||
| AttrType | AttrType(DocName, AttrName) | Тип реквизита шапки |
| AttrSchema | AttrSchema(DocName, StdAttr?) | Схема всех реквизитов шапки |
| TabAttrType | TabAttrType(DocName, Tab, AttrName) | Тип реквизита строки ТЧ |
| TabSchema | TabSchema(DocName, Tab, StdAttr?) | Схема всех реквизитов ТЧ |
| TabNames | TabNames(Name) → Array | Имена всех ТЧ документа |
| TabColumnNames | TabColumnNames(DocName, Tab) → Array | Имена реквизитов ТЧ |
| MetaCount | MetaCount() → Num | Количество видов документов в конфигурации |
| MetaNames | MetaNames() → Array | Список имён всех документов конфигурации |
| On | On(NameOrDoc, Header?) → Fluent | Fluent-обёртка A1sDP_Docs |
| SelfTest | SelfTest() → Bool | Самотест без реальной БД |