Допиливаем типовой отчет "Связанные документы" (структура подчиненности) так, чтобы он видел документы из расширения конфигурации

28.04.23

Задачи пользователя - Адаптация типовых решений

Наконец-то мы перешли на платформу 1С 8.3.20 и смогли отказаться от режима совместимости в 1С ЕРП. Это позволило нам окончательно закрыть вопрос о перемещении ВСЕХ добавленных объектов из самой конфигурации в её расширение.  Одним из камней преткновения на пути к переезду, был вопрос работы типового отчета "связанные документы".  Ну что же, давайте вместе его решим.

Как вы догадались по названию темы, стандартный отчет "Связанные документы" (Структура подчиненности) требует доработки, поскольку он не видит документы из расширения.

Это и логично, ведь формирование отчета построено на анализе типового объекта конфигурации "КритерииОтбора.СвязанныеДокументы".

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

Сразу понятно, такое решение не по фэншую. Будем решать задачу по-другому. 

Задача:

Есть документ в расширении конфигурации "ИТ_ЗаданиеНаТранспортировку" и в нем есть поле "ДокументОснование", ссылающееся на типовой документ "ЗаказПокупателя". Нужно отразить документ из расширения конфигурации в типовом отчете "Связанные документы".

Условие:

И в новом документе "ИТ_ЗаданиеНаТранспортировку", и в типовом документе "ЗаказПокупателя" должен использоваться типовой отчет "Связанные документы", вызываемый через "СтандартныеПодсистемы.ПодключаемыеКоманды".

Решение:

В расширение ранее уже проброшен документ "ЗаказПокупателя", так как нам нужно было указать тип ссылки в поле "ДокументОснование".
Мы не будем добавлять в расширение типовой критерий отбора "СвязанныеДокументы", вместо этого создаём новый критерий отбора в расширении с названием "ИТ_СвязанныеДокументы" (1).

 

Новый критерий отбора

 

В разделе "Данные" заполняем тип данных нового критерия отбора теми объектами, которые должны добавляться к стандартному отчету "Связанные документы"

 

ТипыДаннызКритерийОтбора

 

В разделе "Состав" проставляем флажок у реквизита "ДокументОснование" .

 

СоставКритерияОтбора

 

Не забываем пробросить в расширение конфигурации типовую роль "ПросмотрСвязанныеДокументы" и в нашем критерии отбора проставляем право на использование для этой роли.

 

ПраваКритерииОтбора

 

С критерием отбора покончено.

Но стандартный отчет "Связанные документы" пока нас не замечает. Углубляемся в конфигурацию и понимаем, что все действия по выводу отчета производятся в общей форме "СвязанныеДокументы".

Для того, чтобы "научить" общую форму видеть наш критерий отбора из расширения конфигурации, мы  пробрасываем в расширение одну процедуру и одну функцию  в режиме "ИзменениеИКонтроль" из модуля формы "ОбщаяФорма.СвязанныеДокументы".

Вносим  исправления в код.

Процедура "ВывестиРодительскиеОбъекты" большая, всю ее в статью добавлять не буду. В ней нужно изменить в двух местах условия, которые заставляют отчет пропускать документы, не входящие в критерии отбора:

&НаСервере
&ИзменениеИКонтроль("ВывестиРодительскиеОбъекты")
Процедура ИТ_ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты, ИндексСвязейОбъектов)
//...
// в двух местах, где найдете "Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит)"
// делаете следующие одинаковые изменения:

	#Удаление
		Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
			Продолжить;
		КонецЕсли;
        #КонецУдаления
	
	#Вставка 
		Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит)
			И Не Метаданные.КритерииОтбора.ИТ_СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
			Продолжить;
		КонецЕсли;
	#КонецВставки
//...
КонецПроцедуры

 

Функция "ОбъектыПоКритериюОтбора" наоборот - маленькая. Дорабатываем ее, как указано ниже. Код сделан более читаемым в ущерб компактности.

 

&НаСервере
&ИзменениеИКонтроль("ОбъектыПоКритериюОтбора")
Функция ИТ_ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)

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

	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	СвязанныеДокументы.Ссылка
	|ИЗ
	|	КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СвязанныеДокументы";
        #КонецУдаления

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

	Запрос = Новый Запрос;   
	ТекстДляЗапроса="";
	Если Метаданные.КритерииОтбора.СвязанныеДокументы.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда
		ТекстДляЗапроса = ТекстДляЗапроса+"ВЫБРАТЬ
		|	СвязанныеДокументы.Ссылка КАК Ссылка
		|ИЗ
		|	КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СвязанныеДокументы";
        КонецЕсли;
	Если Метаданные.КритерииОтбора.ИТ_СвязанныеДокументы.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда  
		Если НЕ ПустаяСтрока(ТекстДляЗапроса) Тогда
			ТекстДляЗапроса=ТекстДляЗапроса+"
			|
			|ОБЪЕДИНИТЬ ВСЕ
			|";
		КонецЕсли;
                ТекстДляЗапроса = ТекстДляЗапроса+"ВЫБРАТЬ
		|	ИТ_СвязанныеДокументы.Ссылка
		|ИЗ
		|	КритерийОтбора.ИТ_СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК ИТ_СвязанныеДокументы";
	КонецЕсли; 
	Запрос.Текст = ТекстДляЗапроса;
	#КонецВставки

	Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
    
    #Вставка
    //Это простой костыль от бага в команде "Запрос.Выполнить().Выгрузить()"
    //Команда ".Выгрузить()" из результата запроса работает с БАГОМ для смешанных ссылок
    //на объекты из основной конфигурации и на объекты из расширения. 
    НовыйТЗ = Новый ТаблицаЗначений;
    НовыйТЗ.Колонки.Добавить("Ссылка");
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        НоваяСтрока = НовыйТЗ.Добавить();
        НоваяСтрока.Ссылка = Выборка.Ссылка;
    КонецЦикла;
    Возврат НовыйТЗ;
    #КонецВставки 
	Возврат Запрос.Выполнить().Выгрузить();
КонецФункции


И в принципе, отчет "Связанные документы" уже будет работать с вашими документами из расширения конфигурации.
 

Однако, нужно провести еще одну доработку.
Если вы используете подключаемые команды из стандартных подсистем(2) в формах документов/списков документов из расширения, вы заметите, что вожделенный отчет "Связанные документы" не появляется в ваших интерфейсах. Типовая кнопка "Структура подчиненности", которая формирует отчет "Связанные документы", просто принудительно скрывается от нас, если документ отсутствует в индексах связанных объектов. 

Давайте просто поправим действия с кнопкой "СтруктураПодчиненности".

Находим типовой общий модуль "СтруктураПодчиненностиСлужебный"(3) и пробрасываем из него в расширение конфигурации функцию "ИндексТиповСвязанныхОбъектов".

Вносим в функцию изменения:

