arefaste/1C_Forums huggingface dataset:
Всем Доброго времени суток!
Очередная "Трудная" ситуация! По крайней мере для меня:(
Ситуация такая (Конфигурация БП 3.0, Документ: "РеализацияТоваровУслуг"):
При создании документа "Ручками" после выбора Контрагента автоматически заполняются "Расчеты": т.е. "Счета учета" и "Цены в документе" это в "Шапке". Тоже происходит и при добавлении в табличную часть: При выборе "Номенклатуры" заполняются "Счета учета", "Коэффициенты" и "Единицы измерения" и при том все делает правильно!
Но при создании Документа программно, все поля пустые!
Собственно Вопрос: Где Конфигурация берет данные и Как заполняет новый документ (РС "Счета учета номенклатур" пустой!)!!! Не могу найти:(
Можно конечно заполнять каждое поле отдельной строкой! Но, что касается "Счетов учета", то я вообще не могу найти, от куда они заполняются! Да и в принципе этот подход изначально не правильный (На мой взгляд), раз Конфигурация заполняет документ, значит то же можно Сделать и программно!
---
Смотрите в модуле объекта процедуру ОбработкаЗаполнения(). В новых конфигурациях стартовая логика как раз там находится.
Или проще.
Когда программно создадите документ, попробуйте выполнить

```1c
    ДокументОбъект.Заполнить(Неопределено);
```

Посмотрите, что из необходимого заполнится.
---
Надо смотреть события ПриИзменении для контрагента, а в тч - например, номенклатуры. Для номенклатуры, насколько я помню, из номенклатурной группы берется вся эта инфа. В общем, надо изучить эти события. Пр программном заполнении не сработает, скорее всего, потому как не из формы это делается, но прописать можно. Делал подобную задачу - можно сделать.
---
Группы вообще пустые!
---
Включи отладчик, включи замер производительности и добавь строку в документ.
Останови замер.
Он покажет тебе все строки, которые выполнились. Вот в них и ищи
---
Спасибо! Сейчас попробую
---
Извините! Вы имеете в виду
(3) включи замер производительности и добавь строку в документ
Это в Документ Реализации!?
---
Или в Свой!?
---
в конфигураторе включи замер производительности, в типовом документе РТиУ в режиме предприятия заполни нужный реквизит или добавь строку табличной части. Останови замер. Там вылезет портянка из вызываемых функций и процедур. Вдумчиво анализируй их, чтобы понять откуда что вызывается.
---
Теперь по понятнее! Спасибо, сейчас посмотрю!
---
вот здесь посмотри. Конкретно Функция НачатьЗаполнениеСчетовУчета()
---
Спасибо, сейчас посмотрю!
---
Смотрите в модуле объекта процедуру ОбработкаЗаполнения(). В новых конфигурациях стартовая логика как раз там находится.
Или проще.
Когда программно создадите документ, попробуйте выполнить

```1c
    ДокументОбъект.Заполнить(Неопределено);
```

Посмотрите, что из необходимого заполнится.
---
Да, помогло!
При том не только в шапке, но и в табличной части!
Спасибо!
БУ 2.0
Как правильно построить запрос в регистр бухгалтерии Хозрасчетный, чтобы для номенклатуры получить себестоимость по партиям? И с какой таблицы нужно запрашивать данные? Впервые дело с бухгалтерией имею
---
Не актуально
---
Не актуально
Почему возникает эта ошибка? Не могу разобраться никак. Возникает на этой строчке.

ДвоичДан = Новый ДвоичныеДанные(ПутьКФайлу);

ПутьКФайлу это строка содержащая полный путь к файлу.

В базе локальной работает без проблем. В точно такой же базе в Готовом рабочем месте. Вылетает эта ошибка.
---
Решил проблему тем, что не стал запускать предприятие в браузере
---
Потому что на локальной базе процедуры НаКлиенте и НаСервере выполняются на одном и томже компьютере. При работе в режиме клиент-сервер процедуры НаКлиенте выполняются на клиентском компьютере, а процедуры НаСервере выполняются на сервере 1С Предприятия, и на нем может не существовать файла который указан на клиенте. Поэтому сначала получаете файл в процедуре НаКлиенте, а дальше уже если нужно передаете на сервер и работаете с ним.
---
я и пытаюсь файл в виде двоичных данных на сервер передать. Ошибка возникает когда я в двоичные данные передаю файл
---
просто сервер не видит вашей папки!
---
эта строчка находится в процедуре НаКлиенте
---
Решил проблему тем, что не стал запускать предприятие в браузере
---
Для веб клиента нужно еще заморачиваться с установкой расширения для работы с файлами.
Подскажите, пожалуйста,как сгенирировать такие файлы по определенному расписанию за прошлый год

```1c
    Таблица = Новый ТабличныйДокумент();

    СКД = Отчеты.МаркетинговоеИсследованиеЦен.ПолучитьМакет("Макет");
    Настройки = СКД.НастройкиПоУмолчанию;
    Период = Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Период.Значение = ТекущаяДата();

    Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    //Передаем в макет компоновки схему, настройки и данные расшифровки
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки, Расшифровка);
    ВнешниеПараметры = Новый Структура;

    //Выполним компоновку с помощью процессора компоновки
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеПараметры, Расшифровка);

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

    ИмяФайла="Отчет" + " "+ СОКРЛП(Формат(ТекущаяДата(),"ДФ=гггг.ММ.дд"))+ ".xls";
    ПутьКФайлу = "C:\XLSOut\"+ ИмяФайла;
    Таблица.Записать(ПутьКФайлу,ТипФайлаТабличногоДокумента.XLS);
```
---
Ваш код в процедуру выделите с параметром дата, а потом цикл:

```1c
    ДатаНач = Дата(2019,1,1);
    ДатаКон = Дата(2020,1,1);
    Дата = ДатаНач;
    Пока Дата < ДатаКон Цикл
    СформироватьОтчетНаДату(Дата);
    Дата = КонецМесяца(Дата) + 1;
    КонецЦикла;
```
---
Ваш код в процедуру выделите с параметром дата, а потом цикл:

```1c
    ДатаНач = Дата(2019,1,1);
    ДатаКон = Дата(2020,1,1);
    Дата = ДатаНач;
    Пока Дата < ДатаКон Цикл
    СформироватьОтчетНаДату(Дата);
    Дата = КонецМесяца(Дата) + 1;
    КонецЦикла;
```
---
Если по расписанию, то надо ещё создать регламентное задание
---
я так понял ему просто нужно за каждый месяц или неделю, в этом смысле
8.3.14.1565 - Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.74.58)
Друзья, есть внешняя обработка заполнения, результатом выполнения, является открытие заполненной формы элемента подчиненного справочника "БанковскиеСчета" по контрагенту. При этом если вызывать обработку из формы списка контрагентов, то данные заполняются, но форма не открывается, если вызвать обработку из формы элемента контрагента, то форма открывается. Не пойму в чем мулька...Как так то?
Кусок кода

```1c
    //команда на форме
    &НаКлиенте
    Процедура ПолучитьБанкИзМТ(Команда)
    ID = ПолучитьIDНаСервере(Объект.СсылкаНаОбъект);
    ПолучитьБанк(Формат(Число(ID),"ЧЦ=7; ЧВН=; ЧГ=0"),Объект.СсылкаНаОбъект);//ЧВН=;
    Владелец = ПолучитьВладельца(Объект.СсылкаНаОбъект);
    Если Владелец.Количество() > 0 Тогда
    Форма = ПолучитьФорму("Справочник.БанковскиеСчета.Форма.ФормаЭлемента",Владелец);
    Форма.Открыть();
    КонецЕсли;
    КонецПроцедуры

    &НаКлиенте
    Процедура ОткрываемФорму(СсылкаНаОбъект)
    Владелец = ПолучитьВладельца(СсылкаНаОбъект);
    Если Владелец.Количество() > 0 Тогда
    Форма = ПолучитьФорму("Справочник.БанковскиеСчета.Форма.ФормаЭлемента",Владелец);
    Форма.Открыть();
    КонецЕсли;
    КонецПроцедуры

    //команда внешней обработки заполнения
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

    СсылкаНаОбъект = ОбъектыНазначенияМассив[0];
    ID = ПолучитьIDНаСервере(СсылкаНаОбъект);
    ПолучитьБанк(Формат(Число(ID),"ЧЦ=7; ЧВН=; ЧГ=0"),СсылкаНаОбъект);
    ОткрываемФорму(СсылкаНаОбъект);//ЧВН=;
    //Владелец = ПолучитьВладельца(СсылкаНаОбъект);
    //Если Владелец.Количество() > 0 Тогда
    //Форма = ПолучитьФорму("Справочник.БанковскиеСчета.Форма.ФормаЭлемента",Владелец);
    //Форма.Открыть();
    //КонецЕсли;
    КонецПроцедуры
```
---
Лучше использовать функцию ОткрытьФорму(). И в параметрах ключа должно быть ссылочное значение
---
СсылкаНаОбъект параметры ключа где?
---
Лучше использовать функцию ОткрытьФорму(). И в параметрах ключа должно быть ссылочное значение
---
Спасибо за ликбез, то что нужно
Да же не знаю как описать толком проблему, Фактически нужно что бы было два вложенных отчета СКД, один - простая группировка, в детальных записях которой отчет в виде таблицы, со связью на ссылочное поле, дело в том, что у каждой детализации колонки и их количество разные.
---
Уже получилось как описал выше, оказалось важным с начало сделать группировку, в ней детальные записи, а в них вложенную таблицу, без первой группировки создается одна сквозная таблица с общим набором колонок, с группировкой создается множество таблиц с разным набром колонок у каждой записи.
---
Если не можете описать словами, попробуйте нарисовать, что Вы хотите увидеть.
А если Вам самим не понятно, что нужно получить на выходе, то на какой ответ Вы рассчитываете тут?
---
Что надо я описал, у каждой детальной записи должна быть своя таблица со своим количеством и набором колонок, у каждой разные. по сути множество таблиц.
Кажется понял, не могу пока проверить правильно ли, но у детальных записей первой группировки по правой кнопке можно создать вложенную таблицу, правильно?
---
В вашем словесном описании слишком уж высок уровень абстракции для понимания. От чего хоть состав колонок-то зависит?
---
Уже получилось как описал выше, оказалось важным с начало сделать группировку, в ней детальные записи, а в них вложенную таблицу, без первой группировки создается одна сквозная таблица с общим набором колонок, с группировкой создается множество таблиц с разным набром колонок у каждой записи.
Здравствуйте. УТ 3.2 упр.формы
Хотелось бы в макет печатной формы добавить Штрих-код и Производителя для товаров. Возможно ли это сделать в пользовательском режиме или нужно через конфигуратор искать? Пытался параметр Производитель вывести - нету результата
---
В пользовательском режиме в типовые печатные формы нельзя добавлять реквизиты. Нужно сделать внешнюю печатную форму с отредактированным макетом и дописанным кодом для вывода нужных реквизитов в этот макет.
---
что за печатная форма? В ценниках УТ 11, если не ошибаюсь, можно добавлять реквизиты, в режиме пользователя.
---
В пользовательском режиме в типовые печатные формы нельзя добавлять реквизиты. Нужно сделать внешнюю печатную форму с отредактированным макетом и дописанным кодом для вывода нужных реквизитов в этот макет.
---
не совсем согласен https://its.1c.ru/db/updinfo#content:588:1
Здравствуйте. Пытаюсь напечатать в фоновом задании на сервере:

```1c
    //........
    ТабличныйДокумент.Записать(ИмяПечатногоФайла, ТипФайлаТабличногоДокумента.PDF);

    СистемнаяИнфо = Новый СистемнаяИнформация;
    Если СистемнаяИнфо.ТипПлатформы = ТипПлатформы.Windows_x86
    Или СистемнаяИнфо.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда

    Shell = Новый COMОбъект("Shell.Application");

    Shell.ShellExecute(ИмяПечатногоФайла, ", ", "print", 1);

    КонецЕсли;
```

Запускаю задание вручную под собой. Добавлен сетевой принтер по умолчанию. Но печать не идет.
Я как понял, 1С печатает только с клиента ?
Есть какие-то решения, чтобы с севера можно было отправить на печать ? Т.к. есть задача, инициировать печать, когда пользователь отправляет команду с терминала сбора данных, который подключен к базе 1с через web-сервис, и соответственно пользователь не работает напрямую в 1С базе.
---
Есть ещё утилита pdftoprinter - http://www.columbia.edu/~em36/pdftoprinter.html
---
Пользователь подключён терминально ? Доступ к портам есть?
---
Пользователь в конечном счете будет подключен через приложение под android на тсд, которое связывается с 1С web-сервисом. Цель, чтобы из сеанса web-сервиса инициировать печать.
---
печатайте через акробат или фоксит. Печатную форму сохраняйте в пдф, потом FoxitReader.exe /t C:\print.pdf
---
А можете пожалуйста в 1С коде написать, как отправить на Acrobat ?
---
https://help.foxitsoftware.com/kb/how-to-specify-a-network-printer-with-t-command-line-option.php

```1c
    WshShell=Новый COMОбъект("Wscript.Shell");
    СтрокаКоманды = ""C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"" /t ""C:\test.pdf"" "HP Universal Printing PCL 6 (v5.7.0)"";
    WshShell.run(СтрокаКоманды);
```
---
только с кавычками разберитесь, я там где то пропустил или лишние поставил
---
Спасибо. Печать идет, когда запускаю из командной строки сам ) Но из 1С вроде отрабатывает код, но печати нет )
---
накиньте прав администратора на пользователя под которым запускается служба 1с
---
Есть ещё утилита pdftoprinter - http://www.columbia.edu/~em36/pdftoprinter.html
---
Попробовал "pdftoprinter". Отработал нормально с фонового задания. Правда отступ слева исчез.
---
Вот так работает норм:

```1c
    ИмяПечатногоФайла = ПолучитьИмяВременногоФайла("PDF");
    ТабличныйДокумент.Записать(ИмяПечатногоФайла, ТипФайлаТабличногоДокумента.PDF);

    WshShell = Новый COMОбъект("Wscript.Shell");
    СтрокаКоманды = ""C:\PDFtoPrinter.exe" "" + ИмяПечатногоФайла + "" "Samsung - IT"";
    WshShell.run(СтрокаКоманды);
```
Приветствую, господа!
1с8.3.12, самопис, УФ

На данный момент по кнопке открываю форму выбора счетов с параметрами:

```1c
    ОткрытьФорму("Справочник.БанковскиеСчета.ФормаВыбора", Новый Структура("Отбор", Новый Структура("НеАктуален, ПометкаУдаления", Ложь, Ложь)), ЭтотОбъект);
```

Теперь требуется отбор провести по "Владельцу"
Владельцем спарвочника явлюятся справочники "Организация", "Контрагенты", "Сотрудники"

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

```1c
    Новый Структура("Владелец", Организация)
```

Чем в этом когде заменить "Организация"?
---
```1c
    СтандартнаяОбработка=Ложь;
    фиксНастройки = Новый НастройкиКомпоновкиДанных;
    Отбор = фиксНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
    Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
    Отбор.ПравоеЗначение = ПолучитьСписокМагазинов();
    Отбор.Использование = Истина;
    Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ФиксированныеНастройки", фиксНастройки);
    ОткрытьФорму("Справочник.Магазины.ФормаВыбора", ПараметрыФормы, Элемент);

    Функция ПолучитьСписокМагазинов()
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    | Магазины.Ссылка КАК Ссылка
    |ИЗ
    | Справочник.Магазины КАК Магазины
    |ГДЕ
    | Магазины.Наименование ПОДОБНО "Главный%";
    Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
    КонецФункции
```
---
управляемые формы, динамический список, задать отбор по Типу Владельца, вполне реално
---
```1c
    СтандартнаяОбработка=Ложь;
    фиксНастройки = Новый НастройкиКомпоновкиДанных;
    Отбор = фиксНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
    Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
    Отбор.ПравоеЗначение = ПолучитьСписокМагазинов();
    Отбор.Использование = Истина;
    Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ФиксированныеНастройки", фиксНастройки);
    ОткрытьФорму("Справочник.Магазины.ФормаВыбора", ПараметрыФормы, Элемент);

    Функция ПолучитьСписокМагазинов()
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    | Магазины.Ссылка КАК Ссылка
    |ИЗ
    | Справочник.Магазины КАК Магазины
    |ГДЕ
    | Магазины.Наименование ПОДОБНО "Главный%";
    Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
    КонецФункции
```
---
управляемые формы, динамический список, задать отбор по Типу Владельца, вполне реално
Как известно, в MS Word есть такая операция как "слияние", когда в документе прописаны поля, которые, при слиянии, заменяются значениями одноименных полей из записей источника данных. Когда источником данных выступает таблица Excel, то используется в качестве коннект-строки такой текст:
```1c
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<ИмяДляИсточника>;Extended Properties="Excel 12.0;HDR=YES;IMEX=1"
```
, где <ИмяДляИсточника> - полное имя Excel-файла. Далее, в другом параметре ещё указывается запрос, выдающий непосредственно данные "SEL ECT * FR OM [List1$]".
Возможно ли что-то похожее проделать с базой 1С? Т.е. существует ли подобная строка для соединения, или это недостижимая мечта?
---
У 1с файловой базы нет драйвера odbc (язык запросов в 1с только для внутреннего пользования).
Как его написать и добавить в Виндоус я не знаю.
Для клиент-серверной базы это драйвер из поставки СУБД или сом соединение с 1с.
---
Например, в любой форме списка есть возможность вывести список в текст или в табличный документ.
Универсальный отчёт можно сформулировать по любым таблицам.
В консоль запросов можно сохранить как запрос, так и результат его выполнения.
---
Всё это замечательно, то речь не об этом.
Нужно сделать слияние в Word-е, где источником данных был бы, к примеру, запрос к базе данных 1С. С Excel-ем это работает, с текстовым файлом с разделителями - тоже. Думаю, если взять MySQL какой-нибудь, то тоже через ODBC что-то можно сделать.
---
Если вы про заполнение "параметров" в тексте Word из 1С , то это работало уж по крайней мере с 8.1 ...
Щас и не вспомню уже...
Либо выражовывайтесь пояснее
---
Просто из 1С заполнить документ Word по закладкам - это не проблема. Проблема, когда таких документов надо около 1000, а то и больше. Механизм слияния позволяет получить результат раз в 100 быстрее, причём одним файлом.
(5) Понятно. Соединиться не получится... Придётся сначала выгрузить данные во временный файл и делать коннект из Word-а уже к нему. А потом "прибивать" за ненадобностью.
---
У 1с файловой базы нет драйвера odbc (язык запросов в 1с только для внутреннего пользования).
Как его написать и добавить в Виндоус я не знаю.
Для клиент-серверной базы это драйвер из поставки СУБД или сом соединение с 1с.
---
Фактически получается, что данные 1С - "вещь в себе". Если не делать соединения с базой данных, где хранятся данные 1С (т.е. напрямую к SQL-серверу или Oracle, к примеру), то без посредничества самой 1С достать данные из неё нельзя. А жаль :(
---
а какие 1000 документов? если у вас один Ворд связан с одним Екселем?

В Ворде можно использовать СОМ соединение (внешнее)
просто на бейсике пишите обработчик кнопки на Ворде: Заполнить,
в ней соединяетесь с 1С выполняете нужные запросы с параметрами, получаете данные и тут-же размещаете в ворде.
да и из 1С был опыт формирования 1000-ннн документов по списку контрагентов да и еще отправка их по почте.
---
К сожалению, админы и СБ против внешних соединений (через COM) с базами 1С :(
Добрый день, уважаемые форумчане. Помогите решить задачку.

Имеется xls файл примерно следующего вида:
ФИО Сумма Дата1 Дата2
Иванов ИИ 50 01.05.2018
Иванов ИИ 150 06.09.2018
Иванов ИИ 80 08.07.2019
Петров ПП 70 09.10.2019
Петров ПП 200 06.11.2018
Петров ПП 120 12.12.2018

Есть самописная конфигурация (на платформе 8.2, без УФ), в которой присутствует справочник с реквизитами, как колонки Excel (ФИО, сумма, Дата1, Дата2) и обработка, которая читает этот файл и грузит данные в справочник.

Как можно при загрузке свернуть данные таким образом, чтобы получился один элемент справочника с ФИО, общей суммой и наибольшей датой в каждой колонке? Например, Иванов ИИ, 280, 08.07.2019, 06.09.2018. А Петров ПП, соответственно, 390, 09.10.2019, 12.12.2018
---
Делайте Группировку или итоги, а по показателям от суммы - сумму, а от даты - максимум

   Сумма(Сумма) Максимум(Дата)
---
Что-то таблица плохо отображается. Excel-файл во вложении
---
Делайте Группировку или итоги, а по показателям от суммы - сумму, а от даты - максимум

   Сумма(Сумма) Максимум(Дата)
---
Благодарю, всё получилось.
---
.
---
да-да, именно так, спасибо
Господа. Столкнулся с работой предыдущего человека в отчёте. Есть ли возможность как-то заменить данный код на интервал годов?
```1c
    ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    2008 КАК Год

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    2009

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    2010

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    2011

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    2012

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    2013) КАК ТГоды
    ПО (ИСТИНА)
    ГДЕ
    ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, ТГоды.Год - 1), МЕСЯЦ, ТМесяцы.Месяц - 1), ДЕНЬ, ТДни.День - 1) МЕЖДУ &Дата1 И &Дата2
```

Список годов был до 2019, здесь в примере сократил. Но не бесконечно же добавлять каждый раз новый год? Может есть вариант сократить запрос?
---
Если есть регистр производственного календаря, то можно оттуда. Следить только придется за его заполненностью. А ещё где-то на просторах мисты и инфостарта был запрос на формирование последовательности дат запросом. Но там механизм неочевидный, потом люди, кто поддерживает код после тебя, могут запутаться. Ну и ещё один вариант: динамическое формирование текста запроса на создание последовательности дат, так в основном в типовых делают.
---
Если есть регистр производственного календаря, то можно оттуда. Следить только придется за его заполненностью. А ещё где-то на просторах мисты и инфостарта был запрос на формирование последовательности дат запросом. Но там механизм неочевидный, потом люди, кто поддерживает код после тебя, могут запутаться. Ну и ещё один вариант: динамическое формирование текста запроса на создание последовательности дат, так в основном в типовых делают.
Создал СКД макет во внешней обработке, пытаюсь передать в него параметры и сформировать отчет, для примера использую код внешнего отчета, так он ругается что КомпоновщикНастроек такая переменная не определена, понял сто она не определена если нет оснвной схемы данных, и как дальше быть?
Вот код.

```1c
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб = Истина;
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    //ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";

    СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = КомпоновщикНастроек.Настройки;

    ПараметрыДанныхДата1 = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0];
    ПараметрыДанныхДата1.Значение = МассивОбъектов;
    ПараметрыДанныхДата1.Использование = Истина;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
```
---
Вот так получилось

```1c
    // Загружаем настройки выбранной СКД в компоновщик настроек.
    ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных);
    КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
```
---
В качестве реквизита пробовали добавить?
---
В качестве реквизита пробовали добавить?
---
Хм, реквизит можно добавить, но наверно нужно его еще связать с параметрами нужного макета СКД
---
Вам и карты в руки :)
---
а как?
---
Вот так получилось

```1c
    // Загружаем настройки выбранной СКД в компоновщик настроек.
    ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных);
    КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
```