arefaste/1C_Forums huggingface dataset:
Как запустить макрос, записанный в книге Microsoft Excel?
---
```1c
    Попытка

    // Создать объект.
    Excel = Новый COMОбъект("Excel.Application");

    Исключение
    Сообщить("Не удалось инициализировать Excel");
    Возврат;
    КонецПопытки;

    Попытка

    // В реальном примере путь может быть совершенно другим.
    Excel.Workbooks.Open("c:\doc.xls");

    // Запустить макрос с именем "Оформление".
    Excel.Run("Оформление");
    Excel.Visible = Истина;

    Исключение

    // Если произойдет ошибка выводятся данные об ошибке и объект закрывается.
    Сообщить(ОписаниеОшибки());
    Excel.Quit();
    КонецПопытки;
```
---
```1c
    Попытка

    // Создать объект.
    Excel = Новый COMОбъект("Excel.Application");

    Исключение
    Сообщить("Не удалось инициализировать Excel");
    Возврат;
    КонецПопытки;

    Попытка

    // В реальном примере путь может быть совершенно другим.
    Excel.Workbooks.Open("c:\doc.xls");

    // Запустить макрос с именем "Оформление".
    Excel.Run("Оформление");
    Excel.Visible = Истина;

    Исключение

    // Если произойдет ошибка выводятся данные об ошибке и объект закрывается.
    Сообщить(ОписаниеОшибки());
    Excel.Quit();
    КонецПопытки;
```
Конфигурация любая типовая, где есть УФ.
Есть спр группы доступа.

Каким образом возможно программно изменить ТЧ ограничения доступа. Чтобы вид доступа "Группы доступа физических лиц" имел значение: Все разрешены, без исключений.

Попытался удалить из ТЧ ВидыДоступа строку где вид доступа равен типу ГруппыДоступаФизическихЛиц

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

    Запрос.УстановитьПараметр("Ссылка", Справочники.ГруппыДоступа.НайтиПоНаименованию("Сотрудник кадровой службы Управы района Москворечье-Сабурово города Москвы"));
    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбъектГр = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

    ВидДоступа = ОбъектГр.ВидыДоступа.Найти(ПланыВидовХарактеристик.ВидыДоступа.ГруппыДоступаФизическихЛиц,"ВидДоступа");
    Если ВидДоступа <> Неопределено Тогда
    ОбъектГр.ВидыДоступа.Удалить(ВидДоступа);
    Попытка
    ОбъектГр.Записать();
    Исключение
    Сообщить("Ошибка перезаписи группы " + ВыборкаДетальныеЗаписи.Ссылка +" "+ОписаниеОшибки());
    КонецПопытки;
    КонецЕсли;
    КонецЦикла;
```

После удаления в режиме предприятия запросом - вижу, что строка не удалилась. При открытии элемента спр группы доступа появляется диалог:
Изменился состав видов доступа профиля этой группы. Обновить? Если обновить, то открывается форма в которой есть запись по ограничению по группе(.
 Каким образом можно сделать значение доступа = все разрешены.?
---
Manticor,

```1c
    Элемент = Выборка.Ссылка.ПолучитьОбъект();
    Элемент.ЗначенияДоступа.Очистить();
    //здесь редактируем конечно нужную строку, это для примера 1 ая
    Элемент.ВидыДоступа[0].ВсеРазрешены = Истина;
    Элемент.Записать();
```
---
Manticor,

```1c
    Элемент = Выборка.Ссылка.ПолучитьОбъект();
    Элемент.ЗначенияДоступа.Очистить();
    //здесь редактируем конечно нужную строку, это для примера 1 ая
    Элемент.ВидыДоступа[0].ВсеРазрешены = Истина;
    Элемент.Записать();
```
---
Caspersky, все гениальное просто)))
Платформа 8.2.19.106

На сервере удаляю строку в ТЧ
Если текущая строка 1, то удаляется вторая, если строк в ТЧ больше 1.
Причем в отладчике видно, что в ТЧ объекта удалена нужная строка.

```1c
    ДокЗаявка=реквизитформывзначение("Объект");
    ТекСтр=ДокЗаявка.РезультатОтвета.найти(Контр,"Контрагент");
    ДокЗаявка.РезультатОтвета.Удалить(ДокЗаявка.РезультатОтвета.Индекс(ТекСтр));
    ЗначениеВРеквизитФормы(ДокЗаявка,"Объект");
