arefaste/1C_Forums huggingface dataset:
Вкратце, ситуация такая:
1. Формируем двух листовой файл Excel с помощью ПакетОтображаемыхДокументов;
2. Сохраняем в формате ТипФайлаПакетаОтображаемыхДокументов.XLS;
3. Открываем файл через Новый COMОбъект("Excel.Application"); (На компьютере стоит Excel 2016)
4. Вызываю метод FileXLS.Worksheets(2).Protect("my_very_nice_pass",false,true,true,true);

5a. Капут. приехали. 0x800A03EC Васся!!!!
5b. Все чики пуки! Лист засисисьчикёН!

Видео, где подробно описываю проблему
https://youtu.be/hno1fwXEOCg

Обработка над которой провожу экзекуции
https://disk.yandex.ru/d/WdhSPtdeai9TvA
---
Добавьте
```1c
    Worksheet_Info.Activate();
```
 перед вызовом Protect()
---
5a. Капут. приехали. 0x800A03EC Васся!!!! Я не Вася, но вот тут пишут:
Код ошибки 0x800A03EC (или -2146827284) означает NAME_NOT_FOUND; другими словами, вы попросили что-то, и Excel не может это найти.
...
Worksheets["BLAHBLAH"] выбрасывает это, когда лист не существует и т. Д. В общем, вы просите что-то с определенным именем, а его не существует. Что касается того, почему, это потребует некоторого копания с вашей стороны.

Проверьте, что в вашем листе определенно есть диапазон, который вы просите, или что .CellName определенно возвращает имя диапазона, который вы просите. Лично я бы для начала попробовал обратиться к нужному листу по имени, а не по номеру.
5b. Все чики пуки! Лист засисисьчикёН! Варбамбия! Киргуду! Моя твоя не понимай!
---
В ролике я ссылался на эту статью. И нет разницы как обращаться к листам. Но, за ответ спасибо!
---
Добавьте
```1c
    Worksheet_Info.Activate();
```
 перед вызовом Protect()
---
Низко кланяюсь! О, Великий, Excel'евод!!! Пасиб тебе на добром слове! Помогло!
Странно что в MS документации это не написано, может где-то в общем положении... Это как-то объясняется? От куда узнали?
---
Наверно можно считать особенностью работы из 1С, просто сталкивался с таким, другого решения не нашел. И где в документации это написано тоже:)
Добрый день! Подскажите что за невиданная хрень с условием проведен = Истина в запросе?

```1c
    ВЫБРАТЬ
    ЭтапПроизводства2_2.Номер КАК Номер,
    ЭтапПроизводства2_2.Проведен КАК Проведен
    ИЗ
    Документ.ЭтапПроизводства2_2 КАК ЭтапПроизводства2_2
    ГДЕ
    ЭтапПроизводства2_2.Трудозатраты.Исполнитель = &Исполнитель
    И НЕ ЭтапПроизводства2_2.Трудозатраты.Выполнено
    И ЭтапПроизводства2_2.Трудозатраты.ВидРабот.ПРОК_ВРЦ = &ПРОК_ВРЦ
    И ЭтапПроизводства2_2.Проведен = Истина
```

Пустой результат. Если убираю условие
```1c
    И ЭтапПроизводства2_2.Проведен = Истина
```
 тогда отрабатывает корректно.
---
Вот потому, что я не совсем представляю, как транслируется запрос с условиями и на реквизиты шапки и на реквизиты табличной части, я предположил что надо оставить что-то одно.
---
А если убрать условия на табличные части? Корректно отрабатывает?
Я бы, кстати, данные запрос переписал на выборку из табличной части.
---
```1c
    ВЫБРАТЬ
    ЭтапПроизводства2_2Трудозатраты.Ссылка.Номер КАК Номер
    ИЗ
    Документ.ЭтапПроизводства2_2.Трудозатраты КАК ЭтапПроизводства2_2Трудозатраты
    ГДЕ
    ЭтапПроизводства2_2Трудозатраты.Исполнитель = &Исполнитель
    И НЕ ЭтапПроизводства2_2Трудозатраты.Выполнено
    И ЭтапПроизводства2_2Трудозатраты.ВидРабот.ПРОК_ВРЦ = &ПРОК_ВРЦ
    И ЭтапПроизводства2_2Трудозатраты.Ссылка.Проведен
```