&ИзменениеИКонтроль("ИндексТиповСвязанныхОбъектов")
Функция ИТ_ИндексТиповСвязанныхОбъектов()

	Индекс = Новый Соответствие;

	МетаданныеСвязанныхОбъектов = Метаданные.КритерииОтбора.СвязанныеДокументы;
	ТипыСвязанныхОбъектов = МетаданныеСвязанныхОбъектов.Тип.Типы();
	ТипПараметраКоманды = Метаданные.ОбщиеКоманды.СвязанныеДокументы.ТипПараметраКоманды;
	Для Каждого ТипСвязанногоОбъекта Из ТипыСвязанныхОбъектов Цикл 
		Если Не ТипПараметраКоманды.СодержитТип(ТипСвязанногоОбъекта) Тогда 
			Индекс.Вставить(ТипСвязанногоОбъекта, Истина);
		КонецЕсли;
	КонецЦикла;

   	#Вставка  
	МетаданныеСвязанныхОбъектов = Метаданные.КритерииОтбора.ИТ_СвязанныеДокументы;
	ТипыСвязанныхОбъектов = МетаданныеСвязанныхОбъектов.Тип.Типы();
	ТипПараметраКоманды = Метаданные.ОбщиеКоманды.СвязанныеДокументы.ТипПараметраКоманды;
		Для Каждого ТипСвязанногоОбъекта Из ТипыСвязанныхОбъектов Цикл 
			Если Не ТипПараметраКоманды.СодержитТип(ТипСвязанногоОбъекта) Тогда 
			Индекс.Вставить(ТипСвязанногоОбъекта, Истина);
		КонецЕсли;
		КонецЦикла;  
	#КонецВставки

	Возврат Индекс;

КонецФункции

 

И все.

Теперь два оба критерия отбора, из основной конфигурации и из расширения, попадают в типовой отчет "Связанные документы".

 

Пример отчета Связанные документы

 

(1) Префикс "ИТ_" в идентификаторах и префикс "(ИТ) " в синонимах является обязательным для новых объектов в соответствии с политикой внедрений 1С, принятой в нашей компании.

(2) Добавление подключаемых команд из стандартных подсистем на ваши формы документов - это отдельная большая тема, и в данной статье умышленно опущена. 

(3) Мне не понятно, почему компания 1С не реализовала функционал добавления новых объектов в специальном модуле "СтруктураПодчиненностиПереопределяемый". Вместо добавления новых, они реализовали функционал по переименованию объектов. 

 

PS: Благодаря комментарию (50), для сохранения режима совместимости с версией 8.3.16, можно воспользоваться опытом из статьи: Николая Ходырева "Критерии отбора в расширении. 16+"

PS: По просьбе комментария (67).
Данное решение не заработает на новых конфигурациях УТ11.5, КА2,5 ЕРП 2,5 и др.
Нужно в основной форме "Связанные документы" - дополнительно в состав реквизитов формы (ДеревоПодчиненныеОбъекты.Ссылка, ДеревоРодительскиеОбъекты.Ссылка, ИсходныйОбъект, ОсновнойОбъект) добавить ссылку на свой добавленный объект. Реализовать можно двумя способами: Тут кто как хочет так пусть и делает: Либо добавить их в расширение на форме и поставить галочки на свои объекты. Либо прописать их кодом ПриСозданииНаСервере. 


Связанные документы критерии отбора структура подчиненности.

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    5652    14    5    

24

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3914    11    0    

29

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5090    dimanich70    15    

21

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    5484    dimanich70    9    

18
Вознаграждение за ответ
Показать полностью
Отзывы
50. Ankare 103 26.08.22 19:14 Сейчас в теме
(32) все давно готово и выложено на инфостарт. не знаю, можно ли добавлять в чужой теме свои ссылки, если что, смотрите через мой профиль
dima_home; Touch_Of_Soul; +2 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. quazare 3764 04.05.22 14:03 Сейчас в теме
У меня вопрос - как вы решили замену типа ссылки в расширениях - как раз добавив эти «документы расширения»?
_Vovik; tsatsur; bilex; kas1989; +4 Ответить
5. dima_home 251 06.05.22 15:00 Сейчас в теме
(1)
как вы решили замену типа ссылки в расширениях - как раз добавив эти «документы расширения»

Я не понял вашего вопроса.

В расширении конфигурации заменять типы в критерии отбора не приходится, поскольку мы создаем НОВЫЙ критерий отбора как раз для того, что бы использовать любые свои типы и ссылки из расширения.

PS/ Это решение не подойдёт, если вы захотите создать в расширении конфигурации документ или справочник, который ссылается на все(почти все) объекты в типовой конфигурации. Ведь для указания ссылки на объект из типовой конфигурации вам нужно пробросить его "корень" в расширение.
33. Touch_Of_Soul 30 22.08.22 18:07 Сейчас в теме
(5)(2) Добавление подключаемых команд из стандартных подсистем на ваши формы документов - это отдельная большая тема, и в данной статье умышленно опущена.

Все сделал как у Вас.
Но не работает выдает ошибку. (У меня есть самописный документ Доставка на основание него создается документ СчетНаОплатуПокупателя и когда в нем нажимаешь кнопку посмотреть подчиненные документы выдает ошибку:
22.08.2022 19:03:51
TOS_ACC_Логистика: Обычная: Ошибка применения модуля "TOS_ACC_Логистика ОбщаяФорма.СвязанныеДокументы.Форма". Текст модуля для метода "ОбъектыПоКритериюОтбора" изменился
--------------------------------------------------------------------------------
22.08.2022 19:03:51
TOS_ACC_Логистика: Обычная: Ошибка применения модуля "TOS_ACC_Логистика ОбщаяФорма.СвязанныеДокументы.Форма". Текст модуля для метода "ВывестиРодительскиеОбъекты" изменился
--------------------------------------------------------------------------------
22.08.2022 19:03:28
TOS_ACC_Логистика: Обычная: Ошибка применения модуля "TOS_ACC_Логистика ОбщийМодуль.СтруктураПодчиненностиСлужебный.Модуль". Текст модуля для метода "ИндексТиповСвязанныхОбъектов" изменился


Может пункт 2 обязателен и что то из него у меня нет?
P.S. Кнопка Печать в документе есть печатает макет. Кнопка ввести на основание есть и выбор нужного документа это было реализовано до того как я начал делать "Связанные документы".

Помогите понять где ошибка. Спасибо.
34. dima_home 251 23.08.22 11:38 Сейчас в теме
(33)
Текст модуля для метода ... изменился

Это у вас не проходит проверка применимости расширения при использовании директивы "ИзменениеИКонтроль"

Можно сделать вывод что у вас в этих модулях другой текст... наверно версия конфигурации у вас другая.
Соответственно нужно не бездумно копировать мой код в ваш модуль, а наоборот, свой модуль пробросить в расширение и внести в него изменения по смыслу. Смысл следующий: везде где проверяется стандартный критерий отбора, добавить проверку и критерия отбора из расширения.
35. Touch_Of_Soul 30 23.08.22 12:15 Сейчас в теме
(34) я так и сделал, сравнил он с вашим совпал.( Могу если есть возможность доступ дать удаленный(если согласны помочь напишите в личку, а то не могу решить эту проблему) сейчас еще раз сравню.
36. dima_home 251 24.08.22 15:36 Сейчас в теме
(35)В любом случае не заменяйте процедуры целиком.
Попробуйте полностью убрать (удалить) из расширения конфигурации проблемные объекты
- ОбщийМодуль.СтруктураПодчиненностиСлужебный
- ОбщаяФорма.СвязанныеДокументы.Форма
и заново расширить модули с контролем
Удаление обозначить
#Удаление ... #КонецУдаления
без копирования внутреннего содержания из статьи. "Внутрянка" должна быть родная, а не из примера в статье.

Тут аналогичная проблема...https://www.qwased.xyz/2021/01/1.html
Yasasha; arshanskiyav; +2 Ответить
11. Ankare 103 09.06.22 11:26 Сейчас в теме
(1) Добавление ссылок на объекты расширения возможно через добавление реквизитов с произвольной ссылкой на форме в расширении.
В ближайшее время напишу статью по своему решению аналогичной задачи

&НаСервере
Процедура Лот_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
	
	ТипПроизвольный  = Новый ОписаниеТипов();

	МассивРеквизитов = Новый Массив;
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Лот_Ссылка", ТипПроизвольный, "ДеревоПодчиненныеОбъекты", НСтр("ru = 'Лот_Ссылка'")));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Лот_Ссылка", ТипПроизвольный, "ДеревоРодительскиеОбъекты", НСтр("ru = 'Лот_Ссылка'")));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Лот_ОсновнойОбъект", ТипПроизвольный, , НСтр("ru = 'Основной объект (Лотос)'")));
	
	ИзменитьРеквизиты(МассивРеквизитов);
	