```

Как удалить первую строку?
---
tolyan_ekb,
рабочий код на клиенте

```1c
    ИдентификаторСтроки = Элементы.РезультатаОтвета.ТекущаяСтрока;
    ЭлементКоллекции = Объект.РезультатОтвета.НайтиПоИдентификатору(ИдентификаторСтроки);
    ИндексЭлементаКоллекции = Объект.РезультатОтвета.Индекс(ЭлементКоллекции);
    Объект.РезультатОтвета.Удалить(ИндексЭлементаКоллекции);
```
---
tolyan_ekb, если удалять сразу на клиенте,
Объект.РезультатОтвета.Удалить(Элементы.РезультатОтвета.ТекущаяСтрока);
то когда строк больше 1 возникает ошибка, при удалении
Недопустимое значение параметра (параметр номер '1')
Т.к. номер текущей строки больше существующего номера строки в табличной части.
---
tolyan_ekb,
рабочий код на клиенте

```1c
    ИдентификаторСтроки = Элементы.РезультатаОтвета.ТекущаяСтрока;
    ЭлементКоллекции = Объект.РезультатОтвета.НайтиПоИдентификатору(ИдентификаторСтроки);
    ИндексЭлементаКоллекции = Объект.РезультатОтвета.Индекс(ЭлементКоллекции);
    Объект.РезультатОтвета.Удалить(ИндексЭлементаКоллекции);
```
---
tolyan_ekb, индекс начинается с 0, а номер строки с 1.
---
а можно задачу более формально описать?
---
vx_gas, задача: правильно удалить любую строку в ТЧ документа.
Первый 2 поста некорректно удаляли строку
---
Индекс на еденичку увеличь, при удалении номера строки
---
fzt, пройденный этап. Манипуляции с приращениями индекса не давали результатов.
---
решение в 3, если что
Как перебрать элементы структуры?
---
```1c
    Для Каждого Элемент из СтруктураПараметров Цикл
    Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
    КонецЦикла;
```
---
```1c
    Для Каждого Элемент из СтруктураПараметров Цикл
    Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
    КонецЦикла;
```
Здравствуйте!
Скажите, пожалуйста, каким образом можно оформить сортировку номенклатуры по коду в документе (к примеру, документ "поступление товар и услуг")?
Спасибо.
---
AndrewUs, не зачем ради этого копаться в Конфигураторе. Проще сделать обработку заполнения, которая будет сортировать по коду.
А если это не то, что нужно, то самое время вам рассказать подробнее, что, когда, зачем и почему должно сортироваться по коду.
---
AndrewUs, Не понятен вопрос
Сортировка нужна в табличной части документа?
если да - то самый простой способ - выведи код номенклатуры в таб часть и по нему осуществляй сортировку
Второй способ - сортировку делай программно - выбирай таб часть запросом и сортируй по коду номенклатуры - после этого загружай обратно в таб часть (ну это так на вскидку :) )
---
Да, сортировка нужна в табличной части самого документа. Код я вывел, но возможности отсортировать нет. По алфавиту можно отсортировать, но по колонке номенклатура, а по колонке "код" возможности сортировки вообще нет.
---
AndrewUs, колонку Код рисовали программно?
---
Код я вывел А как вывели? Реквизит "Код" в табличную часть добавили? Если нет - то и не будет сортировки. Аналогично: по колонке "Сумма" сортировка есть, а по "Всего" - нету, потому что это вычисляемая колонка.
---
AndrewUs, Заказ-наряд ?
Так вот, код - формируется там уже когда строка выводится, при получении данных, вместе с полями остатков, заказано и т.п.
В самой структуре метаданных этого поля нет.
Соответственно, отсортироваться по нему в данном раскладе - не получится.
---
Boneman, даже, если в конфигураторе покопаться?
---
AndrewUs, не зачем ради этого копаться в Конфигураторе. Проще сделать обработку заполнения, которая будет сортировать по коду.
А если это не то, что нужно, то самое время вам рассказать подробнее, что, когда, зачем и почему должно сортироваться по коду.
---
Простите, сразу обрисую ... конфигурация 1С Рарус Альфа-Авто: Автосалон+Автосервис+Автозапчасти Проф.
Там эта колонка скрыта, но если нажать на "Настройка списка" и поставить галочку напротив "код" в поле документа появляется эта колонка.
---
AndrewUs, в метаданных табличной части - есть эта колонка ?
---
да всё как говорили
Доброе время суток! Помогите пожалуйста.. есть отчет на СКД на английском. Всё хорошо, кроме поля "Итого".. какпоменять название поля на "Total" ?
---
1. Сформировать отчет в английском интерфейсе.
2. Макеты.
3. Постобработка.
---
```1c
    ПроцессорВывода.НачатьВывод();
    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    Пока ЭлементРезультата <> Неопределено Цикл
    ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    КонецЦикла;
    ПроцессорВывода.ЗакончитьВывод();

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

    Если ТекущаяОбласть <> Неопределено Тогда

    ТекущаяОбласть.Текст = "Total";
    ТекущаяОбласть.Шрифт = Новый Шрифт(ТекущаяОбласть.Шрифт, "Myriad Pro", 10, Истина);
