arefaste/1C_Forums huggingface dataset:
УНФ 1.6 (1.6.23.75).
Проблема такая:
1. Есть головной контрагент (Петербургский метрополитен).
2. Есть филиал (Петербургский метрополитен, отдел МПЗ). Филиал заведен в программу по-правильному, то есть для него указан головной контрагент. Различия у Головного контрагента и филиала в адресе, КПП и банковских реквизитах.
3. Создал Заказ покупателя, где Покупатель - Головной контрагент. В реквизитах печати указал, что грузополучатель - филиал.
Проблема: при выводе печатной формы УПД в строке "6б" (где надо указать ИНН/КПП покупателя) подставляются данные от Филиала (грузополучателя).

Насколько я понял, судя по правилам заполнения УПД, в эту строку всё-таки должны вставляться данные Покупателя (то есть, моего головного контрагента).

Я залез конфигурацию и нашёл нужный участок кода, который подставляет мне КПП филиала (Обработки -> ПечатьСчетФактура). (Я закомментировал ту часть кода, которая по-моему мнению работает неправильно)

Вопросы у меня такие:
1. Правильно ли понимаю, как должна заполняться строчка "6б" в УПД?
2. Если да, то зачем этот код? Когда применяется правило, описанное в коде?
---
Есть Письмо Минфина России от 26.02.2016 № 03-07-09/11029, поэтому 1С в КПП покупателя ставит КПП обособки, как получателя услуги, хотя и платит головной контрагент
---
Есть Письмо Минфина России от 26.02.2016 № 03-07-09/11029, поэтому 1С в КПП покупателя ставит КПП обособки, как получателя услуги, хотя и платит головной контрагент
---
Большое спасибо!
Здравствуйте.

Есть отчет, в нем есть отбор по менеджеру. Доступность этого поля отбора каким-то образом зависит от прав пользователя. Если он в группе Администраторы (НСИ и Администрирование - Группы пользователей), то поле отбора доступно (скрин.1). Исключаю его из группы - поле недоступно (скрин.2).

В ПриСозданииНаСервере() выполняется код:
 КомпоновщикНастроекФормы = ЭтаФорма.Отчет.КомпоновщикНастроек;
 НастройкиОтчета = ЭтаФорма.НастройкиОтчета;
И в этих настройках уже нет поля Менеджер (если пользователь не в группе Админы). И это поле есть, если пользователь в группе Админы.

Мне нужно, чтобы доступность поля не зависила от того, в какой группе находится пользватель. Не смог понять как и где это сделать. Может вы подскажете?
---
Проверьте наличие доступа на просмотр к источнику поля Менеджер (справочникам/регистрам/что там в запросе...)
---
Проверьте наличие доступа на просмотр к источнику поля Менеджер (справочникам/регистрам/что там в запросе...)
---
дал доступ на просмотр и чтение всех документов
В упр форме есть кнопка Глобальная команда открыть карту бизнес процесса (параметр берется из списка). Все было хорошо до момента обновления платформы. теперь при попытке вызвать команду из формы выдает : Команда не может быть выполнена для указанного объекта.
Как победить? Пока решил сделать команду локальной. Но все таки интересно!!!!
---
Ну да, тип параметра команды сравни с типом объекта, на основании которого строится динамический список, и на случай, если список получается произвольным запросом - с основной таблицей (такое поле) в настройках запроса.
---
Посмотри в свойствах глобальной команды - есть ли там ссылка на тот объект, который является основным для списка.
---
Не понял где эти ссылки. есть Типы параметра команды. Там естественно галочка стоит иначе ее вытащить на форму бы не удалось.
---
Ну да, тип параметра команды сравни с типом объекта, на основании которого строится динамический список, и на случай, если список получается произвольным запросом - с основной таблицей (такое поле) в настройках запроса.
---
Ну раз на 8.3.5 работало значит с типом параметров все норм. Да список динамический и формируется запросом.
---
Все я кажется понял... вызвать форму из модуля можно вот с таким параметром: Элементы.СписокзадачПоПользователю.ТекущиеДанные.АктРекламации.БизнесПроцесс

а глобальная команда вызывается вот с таким Элементы.СписокзадачПоПользователю.ТекущиеДанные.БизнесПроцесс

Вопрос закрыт спасибо за помощь!!!!!!
---
Не помогло стоит что документОснование. команда от документаоснование один фиг таже ошибка, динамический список запрос произвольный, поле входит в ключи дин. списка
---
Помогло сделать поле обязательным т.к. по умолчанию не выводилось
---
А список то заполнен? В нем есть хотя бы одна строка?
---
Да
Каким образом можно работать с переданными параметрами? В форме которая открывается через ОткрытьФорму("Документ.Оформлятор.Форма.ФормаДокумента",Параметры);
В форме первого документа кнопка открывает форму второго документа и передает структуру Параметры
И как в этой форме например в событии при открытии заполнить реквизиты переданными параметрами
---
Не при открытии, а при создании на сервере. На клиенте неключевые параметры вроде как не видны.
---
Сообщение было скрыто модератором.
---
Не при открытии, а при создании на сервере. На клиенте неключевые параметры вроде как не видны.
---
При открытии формы в процедуре при создании на сервере к этим параметрам можно обратиться через Параметры.Статус
Добрый день!
Есть проблема в сумме при группировке с текстом запроса:

```1c
    |ВЫБРАТЬ
    | ХозрасчетныйОстатки.Счет КАК Счет,
    | ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
    | ХозрасчетныйОстатки.Субконто2 КАК Субконто2,
    | ХозрасчетныйОстатки.Субконто3 КАК Субконто3,
    | ХозрасчетныйОстатки.Организация КАК Организация,
    | ХозрасчетныйОстатки.Валюта КАК Валюта,
    | ХозрасчетныйОстатки.Подразделение КАК Подразделение,
    | ХозрасчетныйОстатки.СуммаОстатокДт КАК СуммаОстатокДт,
    | ХозрасчетныйОстатки.СуммаОстатокКт КАК СуммаОстатокКт
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Остатки(
    | &ДатаОстатков,
    | Счет В ИЕРАРХИИ (&СписокСчетов),
    | ,
    | Организация В (&Организации)
    | ) КАК ХозрасчетныйОстатки
    |ИТОГИ
    | СУММА(СуммаОстатокДт),
    | СУММА(СуммаОстатокКт)
    |ПО
    | Организация
```

Как видно на первом скрине итог сумм получается как в ОСВ (СуммаОстатокДт - СуммаОстатокКт).
Вопрос. Как добиться того, что бы суммы просто суммировались по своей колонке (как на втором скрине)?
---
Попробуйте просуммировать по полю СуммаРазвернутыйОстаток (Кт, Дт)

PS: Наверное ОСВ всё таки, а не ОСК
---
Попробуйте просуммировать по полю СуммаРазвернутыйОстаток (Кт, Дт)

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

Создал расширение (адаптация) ... дополнительные "Перечисления", привязал к номенклатуре, консоль запросов видит это расширение, а когда при создании внешнего отчета, вставил готовый запрос в конструктор запросов в конфигураторе и ... нет этих расширений!!!!!

Подскажите, что надо сделать, чтоб конструктор увидел это расширение или может что-то другое надо?

платформа: 8.3.22.1672, конфа: 1С:Розница 2.3
---
Во внешнем отчете конструктор запроса не увидит объекты расширения.
-пишите запрос без конструктора,
-в пользовательском режиме в консоли запросов подготовьте запрос, а в отчет просто вставьте готовый текст,
-добавьте отчет в расширение.

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

Любой из вариантов.
---
Не видит реквизиты расширения в пользовательском режиме в конструкторе запросов на платформе 8.3.22.1704 и актуальной на текущий момент 8.3.22.1709. На старых версиях платформы такой проблемы нет.
---
все видит. 8.3.22.1709
Попробуйте консоль запросов поменять.
---
Для новых только что добавленных расширений работает без проблем, для подключенного ранее расширения типовой конструктор запроса из разных платформ вел себя по разному. Спасла корректировка ролей.
ТабДок.Область("R1C1").Параметр= "Текст"; ......?
 ТабДок.Область("R2C2").Текст = "Текст";

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

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

Или по индексу.
---
Можно распарсить настройку формы, там есть порядок колонок:

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

Да, спасибо!
---
Мне просто интересно - зачем?
---
у меня было 2 колонки, выводилась сумма, потом контрагент, сделал так:
ТЗ_Заказы.Колонки.Сдвинуть("СуммаПоступления",1);
Добрый день, у меня простая задача, но с реализацией явные проблемы. Нужно удалить все роли пользователя которых нет в массиве СтруктураДанных.Роли.

Но проблема в том, что удаляя элемент в ПользовательИБ.Роли, он удаляется и в РолиПользователя. Т.е. нужно удалить 2 роли, а удаляется только 1 и цикл завершен.

Как вообще удалять выборочно роли? Уверен что туплю и нормальное решение есть.

```1c
    РолиПользователя = ПользовательИБ.Роли;

    Для Каждого ТекСтрока ИЗ РолиПользователя Цикл

    ЕстьРоль = СтруктураДанных.Роли.Найти(ТекСтрока.Имя);

    Если ЕстьРоль = Неопределено Тогда

    НайденаРоль = Метаданные.Роли.Найти(ТекСтрока.Имя);

    //проверка роли на наличие в группах доступа

    ПользовательИБ.Роли.Удалить(НайденаРоль);

    КонецЕсли;

    КонецЦикла;
```
---
гм. А у коллекции ролей ни метода определения количества, ни обращения по индексу и нету.

В вашем случае, видимо, можно сделать через промежуточный массив примерно так:

```1c
    РолиПользователя = ПользовательИБ.Роли;
    МассивКУдалению = Новый Массив;

    Для Каждого ТекРоль ИЗ РолиПользователя Цикл
    ЕстьРоль = СтруктураДанных.Роли.Найти(ТекРоль.Имя);
    Если ЕстьРоль = Неопределено Тогда
    МассивКУдалению.Добавить(ТекРоль);
    КонецЕсли;
    КонецЦикла;

    Для Каждого РольКудалению Из МассивКУдалению Цикл
    РолиПользователя.Удалить(РольКудалению);
    КонецЦикла;
```
---
Там всей хитрости: Перебор коллекции РолиПользователя нужно делать снизу - вверх.
Т.е. не от первой строчки до последней, а от последней к первой.
---
Перебор коллекции РолиПользователя нужно делать снизу - вверх.

А как это можно сделать? Перебор в цикле, запись имен в список значений, сортировка ?
---
гм. А у коллекции ролей ни метода определения количества, ни обращения по индексу и нету.

В вашем случае, видимо, можно сделать через промежуточный массив примерно так:

```1c
    РолиПользователя = ПользовательИБ.Роли;
    МассивКУдалению = Новый Массив;

    Для Каждого ТекРоль ИЗ РолиПользователя Цикл
    ЕстьРоль = СтруктураДанных.Роли.Найти(ТекРоль.Имя);
    Если ЕстьРоль = Неопределено Тогда
    МассивКУдалению.Добавить(ТекРоль);
    КонецЕсли;
    КонецЦикла;

    Для Каждого РольКудалению Из МассивКУдалению Цикл
    РолиПользователя.Удалить(РольКудалению);
    КонецЦикла;
```
---
Спасибо!
---
Был рад помочь.
Добрый день, имеется два запроса
1.

```1c
    ВЫБРАТЬ
    Туры.Наименование КАК Наименование,
    КОЛИЧЕСТВО(ЗаказТураТабличнаяЧасть1.НомерСтроки) КАК НомерСтроки
    ИЗ
    Документ.ЗаказТура.ТабличнаяЧасть1 КАК ЗаказТураТабличнаяЧасть1
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Туры КАК Туры
    ПО ЗаказТураТабличнаяЧасть1.Тур = Туры.Ссылка

    СГРУППИРОВАТЬ ПО
    Туры.Наименование
```

2.

```1c
    ВЫБРАТЬ
    Туры.Наименование КАК Наименование,
    КОЛИЧЕСТВО(ЗаказТураТабличнаяЧасть1.НомерСтроки) КАК НомерСтроки
    ИЗ
    Документ.ЗаказТура.ТабличнаяЧасть1 КАК ЗаказТураТабличнаяЧасть1
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Туры КАК Туры
    ПО ЗаказТураТабличнаяЧасть1.Тур = Туры.Ссылка,
    Документ.ПродажаТура КАК ПродажаТура
    ГДЕ
    ЗаказТураТабличнаяЧасть1.Ссылка = ПродажаТура.Тур.Ссылка

    СГРУППИРОВАТЬ ПО
    Туры.Наименование
```

У обоих запросов имеется общее поле "Наименование". Необходимо объединить данные обоих запросов по двум колонкам. На данный момент результаты запросов выглядят так:

1.
Наименование-Заказано
Тур 1---------------5
Тур 2---------------2
Тур 3---------------1

2.
Наименование-Продано
Тур 1--------------4
Тур 2--------------1

На выходе необходимо такое:
Наименование-Заказано-Продано
Тур 1--------------5-------------4
Тур 2--------------2-------------1
Тур 3--------------1-------------0