КонецПроцедуры
Показать
13. dima_home 251 17.06.22 18:23 Сейчас в теме
(11) Ждем. Очень интересно узнать, кто как решает аналогичные вопросы.

Например, создавая поддержку стандартных интересов (подключаемых печатных форм, прикладываемых файлов и т.п.) для документов из расширения нам пришлось аналогичным способом решать проблемы, связанные с переопределяемыми типами.
Сложности были аналогичные критериям отбора: нельзя было дополнить переопределяемый тип новыми типами из расширения конфигурации, без проброса в расширение всех объектов из основной конфигурации.
32. Touch_Of_Soul 30 22.08.22 15:12 Сейчас в теме
(11)Не готово ваше решение?
50. Ankare 103 26.08.22 19:14 Сейчас в теме
(32) все давно готово и выложено на инфостарт. не знаю, можно ли добавлять в чужой теме свои ссылки, если что, смотрите через мой профиль
dima_home; Touch_Of_Soul; +2 Ответить
51. Touch_Of_Soul 30 26.08.22 20:55 Сейчас в теме
(50)ответил Вам в Вашей публикации. Спасибо за помощь.
2. tsatsur 46 04.05.22 21:56 Сейчас в теме
Это хорошо, полезно, почти ушли от редактирования конфигурации:)
А что если надо добавить в связанные бизнес процесс, ну, задание например?
Или расширить реквизит документы основания и добавить туда пару документов. Это пока никак ведь не обойти?
3. malikov_pro 1327 05.05.22 08:37 Сейчас в теме
(2) Сам использую https://infostart.ru/public/938145/, более универсально и четко понимаешь какими запросами что получается.
Не хватает внешнего вида формы идентичного типовым.
4. tsatsur 46 05.05.22 14:51 Сейчас в теме
(3) Спасибо. В принципе подобное сделать самостоятельно не сложно, и многие такие вот узкие места можно обойти при помощи замещения стандартных механизмов, но хочется максимально "внедриться", а не замещать.
dima_home; +1 Ответить
6. dima_home 251 06.05.22 15:27 Сейчас в теме
(4)
...но хочется максимально "внедриться", а не замещать

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

Изучив пример из (3) https://infostart.ru/public/938145/ у меня мурашки по спине от самой идеи "заполнение регистра сведений при каждом обновлении с доработкой запросов".

Помножьте все на то, что в своих документах в расширении конфигурации мы так же подключаем типовые команды и печатные формы, среди которых автоматом появляется отчет "Связанные документы".
Алексей777; tsatsur; +2 Ответить
7. tsatsur 46 06.05.22 22:05 Сейчас в теме
Кстати, а отказ от режима совместимости может ведь потянуть за собой любые баги, как понять, что пройдет безболезненно?
9. dima_home 251 09.05.22 23:14 Сейчас в теме
(7)
отказ от режима совместимости может ведь потянуть за собой любые баг

Только тестировать.
Мы когда запускали новый завод на ЕРП, сразу решили уйти от режима совместимости...
Были серьезные проблемы с расширением (конфигурация не сохранялась), Письма в поддержку 1С...ожидание устранения и теперь все работает.
8. malikov_pro 1327 07.05.22 06:13 Сейчас в теме
(6) Вопрос обновления решается добавлением в типовые модули функции перезаполнения, доработка запроса нужна для специфики, применяется относительно редко. Механизм исключений для корректировки при запросов представляется мне не сложным.

"Помножьте все на то, что в своих документах в расширении конфигурации мы так же подключаем типовые команды и печатные формы" - когда подключаю перехватываю вызов типовой команды.

"8.3.20 и смогли отказаться от режима совместимости в 1С ЕРП" - в вашей ситуации можете добавлять критерии отбора и в данном контексте ваш подход более удобен, но у меня Розницы, УТ и поддержку 8.3.20 завезут не скоро.

(7) Да проблемы будут и типовые вообще не будут запускаться и падать по ошибке проверки этого режима.
10. dima_home 251 09.05.22 23:23 Сейчас в теме
Переход на 8.3.20 для ЕРП.
Типовая 2.5.7 Конфигурация работает без нареканий, даже не смотря на то, что официально не поддерживается данная платформа (пришлось обмануть чтоб стартовала).
Были серьезные проблемы с расширениями на уровне платформы (писал выше), но потом поправили все в 1С и теперь только 8.3.20.1710 и не ниже. Главные плюсы этой версии - предопределенные объекты в расширении, поддержка "любых ссылок" в расширении.
12. dima_home 251 17.06.22 17:07 Сейчас в теме
Еще один баг платформы 8.3.20.1710

В функции "ОбъектыПоКритериюОтбора", описанной в статье есть строка с багом:

Возврат Запрос.Выполнить().Выгрузить();


Команда ".Выгрузить()" для создаваемой таблицы неверно определяет тип колонки "ССЫЛКА" и в результате мы получаем таблицу с ссылками на "неопределено".
Это возникает только в случае, когда запрос возвращает в одну колонку ссылки на объекты как из основой конфигурации, так и из расширения конфигурации.
Команда "выгрузить()" в этот момент создает колонку с типами объектов только из основной конфигурации и все ссылки на объекты из расширения очищаются. Баг проявляется пока только при работе в запросе с критериями отборов.

Для обхода бага нам пришлось добавить такой костыль:
	
        #Вставка
	НовыйТЗ = Новый ТаблицаЗначений;
	НовыйТЗ.Колонки.Добавить("Ссылка");
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		НоваяСтрока = НовыйТЗ.Добавить();
		НоваяСтрока.Ссылка = Выборка.Ссылка;
	КонецЦикла;
	Возврат НовыйТЗ;
	#КонецВставки

	//Возврат Запрос.Выполнить().Выгрузить(); //работает неправильно команда ВЫГРУЗИТЬ().
Показать

Обновлю в публикации.
Прикрепленные файлы:
14. dimkor41 27.06.22 00:23 Сейчас в теме
Доброй ночи. КА 2.5.8.207, Платформа 8.3.18.1289

Сделал все как в статье (только у меня типовой документ - "ПриобретениеТоваровУслуг" и свой документ в расширении - "Отгрузка"), но вылетает ошибка:

{ОбщаяФорма.СвязанныеДокументы.Форма(164)}: Значение не является значением объектного типа (Метаданные)
МетаданныеОбъекта = СтрокаДерева.Ссылка.Метаданные();

Стал копать.
В итоге в функции "ДобавитьСтрокуВДерево()" после выполнения строки

ЗаполнитьЗначенияСвойств(НоваяСтрока, Данные, ОбщиеСвойства)


НоваяСтрока.Ссылка остается Неопределено, хотя в переменной Данные "Ссылка" заполнена.

Подскажите куда копать ?