```
---
1. Сформировать отчет в английском интерфейсе.
2. Макеты.
3. Постобработка.
---
Через макет группировки получилось сделать... на мисте подсказали и эта тема помогла infostart.ru/public/189795/
---
Поскольку первый вариант является однозначным решением, отдаю вам вознаграждение))
В языке выражений СКД есть функция ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)

Никак не вкурю параметр ТипРасчета. Что я только туда не ставил - вычисляет одинаково.
Есть ли у кого примеры как это работает?
---
Посмотри приложенный пример, в вычисляемых полях пример использования.
---
SITR-utyos, справку посмотреть?
ТипРасчета. Тип Строка. В случае если данный параметр имеет значение "ОбщийИтог", выражение будет вычисляться для всех записей группировки.
В случае если значение параметра "Группировка", значения будут вычисляться для текущей групповой записи группировки.
Если параметр имеет значение "ГруппировкаНеРесурса", то при вычислении функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки.
При вычислении функции ВычислитьВыражение со значением "ГруппировкаНеРесурса" для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась со значением параметра "Группировка".
Компоновщик макета компоновки данных при генерации макета компоновки данных при выводе в макет поля – ресурса, по которому выполняется группировка, выдает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение, с указанным параметром "ГруппировкаНеРесурса". Для остальных ресурсов в группировке по ресурсу выдаются обычные выражения ресурсов.

Если параметр имеет значение "Иерархия", то выражение нужно вычислять для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется. Компоновщик макета при генерации выражения для поля "% в группе иерархии" генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления "Иерархия".
---
SITR-utyos, вот тут можно примеры посмотреть http://infostart.ru/public/86764/
---
spacecraft, в примерах ни черта нет про параметр ТипРасчета. Справку смотрю, экспериментирую, но пока непонятно
---
SITR-utyos, скинь макет компоновки? Думаю запутался
---
ап
---
Демонстрационная конфигурация Управляемое приложение
---
Посмотри приложенный пример, в вычисляемых полях пример использования.
---
budden2010, Это для какой конфигурации схема?
Мне бы базу, на которой это все можно было бы увидеть в живую...
---
Из типовых самая близкая это УТ, запросы почти такие же будут.
Как добавить записи в регистр сведений, подчиненный регистратору?
---
```1c
    НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);

    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
    НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
    НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
    НоваяЗапись.ЛимитПоставщика = 50;

    НаборЗаписей.Записать();

    НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);

    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
    НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
    НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
    НоваяЗапись.ЛимитПокупателю = 25;

    НаборЗаписей.Записать(Ложь);