То есть если для второго запроса нет информации по данному наименованию, то вывести 0. Спасибо
---
```1c
    Выбрать
    Поле1,
    Поле2,
    0 КАК Поле3
    ПОМЕСТИТЬ ВТ
    Из
    таблица1

    Объединить все

    Выбрать
    Поле1,
    0,
    Поле2
    Из
    таблица2
    ;
    ВЫБРАТЬ
    Поле1,
    Сумма(Поле2) КАК Поле2,
    Сумма(Поле3) КАК Поле3
    ИЗ
    ВТ
    Сгруппировать по
    Поле1
```
---
Почитать про ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ
---
Но ведь в таком случае результатом будет объединение данных двух запросов в одну колонку? Необходимо данные из первого запроса положить во вторую колонку, данные из второго запроса в третью колонку, при имеющихся одинаковых первых колонках наименование
---
Какая структура у ваших документов Продажа тура и Заказ тура? вы уверены что ваши запросы по отдельности корректные данные выдают?
---
Да, по отдельности запросы выдают корректные данные, в первом сообщении темы есть примеры. Кроме этого, пробовал объединять два отдельных отчета с этими запросами в один с помощью ключа в виде наименования, но ввиду неопытности не получилось
---
так делайте в разные колонки

```1c
    Выбрать
    Поле1,
    Поле2,
    0
    Из
    таблица1

    Объединить все

    Выбрать
    Поле1,
    0,
    Поле2
    Из
    таблица2
```
---
В таком случае происходит "склеивание" двух запросов, то есть имеются дубликаты наименований, а необходимо объединить данные с двух разных запросов по разным колонкам
---
```1c
    Выбрать
    Поле1,
    Поле2,
    0 КАК Поле3
    ПОМЕСТИТЬ ВТ
    Из
    таблица1

    Объединить все

    Выбрать
    Поле1,
    0,
    Поле2
    Из
    таблица2
    ;
    ВЫБРАТЬ
    Поле1,
    Сумма(Поле2) КАК Поле2,
    Сумма(Поле3) КАК Поле3
    ИЗ
    ВТ
    Сгруппировать по
    Поле1
```
---
Добавить к результату агрегатную функцию...
Добра, уважаемые форумчане!
Вопрос: в базе-источнике код 123, а при переносе код становится 000000123
Почему так происходит и что с этим делать? Заранее спасибо большое
---
В КД2 в ПКС есть галка приведение к длине, которая добавляет нули в начало строки.
---
либро обработкой убрать лидирующие 0000 или перевести число в строку и беренесется без лидирующих 000
---
и там и там тип Строка
обработка не поможет, т.к. часть номеров с нулями должна быть, а часть нет
---
а перенос через что делаете? через правила обмена?
---
Да, универсальный обмен данными
---
При переносе записывать с обмен данными. загрузка. Возможно в приемнике есть алгоритм при записи.
---
галка в универсальном обмене "Загружать в режиме обмена" стоит
---
Значит в коде есть обработка перед записью, которая игнорирует признак.
---
В КД2 в ПКС есть галка приведение к длине, которая добавляет нули в начало строки.
---
итишкин-колотишкин, стоит, снял - заработало
огромное спасибо
Встретил такую задачу. Разработать функцию, которая выводит числа из заданного диапазона в алфавитном порядке их написания. Какой код будет самым коротким ?
---
8290157346
В этом числе есть все цифры, названия которых выстроены в алфавитном порядке.

Bосемь,
Два,
Девять,
Ноль,
Один,
Пять,
Семь,
Три,
Четыре,
Шесть
---
И куда ты собеседуешся?
---
код будет самым коротким
```1c
    // Вывод чисел в алфавитном порядке их написания
    // Параметры:
    // Параметр - Строка - Представление чисел в алфавитном порядке их написания, введенное пользователем.
    //
    Процедура ВывестиЧисла(Параметр)
    Сообщить(Параметр);
    КонецФункции
```
---
не скомпилируется
---
Это будет дополнительным вопросом собеседования - чем процедура от функции отличается.
---
```1c
    НачалоДиапазона = 0;
    КонецДиапазона = 100;
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.колонки.Добавить("ЧислоПрописью") ;

    Для й = НачалоДиапазона По КонецДиапазона Цикл
    Стр = ТЗ.Добавить();
    Стр.ЧислоПрописью = ЧислоПрописью(й);
    КонецЦикла;

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

Bосемь,
Два,
Девять,
Ноль,
Один,
Пять,
Семь,
Три,
Четыре,
Шесть