arefaste/1C_Forums huggingface dataset:
Здравствуйте, Уважаемое сообщество! Не буду много писать, ссылаюсь на предыдущую тему: https://forum.infostart.ru/forum9/topic254336/#message2573226

Все тоже самое, только в 1С УТ 11.4, никак не могу запустить внешнюю обработку, все дело в этом коде, посоветуйте кто ни будь, что можно прописать вместо: СписокСтандартныйПоискНоменклатураКоманднаяПанель

Уже испробовала, все что могла логически написать, ошибок не выдает, но и не запускается!!!

```1c
    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
    ПараметрыРазмещения.КоманднаяПанель = Элементы.КоманднаяПанельСписокРасширенныйПоискНоменклатура;

    Массив = Новый Массив;
    Массив.Добавить(Метаданные.Справочники.Номенклатура);
    ПараметрыРазмещения.Источники = Массив;

    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
```
---
Вероятно, для обработки не выбрана основная форма.
---
Для УТ 11.4 вам нужно скопировать стандартную форму списка номенклатуры именно из УТ 11.4. Насколько я понял, сейчас у вас форма скопирована из Розницы.
---
Нет, Форма списка скопирована из 1С УТ 11.4, я не совсем дура, уж это я точно понимаю! Извините за откровенное высказывание в свой адрес! Весь материал который есть в данной теме, он имеет отношение только к 1С УТ 11.4
---
Попробуйте просто закомменитировать весть блок с подключаемыми командами в ПриСозданииНаСервере.
---
Сейчас попробую так сделать и запустить!
---
Нет, не запускается!

Программный код Формы списка;
---
Вот так запускается!
---
Вероятно, для обработки не выбрана основная форма.
---
Вот что значит быть не внимательной, все заработало!!! Огромное Вам человеческое СПАСИБО!!!
Форма не была выбрана, какая банальная история!!!
---
Вот скриншот Формы списка:
---
Вот здесь, посмотрите пожалуйста, что можно прописать? В скриншоте видно!

```1c
    ПараметрыРазмещения.КоманднаяПанель = Элементы.???;
```
---
Вы в прошлый раз мне написали, как у Вас наименовано, так и запишите в программный код, посмотрите в скриншоте, как у меня там наименовано!?
---
История работы программного кода: Все делается на основании расширения для 1С Розницы и расширения 1С УТ, расширения оба работают корректно, по логике обработки тоже должны работать, так как обработка для 1С Розница с предыдущей темы работает стабильно и в поле Количество отображает корректный остаток товара.

В обработке для розницы прописан такой программный код:

```1c
    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
    ПараметрыРазмещения.КоманднаяПанель = Элементы.КоманднаяПанель;

    Массив = Новый Массив;
    Массив.Добавить(Метаданные.Справочники.Номенклатура);
    ПараметрыРазмещения.Источники = Массив;

    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
```
---
Ребята, ну что, есть у кого какие соображения на этот счет!?
---
Неужели не у кого нет соображений по этой теме!?
Есть небольшая обработка, которая заполняет нужное значение суммы в документе ООРП(отчет о розничных продажах).
Не могу понять в каком месте я зациклил обработку....

```1c
    Для каждого Элемент из Документ цикл
    ООРП = Элемент.Значение.ПолучитьОбъект();
    Для каждого Строка из ООРП.Товары цикл
    Если Строка.Цена = 0.01 тогда
    Строка.Сумма = 0.01;
    КонецЕсли;
    ООРП.Записать(РежимЗаписиДокумента.Проведение);
    КонецЦикла;
    КонецЦикла;
```
---
Сам дурак.....

Запись объекта поставил после проверки каждой строки в товарах....
Потому так долго обработка исполнялась....
Тема закрыта)))
---
Сам дурак.....

Запись объекта поставил после проверки каждой строки в товарах....
Потому так долго обработка исполнялась....
Тема закрыта)))
---
может не виснет а работает? работать она будет очень долго если отчетов много... да и в каждом по много строк..
отладчиком смотрели где виснет?
---
да, там если посмотреть, то я, честно говоря не понимаю как я так облажался, но я после проверки каждой строки записывал Объект....
Перенес во внешний цикл запись объекта, и все стало работать)))
---
не ну оно же работало... просто очень и очень медленно...
Вообще можно ли?
У меня при создании на сервере если есть нужный параметр на форму списка накладывается отбор.
А вот наткнулся на фокус - когда форма уже открыта - ничего не произошло
---
Да тут на 1с нашел, использовать метод ПолучитьФорму с указанием ее идентификатора, и вроде потом ее можно как то оповестить, не понял как оповещать. Да и не всегда эта форма открывается с отбором. Это при открытии формы куда то сохранять ее идентификатор надо, сложно. В общем выкрутился открытием нового экземпляра формы
---
ну а что вы ожидали?
как открытая форма узнает, что изменились параметры отбора?

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

```1c
    Поле объекта не обнаружено (ПериодДатыПриемки)
```

```1c
    &НаКлиенте
    Процедура ПриЗакрытии(ЗавершениеРаботы)
    СохранитьНастройки();
    КонецПроцедуры

    &НаСервере
    Процедура СохранитьНастройки()

    ИменаСохраняемыхРеквизитов =
    "Склад,
    |Контрагент,
    |Статус,
    |ПериодДатыПриемки";

    Настройки = Новый Структура(ИменаСохраняемыхРеквизитов);
    ЗаполнитьЗначенияСвойств(Настройки, ЭтаФорма);

    ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Документ.СТ_РаспоряжениеНаПриемку.Форма.ФормаСписка", КлючНазначенияИспользования, Настройки);

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

    &НаСервере
    Процедура ВосстановитьНастройки(Параметры)

    Если Параметры.Свойство("СтруктураБыстрогоОтбора") Тогда
    СтруктураБыстрогоОтбора = Параметры.СтруктураБыстрогоОтбора;
    СтруктураБыстрогоОтбора.Свойство("Контрагент",Контрагент);
    СтруктураБыстрогоОтбора.Свойство("Склад",Склад);
    СтруктураБыстрогоОтбора.Свойство("Статус",Статус);
    СтруктураБыстрогоОтбора.Свойство("ПериодДатыПриемки", ПериодДатыПриемки);
    Иначе
    Настройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("Документ.СТ_РаспоряжениеНаПриемку.Форма.ФормаСписка", КлючНазначенияИспользования);

    Если ТипЗнч(Настройки) = Тип("Структура") Тогда
    Склад = Настройки.Склад;
    Контрагент = Настройки.Контрагент;
    Статус = Настройки.Статус;
    Если НЕ Настройки.ПериодДатыПриемки = Неопределено Тогда
    ПериодДатыПриемки = Настройки.ПериодДатыПриемки;
    Иначе
    Возврат;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;

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

Также добавлял проверку свойства.
---
Правда? Отладчик?))) Я уже исправил ошибку, спасибо совет.

```1c
    Склад = ?(Настройки.Свойство("Склад"), Настройки.Склад, Справочники.Склады.ПустаяСсылка());
    Контрагент = ?(Настройки.Свойство("Контрагент"), Настройки.Контрагент, Справочники.Контрагенты.ПустаяСсылка());
    Статус = ?(Настройки.Свойство("Статус"), Настройки.Статус, ");
    ПериодДатыПриемки = ?(Настройки.Свойство("ПериодДатыПриемки"), Настройки.ПериодДатыПриемки, Дата(1, 1, 1));
```
---
а отладчик на что? запустите под ним!

а вообще похоже на ошибку здесь
СтруктураБыстрогоОтбора.Свойство("ПериодДатыПриемки", ПериодДатыПриемки);

видимо в форме нет такого реквизита: ПериодДатыПриемки
---
Правда? Отладчик?))) Я уже исправил ошибку, спасибо совет.

```1c
    Склад = ?(Настройки.Свойство("Склад"), Настройки.Склад, Справочники.Склады.ПустаяСсылка());
    Контрагент = ?(Настройки.Свойство("Контрагент"), Настройки.Контрагент, Справочники.Контрагенты.ПустаяСсылка());
    Статус = ?(Настройки.Свойство("Статус"), Настройки.Статус, ");
    ПериодДатыПриемки = ?(Настройки.Свойство("ПериодДатыПриемки"), Настройки.ПериодДатыПриемки, Дата(1, 1, 1));
```
---
"ПериодДатыПриемки" это реквизит формы ?
---
Да. Ошибку уже исправил доп.проверкой.
---
Замечательно!!! Очень рады что смогли вам помочь!!!
(я правда не совсем про отладчик понял, наверно не дано 8+()
Из дописанной торговли в почти типовую бухгалтерию выгружаю накладные через web сервис.
Документы создаются в бухгалтерии, но ответ в торговлю приходит не полный из-за чего возникает ошибка в торговле.
Не получается подключиться к web сервису из торговли.
База бухгалтерии опубликована на IIS. на srv3
ib="Srvr="srv3:1541";Ref="Acc_Test";">
 <debug enable="true" protocol="tcp" url="tcp://localhost"/>
Запускаю на srv2 торговлю (сидит на srv3:1741) и конфигуратор бухгалтерию (сидит srv3:1541)и не попадаю в точку остановки в бухгалтерии в web сервисе операция "выполнить код"
В папке bin/conf на srv2
debugcfg.xml
<config xmlns="http://v8.1c.ru/v8/debugcfg">
    <debugports range="1560:1791"/>
</config>
comcntrcfg.xml
<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
    <debugconfig debug="true" debuggerURL="tcp://localhost:1560" />
</config>
внешнимОтладка на сервере включена и работает, автоматическое подключение в отладке к клиентским подключениям/web сервисам поставлено и там и там.
Что упустил?
---
Всем спасибо. Оказалось были закрыты порты для платформы бухгалтерии. Для платформы торговли они были открыты и отладка работала. Нашел, когда уже решил отладить веб сервис через обработку в базе бухгалтерии и оказалось что на сервер не захожу.
---
А предметы отладки (сервер, клиент и т.п.) подключаются?
---
свои клиент и сервер вижу в торговле, ничего дополнительно ничего нет
---
В конфигураторе Бухгалтерии есть подключенные предметы отладки? Вы ведь хотите отлаживать код на стороне Бухгалтерии, так?
---
первый раз отладкой веб сервисов занимаюсь. Все делаю в торговле. У бухгалтерии только конфигуратор открыт, в который я так понимаю должен перейти автоматически.
---
На стороне Бухгалтерии должна быть так же включена отладка и установите "галку" для автоматической подключения отладки веб-сервиса
---
да, это сделал ранее
---
На стороне Бухгалтерии, в нижнем окне есть предметы отладки (сервер, веб-сервис)?
---
нет чистое окно. Нужно смотреть в момент отправки из торговли? Или нужно как-то из бухгалтерии запускать?
---
А в конфигураторе "галки" установлены?
---
да
---
Может банально отвалилась отладка на сервере? Такое случается, порой помогает только перезапуск 1С сервера.
---
попробуйте вместо tcp://localhost указать конкретный ip адрес или доменное имя сервера
---
в код на сервере заходит перед отправкой в веб сервис
---
изменил на <debug enable="true" protocol="tcp" url="tcp://srv3"/> результат такой же, может неправильно отлаживаю?
---
Может это быть из-за того что платформы разные и кластера серверов разные?
---
Всем спасибо. Оказалось были закрыты порты для платформы бухгалтерии. Для платформы торговли они были открыты и отладка работала. Нашел, когда уже решил отладить веб сервис через обработку в базе бухгалтерии и оказалось что на сервер не захожу.
Доброго времени суток всем читающим и с наступивший Новым годом! Друзья возникла следующая ситуация, необходимо для продавцов которые работают через РМК в КА 2.4, отключить панель см. скрин, все перепробовал ни настройка интерфейса под пользователем, ни программная очистка настрое интерфейса не дают желаемого результата, может кто знает решение как это можно сделать, платформа 1С:Предприятие 8.3 (8.3.15.1656), или может кто подскажет как можно запустить режим основного окна КИОСК для определенных пользователей, за ранее спасибо всем откликнувшимся.
---
вопрос решился путем программного указания режима основного окна приложения.
---
вопрос решился путем программного указания режима основного окна приложения.
Добрый день.
8.3, обычные формы.

На форме есть табличное поле. Подключен обработчик ожидания, который перезаполняет это поле.
Стоит задача - при обновлении поля сохранять выделение строки.
Реализовано так: перед обновлением запоминаются данные выделенной строки, после обновления в поле ищется строка по этим данным, и если она найдена - выделяется.
Пока был разрешен только одиночный выбор строки, всё работало как нужно, через ТекущаяСтрока.
Теперь нужно разрешить множественное выделение, соответственно, запоминать все выделенные строки и выделять их заново.
Проблема в том, что после обновления выделяются все нужные строки плюс первая строка, хотя выделена она не была.

По данным отладчика после проведения всех манипуляций в Выделенных строках находятся только нужные мне строки.
Куда копать, где искать, в какой момент в выделенные добавляется первая строка?

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

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

```1c
    Если ЗначениеЗаполнено(ВыбранныйМенеджер) Тогда
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Количество(ЗаданиеМенеджера.Ссылка) КАК Количество
    |ИЗ
    | Документ.ЗаданиеМенеджера КАК ЗаданиеМенеджера
    |ГДЕ
    | ЗаданиеМенеджера.Дата = &Дата
    | И ЗаданиеМенеджера.Менеджер= &Менеджер";
    ДатаБезВремени = Объект.Дата;
    Запрос.УстановитьПараметр("Менеджер",Объект.Менеджер);
    Запрос.УстановитьПараметр("Дата",ДатаБезВремени);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Если Выборка.Следующий() Тогда
    Объект.НомерРаботы = Выборка.Количество + 1;
    Иначе
    Объект.НомерРаботы = 1;
    КонецЕсли;

    КонецЕсли;
```
---
Решил. Надо вместо
| ЗаданиеЭкспедитора.Дата = &Дата

НАЧАЛОПЕРИОДА(ЗаданиеЭкспедитора.Дата,ДЕНЬ)=НАЧАЛОПЕРИОДА(&Дата,ДЕНЬ)
---
Решил. Надо вместо
| ЗаданиеЭкспедитора.Дата = &Дата

НАЧАЛОПЕРИОДА(ЗаданиеЭкспедитора.Дата,ДЕНЬ)=НАЧАЛОПЕРИОДА(&Дата,ДЕНЬ)
---
Сделайте как в (3) и не делайте условия, в которых нужно что-то вычислять, это очень тормозит запрос
---
Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        | Количество(ЗаданиеМенеджера.Ссылка) КАК Количество
        |ИЗ
        | Документ.ЗаданиеМенеджера КАК ЗаданиеМенеджера
        |ГДЕ
        | ЗаданиеМенеджера.Дата Между &НачалоПериода И &КонецПериода
        | И ЗаданиеМенеджера.Менеджер= &Менеджер";

        Запрос.УстановитьПараметр("Менеджер",Объект.Менеджер);
        Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(Объект.Дата));
        Запрос.УстановитьПараметр("КонецПериода", КонецДня(Объект.Дата));

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

Количество = 0;

Пока Выборка.Следующий() Цикл

Количество = Выборка.Количество;

КонецЕсли
Здравствуйте.
Документооборот

Есть БП. В нем есть задача регистрации. Сделал допОбработчик и в нем поставил, с учетом отборов

```1c
    ВыполнениеЗадачСервер.ВыполнитьЗадачу(Событие.Источник);
```

подписка идет на Создание задачи. но в результате стоит красная галка. а в истории выполнения
История выполнения:
30.12.2020 16:59, Робот ДО. Не зарегистрировано.

При ручной регистрации все нормально, ошибок нет. В какую сторону лучше всего копать?
---
Если вместо

```1c
    ВыполнениеЗадачСервер.ВыполнитьЗадачу(Событие.Источник);
```

использовать

```1c
    ПараметрыВыполнения = Новый Структура;

    ПараметрыВыполнения.Вставить("РезультатРегистрации", Перечисления.РезультатыРегистрации.Зарегистрировано);

    ВыполнениеЗадачСервер.ВыполнитьЗадачуСПараметрами(Событие.Источник, ПараметрыВыполнения);
```

то задача выполняется нормально
---
```1c
    Предмет = событие.Источник.Предметы[0].Предмет;

    Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Предмет, "РегистрационныйНомер") <> " Тогда
    Возврат;
    КонецЕсли;

    СообщениеОбОшибке = ";
    Если Делопроизводство.ЗарегистрироватьПредмет(Предмет, СообщениеОбОшибке) Тогда
    Делопроизводство.ЗаписатьСостояниеДокумента(
    Предмет,
    ТекущаяДатаСеанса(),
    Перечисления.СостоянияДокументов.Зарегистрирован,
    ПользователиКлиентСервер.ТекущийПользователь());
    КонецЕсли;

    ВыполнениеЗадачСервер.ВыполнитьЗадачу(Событие.Источник);
```

Пробую делать так, документ зарегистрирован, но галка в задаче по прежнему красная галка и история та же
---
Если вместо

```1c
    ВыполнениеЗадачСервер.ВыполнитьЗадачу(Событие.Источник);
```

использовать

```1c
    ПараметрыВыполнения = Новый Структура;

    ПараметрыВыполнения.Вставить("РезультатРегистрации", Перечисления.РезультатыРегистрации.Зарегистрировано);

    ВыполнениеЗадачСервер.ВыполнитьЗадачуСПараметрами(Событие.Источник, ПараметрыВыполнения);
```

то задача выполняется нормально
---
А у самого дока разрешена авторегистрация?
Здравствуйте, подскажите, как правильно раскрыть?

НЕ(A ИЛИ B) И (С ИЛИ НЕ(D И F))
---
Совсем убрать скобки? Или максимально упростить? Во втором варианте:

НЕ A И НЕ B И (С ИЛИ НЕ D ИЛИ НЕ F)

Правило тут простое: "НЕ ИЛИ = И НЕ". И наоборот: "НЕ И = ИЛИ НЕ"
---
Совсем убрать скобки? Или максимально упростить? Во втором варианте:

НЕ A И НЕ B И (С ИЛИ НЕ D ИЛИ НЕ F)

Правило тут простое: "НЕ ИЛИ = И НЕ". И наоборот: "НЕ И = ИЛИ НЕ"
---
Если раскрыть последние скобки, то получится - НЕ A И НЕ B И С И НЕ D И НЕ F
 но это не правильно
---
Если раскрыть последние скобки, то получится - НЕ A И НЕ B И С И НЕ D И НЕ F
но это не правильно Конечно. неправильно: перед этими последними скобками нет "НЕ".

Тут загвоздка в другом: в приоритете выполнения операций. Если предположить, что логические операции выполняются слева направо, то итоговое выражение будет таким:

С ИЛИ НЕ D ИЛИ НЕ F И НЕ A И НЕ B

То есть, сначала будут вычислены все ИЛИ, а потом - все И. Но в разных языках программирования это может дать разные результаты.
---
логические выражения имеют фиксированный приоритет: НЕ > И > ИЛИ, вне зависимости от языка программирования.
При этом, чтобы было легче представлять этот приоритет, можно провести аналогию: НЕ = "-", И = "*", ИЛИ = "+". Тогда раскрыть скобки станет очень просто:
НЕ A И НЕ B И (С ИЛИ НЕ D ИЛИ НЕ F) = НЕ A И НЕ B И С ИЛИ НЕ A И НЕ B И НЕ D ИЛИ НЕ A И НЕ B И НЕ F
---
Почитайте