```
---
```1c
    НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);

    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
    НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
    НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
    НоваяЗапись.ЛимитПоставщика = 50;

    НаборЗаписей.Записать();

    НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);

    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
    НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
    НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
    НоваяЗапись.ЛимитПокупателю = 25;

    НаборЗаписей.Записать(Ложь);
```
Как просмотреть объекты, для которых зарегистрированы изменения?
---
```1c
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    Узел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
    ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел);

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

    ЗапСообщения.ПрерватьЗапись();

    Стр = ЗаписьXML.Закрыть();
```
---
```1c
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    Узел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
    ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел);

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

    ЗапСообщения.ПрерватьЗапись();

    Стр = ЗаписьXML.Закрыть();
```
---
Остальным читать учебники !
Как реализовать метод "красного сторно" для регистра бухгалтерии?
---
```1c
    Процедура ОбработкаПроведения(Отказ, Режим)

    СторнируемыеДвижения = РегистрыБухгалтерии.Хозрасчетный.ВыбратьПоРегистратору(СторнируемыйДокумент);

    Пока СторнируемыеДвижения.Следующий() Цикл
    Проводка = Движения.Хозрасчетный.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = СторнируемыеДвижения.СчетДт;
    Проводка.СчетКт = СторнируемыеДвижения.СчетКт;

    Для каждого Субконто Из СторнируемыеДвижения.СубконтоДт Цикл
    Проводка.СубконтоДт[Субконто.Ключ] = Субконто.Значение;
    КонецЦикла;

    Для каждого Субконто Из СторнируемыеДвижения.СубконтоКт Цикл
    Проводка.СубконтоКт[Субконто.Ключ] = Субконто.Значение;
    КонецЦикла;

    Проводка.ВалютаДт = СторнируемыеДвижения.ВалютаДт;
    Проводка.ВалютаКт = СторнируемыеДвижения.ВалютаКт;
    Проводка.ВалютнаяСуммаДт = - СторнируемыеДвижения.ВалютнаяСуммаДт;
    Проводка.ВалютнаяСуммаКт = - СторнируемыеДвижения.ВалютнаяСуммаКт;
    Проводка.КоличествоДт = - СторнируемыеДвижения.КоличествоДт;
    Проводка.КоличествоКт = - СторнируемыеДвижения.КоличествоКт;
    Проводка.НомерЖурнала = СторнируемыеДвижения.НомерЖурнала;
    Проводка.Организация = СторнируемыеДвижения.Организация;
    Проводка.Содержание = СторнируемыеДвижения.Содержание;
    Проводка.Сумма = - СторнируемыеДвижения.Сумма;
    КонецЦикла;

    Движения.Хозрасчетный.Записать();

    КонецПроцедуры
```
---
```1c
    Процедура ОбработкаПроведения(Отказ, Режим)

    СторнируемыеДвижения = РегистрыБухгалтерии.Хозрасчетный.ВыбратьПоРегистратору(СторнируемыйДокумент);

    Пока СторнируемыеДвижения.Следующий() Цикл
    Проводка = Движения.Хозрасчетный.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = СторнируемыеДвижения.СчетДт;
    Проводка.СчетКт = СторнируемыеДвижения.СчетКт;

    Для каждого Субконто Из СторнируемыеДвижения.СубконтоДт Цикл
    Проводка.СубконтоДт[Субконто.Ключ] = Субконто.Значение;
    КонецЦикла;

    Для каждого Субконто Из СторнируемыеДвижения.СубконтоКт Цикл
    Проводка.СубконтоКт[Субконто.Ключ] = Субконто.Значение;
    КонецЦикла;

    Проводка.ВалютаДт = СторнируемыеДвижения.ВалютаДт;
    Проводка.ВалютаКт = СторнируемыеДвижения.ВалютаКт;
    Проводка.ВалютнаяСуммаДт = - СторнируемыеДвижения.ВалютнаяСуммаДт;
    Проводка.ВалютнаяСуммаКт = - СторнируемыеДвижения.ВалютнаяСуммаКт;
    Проводка.КоличествоДт = - СторнируемыеДвижения.КоличествоДт;
    Проводка.КоличествоКт = - СторнируемыеДвижения.КоличествоКт;
    Проводка.НомерЖурнала = СторнируемыеДвижения.НомерЖурнала;
    Проводка.Организация = СторнируемыеДвижения.Организация;
    Проводка.Содержание = СторнируемыеДвижения.Содержание;
    Проводка.Сумма = - СторнируемыеДвижения.Сумма;
    КонецЦикла;

    Движения.Хозрасчетный.Записать();

    КонецПроцедуры
```
---
Продано!
Как переместить файл, выложенный на ftp к себе на локальный компьютер?
---
```1c
    Если НайтиФайлы("C:\Temp\Sklad.xml") <> Неопределено Тогда
    УдалитьФайлы("C:\Temp\ Sklad.xml ");
    КонецЕсли;

    Если НайтиФайлы("ftp://111.222.333.4/Sklad.xml") <> Неопределено Тогда
    ПереместитьФайл("ftp://111.222.333.4/Sklad.xml", "C:\Temp\ Sklad.xml");
    Сообщить("Файл перемещен.");

    Иначе
    Сообщить("Действие не выполнено. Файл в источнике не найден.");
    КонецЕсли;
```
---
```1c
    Если НайтиФайлы("C:\Temp\Sklad.xml") <> Неопределено Тогда
    УдалитьФайлы("C:\Temp\ Sklad.xml ");
    КонецЕсли;

    Если НайтиФайлы("ftp://111.222.333.4/Sklad.xml") <> Неопределено Тогда
    ПереместитьФайл("ftp://111.222.333.4/Sklad.xml", "C:\Temp\ Sklad.xml");
    Сообщить("Файл перемещен.");

    Иначе
    Сообщить("Действие не выполнено. Файл в источнике не найден.");
    КонецЕсли;
```
Как организовать считывание данных из файлов *.xls?
---
```1c
    Док = ПолучитьCOMОбъект(Путь + "ценыконкурентов.xls");
    КоличествоСтраниц = 2;

    Для ТекНомер = 1 По КоличествоСтраниц Цикл
    Контрагент = Док.Sheets(ТекНомер).Cells(1,1).Value;
    Товар = Док.Sheets(ТекНомер).Cells(2,2).Value;
    Цена = Док.Sheets(ТекНомер).Cells(2,3).Value;

    счСтроки = 3;
    Сообщить(Строка(Товар) + "-" + Строка(Цена));

    Пока СокрЛП(Товар) <> " Цикл // можно использовать другой признак окончания данных на листе
    Товар = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;
    Цена = Док.Sheets(ТекНомер).Cells(СчСтроки,3).Value;
    Сообщить(Строка(Товар) + "-" + Строка(Цена));
    счСтроки = счСтроки + 1;
    КонецЦикла;
    КонецЦикла;

    Док.Application.Quit();
```
---
```1c
    Док = ПолучитьCOMОбъект(Путь + "ценыконкурентов.xls");
    КоличествоСтраниц = 2;

    Для ТекНомер = 1 По КоличествоСтраниц Цикл
    Контрагент = Док.Sheets(ТекНомер).Cells(1,1).Value;
    Товар = Док.Sheets(ТекНомер).Cells(2,2).Value;
    Цена = Док.Sheets(ТекНомер).Cells(2,3).Value;

    счСтроки = 3;
    Сообщить(Строка(Товар) + "-" + Строка(Цена));

    Пока СокрЛП(Товар) <> " Цикл // можно использовать другой признак окончания данных на листе
    Товар = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;
    Цена = Док.Sheets(ТекНомер).Cells(СчСтроки,3).Value;
    Сообщить(Строка(Товар) + "-" + Строка(Цена));
    счСтроки = счСтроки + 1;
    КонецЦикла;
    КонецЦикла;

    Док.Application.Quit();