&НаСервере
Функция ДобавитьСтрокуВДерево(Родитель, Данные, ВыведенныеОбъекты, ЭтоПодчиненный = Ложь)
	
	УстановитьЧастотуВыводаОбъекта(Данные.Ссылка, ВыведенныеОбъекты, ЭтоПодчиненный);
	
	Если Не ВыводитьТекущийОбъект(Родитель, Данные.Ссылка, ВыведенныеОбъекты, ЭтоПодчиненный) Тогда 
		Возврат Неопределено;
	КонецЕсли;
	
	НоваяСтрока = Родитель.ПолучитьЭлементы().Добавить();
	ОбщиеСвойства = "Ссылка, Представление, СуммаДокумента, Валюта, Проведен, ПометкаУдаления";
	ЗаполнитьЗначенияСвойств(НоваяСтрока, Данные, ОбщиеСвойства);
	
	ПереопределенноеПредставление = ПредставлениеОбъектаДляВывода(Данные);
	Если ПереопределенноеПредставление <> Неопределено Тогда
		НоваяСтрока.Представление = ПереопределенноеПредставление;
	Иначе
		НоваяСтрока.Представление = ПредставлениеОбъектаДляВыводаВОтчет(Данные);
	КонецЕсли;
	
	Возврат НоваяСтрока;
	
КонецФункции
Показать
15. dima_home 251 29.06.22 12:32 Сейчас в теме
(14)
У вас проблема в версии платформы.

В этой функции производится заполнение двух таблиц в общей форме. Таблицы "ДеревоПодчиненныеОбъекты" и "ДеревоРодительскиеОбъекты", они имеют поля "ссылка" с типом "ДокументСсылка".

Поддержка в расширении конфигурации типов "ЛюбаяСсылка", "СправочникСсылка", "ДокументСсылка" началось только с 20 платформы.
На старых платформах документы из расширения не попадают в типы с любыми ссылками... соответственно, когда вы присваиваете такую ссылку, платформа заменяет ссылку на Неопределено.
16. dima_home 251 29.06.22 15:57 Сейчас в теме
(15)В платформе 8.3.20 был снят ряд ограничений. Изменения коснулись “обобщенных” типов данных – таких, как ЛюбаяСсылка, СправочникСсылка и т.д. Эти типы теперь включают в себя и ссылки на объекты, созданные в расширении, а не только ссылки из основной конфигурации.
17. dimkor41 30.06.22 15:44 Сейчас в теме
18. Miturick 21.07.22 18:22 Сейчас в теме
(15) в 8.3.20.1838 такая же ошибка. Как у товарища выше. Возможно из-за режима совместимости с 8.3.16. Но это на уровне конфигурации видимо УТ 11.5.7.402
19. Miturick 21.07.22 20:04 Сейчас в теме
(18) Поковырял процедуры в расширении для общей формы, в итоге добился того, чтобы все это заработало.
20. _Vovik 97 25.07.22 20:06 Сейчас в теме
(19)
процедуры в расширении для общей формы, в итоге добился того, чтобы все это заработало.

Ну так поделился бы решением
22. Miturick 26.07.22 07:51 Сейчас в теме
(20)
+/- как и ты в (21). Добавил к ДеревуПодчиненных в расширении реквизит дерева "НашаСсылка" и в процедурах формирования строк дерева проверял на значение.

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

#КонецВставки

А затем в момент вывода дерева в отчет "СвязанныеДокументы" подменял на свою ссылку.
ketr; selena00; +2 Ответить
26. dima_home 251 02.08.22 16:33 Сейчас в теме
(18)Режим совместимости конечно отключает функционал 8.3.20, начиная с которого поддерживается любые ссылки в расширении.
В статье я об этом писал - мы сняли для ЕРП режим совместимости полностью.
Вам пришлось перехватывать вывод на форму списка и повторно заменять ссылку.
28. vladimir-89 26 02.08.22 16:38 Сейчас в теме
(26) да, вот только тот релиз, который у меня был, не поддерживает работу БЕЗ режима совместимости вообще. И информации об этом нет.
Поэтому пришлось установить платформу 8.3.20 и самый крайний релиз, в котором есть возможность работать БЕЗ режима совместимости вообще.
У УНФ в принципе стоит режим совместимости 8.3.16 и даже 8.3.17 не работал в той версии, хотя в списке выбора был.
30. dima_home 251 02.08.22 16:49 Сейчас в теме
(28)В ЕРП, для отключения режима совместимости, пришло чуть подправить процедуру
"ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки"


&Вместо("ВерсияКонфигурацииБезНомераСборки")
Функция ИТ_ВерсияКонфигурацииБезНомераСборки(Знач Версия) Экспорт
	
	//ИТ на данный момент поддерживается только в режиме совместиости с 3.8.16
	// как только официально 1С увеличит поддержку до 3.8.18, эту доработку нужно убрать
	
	Массив = СтрРазделить(Версия, ".");
	
	Если Массив.Количество() < 3 Тогда
		Возврат Версия;
	КонецЕсли;
	
	Результат = "[Редакция].[Подредакция].[Релиз]";
	Результат = СтрЗаменить(Результат, "[Редакция]",    Массив[0]);
	Результат = СтрЗаменить(Результат, "[Подредакция]", Массив[1]);
	Результат = СтрЗаменить(Результат, "[Релиз]",       "16"); //Массив[2]);   //ИТ наши измения
	Возврат Результат;
	
КонецФункции
Показать
31. vladimir-89 26 02.08.22 17:05 Сейчас в теме
(30) да, я сначала также вручную подправил в общем модуле версию, проверил, действительно все работает, убрал и скачал актуальный релиз.
21. _Vovik 97 25.07.22 23:24 Сейчас в теме
Я добавил на форму _СписокСсылок и просто по представлению подставляю ссылки. Сколько страдания из-за такого плевого дела.
Что то типа

&Вместо("ВывестиПредставлениеИКартинку")
Процедура Расш_ВывестиПредставлениеИКартинку(СтрокаДерева, Макет, ЭтоТекущийОбъект, ЭтоПодчиненный)

//-->
_СтрокаДереваСсылка = СтрокаДерева.Ссылка;
Если Не ЗначениеЗаполнено(СтрокаДерева.Ссылка) Тогда
Для каждого _стр из _Ссылки Цикл
Если СокрЛП(_стр.Представление)=СокрЛП(СтрокаДерева.Представление) Тогда
_СтрокаДереваСсылка = _стр.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
//--<

//МетаданныеОбъекта = СтрокаДерева.Ссылка.Метаданные();
МетаданныеОбъекта = _СтрокаДереваСсылка.Метаданные();
38. Touch_Of_Soul 30 24.08.22 21:57 Сейчас в теме
(21)
ВывестиПредставлениеИКартинку

А у меня после добавления всего по статье сюда в ошибку уходит.
49. Touch_Of_Soul 30 26.08.22 13:35 Сейчас в теме
(21)Подробнее можно описать, что Вы сделали эта процедура очень большая.
23. vladimir-89 26 27.07.22 00:18 Сейчас в теме
Все сделал, как в статье, но
в тексте
Процедура ИТ_ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты, ИндексСвязейОбъектов)

а у меня в конфигурации
Процедура ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты = Неопределено)

нет параметра "ИндексСвязейОбъектов" и вообще не отображаются подчиненные объекты в структуре подчиненности.
Конфигурация УНФ 1.6.25.236
Платформа 8.3.18.1779
Режимы совместимости 8.3.16 и у конфы, и у расширения
25. dima_home 251 02.08.22 16:27 Сейчас в теме
(23)
а у меня в конфигурации

