УТ10.3 структура подчиненности и ввод на основании
Показалось, что в УТ10.3 убогая структура подчиненности документов, или что-то не нашел в настройках, или снова допиливать?
Отображается нормально структура у приходной и счет-фактуры, просмотрел внимательно этот ввод на основании, вроде бы просто через доп.реквизит "док основание" у сч.ф.
Попробовал по аналогии допилить ввод на основании у перемещений (добавил реквизит, при вводе на основании в коде заполняю его), структура вроде заработала. Но однобоко. Сверху вниз показывает, а встаю на нижний док, жму, вверх связь не показывает.
Пилить? Что пилить? Подскажите, коллеги.
Отображается нормально структура у приходной и счет-фактуры, просмотрел внимательно этот ввод на основании, вроде бы просто через доп.реквизит "док основание" у сч.ф.
Попробовал по аналогии допилить ввод на основании у перемещений (добавил реквизит, при вводе на основании в коде заполняю его), структура вроде заработала. Но однобоко. Сверху вниз показывает, а встаю на нижний док, жму, вверх связь не показывает.
Пилить? Что пилить? Подскажите, коллеги.
По теме из базы знаний
- Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: корректируем регистры или «Берём банк, кассу, экспроприируем экспроприаторов».
- Интеграция с системой управления складом WMS Exceed-4000 (exceed-infor.ru) XML-обмен для Рарус Торгового комплекса 1С 8.3 (ОФ)
- Интеграция 1С с маркетплейсами Ozon и Wildberries для УТ10.3, КА 1.1, УПП 1.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Столько релизов и убогая? В древней семерке и то было. И перекинуть в другие конфы не сложно было, потому как по-уму сделано было.
Ну, а может тут, на инфострате, уже кто-то допиливал, есть публикации (чтобы не изобретать велосипед)?
Ну, а может тут, на инфострате, уже кто-то допиливал, есть публикации (чтобы не изобретать велосипед)?
Вопросы остались.
1. у перемещений добавил реквизит, при вводе на основании в коде заполняю его, структура вроде заработала. Но однобоко. Сверху вниз показывает, а встаю на нижний док, жму, вверх связь не показывает. Why?
2. Достаточно будет у остальных документов тоже допилить реквизит "док основание" и его заполнение при вводе на основании?
1. у перемещений добавил реквизит, при вводе на основании в коде заполняю его, структура вроде заработала. Но однобоко. Сверху вниз показывает, а встаю на нижний док, жму, вверх связь не показывает. Why?
2. Достаточно будет у остальных документов тоже допилить реквизит "док основание" и его заполнение при вводе на основании?
(6) Смотри код общей формы "ФормаСтруктурыПодчиненности" и критерий отбора "СвязанныеДокументы".
При показе подчиненных вобще не важно как ты реквизит назовешь, там проверяется по вхождению типа значения.
это связь в низ, а вверх не работает потому что нет этой связи, она походу пишется в критерий отбора, что ты не делаешь.
Напиши потом только получилось или нет.
При показе подчиненных вобще не важно как ты реквизит назовешь, там проверяется по вхождению типа значения.
МетаданныеДокумента = ДокументСсылка.Метаданные();
СписокРеквизитов = Новый СписокЗначений;
Для Каждого Реквизит ИЗ МетаданныеДокумента.Реквизиты Цикл
ТипыРеквизита = Реквизит.Тип.Типы();
Для Каждого ТекущийТип ИЗ ТипыРеквизита Цикл
МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип);
это связь в низ, а вверх не работает потому что нет этой связи, она походу пишется в критерий отбора, что ты не делаешь.
Напиши потом только получилось или нет.
Нужна подсказка. Ввод перемещения на основании перемещения.
Обработок из публикаций накачался, наизучался, но что-то так и не нашел построение нужной мне связи сверху вниз. С критериями отбора "связанных" покрутился, не понял где там прикручиваться, там всё самодостаточно, а пригодиться оно мне может только позже, когда буду новые реквизиты лепить к имеющимся документам.
Снизу вверх сделал, не проблема, у реквизита ДокументОснование сменил тип данных на составной, к видам доков ПН добавил Прмщ. В процедуре ОбработкаЗаполнения(Основание) добавил ветку
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
//...заполняем прочие реквизиты, а потом
ДокументОснование = Основание.Ссылка;
Эта часть структуры заработала, доки привязываются, отчет показывает.
Надо в обратную сторону сделать.
Обработок из публикаций накачался, наизучался, но что-то так и не нашел построение нужной мне связи сверху вниз. С критериями отбора "связанных" покрутился, не понял где там прикручиваться, там всё самодостаточно, а пригодиться оно мне может только позже, когда буду новые реквизиты лепить к имеющимся документам.
Снизу вверх сделал, не проблема, у реквизита ДокументОснование сменил тип данных на составной, к видам доков ПН добавил Прмщ. В процедуре ОбработкаЗаполнения(Основание) добавил ветку
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
//...заполняем прочие реквизиты, а потом
ДокументОснование = Основание.Ссылка;
Эта часть структуры заработала, доки привязываются, отчет показывает.
Надо в обратную сторону сделать.
Почитал (10) , почерпнул, допилил немного структуру подчиненности встроенную в УТ10.
Вот такие получились доработки в модуле формы структуры подчиненности:
- добавилась процедура "ВывестиПоОснованию()";
- добавлись ее вызовы из процедуры "ВывестиДеревоДокументов()";
- и в "ВывестиПодчиненныеДокументы()".
(кому чешется тоже прикрутить к себе, см. ниже куски кода)
Вот такие получились доработки в модуле формы структуры подчиненности:
- добавилась процедура "ВывестиПоОснованию()";
- добавлись ее вызовы из процедуры "ВывестиДеревоДокументов()";
- и в "ВывестиПодчиненныеДокументы()".
(кому чешется тоже прикрутить к себе, см. ниже куски кода)
// Процедура осуществляет в структуре дополнительный вывод подчиненных документов по реквизиту документоснование
Процедура ВывестиПоОснованию(СтрокаДерева)
ТекущийДокумент = СтрокаДерева.Ссылка;
СписокДокументов = Новый СписокЗначений; //содержит имена документов, как они заданы в конфигурации
Для Каждого Док Из Метаданные.Документы Цикл //поиск документов которые вводятся на основании выбранного документа
Если Док.Реквизиты.Найти("ДокументОснование") <> Неопределено Тогда
Если Док.ВводитсяНаОсновании.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(ТекущийДокумент))) = Истина Тогда
СписокДокументов.Добавить(Док.Имя);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из СписокДокументов Цикл
Запрос = Новый Запрос; Запрос.УстановитьПараметр("ИскомаяСсылка",ТекущийДокумент);
Запрос.Текст = "ВЫБРАТЬ
| "+Стр.Значение+".Ссылка КАК Ссылка
|ИЗ
| Документ."+Стр.Значение+" КАК "+Стр.Значение+"
|ГДЕ
| "+Стр.Значение+".ДокументОснование = &ИскомаяСсылка";
Если Запрос.Выполнить().Пустой() Тогда Продолжить; КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если мУжеВСписке[Выборка.Ссылка] = Неопределено Тогда
НоваяСтрока = СтрокаДерева.Строки.Добавить();
НоваяСтрока.Ссылка = Выборка.Ссылка;
НоваяСтрока.ДокументПредставление = Строка(Выборка.Ссылка);
//НоваяСтрока.СуммаДокумента = Выборка.Ссылка.СуммаДокумента; //НоваяСтрока.ВалютаДокумента = Выборка.Ссылка.ВалютаДокумента;
НоваяСтрока.Проведен = Выборка.Ссылка.Проведен;
НоваяСтрока.ПометкаУдаления = Выборка.Ссылка.ПометкаУдаления;
мУжеВСписке.Вставить(Выборка.Ссылка, Истина);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ВывестиПоОснованию(СтрокаДерева)
ТекущийДокумент = СтрокаДерева.Ссылка;
СписокДокументов = Новый СписокЗначений; //содержит имена документов, как они заданы в конфигурации
Для Каждого Док Из Метаданные.Документы Цикл //поиск документов которые вводятся на основании выбранного документа
Если Док.Реквизиты.Найти("ДокументОснование") <> Неопределено Тогда
Если Док.ВводитсяНаОсновании.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(ТекущийДокумент))) = Истина Тогда
СписокДокументов.Добавить(Док.Имя);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из СписокДокументов Цикл
Запрос = Новый Запрос; Запрос.УстановитьПараметр("ИскомаяСсылка",ТекущийДокумент);
Запрос.Текст = "ВЫБРАТЬ
| "+Стр.Значение+".Ссылка КАК Ссылка
|ИЗ
| Документ."+Стр.Значение+" КАК "+Стр.Значение+"
|ГДЕ
| "+Стр.Значение+".ДокументОснование = &ИскомаяСсылка";
Если Запрос.Выполнить().Пустой() Тогда Продолжить; КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если мУжеВСписке[Выборка.Ссылка] = Неопределено Тогда
НоваяСтрока = СтрокаДерева.Строки.Добавить();
НоваяСтрока.Ссылка = Выборка.Ссылка;
НоваяСтрока.ДокументПредставление = Строка(Выборка.Ссылка);
//НоваяСтрока.СуммаДокумента = Выборка.Ссылка.СуммаДокумента; //НоваяСтрока.ВалютаДокумента = Выборка.Ссылка.ВалютаДокумента;
НоваяСтрока.Проведен = Выборка.Ссылка.Проведен;
НоваяСтрока.ПометкаУдаления = Выборка.Ссылка.ПометкаУдаления;
мУжеВСписке.Вставить(Выборка.Ссылка, Истина);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
// Процедура вывода дерева структуры подчиненности документа
Процедура ВывестиДеревоДокументов()
Попытка
ДеревоДокументов.Строки.Очистить();
мДерево = ДеревоДокументов;
мУжеВСписке.Очистить();
ВывестиРодительскиеДокументы(ДокументСсылка);
ЭлементыФормы.ДеревоДокументов.ТекущаяСтрока = мДерево;
ВывестиПоОснованию(мДерево);
ВывестиПодчиненныеДокументы(мДерево);
ВывестиПоОснованию(мДерево);
Исключение
КонецПопытки;
КонецПроцедуры
Процедура ВывестиДеревоДокументов()
Попытка
ДеревоДокументов.Строки.Очистить();
мДерево = ДеревоДокументов;
мУжеВСписке.Очистить();
ВывестиРодительскиеДокументы(ДокументСсылка);
ЭлементыФормы.ДеревоДокументов.ТекущаяСтрока = мДерево;
ВывестиПоОснованию(мДерево);
ВывестиПодчиненныеДокументы(мДерево);
ВывестиПоОснованию(мДерево);
Исключение
КонецПопытки;
КонецПроцедуры
// Процедура осуществляет вывод подчиненных документов
Процедура ВывестиПодчиненныеДокументы(СтрокаДерева)
// ...
// ... в конце, в цикле, перед вызовом рекурсии
ВывестиПоОснованию(НоваяСтрока);
// перед этой строкой
ВывестиПодчиненныеДокументы(НоваяСтрока);
// ...
КонецПроцедуры
Процедура ВывестиПодчиненныеДокументы(СтрокаДерева)
// ...
// ... в конце, в цикле, перед вызовом рекурсии
ВывестиПоОснованию(НоваяСтрока);
// перед этой строкой
ВывестиПодчиненныеДокументы(НоваяСтрока);
// ...
КонецПроцедуры
Напомню, что предварительно (выше писал где и как, кажется) при вводе на основании перемещений на основании других перемещений или приходных, в коде в соотв процедуре заполнял реквизит "документоснование".
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
//...
ДокументОснование = Основание.Ссылка;
//...
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
//...
ДокументОснование = Основание.Ссылка;
//...
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
//...
ДокументОснование = Основание.Ссылка;
//...
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
//...
ДокументОснование = Основание.Ссылка;
//...
Столкнулся с этой задачей...
Клиент стал возмущаться, что в УТ 10.3 из "заказа покупателя" и "реализации" структура подчиненности по разному выводится.
Точнее говоря, если открывать "Структуру подчиненности" из Заказа, то видны, к примеру, документы "Заказ поставщику" введенные на основании Заказа.
А если "Структуру подчиненности" открыть из Реализации, то Заказ виден, а из подчиненных ему только текущая Реализация.
Решил задачу немного проще.
Добавил одну строку строку в конце процедуры ВывестиРодительскиеДокументы(ДокументСсылка)
(в том же модуле формы структуры подчиненности):
ВывестиПодчиненныеДокументы(СтрокаДерева);
Клиент стал возмущаться, что в УТ 10.3 из "заказа покупателя" и "реализации" структура подчиненности по разному выводится.
Точнее говоря, если открывать "Структуру подчиненности" из Заказа, то видны, к примеру, документы "Заказ поставщику" введенные на основании Заказа.
А если "Структуру подчиненности" открыть из Реализации, то Заказ виден, а из подчиненных ему только текущая Реализация.
Решил задачу немного проще.
Добавил одну строку строку в конце процедуры ВывестиРодительскиеДокументы(ДокументСсылка)
(в том же модуле формы структуры подчиненности):
ВывестиПодчиненныеДокументы(СтрокаДерева);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот