Отключение сравнения данных документа с данными документа основания в УТ 11.5

1. konsta2006 23.09.24 13:15 Сейчас в теме
Всех приветствую!
Помогите разобраться в какой процедуре проходит сверка данных ПН с данными заказа поставщику?
Нужно сделать чтобы ПН с измененными данными проводилась (УТ 11.5).
По теме из базы знаний
Найденные решения
11. konsta2006 27.09.24 14:27 Сейчас в теме
Если кому-то пригодится:
&После("ПередЗаписью")
Процедура ЭБСПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Попытка
        Если РежимЗаписи = РежимЗаписиДокумента.Запись Тогда
            Если ЭтотОбъект.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Иванов Федор Евгеньевич") ИЛИ
                ЭтотОбъект.Контрагент.ИНН = 1111111111111
                Тогда
                
                СтрокаДляПоиска = ЭтотОбъект.Комментарий;
                Поиск1 = Лев(СтрокаДляПоиска, 18);
                СтрокаДляПоиска = СтрЗаменить(СтрокаДляПоиска, Поиск1, "");
                Поиск2 = СтрНайти(СтрокаДляПоиска, "ID_Склада_") - 1;
                СтрокаДляПоиска = Лев(СтрокаДляПоиска, Поиск2);
                
                ЭтотОбъект.ПоступлениеПоЗаказам = Истина;
                ЭтотОбъект.ЦенаВключаетНДС = Истина;
                
                Запрос = Новый Запрос;
                Запрос.Текст = 
                "ВЫБРАТЬ
                |    ЗаказПоставщику.Ссылка КАК Ссылка
                |ИЗ
                |    Документ.ЗаказПоставщику КАК ЗаказПоставщику
                |ГДЕ
                |    ЗаказПоставщику.Номер = &Номер
                |    И ЗаказПоставщику.Контрагент = &Контрагент";
                
                Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент);
                Запрос.УстановитьПараметр("Номер", СтрокаДляПоиска);    
                РезультатЗапроса = Запрос.Выполнить();    
                ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
                Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                    ЭтотОбъект.ЗаказПоставщику = ВыборкаДетальныеЗаписи.Ссылка;
                    ЭтотОбъект.Склад = ВыборкаДетальныеЗаписи.Ссылка.Склад;
                    ЭтотОбъект.Контрагент = ВыборкаДетальныеЗаписи.Ссылка.Контрагент;
                    ЭтотОбъект.Соглашение = ВыборкаДетальныеЗаписи.Ссылка.Соглашение;
                    ЭтотОбъект.Партнер = ВыборкаДетальныеЗаписи.Ссылка.Партнер;
                    
                     
                    Для Каждого СтрокаТоваров Из ЭтотОбъект.Товары Цикл
                        //ПроверкаНоменклатурыВЗаказеПоставщику(ВыборкаДетальныеЗаписи.Ссылка, СтрокаТоваров.Номенклатура);
                        Если ПроверкаНоменклатурыВЗаказеПоставщику(ВыборкаДетальныеЗаписи.Ссылка, СтрокаТоваров.Номенклатура) = "Пусто" Тогда
                            СтрокаТоваров.ЗаказПоставщику = ВыборкаДетальныеЗаписи.Ссылка;
                            СтрокаТоваров.КодСтроки = 0;
                            СтрокаТоваров.РасхождениеЗаказ = 1;                                                                        
                        Иначе
                            СтрокаТоваров.ЗаказПоставщику = ВыборкаДетальныеЗаписи.Ссылка;
                            СтрокаТоваров.КодСтроки = ПроверкаНоменклатурыВЗаказеПоставщику(ВыборкаДетальныеЗаписи.Ссылка, СтрокаТоваров.Номенклатура);
                        КонецЕсли;    
                    КонецЦикла;    
                    
                КонецЦикла;
            КонецЕсли;    
        КонецЕсли;
    Исключение    
        //Сообщить("Документ проводится без заказа");
    КонецПопытки;
КонецПроцедуры



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

Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Lenten 25 24.09.24 10:34 Сейчас в теме
3. user2033930 24.09.24 10:35 Сейчас в теме
4. Lenten 25 24.09.24 10:40 Сейчас в теме
(3) >сверка данных порядкового номера с данными заказа поставщику

а что это за объект в УТ такой? скиньте скриншот
7. konsta2006 24.09.24 10:54 Сейчас в теме
(4) ПН - это приходная накладная. в ней товары нужно изменять при подвязанном заказе поставщику.
8. Lenten 25 24.09.24 10:59 Сейчас в теме
(7)
7. konsta2006 24.09.24 10:54
(4) ПН - это приходная накладная. в ней товары нужно изменять при подвязанном заказом поставщику.