Так работает...
---
Вот потому, что я не совсем представляю, как транслируется запрос с условиями и на реквизиты шапки и на реквизиты табличной части, я предположил что надо оставить что-то одно.
---
а когда ставишь ложь? там еще такая хрень он истину как амперсант определяет если галку произвольное вроде оставить.
---
Интересный "глюк". Запрос
```1c
    ВЫБРАТЬ
    Документ1.Ссылка КАК Ссылка
    ИЗ
    Документ.Документ1 КАК Документ1
    ГДЕ
    Документ1.ТабличнаяЧасть1.НомерСтроки = 1
    И НЕ Документ1.ТабличнаяЧасть1.Реквизит1 = 2
    И Документ1.Проведен = ИСТИНА
```
 1С преобразует в запрос вида:
```1c
    SEL ECT
    T1.Ссылка
    FR OM
    Документ.Документ1 T1
    WHERE
    EXISTS(
    SEL ECT 1
    FR OM Документ.Документ1.ТабличнаяЧасть1 T2
    WHERE T1.Ссылка = T2.Ссылка AND T2.НомерСтроки = 1)

    AND NOT EXISTS(
    SEL ECT 1
    FR OM Документ.Документ1.ТабличнаяЧасть1 T3
    WHERE T1.Ссылка = T3.Ссылка AND T3.Реквизит1 = 2) // ЛОЖЬ

    AND T1.Проведен = ИСТИНА
```
 и выдаёт пустой результат.
В то же время, запрос
```1c
    ВЫБРАТЬ
    Документ1.Ссылка КАК Ссылка
    ИЗ
    Документ.Документ1 КАК Документ1
    ГДЕ
    Документ1.ТабличнаяЧасть1.НомерСтроки = 1
    И НЕ Документ1.ТабличнаяЧасть1.Реквизит1 = 2
```
 преобразуется в
```1c
    SEL ECT
    T1.Ссылка
    FR OM
    Документ.Документ1 T1
    WHERE
    EXISTS(
    SELECT 1
    FR OM Документ.Документ1.ТабличнаяЧасть1 T2
    WH ERE T1.Ссылка = T2.Ссылка AND T2.НомерСтроки = 1 AND NOT T2.Реквизит1 = 2)
```
 и выдает 1 строчку.
В базе всего 1 проведенный документ с ТЧ из двух строк, в первой Реквизит1 = 1, во второй Реквизит1 = 2.
Всем доброго дня!
Прошу помощи !

```1c
    Пока ВыборкаСпецификация.Следующий() Цикл
    НайденнаяСтрока = ТЗСпецификацияНормы.Найти(ВыборкаСпецификация.Спецификация, "Спецификация");
    Если НайденнаяСтрока = Неопределено Тогда
    Материалы.Очистить();
    Материалы = ЗаполнитьСтрокиДерева(ВыборкаСпецификация.Спецификация, Материалы);
    НоваяСтр = ТЗСпецификацияНормы.Добавить(); //В этот момент добавили строку в таблицу значений
    НоваяСтр.Спецификация = ВыборкаСпецификация.Спецификация; //Присвоили значение
    НоваяСтр.Материалы = Материалы; //Присваиваем таблицу значений, которую получили в др функции

    КонецЕсли;
    КОнецЦикла;
```

НоваяСтр.Материалы = Материалы; - Проблема в этом месте. Материалы перезаписываются у всех строк ТЗСпецификацияНормы.
Как сделать, чтобы Материалы заполнились только в НоваяСтр?
Не понимаю, почему перезаписывает во все ТЗСпецификацияНормы..
---
```1c
    Материалы = Новый ТаблицаЗначений;
```
---
Каждый раз создавайте новую переменную

```1c
    Материалы = Новый ТаблицаЗначений()
```

А оптом заполняйте и присваивайте в строке
Или при присвоением в строке таблице делайте копию ТЗ

```1c
    НоваяСтр.Материалы = .Материалы.Скопировать();
```

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

    КонецЕсли;
    КОнецЦикла;
```
---
Каждый раз создавайте новую переменную

```1c
    Материалы = Новый ТаблицаЗначений()
```

А оптом заполняйте и присваивайте в строке
Или при присвоением в строке таблице делайте копию ТЗ

```1c
    НоваяСтр.Материалы = .Материалы.Скопировать();
```

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

в документе списания в процедуре передЗаписью (на сервере)

если Не (объект.валюта = документОснование.валюта) тогда
отказ истина;
КонецЕсли;

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

в документе списания в процедуре передЗаписью (на сервере)

если Не (объект.валюта = документОснование.валюта) тогда
отказ истина;
КонецЕсли;

примерно так
---
Лучше спросить у своего преподавателя. Полезнее...
Перенес инфу из ЗУП2.0 в ЗУП31
Пытаюсь создать документ начисления , он не заполняется.
Куда копать?
---
Вопрос закрыт: действительно из-за отсутствия окладов, конечно потом прога потребовала заполнить производственный календарь и графики и конечно же из ЗУП2.0 не перенеслись виды расчета, встроенный перенос этого не сделал.
---
в документы переноса и там проверять
---
перенеслась начальная штатная расстановка
---
она как бы вместо приемов на работу?
---
смотрю в начальной штатной расстановке:
---
в ней нет окладов, то бишь они не перенеслись
---
Вопрос закрыт: действительно из-за отсутствия окладов, конечно потом прога потребовала заполнить производственный календарь и графики и конечно же из ЗУП2.0 не перенеслись виды расчета, встроенный перенос этого не сделал.
Добрый день. Подскажите существует ли возможность настроить условное оформление для дополнительного реквизита.
Пример, есть доп. реквизит на форме в элементах зовется как "ДополнительныйРеквизитЗначение_B7582FA0xA499x11EBxB9FExEDBF­AEA4F14F_875A19F4x0BB9x11ECx93B3x3CECEF401576", изменять свойства, типа "только просмотр" и подобные получается, а вот цвет фона нет, через условное оформление делаю так, и оно не применяется, может есть какие то идеи:

```1c
    ЭлементУО = УсловноеОформление.Элементы.Добавить();

    ПолеЭлемента = ЭлементУО.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДополнительныйРеквизитЗначение_B7582FA0xA499x11EBxB9FExEDBF­AEA4F14F_875A19F4x0BB9x11ECx93B3x3CECEF401576");

    ОтборЭлемента = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Дата");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    ОтборЭлемента.ПравоеЗначение = Дата('20200101');

    ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Кирпичный);
```
---
Удалось обойтись только "Доступностью" и отключением "Кнопки выбора", тогда и "Цвет фона" применилось
---
вот этот код где именно?
---
в расширении после "УстановитьУсловноеОформлениеФормы"
---
сложилась такая картина, что если изменять два свойства, "Цвет фона" и "Только просмотр", применяется только одно свойство
---
Удалось обойтись только "Доступностью" и отключением "Кнопки выбора", тогда и "Цвет фона" применилось
---
Насколько я понял, свойства ТолькоПросмотр и Доступность поля ввода в принципе невозможно контролировать условным оформлением.
---
я их делал не условным оформлением, условным только цвет фона
СОМ-объект требует на вход COMSafeArray. У меня есть двоичные данные. Как их преобразовать без записи на диск? непосредственно и без всяких там циклов (данные могут быть большими). Смотрел в сторону ADODB.Stream, но не получилось. Есть варианты?
---
ADODB.Stream Без записи на диск вряд ли получится. А почему такое условие? 1С, например, сама пишет сеансовые данные в файлы. По теме:
```1c
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    Stream = Новый ComОбъект("ADODB.Stream");
    Stream.Type = 1;
    Stream.Open();
    Stream.LoadFromFile(ИмяВременногоФайла);
    Результат = Stream.Read(Stream.Size);
    Stream.Close();
```
---
ADODB.Stream Без записи на диск вряд ли получится. А почему такое условие? 1С, например, сама пишет сеансовые данные в файлы. По теме:
```1c
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    Stream = Новый ComОбъект("ADODB.Stream");
    Stream.Type = 1;
    Stream.Open();
    Stream.LoadFromFile(ИмяВременногоФайла);
    Результат = Stream.Read(Stream.Size);
    Stream.Close();
```
---
без записи на диск - да вызовы частые, а вот дисковая подсистема это узкое место. обратное действие получается без обращения к диску сделать

```1c
    Stream.Open();
    Stream.Type = 1;
    Stream.Write(МассивCOM);
    Stream.Position = 0;
    ДД = Stream.Read();
    Stream.Close();
    Возврат ДД;
```

думал и с этим можно будет как то придумать, возможно через другой объект. А этот вариант я рассматривал, похоже на нем и придется останавливаться
---
обратное действие получается без обращения к диску сделать Не сказал бы, что это обратное действие. ДД = Stream.Read() в вашем примере даст тот же COMSafeArray, а не ДД. Двоичные данные – объект 1С, поэтому в любом случае его придётся привести в "понимаемое" состояние через файловую систему.
---
Stream.Read() дает именно двоичные данные, я проверял, именно так и работает
---
Да, действительно, вы правы. Stream.Read() дает COMSafeArray. это я сам запутался в тестовых вызовах и думал что вариант рабочий
---
```1c
    Функция SafeИзДвоичных(ДвоичныеДанные)
    Если ТипЗнч(ДвоичныеДанные) = Тип("ДвоичныеДанные") Тогда
    Буфер = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ДвоичныеДанные);
    КонецЕсли;

    Байтов = Буфер.Размер;
    COMSafeArray = Новый COMSafeArray("VT_UI1", Байтов);//однобайтовый без знака
    Для сч = 0 по Байтов-1 Цикл
    COMSafeArray.SetValue(сч, Буфер.Получить(сч));
    КонецЦикла;
    Возврат COMSafeArray;
    КонецФункции
```
---
Вариант с циклом тоже рассматривал, но в 1С почему то он непомерно долгий (для больших размеров). через временный файл быстрее работает. но для небольших данных впринципе сгодится
у меня чуть другой вариант был, но суть вроде та же
```1c
    Массив = SafeArray.Выгрузить();
    Длинна = Массив.Количество();
    Буфер = новый БуферДвоичныхДанных(Длинна);
    Для индекс = 0 по Длинна - 1 Цикл
    Буфер.Установить(индекс,Массив[индекс]);
    КонецЦикла;
    Поток = новый ПотокВПамяти(Буфер);
    ДД = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    Возврат ДД;
```
В демо-базе обработка "Формирование заказов по потребностям" сказала, что не заполнен производственный календарь. Иду НСИ и администрирование -> Предприятие, открываю календарь, устанавливаю Период заполнения графика по 31.12.2021, иду на следующую страницу, а там все дни за 2021 г КРАСНЫЕ. Жму кнопку "Заполнить по шаблону" - всё равно все дни за 2021 г КРАСНЫЕ.

Что делать? Как заполнить календарь?
---
Похоже, что вы заполняете элемент справочника "График работы". А Вам нужно заполнить Регистр сведений "Данные производственного календаря", который у Вас называется Российская Федерация. В представленной Вами форме графика он выбран в поле Производственный календарь. Откройте его в отдельном окне и заполните
---
Спасибо.

Для тех кто тоже ищет решение - после заполнения календаря график автоматически НЕ заполняется, поэтому там нужно снова выбрать "Российская Федерация", перейти на вторую закладку и нажать "Записать и закрыть"
---
МБ не нажимаете "записать"?
Откройте регистр сведений, посмотрите какие записи есть до и после.
---
МБ не нажимаете "записать"?

Нажимаю, только без толку.

(2) Откройте регистр сведений

Который? Их там многовато.

(2) посмотрите какие записи есть до и после

До и после чего?
---
https://forum.infostart.ru/forum9/topic263335/
Задавал подобный вопрос, посмотрите, может найдется что нибудь
---
Не помогло :(. Дублей нет, кнопка доступна, только толку от неё всё равно нет
---
У вас на 2м скриншоте есть кнопка "Еще", нажмите на ее и выберите "Заполнить по шаблону" или "Разрешить редактирование"
---
Там нет таких команд. Кнопка "Заполнить по шаблону" доступна, только толку от неё всё равно нет.
---
Попробуйте нажать "пересчитать"
---
Не помогло :(.
---
Похоже, что вы заполняете элемент справочника "График работы". А Вам нужно заполнить Регистр сведений "Данные производственного календаря", который у Вас называется Российская Федерация. В представленной Вами форме графика он выбран в поле Производственный календарь. Откройте его в отдельном окне и заполните
---
Спасибо.

Для тех кто тоже ищет решение - после заполнения календаря график автоматически НЕ заполняется, поэтому там нужно снова выбрать "Российская Федерация", перейти на вторую закладку и нажать "Записать и закрыть"
Здравствуйте, мне надо в обработке обратиться к дополнительным сведениям документа подскажите пожалуйста куда копать (Бухгалтерия КОРП 3.0)
---
ссылка

здесь описание "1С дополнительные сведения запись и получение"
---
ссылка

здесь описание "1С дополнительные сведения запись и получение"
---
Вроде понял, спасибо!
Привет всем. Хочу поделиться проблемой, и возможно получить какие то советы. Суть проблемы: активно работаю с расширениями в разных базах. Иногда сталкиваюсь с проблемой описаной в теме. Выглядит это так: после очередных правок (добавлении реквизитов или ТЧ) при F7 конфгуратор падает в дамп. После этого с БД уже ничего нельзя сделать, любые изменения невозможно обновить БД. Можно откатиться в расширении и работать нормально, но, любые изменения и попытка обновления результат такой же. Очень хотелось бы найти какой то выход, чтобы восстановить базу после такого падения, чтобы с ней далее можно было работать. Что пробовал:
- Делать не активным расширение, удалять его, сохраниться, и снова загружать
- Мнеять платформу. Не помогает. Одинаково проявляется и на 8.3.19 и 8.3.18
- Менять разрядность платформы
- Делать ТИИ со всеми галками
- Сохранять в dt и разворачивать заново
Ничего не помогает. Поврежденная база остается в таком же состоянии. Работаь можно, изменнения внести нельзя. Проявляется на разных типовых, актульных релизов. Что еще можно попробовать чтобы привести такую базу в чувство?
---
Менять платформу нужно на правильную версию(возможно для разных ситуаций, она будет разной).
У нас помог возврат на 8.3.18.1483
---
Как вариант, из-под администратора запустить конфигуратор. База файловая или серверная. если файловая, есть ли права на изменение папки, в которой база лежит у пользователя, под которым сеанс винды и конфигуратор запущен?
---
Запуск под администратором ничего не меняет. Права есть все. Дело точно не в этом
---
Менять платформу нужно на правильную версию(возможно для разных ситуаций, она будет разной).
У нас помог возврат на 8.3.18.1483
---
Просто удивительно! Проблема решилась. Огромное спасибо
У меня вопрос : Как к уже существующей Иерархии в запросе добавить ещё одну?

У меня есть запрос, в котором есть условие " Номенклатура.Ссылка В Иерархии ЗПФ "
Запрос.УстановитьПараметр ("ЗПФ",Путь до зпф);

В общем, мне нужно к этой Иерархии добавить ещё одну иерархию "СопутствующиеТовары", но после того , как я добавляю к "ЗПФ"
```1c
    "СопутствующиеТовары", у меня результат запроса = 0.

    | Спр.Ссылка В ИЕРАРХИИ(&СопутствующиеТовары)
    | И Спр.Ссылка В ИЕРАРХИИ(&ЗПФ)
    |ИТОГИ ПО
    | Номенклатура ИЕРАРХИЯ"
```

Я написал потом вот так ( Вместо "И" , написал "ИЛИ")

```1c
    | Спр.Ссылка В ИЕРАРХИИ(&СопутствующиеТовары)
    | ИЛИ Спр.Ссылка В ИЕРАРХИИ(&ЗПФ)
    |ИТОГИ ПО
    | Номенклатура ИЕРАРХИЯ"
```

Мой результат запроса стал равен больше тысячи - слишком большое значение.

Когда я сортирую отдельно по "ЗПФ" у меня результат - 53, а "СопутствующиеТовары" - 25.

Помогите найти решение проблемы.
---
В общем, все заработало , когда я задал параметр массивом т.е.

```1c
    | И Спр.Ссылка В ИЕРАРХИИ(&ЗпфСопутствующиеТовары)

    МассивЗпфСопутствующихТоваров=Новый Массив;
    МассивЗпфСопутствующихТоваров.Добавить(ПланыВидовХарактеристик.Константы.ГруппаЗПФ.Значение);
    МассивЗпфСопутствующихТоваров.Добавить(ПланыВидовХарактеристик.Константы.ГруппаНоменклатурыСопутствующиеТовары.Значение);

    Запрос.УстановитьПараметр ("ЗпфСопутствующиеТовары",МассивЗпфСопутствующихТоваров);
```
---
извините, я только начинаю и не совсем понимаю что и как работает :С
---
не судите строго
---
Слить всё в один список значений и передать только его в запрос
---
Здравствуйте. Условие через ИЛИ написано верно. И запрос, скорее всего, отрабатывает у вас правильно. Напишите как заполняются параметры запроса. И про "сортировку отдельно" уточните. Вы запросом выбираете по одному условию или просто в справочник смотрите?
---
В общем, все заработало , когда я задал параметр массивом т.е.

```1c
    | И Спр.Ссылка В ИЕРАРХИИ(&ЗпфСопутствующиеТовары)

    МассивЗпфСопутствующихТоваров=Новый Массив;
    МассивЗпфСопутствующихТоваров.Добавить(ПланыВидовХарактеристик.Константы.ГруппаЗПФ.Значение);
    МассивЗпфСопутствующихТоваров.Добавить(ПланыВидовХарактеристик.Константы.ГруппаНоменклатурыСопутствующиеТовары.Значение);

    Запрос.УстановитьПараметр ("ЗпфСопутствующиеТовары",МассивЗпфСопутствующихТоваров);
```
---
Теоретически вы могли и так написать

```1c
    | Спр.Ссылка В ИЕРАРХИИ(&СопутствующиеТовары, &ЗПФ)
    |ИТОГИ ПО
    | Номенклатура ИЕРАРХИЯ"
```
До каких пор механизм сравнения конфигураций будет показывать несуществующие отличия? Каждый раз, какая-нибудь дрянь вылезает при сравнении основной конфигурации с поставщиком. Вот и сейчас заголовок расширенной подсказки якобы "различается".
---
А если серьезно, то даже у вас на скрине видно, в чем отличия - в регистре символов цвета.
---
1с говорит
"Мы в ЕДТ работаем это тру, конфигуратор это не тру, и вообще это не ошибка - они ж различаются? Различаются! Значит не ошибка. Проблема на вашей стороне"
---
На скрине, внизу, отображена форма обработки, которую я создал и скопировал туда реквизит "программа" из конфигурации поставщика и реквизит "программа" из основной конфигурации. В табло показан результат сравнения заголовков этих реквизитов. Они идентичны.
---
А если серьезно, то даже у вас на скрине видно, в чем отличия - в регистре символов цвета.
---
я думал, по факту, этот один и тот же цвет и там нет различий.
---
Цвет то может один и тот же, а регистр символов разный.
---
Суть ошибки в том, что 1с работает через EDT. Эта штука иначе формирует справочную информацию и всякие подсказки (короче все, где есть тэги) нежели конфигуратор.

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

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