Процедура "ИТ_ВывестиРодительскиеОбъекты" это выведенная в расширение конфигурации для изменений стандартная процедура "ВывестиРодительскиеОбъекты". Префикс ИТ добавляется в соответствии с настройками расширения
27. vladimir-89 26 02.08.22 16:35 Сейчас в теме
(25) не, это понятно, что префикс, я хотел обратить внимание на количество параметров самой процедуры, у меня не было параметра "ИндексСвязейОбъектов"
но я обновился до актуального релиза и он появился.
Проблему решил немного по-другому. УНФ отличается от других конфигураций. Много заморочек возникло по поводу режимов совместимости. Но, в принципе, проблему решил.
Благодарю за статью, добавил в избранное.
24. vladimir-89 26 27.07.22 13:36 Сейчас в теме
Кажется разобрался.
В УНФ есть общая команда "СвязанныеДокументы", как наверное и в любой другой конфигурации.
В модуле единственная процедура (закомментировано от 1С, конфигурация типовая)
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright © 2021, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
////////////////////////////////////////////////////////////­///////////////////////////////////////////

#Область ОбработчикиСобытий

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	
	Если Не ЗначениеЗаполнено(ПараметрКоманды) Тогда
		Возврат;
	КонецЕсли;
	
	// УНФ
	//ОткрытьФорму("ОбщаяФорма.СвязанныеДокументы",
	//	Новый Структура("ОбъектОтбора", ПараметрКоманды),
	//		ПараметрыВыполненияКоманды.Источник,
	//		ПараметрыВыполненияКоманды.Источник.КлючУникальности,
	//		ПараметрыВыполненияКоманды.Окно);
	//
	ОткрытьФорму("ОбщаяФорма.ФормаСтруктурыПодчиненности", Новый Структура("ДокументСсылка", ПараметрКоманды),, Истина, ПараметрыВыполненияКоманды.Окно);
	
	СтатистикаИспользованияФормКлиент.ПроверитьЗаписатьСтатистикуКоманды("СтруктураПодчиненности", ПараметрыВыполненияКоманды.Источник);
	// Конец УНФ
	
КонецПроцедуры

#КонецОбласти
Показать


Возникло ощущение, что конкретно для УНФ часть кода изменили и открывается другая общая форма

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

на
ОткрытьФорму("ОбщаяФорма.СвязанныеДокументы", Новый Структура("ДокументСсылка", ПараметрКоманды),, Истина, ПараметрыВыполненияКоманды.Окно);
29. dima_home 251 02.08.22 16:41 Сейчас в теме
Версия, описанная в статье, полностью рабочая.
у нас 1С:Предприятие 8.3 (8.3.20.1710), 1С:ERP Управление предприятием 2 (2.5.8.221), Режим совместимости отключен.
Прикрепленные файлы:
37. Touch_Of_Soul 30 24.08.22 21:45 Сейчас в теме
(36) Еще раз все сделал по инструкции. Ошибка применение ушла. Появилась эта. "Значение не является объектного типа (Метаданные)" при нажатие подробнее это Значение не является значением объектного типа (Метаданные)
{ОбщаяФорма.СвязанныеДокументы.Форма(164)}:МетаданныеОбъекта = СтрокаДерева.Ссылка.Метаданные();
{ОбщаяФорма.СвязанныеДокументы.Форма(151)}:ВывестиПредставлениеИКартинку(ТекущаяСтрокаДерева, Макет, Ложь, Ложь);
{ОбщаяФорма.СвязанныеДокументы.Форма(99)}:ВывестиРодительскиеЭлементыДерева(ДеревоРодительскиеОбъекты.ПолучитьЭлементы(), Макет);
{ОбщаяФорма.СвязанныеДокументы.Форма(445)}:ВывестиТабличныйДокумент();
{ОбщаяФорма.СвязанныеДокументы.Форма(20)}:ОбновитьДеревоСтруктурыПодчиненности();
{ОбщаяКоманда.СвязанныеДокументы.МодульКоманды(18)}:ОткрытьФорму("ОбщаяФорма.СвязанныеДокументы",
Подскажите куда смотреть?
39. G_Pavel 3 25.08.22 11:03 Сейчас в теме
(37) Если я всё верно понял, то данная доработка работает только при установки "Режим совместимости" - "Не использовать" в конфигурации и в расширении.
40. Touch_Of_Soul 30 25.08.22 11:16 Сейчас в теме
(39) А чтоб ее отключить это с поддержки снимать. А по другому никак нельзя?
41. G_Pavel 3 25.08.22 11:38 Сейчас в теме
(40) Меня так же очень интересует данный вопрос.
На тестовой базе удалось добиться нужного результата только внеся эти изменения.

Ответы (21) и (22) заинтересовали, но воспроизвести их не удалось.
42. dima_home 251 25.08.22 12:52 Сейчас в теме
(39)
"Режим совместимости" - "Не использовать"

Все верно.
Я с самого начала в статье написал:
"Наконец-то мы перешли на платформу 1С 8.3.20 и смогли отказаться от режима совместимости в 1С ЕРП."
Только после этого можно реализовать данное решение.
Движок не ниже 8.3.20.1710
43. dima_home 251 25.08.22 13:10 Сейчас в теме
(40)
А по другому никак нельзя?

Снимается с поддержки корень конфигурации и устанавливаем РЕЖИМ СОВМЕСТИМОСТИ - Не использовать


и поправляются модули
Общий модуль.ОбщегоНазначенияКлиентСервер
Функция ВерсияКонфигурацииБезНомераСборки(Знач Версия) Экспорт
... Результат = СтрЗаменить(Результат, "[Релиз]", "16"); //++ говорим что у нас старый релиз, а не 20 // было: Массив[2]);

У кого не взлетит тут еще шаманьте:
ОбщийМодуль.СтандартныеПодсистемыСервер
Процедура ПередЗапускомПрограммы()
... Или СтрЗаканчиваетсяНа(ТекущийРежимСтрокой, "8_3_20") //++ ИТ добавляем нужную последнюю поддерживаемую версию
44. Touch_Of_Soul 30 25.08.22 13:54 Сейчас в теме
(43) то есть без снятия с поддержки работать не будет. А есть вариант без снятия поддержки? Так как при любом обращение в тех поддержку первое что они смотрят снята до свидание.
45. dima_home 251 25.08.22 14:17 Сейчас в теме
(44)
то есть без снятия с поддержки работать не будет

Нет не будет, так как поддержка переопределяемых типов в расширениях конфигурации (для критериев отбора) появилась только с 20.1710

(43)
смотрят снята до свидание

Вы же не полностью снимаете... а переводите в режим "Редактируется с сохранением поддержки"
47. Touch_Of_Soul 30 25.08.22 15:07 Сейчас в теме
(45) то есть пока совместимость стоит 8.3.17 и не поднимется до 8.3.20 вариантов нет не снимать(
А подробно можно или у Вас есть расширение которое при снятие той галочки что и где на что изменить? Спасибо.
48. dima_home 251 25.08.22 16:38 Сейчас в теме
(47)В расширении не будет работать код, который обращается к основной конфигурации "Метаданные.КритерииОтбора.СвязанныеДокументы..."
Соответственно, пробросить в расширение ОбщуюФорму.СвязанныеДокументы у вас не получится. Наверное ))
И к тому же, на форме есть дерево документов, которые использует ссылку на ЛюбойДокумент, что тоже не поддерживается в старый версиях платформы.

Вариант без расширения конфигурации и с пробросом всех документов в расширение конфигурации я не предлагаю.
46. dima_home 251 25.08.22 14:48 Сейчас в теме
Смотри комментарии 15, 16
52. pollikarp 74 30.08.22 17:40 Сейчас в теме
А у меня почему-то в Критерии отбора не пробросились все Данные и Состав из основной конфигурации, только созданные либо редактируемые в расширении
53. Touch_Of_Soul 30 30.08.22 18:35 Сейчас в теме
(52) а они и не нужны там. напишите в личку я скину решение которое мне помогла реализовать это автор поста (50) Я сделал как все в его статье и заработало. а как в этой не взлетело(
54. dima_home 251 31.08.22 09:44 Сейчас в теме
(53)
это автор поста (50)

Добавил ссылку на его статью в конце моей статьи
Touch_Of_Soul; +1 Ответить
55. pilot23 26.10.22 18:06 Сейчас в теме
я уже по всякому крутил, у меня сам отчет не появляется "Связанные документы" есть статья, где это реализовать ?
имеется расширение со своим документом
56. dima_home 251 28.10.22 17:43 Сейчас в теме
(55)
(55)
у меня сам отчет не появляется "Связанные документы"

Это стандартная команда.
Если вы хотите что бы у вашего документа появились стандартные команды, убедитесь что вы прикрутили типовые обработчики команд в формах.

Форма списка:
   
#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
	ПараметрыРазмещения.КоманднаяПанель = Элементы.ФормаКоманднаяПанель;
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

#КонецОбласти


#Область ОбработчикиСобытийЭлементов

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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


#КонецОбласти

     
#Область ОбработчикиКоманд


#КонецОбласти


#Область СлужебныеПроцедурыФункции

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	
	ОчиститьСообщения();
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
	
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры

// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

#КонецОбласти
Показать


Форма документа


////////////////////////////////////////////////////////////­///////////////////////////////
//СОБЫТИЯ ФОРМЫ

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды



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

&НаКлиенте
Процедура ПриОткрытии(Отказ)

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)

СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);

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


Показать


Как то так.
И само собой -нужно придерживаться правил наименования групп элементов для команд на форме (подсмотрите в типовом документе).
В статье было описано - как обмануть стандартные процедуры для показа команды "СвязанныеДокументы" для документа из расширения.
57. Serg O. 294 23.12.22 18:17 Сейчас в теме
Прекрасная статья, всё замечательно,
один только маааленький минус - Укажите минимальную версию - режима совместимости ....

напоролся на ошибку:
Использование критериев отбора в расширениях недопустимо в режиме совместимости 8.3.15 и ниже

старая конфигурация КА 2.4.13.209 - в режиме совместимости аж 8.3.14
а режим совместимости расширения нельзя сделать выше чем в конфигурации ...
и упс ... это решение не подойдёт
58. Touch_Of_Soul 30 25.12.22 11:22 Сейчас в теме
(57) Здравствуйте. Лично у меня 8.3.17 БП 3.0 и помогло решение автора https://infostart.ru/public/1674115/ Работает по сей день, в последнем обновление там добавили кое что в БП 3.0 и я чуть допилил. всё отлично. Я ему благодарен за его статью.
59. Serg O. 294 26.12.22 08:52 Сейчас в теме
(58) у Вас платформа 8.3.17 и режим совместимости - выключен, поэтому и эта и другая публикация подходит.

я же написал, что выходит ошибка:
Использование критериев отбора в расширениях недопустимо в режиме совместимости 8.3.15 и ниже

т.е. не важно какая платформа, у нас 8.3.20 стоит, но режим совместимости у конфигурации включён 8.3.14
и критерии отбора в расширении из-за этого не работают.
60. Touch_Of_Soul 30 26.12.22 09:23 Сейчас в теме
(59) Стоп. У меня стоит топовая платформа 8.3.22 но режим совместимости у БП 3.0 стоит сам 8.3.17 и конфигурация вся на поддержки. я не снимал ее как указано в этой статье. так как для меня это не приемлемо. Типовая на замке и доработке через расширения только, не трогая основную с замка. Поэтому я и сделал всё не по этой статье,а по той что скинул Вам ссылку.
В этой статье не снимая с поддержки режим совместимости обязан быть не ниже чем 8.3.20 и поэтому автор предлагает снять с поддержки и его отключить. И я ему сразу сказал что я не могу это сделать. Поэтому не снимая с поддержки только автор другой статьи.
Прикрепленные файлы:
61. Serg O. 294 26.12.22 09:36 Сейчас в теме
(60) вы не читаете моего сообщения ???

ОШИБКА ПЛАТФОРМЫ
Использование критериев отбора в расширениях недопустимо в режиме совместимости 8.3.15 и ниже


В стать, ссылку на которую Вы скинули, и которая и так есть и в этой статье - сразу написано

Итак, с подъемом совместимости актуальных универсальных конфигураций до 8.3.16, мы получили возможность в расширениях использовать Критерии отбора, ....
66. dima_home 251 30.12.22 12:42 Сейчас в теме
Сейчас мы работаем уже на 8.3.21.
Отключен режим совместимости.
В скором времени, когда переопределяемые типы и критерии отбора можно будет дополнять через расширение объектами из расширения, то данную статью можно СИЛЬНО упростить.

Про режим совместимости.
Может многие не понимают, но если вы оставляете режим совместимости для своей конфигурации, это значит, что в вашей конфигурации новая платформа работает как старая - без нового функционала и изменения поведения некоторых команд. Режим совместимости вам отключает все новые возможности платформы, включая так нужные доработки в расширениях.


У нас, отключение в конфигурации ЕРП 2.5 режима совместимости на 20 платформе было сопряжено с параллельным устранением ошибок в конфигурации, связанных с изменением поведения работы команды "ПредопределенноеЗначение" в новой платформе.

----------------------------------
Вот выписка из моего письма в 1С поддержку:

"Обнаружили очередную ошибку – попытку получить ПРЕДОПРЕДЕЛЕННОЕЗНАЧЕНИЕ по имени реквизита перечисления, которого нет в конфигурации.

Ошибка обнаруживается в ЕРП только при отключении режима совместимости с 8.3.17

Разница в поведение 1С вызвано тем, что если конфигурация работает с режиме совместимости 8.3.17, то ПРЕДОПРЕДЕЛЕННОЕЗНАЧЕНИЕ по имени реквизита перечисления, которого нет, присвоится значение Неопределено, а на движке 8.3.20 и позже, с отключенным режимом совместимости, уже вызывается исключение."
65. dima_home 251 30.12.22 10:40 Сейчас в теме
(63)
(57)
один только маааленький минус - Укажите минимальную версию - режима совместимости ....

Так в первой же строчке написано:
"Наконец-то мы перешли на платформу 1С 8.3.20 и смогли отказаться от режима совместимости в 1С ЕРП"

То есть минимальная версия совместимости - 8.3.20.
62. Touch_Of_Soul 30 26.12.22 09:54 Сейчас в теме
(61) Тогда у Вас есть выход обновиться до топ релиза и проблема закрыта.

Комплексная автоматизация, редакция 2, версия 2.5.10.73

Внимание! Минимальные сборки для каждой версии системы 1С:Предприятие для использования текущей версии

"1С:Комплексная автоматизация 2": 8.3.17.2757; 8.3.18.1957; 8.3.19.1723; 8.3.20.2180; 8.3.21.1622; 8.3.22.1704.

Рекомендуемая версия платформы 8.3.21.1622 (и выше) в режиме совместимости "Версия 8.3.17".
Если нет доступа к ИТС и нужно обновление пишите скину.

Поддержка подредакции 2.4 (версия 2.4.14) прекращается с мая 2022 года.
63. Serg O. 294 26.12.22 10:07 Сейчас в теме
(62) кто-то ещё и на УТ 10.3 и на УТ 10.2 и даже на платформе 1С 7.7
я же не про КА 2.5 говорю,

и да, конечно мы знаем про "снятие с поддержки" ....
так же как УПП каждый год грозили снять с поддержки ещё 10 лет назад.

да, мы будем переходить (переносить многолетние доработки) на КА 2.5

но пока у меня конкретная задача с новым документом в КА 2.4.13.209 в режиме совместимости 8.3.14
и "стандартная" структура подчиненности через Критерии отбора тут НЕ работает

у меня "структура" всегда 1 (мой документ) ко многим (из типовой) - выведу значит просто списком.
64. Touch_Of_Soul 30 26.12.22 10:21 Сейчас в теме
(63) да можно вывести списком через динамическую таблицу на форму документа и на форму списка документа.

А там вроде обновления с 2.4 на 2.5 просто обычным обновлением. Я вот перешел с унф 1.6 на 3.0 все доработки расширения и ВПФ, и отчеты как работали так и работают.
67. strelvan 79 28.04.23 09:12 Сейчас в теме
Вставлю свои 5 копеек. Автор добавьте пожалуйста это дополнение в основную статью, чтобы для всех было удобно.
Всё очень правильно описано в статье - только если всё сделать так - то не заработает на новых конфигурациях УТ11.5, КА2,5 ЕРП 2,5 и др.
Нужно в основной форме "Связанные документы" - дополнительно в состав реквизитов формы (ДеревоПодчиненныеОбъекты.Ссылка, ДеревоРодительскиеОбъекты.Ссылка, ИсходныйОбъект, ОсновнойОбъект) добавить ссылку на свой добавленный объект. Реализовать можно двумя способами: Тут кто как хочет так пусть и делает: Либо добавить их в расширение на форме и поставить галочки на свои объекты. Либо прописать их кодом ПриСозданииНаСервере. Скриншот прилагаю.
Прикрепленные файлы:
wild83; Serg O.; kovv; +3 Ответить
68. dima_home 251 02.05.23 14:38 Сейчас в теме
73. purkua 28.02.24 19:14 Сейчас в теме
(67) Добрый день. Кто-нибудь может помочь с кодом по добавлению в деревья добавить ссылки на свой объект? Заранее благодарен
74. luchik.lipetsk 29.02.24 14:28 Сейчас в теме
(67)
Если что, в 11.5 (11.5.14.82) это не нужно делать, у них тип ДокументСсылка, СправочникСсылка
69. Stas-ch 35 18.12.23 01:33 Сейчас в теме
Отличная статья, автор молодец.
А как быть с реквизитами, которые добавили в конфигурацию (основную) к типовым документам - как их учесть в Критерии отбора?
Добавил в расширение и основной документ с реквизитом, а так же документ того типа, который в новом реквизите - В критерии отбора из расширения на закладке Состав ничего не показывает.
Куда копать?
70. dima_home 251 18.12.23 18:14 Сейчас в теме
(69) А как быть с реквизитами, которые добавили в конфигурацию (основную) к типовым документам(69)
Вы всегда можете их пробросить в расширение
71. Stas-ch 35 24.12.23 23:52 Сейчас в теме
(70) Да в том то и дело что вроде все необходимые реквизиты и документы добавлены в расширение, где располагается Критерий отбора.
А критерий отбора не видит реквизитов документов! Чувствую что-то упускаю, но не могу понять что.
В Критерии отбора указал все возможные документы (закладка Данные), а закладка Состав - пустая.
Конфа УНФ 3.0.5. платформа 8.3.23. режим совместимости 8.3.21
Прикрепленные файлы:
72. Stas84 17.02.24 15:41 Сейчас в теме
Есть конфигурация КА 2.5.12.215, режим совместимости моего расширения Версия 8.3.20.
В конфигурации есть документ Корректировка реализации и Ввод в оборот ИС МП, в типовой конфигурации эти документы не связаны критериями отбора.
Как в вашей статье создал в расширении свой критерий отбора, пробросил эти документы в расширении, но в критерии отбора в разделе состав они не появляются.
Может это быть связано с ограничениями возможностей расширения 8.3.20 или я что-то делаю не так?
Вот выдержка с ИТС
" Критерии отбора
Критерии отбора могут быть заимствованными и собственными. В состав собственных критериев отбора расширения могут входить реквизиты только собственные объектов расширения. Заимствованные критерии отбора могут быть расширены реквизитами только собственных объектов расширения."
75. Touch_Of_Soul 30 29.02.24 19:20 Сейчас в теме
(72) Лично у меня получилось настроить по автору поста (50). Работает до сих пор везде. Посмотрите его статью. И там даже с совместимостью 8.3.17 у меня тогда взлетело.
76. Hitcher 178 19.03.24 09:38 Сейчас в теме
Я правильно понимаю, что если у документа есть 2 подчиненных документа в разных расширениях, то из первого расширения в структуре подчиненности никаким способом нельзя увидеть документ из другого расширения?
77. user1692422 22.03.24 06:19 Сейчас в теме
В версии УТ 11.5.12.222 функция "ОбъектыПоКритериюОтбора" отличается от той, что в статье. Исправленный рабочий вариант ниже.

