Каждый документ проходит один и тот же путь. 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 | Самотест без реальной БД |