при проведении заказа поставщику получайте приходную накладную и меняйте. Но обычно так никто не делает. Заказ отображает намерение что-то купить, а приходная накладная отображает что пришло по факту.
9. konsta2006 24.09.24 11:04 Сейчас в теме
(8) у нас эти документы отправляются и получаются через бизнес-сеть и потом накладная отличающаяся от заказа не перепроводится. я позже проверю - отпишусь (сейчас RDP заглючило). я думал может кто-то сталкивался. вообще я там нашел в модуле объекта приходной накладной процедуру проверки соответствия товаров (точно название не помню). просто ее придется в расширении заменять - не очень хочется
5. Lenten 25 24.09.24 10:45 Сейчас в теме
(3) >Отключение сравнения данных документа с данными документа основания в УТ 11.5

возможно вам нужна обработка заполнения в модуле объекта того документа, который заполняется
10. konsta2006 25.09.24 14:46 Сейчас в теме
(5) до обработки заполнения не доходит - сразу ошибку выбивает. есть еще варианты?)
6. konsta2006 24.09.24 10:52 Сейчас в теме
ПН - это приходная накладная. она должна изменяться с подвязанным заказом поставщику.
11. konsta2006 27.09.24 14:27 Сейчас в теме
Если кому-то пригодится:
&После("ПередЗаписью")
Процедура ЭБСПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Попытка
        Если РежимЗаписи = РежимЗаписиДокумента.Запись Тогда
            Если ЭтотОбъект.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Иванов Федор Евгеньевич") ИЛИ
                ЭтотОбъект.Контрагент.ИНН = 1111111111111
                Тогда
                
                СтрокаДляПоиска = ЭтотОбъект.Комментарий;
                Поиск1 = Лев(СтрокаДляПоиска, 18);
                СтрокаДляПоиска = СтрЗаменить(СтрокаДляПоиска, Поиск1, "");
                Поиск2 = СтрНайти(СтрокаДляПоиска, "ID_Склада_") - 1;
                СтрокаДляПоиска = Лев(СтрокаДляПоиска, Поиск2);
                
                ЭтотОбъект.ПоступлениеПоЗаказам = Истина;
                ЭтотОбъект.ЦенаВключаетНДС = Истина;
                
                Запрос = Новый Запрос;
                Запрос.Текст = 
                "ВЫБРАТЬ
                |    ЗаказПоставщику.Ссылка КАК Ссылка
                |ИЗ
                |    Документ.ЗаказПоставщику КАК ЗаказПоставщику
                |ГДЕ
                |    ЗаказПоставщику.Номер = &Номер
                |    И ЗаказПоставщику.Контрагент = &Контрагент";
                
                Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент);
                Запрос.УстановитьПараметр("Номер", СтрокаДляПоиска);    
                РезультатЗапроса = Запрос.Выполнить();    
                ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
                Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                    ЭтотОбъект.ЗаказПоставщику = ВыборкаДетальныеЗаписи.Ссылка;
                    ЭтотОбъект.Склад = ВыборкаДетальныеЗаписи.Ссылка.Склад;
                    ЭтотОбъект.Контрагент = ВыборкаДетальныеЗаписи.Ссылка.Контрагент;
                    ЭтотОбъект.Соглашение = ВыборкаДетальныеЗаписи.Ссылка.Соглашение;
                    ЭтотОбъект.Партнер = ВыборкаДетальныеЗаписи.Ссылка.Партнер;
                    
                     
                    Для Каждого СтрокаТоваров Из ЭтотОбъект.Товары Цикл
                        //ПроверкаНоменклатурыВЗаказеПоставщику(ВыборкаДетальныеЗаписи.Ссылка, СтрокаТоваров.Номенклатура);
                        Если ПроверкаНоменклатурыВЗаказеПоставщику(ВыборкаДетальныеЗаписи.Ссылка, СтрокаТоваров.Номенклатура) = "Пусто" Тогда
                            СтрокаТоваров.ЗаказПоставщику = ВыборкаДетальныеЗаписи.Ссылка;
                            СтрокаТоваров.КодСтроки = 0;
                            СтрокаТоваров.РасхождениеЗаказ = 1;                                                                        
                        Иначе
                            СтрокаТоваров.ЗаказПоставщику = ВыборкаДетальныеЗаписи.Ссылка;
                            СтрокаТоваров.КодСтроки = ПроверкаНоменклатурыВЗаказеПоставщику(ВыборкаДетальныеЗаписи.Ссылка, СтрокаТоваров.Номенклатура);
                        КонецЕсли;    
                    КонецЦикла;    
                    
                КонецЦикла;
            КонецЕсли;    
        КонецЕсли;
    Исключение    
        //Сообщить("Документ проводится без заказа");
    КонецПопытки;
КонецПроцедуры



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

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот