arefaste/1C_Forums huggingface dataset:
Добрый день.

У меня есть необходимость использовать на форме элемент ОТБОР из СКД.

т.е. по сути мне нужен только лишь этот интерфейсный элемент, чтобы не "рожать" его самостоятельно.

зачем - даже не спрашивайте - долго объяснять :)

итак вопрос - могу ли я инициализировать СКД и программно добавить в него поля, которые пользователь будет иметь возможность использовать в этом интерфейсном элементе настройки отбора?

очень слабо понимаю в СКД, поэтому большая просьба написать код.

а я потом уже разберусь как вынимать из СКД что там понастраивал пользователь и уже далее буду использовать это в своей разработке.

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

Можно делать это дерево самостоятельно, но думаю что есть способ использовать для этого СКД.

Задача сводится к заполнению настроек СКД, чтобы поля из массива были доступны в интерфейсном элементе "ОТБОР"
---
Ну есть в СКД источник данных объект. Это по сути таблица значений. Используйте его.
---
формы - обычные.
---
Посмотрите здесь: https://infostart.ru/public/400647/
---
это все видел - примеры все пересмотрел на инфостарте. тот что вы скинули не подходит т.к. там макет сначала руками заполняется на конкретный справочник/поля.

мне же нужно динамически формировать эти поля.

в общем я буду писать свой интерфейсный элемент, т.к. сроки жмут, да и свое есть свое, мало ли что то подкрутить захочется.

Но для общего развития буду благодарен если кто то скинет пример как инициализировать настройки компановщика и добавить в его отбор произвольные поля (пусть и через ТЗ - я пробовал но не получилось с ходу, а времени на эксперименты пока нет)
---
в любом случае вам потребуется схема компоновки , набор и источник данных
советую погуглить по сабжу "полностью программное создание отчета скд"
Доброго времени суток!
Пишу взаимодействие с API BroadSoft BroadWorks (Облачная АТС Билайн, Автосекретарь МТС и пр.), в данном виде взаимодействия, инициатором события выступает BroadWorks, а 1С у меня принимает через HTTP сервис от BroadWorks данные в формате XML и всё бы хорошо, есть схемы, я её загрузил в 1С, пишу следующий код:

```1c
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ТелоСтрокой);

    ТипСобытия = ФабрикаXDTO.Тип("http://schema.broadsoft.com/xsi", "Event");
    Событие = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипСобытия);
```

И получаю ошибку "Попытка создания объекта абстрактного типа", дело в том, что свойство Event имеет тип BaseEvent который является абстрактным. Не страшно - подумал я, и поменял тип Event на нужный мне который всегда один в моём случае, но возникла проблема уже в типе "EventData" который так-же является абстрактным и там уже нельзя намеренно ограничить тип, так как там будут разные типы и они будут нужны.
В файле test.xml представлен пример такой XML, в файле XSI-Schema-Rel20.0.zip представлена вся схема.
Собственно задача, как загрузить данную XML с абстрактными типами?
Заранее спасибо!

PS: Хоть это и порицается, вынужден сделать перепост.
---
Собственно сам и разобрался, ошибка моя была в том что я встроил схему в базу, чего делать вовсе не нужно было и простой код:

```1c
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ТелоСтрокой);
    Событие = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
```

спокойно загружает данные.

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

```1c
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ТелоСтрокой);
    Событие = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
```

спокойно загружает данные.

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

```1c
    &НаСервере
    Процедура ПриОткрытииНаСервере()
    ПользовательИнфБ = ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя;
    Если Объект.Получатель.Наименование = ПользовательИнфБ Тогда
    Элементы.Получил.ТолькоПросмотр = Истина;
    КонецЕсли;
    КонецПроцедуры
```
---
логика другая.
Если Объект.Получатель.Наименование <> ПользовательИнфБ Тогда
---
конфигурация не типовая и даже не на БСП? Нет в параметрах сеанса текущего пользователя?
Проверку и установку реквизита нужно делать в обработчике ПриСозданииНаСервере.
---
Конфигурация не типовая и не на БСП.
Я правильно понял, что нужно вот это
```1c
    ПользовательИнфБ = ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя;
    Если Объект.Получатель.Наименование = ПользовательИнфБ Тогда
    Элементы.Получил.ТолькоПросмотр = Истина;
    КонецЕсли;
```

Перенести в "ПриСозданииНаСервере"?
Если да, то не помогло.
---
логика другая.
Если Объект.Получатель.Наименование <> ПользовательИнфБ Тогда
---
Спасибо. То что нужно.
---
Нет в параметрах сеанса текущего пользователя?
Нет.
---
При открытии формы:

```1c
    Если НЕ РольДоступна("Менеджер") Тогда
    ЭлементыФормы.Получил.ТолькоПросмотр = Истина;
    КонецЕсли;
```

Лучше использовать роли, а не Пользователя т.к. пользователи(сотрудники) могу увольняться.
---
В данном случае это бессмысленно, потому что у пользователей, которым доступен этот документ одинаковые права. И по роли сделать не представляется возможным.
В прошивке онлайн-кассы ставки такие:
Ставка 1 - 18
Ставка 2 - 10
Ставка 3 - 0
....

В настройках ККМ в 1с
Ставка 1 - 0
Ставка 2 - 10
Ставка 3 - 18

Если печатаем чек с НДС 0%, то выходит на печать 18%

В драйвере не дает менять. поддержка сказала только менять прошивку

В настройках 1С, Ставка 1 тоже не дает редактировать. Все другие ставки редактируются.

Обработка обслуживания и драйвера последней версии

Куда копать?
---
В драйвере версии v1.2.0.915. исправили ошибку со ставками, очередность ставок НДС правильная
---
ДОбрый день! ну если поддержка рекомендует сменить прошивку, так надо сменить.
сделать это можно при помощи программы Fito
Есть правда и другой вариант, скачать бесплатную кассовую программу DrimkasStart и она сама умеет обновлять версию ПО на ККМ
---
В драйвере версии v1.2.0.915. исправили ошибку со ставками, очередность ставок НДС правильная
---
замените драйвер в папке C:\Users\user\AppData\Roaming\1C\1cv8\ExtCompT на новый с сайта
Здравствуйте!
Имею Отчет СКД (см. рис 1). Там каждому сотруднику определенным образом начисляются баллы за продажи, а также назначается некоторое количество доп.баллов (константа, для каждого сотрудника своя). Вычисляется поле ВсегоБаллов, а на его основании вычисляется Текущая премия. Проблема в следующем: когда я делаю группировку по сотруднику, я вычисляю ВсегоБаллов как Сумма(Баллы) + Среднее(ДопБаллы), т.к .ДопБаллы- константа. И это сбивает мне общий итог, туда-то тоже берется Среднее (см.рис 2). Как это можно поправить? То есть как бы мне взять итог в подчеркнутые столбы именно по всему столбу, а не по тому как группировка считается?
---
Ну надо же, нашла решение сама. Пишу, может кому пригодится. В ресурсы добавляем еще раз поле Текущая премия и пользуемся функцией ВычислитьВыражениеСГруппировкойМассив():

```1c
    Сумма(ВычислитьВыражениеСГруппировкойМассив("(Сумма(Баллы)+Среднее(ДопБаллы))*&КоэффициентДляПремии", "Сотрудник_АМ"))
```

(см рис 3).

Плоско считает итог по столбцу, а не как прописано в группировке
---
Ну надо же, нашла решение сама. Пишу, может кому пригодится. В ресурсы добавляем еще раз поле Текущая премия и пользуемся функцией ВычислитьВыражениеСГруппировкойМассив():

```1c
    Сумма(ВычислитьВыражениеСГруппировкойМассив("(Сумма(Баллы)+Среднее(ДопБаллы))*&КоэффициентДляПремии", "Сотрудник_АМ"))
```

(см рис 3).

Плоско считает итог по столбцу, а не как прописано в группировке
Доброго времени суток, форумчане!
Встала необходимость программно добавить картинку в форматированный документ. Загвоздка в том, что речь идет о шаблоне, в который надо добавить кусок модуля, который это сделает.
Возможно кто-нибудь уже сталкивался с подобным и есть какие-либо идеи на эту тему?
Из того, что у меня сейчас получилось, это вставить двоичные данные