&НаСервере
&ИзменениеИКонтроль("ОбъектыПоКритериюОтбора")
Функция ИТ_ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)

	ШаблонЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ПредставлениеТаблицы.Ссылка КАК Ссылка
	|ИЗ
	|	ИмяТаблицы КАК ПредставлениеТаблицы
	|ГДЕ
	|	ПредставлениеТаблицы.ИмяРеквизита = &ЗначениеКритерияОтбора";

	ШаблонЗапросаОбъединения = "ВЫБРАТЬ
	|	ПредставлениеТаблицы.Ссылка КАК Ссылка
	|ИЗ
	|	ИмяТаблицы КАК ПредставлениеТаблицы
	|ГДЕ
	|	ПредставлениеТаблицы.ИмяРеквизита = &ЗначениеКритерияОтбора";

	ЧастиЗапроса = Новый Массив;
	ТекстЧастиЗапроса = "";

	Для Каждого ЭлементСостава Из Метаданные.КритерииОтбора.СвязанныеДокументы.Состав Цикл

		Если НЕ ЭлементСостава.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда
			Продолжить;
		КонецЕсли;

		ПутьКДанным = ЭлементСостава.ПолноеИмя();

		Если СтрНайти(ПутьКДанным, "ТабличнаяЧасть") Тогда
			ОбъектМетаданных = ЭлементСостава.Родитель().Родитель();
		Иначе
			ОбъектМетаданных = ЭлементСостава.Родитель();
		КонецЕсли;

		Если НЕ ПравоДоступа("Чтение", ОбъектМетаданных) Тогда
			Продолжить;
		КонецЕсли;

		Точка = СтрНайти(ПутьКДанным, ".", НаправлениеПоиска.СКонца);
		ИмяРеквизита = Сред(ПутьКДанным, Точка + 1);

		ИмяТаблицы = ЭлементСостава.Родитель().ПолноеИмя();
		ИмяТаблицы = СтрЗаменить(ИмяТаблицы, "ТабличнаяЧасть.", "");

		Точка = СтрНайти(ИмяТаблицы, ".", НаправлениеПоиска.СКонца);
		ПредставлениеТаблицы = Сред(ИмяТаблицы, Точка + 1);

		ТекстЧастиЗапроса = ?(ТекстЧастиЗапроса = "", ШаблонЗапроса, ШаблонЗапросаОбъединения);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяТаблицы", ИмяТаблицы);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ПредставлениеТаблицы", ПредставлениеТаблицы);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяРеквизита", ИмяРеквизита);

		ЧастиЗапроса.Добавить(ТекстЧастиЗапроса);

	КонецЦикла;

	#Вставка
	Для Каждого ЭлементСостава Из Метаданные.КритерииОтбора.ИТ_СвязанныеДокументы.Состав Цикл

		Если НЕ ЭлементСостава.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда
			Продолжить;
		КонецЕсли;

		ПутьКДанным = ЭлементСостава.ПолноеИмя();

		Если СтрНайти(ПутьКДанным, "ТабличнаяЧасть") Тогда
			ОбъектМетаданных = ЭлементСостава.Родитель().Родитель();
		Иначе
			ОбъектМетаданных = ЭлементСостава.Родитель();
		КонецЕсли;

		Если НЕ ПравоДоступа("Чтение", ОбъектМетаданных) Тогда
			Продолжить;
		КонецЕсли;

		Точка = СтрНайти(ПутьКДанным, ".", НаправлениеПоиска.СКонца);
		ИмяРеквизита = Сред(ПутьКДанным, Точка + 1);

		ИмяТаблицы = ЭлементСостава.Родитель().ПолноеИмя();
		ИмяТаблицы = СтрЗаменить(ИмяТаблицы, "ТабличнаяЧасть.", "");

		Точка = СтрНайти(ИмяТаблицы, ".", НаправлениеПоиска.СКонца);
		ПредставлениеТаблицы = Сред(ИмяТаблицы, Точка + 1);

		ТекстЧастиЗапроса = ?(ТекстЧастиЗапроса = "", ШаблонЗапроса, ШаблонЗапросаОбъединения);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяТаблицы", ИмяТаблицы);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ПредставлениеТаблицы", ПредставлениеТаблицы);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяРеквизита", ИмяРеквизита);

		ЧастиЗапроса.Добавить(ТекстЧастиЗапроса);

	КонецЦикла;
	#КонецВставки

	Если ЧастиЗапроса.Количество() > 0 Тогда
		Запрос = Новый Запрос;
		Разделитель = Символы.ПС + "ОБЪЕДИНИТЬ" + Символы.ПС;
		Запрос.Текст = СтрСоединить(ЧастиЗапроса, Разделитель);
		Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
		Возврат Запрос.Выполнить().Выгрузить();
	Иначе
		Возврат Новый ТаблицаЗначений;
	КонецЕсли;

КонецФункции

Показать
78. xnd 94 24.04.24 16:47 Сейчас в теме
(77) предложу более лаконичный вариант без дублирования кода
Функция txl_ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)

	ШаблонЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ПредставлениеТаблицы.Ссылка КАК Ссылка
	|ИЗ
	|	ИмяТаблицы КАК ПредставлениеТаблицы
	|ГДЕ
	|	ПредставлениеТаблицы.ИмяРеквизита = &ЗначениеКритерияОтбора";

	ШаблонЗапросаОбъединения = "ВЫБРАТЬ
	|	ПредставлениеТаблицы.Ссылка КАК Ссылка
	|ИЗ
	|	ИмяТаблицы КАК ПредставлениеТаблицы
	|ГДЕ
	|	ПредставлениеТаблицы.ИмяРеквизита = &ЗначениеКритерияОтбора";

	ЧастиЗапроса = Новый Массив;
	ТекстЧастиЗапроса = "";
		
	#Удаление
	Для Каждого ЭлементСостава Из Метаданные.КритерииОтбора.СвязанныеДокументы.Состав Цикл	
	#КонецУдаления
		
	#Вставка
	Критерии = Новый Массив;
	Критерии.Добавить(Метаданные.КритерииОтбора.СвязанныеДокументы.Состав);
	Критерии.Добавить(Метаданные.КритерииОтбора.txl_СвязанныеДокументы.Состав); 
	Для каждого Критерий Из Критерии Цикл
		Для Каждого ЭлементСостава Из Критерий Цикл			
	#КонецВставки 
	
		Если НЕ ЭлементСостава.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда
			Продолжить;
		КонецЕсли;

		ПутьКДанным = ЭлементСостава.ПолноеИмя();

		Если СтрНайти(ПутьКДанным, "ТабличнаяЧасть") Тогда
			ОбъектМетаданных = ЭлементСостава.Родитель().Родитель();
		Иначе
			ОбъектМетаданных = ЭлементСостава.Родитель();
		КонецЕсли;

		Если НЕ ПравоДоступа("Чтение", ОбъектМетаданных) Тогда
			Продолжить;
		КонецЕсли;

		Точка = СтрНайти(ПутьКДанным, ".", НаправлениеПоиска.СКонца);
		ИмяРеквизита = Сред(ПутьКДанным, Точка + 1);

		ИмяТаблицы = ЭлементСостава.Родитель().ПолноеИмя();
		ИмяТаблицы = СтрЗаменить(ИмяТаблицы, "ТабличнаяЧасть.", "");

		Точка = СтрНайти(ИмяТаблицы, ".", НаправлениеПоиска.СКонца);
		ПредставлениеТаблицы = Сред(ИмяТаблицы, Точка + 1);

		ТекстЧастиЗапроса = ?(ТекстЧастиЗапроса = "", ШаблонЗапроса, ШаблонЗапросаОбъединения);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяТаблицы", ИмяТаблицы);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ПредставлениеТаблицы", ПредставлениеТаблицы);
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяРеквизита", ИмяРеквизита);

		ЧастиЗапроса.Добавить(ТекстЧастиЗапроса);

	КонецЦикла;
	#Вставка
	КонецЦикла;
	#КонецВставки

	Если ЧастиЗапроса.Количество() > 0 Тогда
		Запрос = Новый Запрос;
		Разделитель = Символы.ПС + "ОБЪЕДИНИТЬ" + Символы.ПС;
		Запрос.Текст = СтрСоединить(ЧастиЗапроса, Разделитель);
		Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
		Возврат Запрос.Выполнить().Выгрузить();
	Иначе
		Возврат Новый ТаблицаЗначений;
	КонецЕсли;

КонецФункции
Показать
igor-pn; Wrols; user1692422; +3 Ответить
79. unknown181538 158 26.05.24 12:13 Сейчас в теме
(0) Дополню: в свежих версиях платформы добавлять новый критерий отбора не обязательно, можно расширить типи состав существующего.
Однако, в общей форме "СвязанныеОбъекты" также нужно расширить типы реквизитов формы, которые обозначение как ДокументСсылка дополнительно ссылками на добавленные документы.
Реквизиты: ОсновнойОбъект, ИсходныйОбъект, реквизиты табличных частей:
ДеревоПодчиненныеОбъекты.Ссылка
ДеревоРодительскиеОбъекты.Ссылка
80. unknown181538 158 26.05.24 12:51 Сейчас в теме
(79) Перечитал тему еще раз: был не прав. Добавление критерия в расширение также приводит к опасному добавлению всех документов в расширение, с чем я и столкнулся...
dima_home; +1 Ответить
Оставьте свое сообщение