```
Добрый день!
Помогите пожалуйста кто сталкивался с созданием кросс-таблицы в макете.
Макет выводится из документа.

Прикрепляю архив с базой и описанием задачи.
в архиве на картинке - как сейчас и как должно быть.
отчет СКД для наглядности, но нужно сделать программно без СКД!!!!

Базу прикладываю.

есть подобное решение у пользователя diso - http://infostart.ru/public/104689/

За решение задачи перечислю 12 $m
---
qqwweerrttyy160679, Извините за задержку :) Работы навалилось.
Отчет во вложении. Если будут вопросы спрашивайте.
Разработано на 8.3.6.1760.
---
qqwweerrttyy160679, А чем ответ в прошлой теме не подошел?
http://forum.infostart.ru/forum86/topic125224/
---
что-то мучилась так и не поняла как сделать. прошу на прикрепленной базе показать. у меня не очень большой опыт.
---
qqwweerrttyy160679, Прикрепления в той теме смотреть?
---
dj_serega, архив с базой и описанием прикрепила
---
Прикрепляю архив новый с базой и картинкой как должно быть. Без СКД!!! Отчет на СКД для примера.
---
qqwweerrttyy160679, Тоесть обычный табличный документ? хорошо. Сегодня вечером попробую наваять.
---
dj_serega,
Ну что же Вы Сергей? Вся надежда только на вас!!!
---
qqwweerrttyy160679, Извините за задержку :) Работы навалилось.
Отчет во вложении. Если будут вопросы спрашивайте.
Разработано на 8.3.6.1760.
---
dj_serega,
---
пример есть тут - http://infostart.ru/public/104689/
---
посмотрите книжку Е. Хрусталевой "Язык запросов" там рассматривается пример кросс-отчета
книга в инете есть
---
http://mypocket.ucoz.ru/publ/1c_8_2/knigi/jazyk_zaprosov_1s_predprijatija_8/13-1-0-91
---
а если более чем одна вертикальная группировка, т.е. две и более колонок ? ;)
---
WKBAPKA, Запрос немного доработать и всё будет красиво ;)
Как получить список файлов в указанном каталоге?
---
```1c
    МассивНайденных = НайтиФайлы("C:\Обмен\Входящие", "*.xml");

    Для Каждого Файл из МассивНайденных Цикл
    Сообщить(Файл.Имя);

    // Обработать найденные файлы.

    КонецЦикла;
```
---
```1c
    МассивНайденных = НайтиФайлы("C:\Обмен\Входящие", "*.xml");

    Для Каждого Файл из МассивНайденных Цикл
    Сообщить(Файл.Имя);

    // Обработать найденные файлы.

    КонецЦикла;
```
Как просмотреть объекты, для которых зарегистрированы изменения?
---
```1c
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    Узел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
    ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел);

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

    ЗапСообщения.ПрерватьЗапись();

    Стр = ЗаписьXML.Закрыть();
```
---
```1c
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    Узел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
    ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел);

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

    ЗапСообщения.ПрерватьЗапись();

    Стр = ЗаписьXML.Закрыть();
```
Как в форме списка сделать отбор по значению реквизита?
---
```1c
    СправочникСписок.Отбор.СтавкаНДС.Установить(Перечисления.СтавкиНДС.НДС18);

    СправочникСписок.Отбор.СтавкаНДС.Значение = Перечисления.СтавкиНДС.НДС18;
    СправочникСписок.Отбор.СтавкаНДС.ВидСравнения = ВидСравнения.Равно;
    СправочникСписок.Отбор.СтавкаНДС.Использование = Истина;
```
---
```1c
    СправочникСписок.Отбор.СтавкаНДС.Установить(Перечисления.СтавкиНДС.НДС18);

    СправочникСписок.Отбор.СтавкаНДС.Значение = Перечисления.СтавкиНДС.НДС18;
    СправочникСписок.Отбор.СтавкаНДС.ВидСравнения = ВидСравнения.Равно;
    СправочникСписок.Отбор.СтавкаНДС.Использование = Истина;
```
Как выгрузить модули прикладного решения в виде текстовых файлов из командной строки?
---
```1c
    "C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F"C:\Documents and Settings\user\My Documents\1C\DemoTrd2" /N"Федоров (администратор)" /P" /DumpConfigFiles "D:\1\11" -Module
```
---
```1c
    "C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F"C:\Documents and Settings\user\My Documents\1C\DemoTrd2" /N"Федоров (администратор)" /P" /DumpConfigFiles "D:\1\11" -Module
```