```1c
    ИзображениеКартинки = СписокФайлов[0].Хранилище.Получить();
    Результат = ИзображениеКартинки;
```
---
У меня нет доступа к самому форматированному документу, есть документ, из которого вызывается шаблон, в который мне надо вставить параметр, который после преобразования в форматированный документ в тексте будет выглядеть примерно как в приложенном файле, а при просмотре будет выводить картинку. Файл картинки я получаю программно, и она каждый раз при вызове шаблона должна быть разная. Либо вставить любую картинку и программно подменять её каждый раз при вызове шаблона на свою
---
если в справке почитать про форматированный документ, то там есть КартинкаФорматированногоДокумента, с ее помощью добавить пытались?
---
У меня нет доступа к самому форматированному документу, есть документ, из которого вызывается шаблон, в который мне надо вставить параметр, который после преобразования в форматированный документ в тексте будет выглядеть примерно как в приложенном файле, а при просмотре будет выводить картинку. Файл картинки я получаю программно, и она каждый раз при вызове шаблона должна быть разная. Либо вставить любую картинку и программно подменять её каждый раз при вызове шаблона на свою
Здравствуйте! Сделал впф, на макете имеется картинка, в нее передается текст, и все вроде бы хорошо но в режиме предприятие этот текст сдвигается вниз. уже все выравнивание перепробовал и расположения. Подскажите в чем может быть дело?
---
проблема решилась сама по себе...методом тыка....
---
Убрать Авто везде в настройках.
---
все что можно убрал( увы результат тот же
---
проблема решилась сама по себе...методом тыка....
есть отчет на СКД, состоит из нескольких наборов данных. По одному и тому же отбору показывает разные цифры итого по разным группировкам. Т. е. всего было продано одной номенклатуры 24 шт. = 4+10+10 по разным накладным, партии так же разные, если в варианте включена группировка по документу, то показывает правильно 24, если группировка по документу отключена, то показывает 14, т. е. 1 строка с количеством 10 пропадает. Пробовал в документе поставить кол 9 - все нормально, итог выдает 23 шт. Пробовал выставить у поля "Количество" в роли флажок "Обязательное", поставил обе галочки "недоступно для группировки". ничего не помогает. Подскажите в какую сторону копать
---
флажок "Обязательное" для документа включи
---
Закладка Ресурсы, как там считаются итоги, по каким полям.
---
По каким полям не указано
---
флажок "Обязательное" для документа включи
---
Спасибо, все получилось. Сам че-то не додумался.
Доброго времени.

```1c
    ОбластьП10000 = Макет.ПолучитьОбласть("МногострочнаяЧастьП10000");

    Пока Выборка.Следующий Цикл
    ОбластьП10000.Области.П1000001_1.Значение = Ном;
    ТабДок.Вывести(ОбластьП10000);
    КонецЦикла
```

Код работает правильно, все выводит красиво. Но.... при добавлении строк в ТабДок. Ячейкам присваиваются произвольные номер типа R6С7... Вопрос как мне в цикле задавать не только значения ячеек но и имена....?
---
Из синтакс-помощника:

ТабличныйДокумент (SpreadsheetDocument)
Вывести (Put)
Возвращаемое значение:
Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.

Попробуй присваивать имя области, в которую вывел

```1c
    ОбластьП10000.Области.П1000001_1.Значение = Ном;
    мОбласть = ТабДок.Вывести(ОбластьП10000);
    мОбласть.Имя = "П1000001_1_(i)";
```

Не уверен что можно в названии области использовать "(", ")", но, надеюсь, суть понятна.
---
проще расшифровкой рулить
---
Ячейкам присваиваются произвольные номер типа R6С7...
Совсем не произвольный...

Синтаксис:

Область(<ИмяОбласти>)
Параметры:

<ИмяОбласти> (обязательный)

Тип: Строка.
Имя области или адрес в формате "R1C1:R2C2", где число после "R" обозначает номер строки, число после "C" - номер колонки, символом ":" (двоеточие) разделяются координаты левого верхнего и правого нижнего угла области. В качестве имени также можно передавать пересечение двух областей, записываемое как "<Имя области 1> | <Имя области 2>".

По делу: https://forum.infostart.ru/forum9/topic98297/
Оно?
---
Перед циклом i =0
В цикле i = i+1
---
Зачем нужны имена? случайно не для оформления ячеек?
---
Ок тогда по порядку. Есть регл форма отчета. Править ее не желательно (Макет). Я в нее вывожу данные. Но у формы есть обработчик: ТабличныйДокументВыбор(). В обработчике обращение к ячейки происходит по имени ячейки. После того, как отрабатывает вывод в табдок:

ОбластьП10000.Области.П1000001_1.Значение = Ном;
ТабДок.Вывести(ОбластьП10000);

ячейка П1000001_1 становится R8C11 а мне надо сделать, что бы она имела имя П1000001_1_(i).
---
По ссылке ходили?
---
Из синтакс-помощника:

ТабличныйДокумент (SpreadsheetDocument)
Вывести (Put)
Возвращаемое значение:
Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.

Попробуй присваивать имя области, в которую вывел

```1c
    ОбластьП10000.Области.П1000001_1.Значение = Ном;
    мОбласть = ТабДок.Вывести(ОбластьП10000);
    мОбласть.Имя = "П1000001_1_(i)";
```

Не уверен что можно в названии области использовать "(", ")", но, надеюсь, суть понятна.
---
проще расшифровкой рулить
---
мОбласть - это вся область. Ячейки в этой области все равно R...C... А в регл отчете расшифровка работает через Имя ячейки. Пока выкрутился добавлением в макет Параметр Расшифровки и перепилил код обработчик ячейки.
Скорее всего копать надо в районе ВставитьОбласть().... слету не прокатило. Там цела копэлла с этой вставкой.....
---
Смоделировал ситуацию. Сделал область в области. Вывел в ТабДок. Обе области вижу в результирующем ТабДок через отладчик.
Что то здесь не то.
Полную картину в студию
Написал внешнюю печатную форму. ФОрмирование документа ворд.
Вызов клиенского типа.
При формировании Печтатной формы на файловой базе все гуд работет
Ставлю на сервер и выскакивает ошибка значение не является значением объектного типа (получить)

Ошибка выскакивает на строке

```1c
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");

    Макет = ОбработкаОбъект.ПолучитьМакет("Макет");

    MSWord = Макет.Получить();//ТУТ ВЫСКАКИВАЕТ ОШИБКА
```

что делать, как быть? Спасайте
---
Посмотрите здесь: https://infostart.ru/public/270277/.

Как раз описывается Ваш случай.
---
Вот статья, решающая мою проблему полностью
Статья
---
Вот статья, решающая мою проблему полностью
Статья
---
Посмотрите здесь: https://infostart.ru/public/270277/.

Как раз описывается Ваш случай.
---
Спасибо. Была мысль про наличие ворда на серваке.
Сейчас жду пока поставят, потом буду тестить
Элементарный запрос: Получаю ошибку "Поле не найдено: ЭтоГруппа"
Что я делаю не так ?

```1c
    ВЫБРАТЬ
    Ссылка , ЭтоГруппа
    ИЗ
    Справочник.ОбщероссийскийКлассификаторОсновныхФондов КАК ОбщероссийскийКлассификаторОсновныхФондов
```
---
Справочник - иерархический; Иерархия элементов;
видимо в этом всё дело ...
Спасибо за наводку !
---
справочник не иерархический видимо
---
Справочник - иерархический; Иерархия элементов;
видимо в этом всё дело ...
Спасибо за наводку !
---
нет иерархии групп
---
Причина в неиспользовании консоли запросов
---
не факт. может оно и работало, да только структуру внезапно поменяли
Конфигурация типовая КА 2.2

Почему при печати товарно транспортной накладной 1-Т в товарный раздел попадает не список товаров, а данные о накладной с этими товарами?
---
Если кому пригодится:

В экранной форме документа транспортная накладная на закладке «Товарный раздел» нужно поставить точку «Товарный состав».
---
Сообщение было скрыто модератором.
---
Если кому пригодится:

В экранной форме документа транспортная накладная на закладке «Товарный раздел» нужно поставить точку «Товарный состав».
Перед пользователем открывается табличный документ, где он выделяет область. Как получить эту строку? ВыделенныеОбласти() видит только одну - первую ячейку
Спасибо
---
Не совсем ячейку. Зависит от того что вы выделяете. У меня, например, есть отчет, пользователь выделяет фрагмент, нажимает кнопку отправить письмо. По расшифровке определяется склад, по складу емейл куда отправлять, по группировке соответственно номенклатура.

```1c
    Попытка
    Склад = ЭлементыФормы.ПолеТабличногоДокументаРезультат.ВыделенныеОбласти[0].Расшифровка.Склад;
    Емайл = ЭлементыФормы.ПолеТабличногоДокументаРезультат.ВыделенныеОбласти[0].Расшифровка.Склад.АдресЭлектроннойПочты;
    Исключение
    Склад = Справочники.Склады.ПустаяСсылка();
    Емайл = ";
    КонецПопытки;
```

Ну и сама это область сохраняется в хтмл и вставляется в тело письма.

```1c
    ТабДок = ЭлементыФормы.ПолеТабличногоДокументаРезультат.ПолучитьОбласть(ЭлементыФормы.ПолеТабличногоДокументаРезультат.ВыделенныеОбласти[0].Имя);
    ИмяФайлаХтмл = ПолучитьИмяВременногоФайла("html");
    ТабДок.Записать(ИмяФайлаХтмл, ТипФайлаТабличногоДокумента.HTML);
```
---
```1c
    ВыделенныеСтроки=ЭлементыФормы.ИмяТабличногоПоля.ВыделенныеСтроки;

    Для каждого Строка из ВыделенныеСтроки Цикл

    //содержимое цикла

    КонецЦикла;
```
---
Сообщение было скрыто модератором.
---
Не совсем ячейку. Зависит от того что вы выделяете. У меня, например, есть отчет, пользователь выделяет фрагмент, нажимает кнопку отправить письмо. По расшифровке определяется склад, по складу емейл куда отправлять, по группировке соответственно номенклатура.

```1c
    Попытка
    Склад = ЭлементыФормы.ПолеТабличногоДокументаРезультат.ВыделенныеОбласти[0].Расшифровка.Склад;
    Емайл = ЭлементыФормы.ПолеТабличногоДокументаРезультат.ВыделенныеОбласти[0].Расшифровка.Склад.АдресЭлектроннойПочты;
    Исключение
    Склад = Справочники.Склады.ПустаяСсылка();
    Емайл = ";
    КонецПопытки;
```

Ну и сама это область сохраняется в хтмл и вставляется в тело письма.

```1c
    ТабДок = ЭлементыФормы.ПолеТабличногоДокументаРезультат.ПолучитьОбласть(ЭлементыФормы.ПолеТабличногоДокументаРезультат.ВыделенныеОбласти[0].Имя);
    ИмяФайлаХтмл = ПолучитьИмяВременногоФайла("html");
    ТабДок.Записать(ИмяФайлаХтмл, ТипФайлаТабличногоДокумента.HTML);
```
Всем привет.

С выходом новых версий платформ появляются новые возможности, поддерживаемые новой и более поздними её версиями. Как можно использовать эти возможности таким образом, чтобы на старых версиях платформы не возникало конфликтных ситуаций? Вот небольшой пример: я делаю проверку текущей версии платформы и в зависимости от этого хочу использовать либо штатную функцию платформы, либо пользоваться своей функцией. Это выглядит следующим образом:

```1c
    НоваяВерсия = Ложь; //Чисто для примера

    Если НоваяВерсия Тогда
    Результат = ПобитовоеИсключительноеИли(196, 241);
    Иначе
    Результат = XOR("11000100", "11110001"); //Моя функция
    КонецЕсли;
```

При запуске внешней обработки, содержащей данный код, я вижу предупреждение о том что "Процедура или функция с указанным именем не определена (ПобитовоеИсключительноеИли)", хотя код ещё не начал исполняться. Это происходит потому что я запустил обработку на платформе 8.3.10, а функция ПобитовоеИсключительноеИли появилась только в платформе 8.3.11. Как следует обходить подобные проблемы?
---
Функция Выполнить(<Строка>), как вариант
---
```1c
    Выполнить("ПобитовоеИсключительноеИли(196, 241)");
```
---
Функция Выполнить(<Строка>), как вариант
---
Спасибо.