arefaste/1C_Forums huggingface dataset:
Добрый день всем!
1С 8.3, УФ
Имеется документ "РасходнаяНакладная".
На ней реквизит "ДоговорКонтрагента" - Справочник.Ссылка.ДоговорКонтрагента.
В самом справочнике "ДоговорКонтрагента" есть еще один реквизит "ВидЦены" - Справочник.Ссылка.ВидЦены.
Вопрос: Как передать установленное значение реквизита "ВидЦены" на форму документа в реквизит "ВидЦены" ?
Делается все для того, что бы не лезть в договор из формы документа для просмотра установленного вида цены, а что бы она была видна сразу на форме в соответствующем реквизите.
---
```1c
    Процедура ДоговорКонтрагентаПриИзмененииНаСервере()
    Объект.ВидЦены = Объект.ДоговорКонтрагента.ВидЦены ; ///Если ВидЦены - реквизит документа
    //ВидЦены = ДоговорКонтрагента.ВидЦены ; ///Если ВидЦены - реквизит формы документа
    Конецпроцедуры
```
---
Если вид цены это реквизит формы, то:
 ВидЦены = ДоговорКонтрагента.ВидЦены;

Если это просто поле, тогда путь данных в поле "Объект.ДоговорКОнтрагента.ВидЦены"
---
```1c
    Процедура ДоговорКонтрагентаПриИзмененииНаСервере()
    Объект.ВидЦены = Объект.ДоговорКонтрагента.ВидЦены ; ///Если ВидЦены - реквизит документа
    //ВидЦены = ДоговорКонтрагента.ВидЦены ; ///Если ВидЦены - реквизит формы документа
    Конецпроцедуры
```
---
Если вид цены это реквизит формы, то:
 ВидЦены = ДоговорКонтрагента.ВидЦены;

Если это просто поле, тогда путь данных в поле "Объект.ДоговорКОнтрагента.ВидЦены"
---
Объект.ВидЦены = ДоговорКонтрагента.ВидЦены ;
Все верно и работает.
Но момент следующий. Я создаю документ "РасходнаяНакладная" на основании документа "ЗаказКлиента".
И что бы появилось значение в реквизите"ВидЦены" нужно изменить "Договор Контрагента" ( нажать и выбрать его еще раз)
---
при создании допиши код )

```1c
    ///При создании (Нажатие на кнопки)
    ...
    Док = Документы.РасходнаяНакладная.Создать();
    ....
    Док.ДоговорКонтрагента = Объект.Контрагент.ДоговорКонтрагента;

    Док.ВидЦены = Док.ДоговорКонтрагента.ВидЦены; ///Как то так
    ...
```
---
Либо создаете реквизит формы, путь к данным которого "Объект.Договор.ВидЦены"
---
Через "Изменить форму" можно добавить
Есть работающий код из 1cv7

```1c
    весы = СоздатьОбъект("APScale.APScale");
    весы.Connect("COM1");
    Сообщить(весы.Data);
    весы.DisConnect();
```

но увы получаю ошибку в 1cv8 при второй Попытке ( весы = Новый("APScale.APScale") )
Код из 1cv8

```1c
    &НаСервере
    Процедура ПодключитьНаСервере()
    Попытка
    ПодключитьВнешнююКомпоненту("APScale.APScale");
    Сообщить("Компонента загружена");
    Исключение
    Сообщить("Ошибка, компонента весов не загружена");
    КонецПопытки;

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

    весы.Connect("COM1");
    Сообщить(весы.Data);
    весы.DisConnect();
    КонецПроцедуры
```

Весы исполюзуют библиотеку AP.DLL
Регистрация библиотеки через regsvr32 прошла успешно
---
Вот так должно работать

```1c
    &НаСервере
    Процедура ПодключитьНаСервере()
    Попытка
    ПодключитьВнешнююКомпоненту("APScale.APScale");
    Сообщить("Компонента загружена");
    Исключение
    Сообщить("Ошибка, компонента весов не загружена");
    КонецПопытки;

    Попытка
    весы = Новый COMОбъект("APScale.APScale");
    Исключение
    Сообщить("Весы не работают");
    Возврат;
    КонецПопытки;

    весы.Connect("COM1");
    Сообщить(весы.Data);
    весы.DisConnect();
    КонецПроцедуры
```
---
Попытка
        ПодключитьВнешнююКомпоненту("APScale.APScale");
        Сообщить("Компонента загружена");
    Исключение
        Сообщить("Ошибка, компонента весов не загружена");
    КонецПопытки;

```1c
    Попытка
    // ПодключитьВнешнююКомпоненту("APScale.APScale");
    КомОбъект = Новый COMОбъект("APScale.APScale");

    Сообщить("Компонента загружена");

    КомОбъект .Connect("COM1");
    Сообщить(КомОбъект .Data);
    КомОбъект .DisConnect();

    Исключение
    Сообщить("Ошибка, компонента весов не загружена");
    КонецПопытки;
```
---
Вот так должно работать

```1c
    &НаСервере
    Процедура ПодключитьНаСервере()
    Попытка
    ПодключитьВнешнююКомпоненту("APScale.APScale");
    Сообщить("Компонента загружена");
    Исключение
    Сообщить("Ошибка, компонента весов не загружена");
    КонецПопытки;

    Попытка
    весы = Новый COMОбъект("APScale.APScale");
    Исключение
    Сообщить("Весы не работают");
    Возврат;
    КонецПопытки;

    весы.Connect("COM1");
    Сообщить(весы.Data);
    весы.DisConnect();
    КонецПроцедуры
```
---
оказалось все очень просто.
Спасибо ))
Добрый день коллеги.

Честно говоря что то запутался и отвык уже от НФ, пишу

```1c
    Процедура ПриОткрытии()
    Если Не РольДоступна("_ИзменениеСправочникаФизЛица") Тогда
    ПоказатьПредупреждение(,"У Вас недостаточно прав для редактирования справочника"
    |,,"Предупреждение");
    КонецЕсли;

    Если Не РольДоступна("_ПолныйПросмотрСпрФизЛиц") Тогда
    ЭлементыФормы.ДействияФормы.Кнопки.Очистить();
    КонецЕсли;

    КонецПроцедуры
```

Не выдаёт сообщение и не отчищает элементы формы.
Что делаю не так то.
Если запускать на сервере, то отрабатывает, с пользовательского рабочего места нет.
Модальность используется.
---
```1c
    Сообщить("УРА");
```
---
```1c
    Сообщить("УРА");
```
---
ага, переписал ещё до вашего сообщения на Сообщить и вся шаткая конструкция заработала)))
Но странно, что не так с ПоказатьПредупреждение то?
---
Без "Показать", просто Предупреждение("хрень");
---
при использовании модальности пишется именно ПоказатьПредупреждение, при отключённой модальности используется Предупреждение.
---
Вообще-то наоборот. "Если для конфигурации свойство РежимИспользованияМодальности установлено в НеИспользовать, следует использовать метод ПоказатьПредупреждение."
И ПоказатьПредупреждение появилось в 8.3.3. Версия совместимости выше?
---
РежимИспользованияМодальности
у меня наоборот на метод Предупреждение ругался
---
"Ругался" как? Предупреждал, или выдавал ошибку?
Если предупреждал, значит режим модальности используется с предупреждением.
Если выдает ошибку, значит режим модальности не используется.

ПоказатьПедупреждение это асинхронная процедура. Для нее режим модальности не нужен.
---
У вас обычные формы, что за бред вы пишите? О каком отказе от модальности в обычных формах в принципе может идти речь? О_о
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
Уважаемые Гуру 1С!
Необходимо разработать систему резервирования остатков. Резервирование товаров происходит после звонка клиента и оформления документа «Заказ покупателя». Фактическое списание товара происходит документом «Расходная накладная».
Это для обучения задачка. С чего начать и какой алгоритм?
Уже прочитал: Есть количество на складе и свободный остаток. Когда происходит резерв товар со склада не исчезает, а уменьшается свободный остаток.
Темный лес.....
---
ресурс ВРезерве.
Заказ записал туда.
Реализация списала резерв и остаток
---
а посмотреть как в типовой и наподобие?
---
Только структуру метаданных, а не код)
---
ресурс ВРезерве.
Заказ записал туда.
Реализация списала резерв и остаток
Добрый день!
Есть отчет на СКД который выводит в колонках значение номера итерации. Как сделать, чтобы к этому номеру добавлялась строка?
Чтобы было так - "Номер итерации №" + НомерИтерации.
Спасибо!
---
Ну или так "Номер итерации №" + Строка(НомерИтерации)
---
Создайте вычисляемое поле, и там пропишите эту формулу
---
Или у вас количество колонок динамическое и вы хотите на лету формировать их заголовки?
---
Динамическое.
---
а можно еще через условное оформление сделать
---
Каким образом?
---
учитывая ответ в (5) уже никак... когда писал, не было известно, что колонки формируются динамически
---
Еще проще это сделать через "Выражение представления" на закладке "Наборы данных".
---
Нет, так ругается.
---
На что? Преобразование типов?
---
Ошибка при вызове метода контекста (Вывести)
 ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Неверные параметры "+"
---
Ну понятно, вы к строке пытаетесь число прибавить, воспользуйтесь функцией "Формат"
---
Куда Формат добавлять?
---
Ну или так "Номер итерации №" + Строка(НомерИтерации)
---
Номер итерации №" + Строка(НомерИтерации)
Да, в точку! Спасибо!
---
(11) Лучшие ответы тему можно закрывать.
Уважаемые Гуру 1С!
Необходимо разработать систему резервирования остатков. Резервирование товаров происходит после звонка клиента и оформления документа «Заказ покупателя». Фактическое списание товара происходит документом «Расходная накладная».
Это для обучения задачка. С чего начать и какой алгоритм?
Уже прочитал: Есть количество на складе и свободный остаток. Когда происходит резерв товар со склада не исчезает, а уменьшается свободный остаток.
Темный лес.....
---
типовая схема упрощенно, для осмысления процесса (оприходование, перемещение и списание не учитываем)

регистр Остатки - Номенклатура, Склад, Количество - регистратор Реализация
регистр Резервы - Номенклатура, Склад, Количество - регистратор Заказ, Реализация

Заказ - движение по Резерву, Количество в плюс
Реализация - движение по Резерву, Количество в в минус; движение по Остатку, Количество в минус

Заказ и Реализация - при подборе товара запрос к Остаток.Количество - Резерв.Количество по Номенклатуре и Складу - получаем Доступный остаток
---
Вопрос в чем? Вроде по резервам уже все разжевано давно.
---
Если темный лес , то начните с читания книжек...
Чем больше прочтете , тем лес станем светлее!
---
типовая схема упрощенно, для осмысления процесса (оприходование, перемещение и списание не учитываем)

регистр Остатки - Номенклатура, Склад, Количество - регистратор Реализация
регистр Резервы - Номенклатура, Склад, Количество - регистратор Заказ, Реализация

Заказ - движение по Резерву, Количество в плюс
Реализация - движение по Резерву, Количество в в минус; движение по Остатку, Количество в минус

Заказ и Реализация - при подборе товара запрос к Остаток.Количество - Резерв.Количество по Номенклатуре и Складу - получаем Доступный остаток
---
Спасибо, стал понятен алгоритм действий. Сейчас буду пытаться что то сделать)
Здравствуйте, возник вопрос. Есть внешний отчет на СКД. Можно ли реализовать так. Что бы после того как сформировался отчет, я выбирал контрагента в этом отчете и этот контрагент передался в обычное поле ввода на этой форме. Тип строка.
Благодарю заранее)))
---
Вот как бы решение)

```1c
    а = ЭлементыФормы.Результат.ТекущаяОбласть.Текст;
```

Всех благодарю)
---
Что из себя представляет "обычное поле ввода"? Вами добавленный реквизит? Сгенерированная настройка отчета? Тип чего именно является строкой?
---
...
---
Нет. Мне надо результат скд в реквизит
---
Да я вас неправильно понял, второй ответ надеюсь утроит

https://infostart.ru/public/1028702/

Функция вызывается из события "ОбработкаРасшифровки"

Функция ПолучитьЗначениеВыбранногоПоляНаСервере(Расшифровка, ИменаТекущихПолей)
---
Вот как бы решение)

```1c
    а = ЭлементыФормы.Результат.ТекущаяОбласть.Текст;
```

Всех благодарю)
---
Надо было вознаграждение дать за вопрос.
---
Вот автор реализовал и опубликовал

https://infostart.ru/public/1028702/

Функция вызывается из события "ОбработкаРасшифровки"

```1c
    // Функция - Получить значение выбранного поля отчета
    //
    // Параметры:
    // Расшифровка - Число - ИД поля, по которому произведен щелчок
    // ИменаТекущихПолей - Массив - Массив наименований полей, для которых нужно вернуть значение
    // (задает ограничение, для каких полей будет срабатывать данная функция)
    //
    // Возвращаемое значение:
    // Строка - значение поля, по которому произведен щелчок
    &НаСервере
    Функция ПолучитьЗначениеВыбранногоПоляНаСервере(Расшифровка, ИменаТекущихПолей)
    // получаем все данные из выведенного отчета
    ДанныеОтчета = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
    // по факту возвращается только одно поле под номером в переменной "Расшифровка", поэтому его и зачитываем
    ПолеРасшифровки = ДанныеОтчета.Элементы.Получить(Расшифровка).ПолучитьПоля()[0];
    Если Не ПолеРасшифровки = Неопределено Тогда
    Если Не ИменаТекущихПолей.Найти (ПолеРасшифровки.Поле) = Неопределено Тогда
    // возвращаем значение только если расшифровываем конкретное поле,
    // чтобы не срабатывало на других полях
    Возврат ПолеРасшифровки.Значение;
    КонецЕсли;
    КонецЕсли;
    Возврат Неопределено;
    КонецФункции
```
Добрый день !
Подскажите как правильно написать запрос, чтобы поместить строковые константы во временную таблицу:

```1c
    ВЫБРАТЬ "стр 1852" КАК Связь65
    |ПОМЕСТИТЬ
    | Связь65_СПИСОК_ТХТ
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ "стр 1852 гр 05"
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ "стр 1857"
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ "стр 1870"
```
---
Разобрался;
Добавлял этот кусок к основному запросу, видимо размер запроса становился слишком большим;
---
Так у вас правильно написано, вы что конкретно хотите?
---
Разобрался;
Добавлял этот кусок к основному запросу, видимо размер запроса становился слишком большим;
Конфигурация - доработанная типовая УТ.
Есть возможность у пользователя при создании варианта отчёта сделать его общим, либо личным.
Можно как то запретить пользователю делать общие варианты отчёта?
---
Для этого используется справочник "ВариантыОтчетов".
---
Попробуйте отобрать у пользователя роль "Добавление и изменение вариантов отчетов", да и прочие роли, если есть, что дают право на справочник "ВариантыОтчетов" без ограничений на уровне записей. В этом случае переключатель доступности варианта отчета должен оказаться заблокированным (БСП 3.0.2).
---
С правами все не очень гладко. У каждого пользователя установлены "ПолныеПрава", а видимостью все отключается. У админа ещё есть право "АдминистраторСистемы". Так вот и отличаю...
Я вот вижу что все варианты отчётов в УТ хранятся в "ХранилищеНастроек" в котором есть объект хранилища: "ХранилищеВариантовОтчёта".
Так вот мне стало интересно посмотреть что внутри и я первым делом полез в справку помощника.
Выполнил:

```1c
    ХранилищеНастроек=ХранилищаНастроек.ХранилищеВариантовОтчетов;
```

Дальше есть метод Загрузить(), но в нем обязательно первым параметром указать объект с произвольным типом.
А мне вот хочется увидеть все-все и я без понятия какой объект туда указывать. Подскажите пожалуйста, что в такой ситуации делать?
---
А мне вот хочется увидеть все-всеИзвините, я не понял, что именно Вы хотите увидеть.
---
В данном хранилище хранятся все мои варианты отчётов. Я хочу все элементы, которые находятся в данном хранилище получить.
---
Для этого используется справочник "ВариантыОтчетов".
---
Стоп, а в этом хранилище тогда что хранится?
---
Вы не поверите, но данные справочника. :) В типовой УТ, а если быть точнее, в подавляющем большинстве конфигураций на базе БСП, стандартное (системное) хранилище вариантов отчетов переопределено (в свойствах конфигурации). И если Вы заглянете в модуль менеджера объекта "ХранилищеВариантовОтчетов", то увидите, что данное хранилище в качестве контейнера для вариантов как раз и использует справочник "ВариантыОтчетов".
---
Заглянул - и вправду диво то какое :)
Получается разработчики переопределяют с стандартное хранилище вариантов отчёта на своё созданное хранилище, которое "вызывается" при сохранении варианта отчёта, а своб очередь это хранилище тянет сквозь себя уже данные в справочник "ВариантыОтчёта"?
Само хранилище получается пустым?
---
Само хранилище получается пустымСистемное хранилище - да, получается что так.
---
Полностью разобрался. Спасибо Вам большое!
А не подскажете зачем переопределяется стандартное хранилище разработчиками? Или где об этом почитать, если конечно в курсе.
---
Ну очевидно для того, чтобы хранить вместе с вариантами отчетов дополнительную информацию, обращаться к ней с помощью запросов, настраивать RLS.
---
Понял, спасибо. За RLS отдельно - первый раз услышал = уже разбираюсь :)
Есть регистр не периодический
в нем события и даты:

Номенклатура___Действие___ПериодНачала____ПериодОкончания
Товар1_________списание ____01.01.00_________10.03.19
Товар1_________приход______10.01.19__________01.01.00
Товар1_________приход______12.03.19__________01.01.00

Не могу получить в результате выполнения запроса периоды действия, подскажите ход действий:

Номенклатура_____Период
Товар1 __________10.01.19 - 10.03.19
Товар1 __________12.03.19 - 01.01.00
---
Как вариант можно разбить на две таблицы (приход, списание), потом соединить, например номенклатура = номенклатура и дата расхода больше даты прихода, и сделать группировку, где дату расхода ставите минимум.
---
Как вариант можно разбить на две таблицы (приход, списание), потом соединить, например номенклатура = номенклатура и дата расхода больше даты прихода, и сделать группировку, где дату расхода ставите минимум.
---
все получилось, благодарю
---
(5) Да по-моему следует эти два ответа признать лучшими и закрыть тему.
---
а если один товар будет 2 раза приходить и 3 раза списываться, как вы соберете?
---
в моем случае исключен приход без списания
---
ну тогда поддержу первого комментатора:
- собираете 2 таблицы
- джойните их по товару и мин дате списания

а вообще я бы поменял структуру записи регистра - на этапе записи в регистр бы искал приход без списания и туда дописывал только дату списания
Здравствуйте.
Типовая конфа. Есть типовые права Кассир-операционист он может создавать док. "Отчет по кассовой смене"
Создал универсальный отчет по движению за месяц, все что прошло через этот "Отчет по кассовой смене"
С полными правами все ок, отчет работает

Но с этими ограничеными правами:
добавил им прав на: Универсальный отчет и вывел его в интерфейсе
Но при формировании по документу "Отчет по кассовой смене" даже по Основным данным отчет не формируется и выдает
Нарушение прав доступа!

Почему он не пускает даже посмотреть данные из документа на который у юзера есть права?
---
Журнал регистрации ошибка прав доступа - будет явное указание на какой объект нет доступа.

Если в конфигурации есть нет профилей доступа, в любой роли можно настроить доступ на объект.

Если есть профили доступа, то необходимо посмотреть у какой роли есть доступ на объект и добавить роль в профиль.
---
Журнал регистрации ошибка прав доступа - будет явное указание на какой объект нет доступа.

Если в конфигурации есть нет профилей доступа, в любой роли можно настроить доступ на объект.

Если есть профили доступа, то необходимо посмотреть у какой роли есть доступ на объект и добавить роль в профиль.
---
Да, спасибо.
Это была константа: НастройкиКолонтитулов на чтение
В УТ 10.3 в форме списка документа заказ покупателя при наведении на элемент и вызове контекстного меню есть пункт меню на основании . Нужно добавить туда возможность создания документа. В шапке при нажатии на кнопку на основании добавил возможность создать на основании нужного мне документа, при выборе элемента в списке и вызове контекстного меню на основании возможность создания на основании не появляется, в форме не нашел, приложил скрин, Подскажите пожалуйста где это контекстное меню
---
это системное меню. В конфигураторе в документе смотри закладку "Ввод на основании".
---
Спасибо, все сделал в типовой процедуре модуля объекта ОбработкаЗаполнения, первоначально добавлял команды в форме документа и форме списка отдельно, поэтому в форме списка в контекстном меню элемента строки не появлялось на вкладке На основании нужного документа
---
это системное меню. В конфигураторе в документе смотри закладку "Ввод на основании".
---
Спасибо, все сделал в типовой процедуре модуля объекта ОбработкаЗаполнения, первоначально добавлял команды в форме документа и форме списка отдельно, поэтому в форме списка в контекстном меню элемента строки не появлялось на вкладке На основании нужного документа
У меня есть две идентичные конфигурации. В обоих есть с справочник "Номенклатура", но в применяемой конфигурации БД у справочника "Номенклатура" есть реквизит "Вес", а в сравниваемой/объединяемой его нет.
В режиме сравнения и объединения это свойство объекта "Номенклатура" подсвечивается в используемой конфигурации красным цветом, а со стороны обновляемой конфигурации красуется надпись "Отсутствует". Когда я нажимаю "Выполнить", то все равно реквизит "Вес" не удаляется.
Так вот как удалить объекты, которые уже есть в основной конфигурации в сравнении и объединении? Как это делается?
---
Вы хотите удалить его? В настройках сравнения конфигураций для этого нужно поставить галочку "разрешить удаление объектов основной конфигурации".
---
в командной панели окна сравнения будет кнопка виде ключа
---
Снимите "вес" с поддержки.
---
"Вес" без жёлтого и серого квадратика. Я его добавил сам (Реквизит в реальности другой - все упростил).
---
Вы хотите удалить его? В настройках сравнения конфигураций для этого нужно поставить галочку "разрешить удаление объектов основной конфигурации".
---
Да, я хочу понять что нужно делать что бы при сравнении/объединении, то чего нет в обновляемой конфигурации - удалялось с основной. А можно скрин где это находится?
---
в командной панели окна сравнения будет кнопка виде ключа
---
Спасибо. Буду пробовать. Хорошего Вам дня :)
Как сделать фокус в левой форме, только что добавленную строку. Чтобы выбрано было Название телефона
---
Сделал так,все заработало

```1c
    Отбор = Новый Структура;
    Для каждого Эл Из ЗначениеВыбора Цикл
    Отбор.Вставить("Товар", Эл);
    МассивСтрок = Товары.НайтиСтроки(Отбор);
    Если МассивСтрок.Количество() > 0 Тогда
    ЭтаФорма.ЭлементыФормы.Товары.ТекущаяСтрока = МассивСтрок[0];
    ЭтаФорма.ЭлементыФормы.Товары.ТекущаяКолонка = ЭлементыФормы.Товары.Колонки.Товар;
    КонецЕсли;
    КонецЦикла;
```
---
В модуле формы документа, где-нибудь в конце обработки подбора, примерно такое:

```1c
    МассивСтрок = Товары.НайтиСтроки(Новый Структура("Номенклатура", ЗначениеВыбора.Номенклатура));
    Если МассивСтрок.Количество() > 0 Тогда
    ЭлементыФормы.Товары.ТекущаяСтрока = МассивСтрок[0];
    ЭлементыФормы.Товары.ТекущаяКолонка = ЭлементыФормы.Товары.Колонки.Номенклатура;
    КонецЕсли;
```
---
Сделал так,все заработало

```1c
    Отбор = Новый Структура;
    Для каждого Эл Из ЗначениеВыбора Цикл
    Отбор.Вставить("Товар", Эл);
    МассивСтрок = Товары.НайтиСтроки(Отбор);
    Если МассивСтрок.Количество() > 0 Тогда
    ЭтаФорма.ЭлементыФормы.Товары.ТекущаяСтрока = МассивСтрок[0];
    ЭтаФорма.ЭлементыФормы.Товары.ТекущаяКолонка = ЭлементыФормы.Товары.Колонки.Товар;
    КонецЕсли;
    КонецЦикла;
```
Как посчитать разницу дат в выводимых строках в СКД ?

Пример:

Дата _____ | Кол-во дней
15.02.2019 |
18.02.2019 | 3
18.02.2019 | 0
---
вместо минуса надо использовать разность дат: разностьдат(вычислитьвыражение("дата"...), дата2, МИНУТА)
---
Если отвечать на поставленный вопрос, то:
РАЗНОСТЬДАТ

А если не приглашать телепата, то желательно узнать какие даты нужно сравнивать.
Например:
- текущую строку и предыдущую
- текущую и начало периода
- ...
---
текущую строку и предыдущую
---
В СКД точно есть такая возможность, не помню где, но точно есть. Поищу.
---
использовать ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)
в параметре Начало указать Предыдущая(1)
подробнее можно почитать Справка - Содержание - Система компоновки данных - Язык выражений СКД - Функции ЯВСКД
---
да, но похоже что эта вещь не работает с датами
---
Полезные примеры составления схемы компоновки данных
Посчитать разницу с предыдущей записью
https://infostart.ru/public/267055/

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив
https://infostart.ru/public/1101676/
---
а как быть с датой?

Подобная строка:

isNULL(ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Дата", , , "Предыдущая", "Предыдущая") - ДобавитьКДате(Дата,"День",-1), 0)

выдаёт ошибку - Неверные параметры "-"
---
вместо минуса надо использовать разность дат: разностьдат(вычислитьвыражение("дата"...), дата2, МИНУТА)