Имя: Пароль:
1C
 
Не заполняется табличная часть в процедуре при записи на сервере ☑
0 NIGHTHUNTER
 
15.06.22
✎
13:52
Записывая, проводя документвыполняется процедура ЗаполнитьНаСервере(), она обновляет, переписывает табличную часть документа.
Смотрю по коду все проходит. но потом в документе ничего нет, как буд то бы табличная часть не обновилась. В чем может быть дело?

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

    Если Не ЗначениеЗаполнено(Объект.ХХХ_ДатаОтгрузки) Тогда
        Сообщить("Не заполнена дата отгрузки!");
        Возврат;
    КонецЕсли;    
    // <-
    ЗаполнитьНаСервере();
1 Kassern
 
15.06.22
✎
13:57
(0) "при записи на сервере" - вы совсем не учитесь на своих же топиках...
2 Kassern
 
15.06.22
✎
13:58
вам же уже 10 раз объясняли и разжевывали в каком порядке выполняются события при записи объекта, но вы все равно пытаетесь воткнуть данные, когда уже транзакция записи начата.
3 Ryzeman
 
15.06.22
✎
13:59
(0) Делай перед записью и в модуле объекта, а не формы. Если очень хочется на форме то в обработке заполнения.
У меня уже нет сил на сарказм.
4 Kassern
 
15.06.22
✎
14:13
(3) ТС в который раз пытается запрыгнуть в самолет, который уже взлетел)
5 NIGHTHUNTER
 
15.06.22
✎
14:19
(4) Ок, переделываю. Заполняю в модуле объекта.
Делаю через ЭтотОбъект.
Поле одно на заполненность то там можно проверить? И заполнить табличную часть потом.
6 Kassern
 
15.06.22
✎
14:21
(5) В какой процедуре делаете?
7 Мультук
 
гуру
15.06.22
✎
14:21
(5)

Если заработает - значит можно.
Если не заработает, ты же все-равно сюда напишешь.
8 Ryzeman
 
15.06.22
✎
14:22
(5) https://infostart.ru/1c/articles/1098803/

Прочитай. Очень вдумчиво посмотри на первую картинку. Сформулируй для себя что ты хочешь получить, ещё раз подумай, придумай ГДЕ тебе надо выполнять твой алгоритм, попробуй это написать (САМОСТОЯТЕЛЬНО), если что-то не получится, ещё раз подумай, если ничего не придумаешь - напиши сюда что у тебя не получилось, может быть поможем.
9 Мультук
 
гуру
15.06.22
✎
14:24
(8)

Там всего три события -- он пойдет перебором, но найдет решение метод научного тыка в mista.ru
10 NIGHTHUNTER
 
15.06.22
✎
15:05
(6) ПередЗаписью() модуля объекта .

Делал, уже все отменил.

Где можно правильно проверить, заполнена ли табличная часть документа?
11 RomanYS
 
15.06.22
✎
15:06
(10) ОбработкаПроверкиЗаполнения
12 NIGHTHUNTER
 
16.06.22
✎
01:54
Начал делать что бы нельзя было записать табличную часть у документа. Одну из двух.
И какие то момент непредвиденные не дали этого сделать.

Пробовал в процедуре формы ПриЗаписиНаСервере() выяснилось что нельзя тут.

Потом начал делать в процедуре ПередЗаписью() в модуле объекта. Но тоже что то пошло не так, отказался от всего.

Теперь нужно решить, где правильно сделать проверку заполненности одной табличной части при записи документа.
13 NIGHTHUNTER
 
16.06.22
✎
06:34
(11) А как связаны ОбработкаПроверкиЗаполнения() в модуле объекта документа и ОбработкаПроверкиЗаполненияНаСервере() в модуле формы? И зачем они?
14 NIGHTHUNTER
 
16.06.22
✎
06:38
У табличной части поставил, проверка заполнения - выдавать ошибку, может этого будет достаточно.
Мне только нужно сделать что бы не закрывали и записывали документ без нее. Может достаточно?!
15 Мимохожий Однако
 
16.06.22
✎
06:40
(13) Связаны объектом Документ.
16 Kassern
 
16.06.22
✎
09:10
(12) "Потом начал делать в процедуре ПередЗаписью() в модуле объекта. Но тоже что то пошло не так, отказался от всего" - показывай уже как делал
17 NIGHTHUNTER
 
16.06.22
✎
09:12
У табличной части поставил, проверка заполнения - выдавать ошибку. Но удается записать документ с пустой табличной частью. Почему?
18 NIGHTHUNTER
 
16.06.22
✎
09:14
(16) Вчера все удалил. Так как вечером голова не работает. решил ограничится ограниченной сложностью. Или перенести решение на новый день.
Сегодня вот поставил галку у табличной части, проверка заполнения, выдавать ошибку!
Что же это за галка. если удается записать документ с пустой табличной частью? Как тут наложить запрет?
19 Ryzeman
 
16.06.22
✎
09:14
(17) а ты флаг отказа взвёл?...
20 Ryzeman
 
16.06.22
✎
09:16
>>Но тоже что то пошло не так, отказался от всего.

Этим можно описать 99% твоих проблем)
21 NIGHTHUNTER
 
16.06.22
✎
09:26
(19) Где его взвести нужно? Что бы было правильно?
22 NIGHTHUNTER
 
16.06.22
✎
09:27
Думаю проверять ещё в процедуре ПередЗаписью() к чему тогда этот флаг проверка заполнения выдавать ошибку, если записать можно



Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    q=1;
КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    q=1;
КонецПроцедуры
23 NIGHTHUNTER
 
16.06.22
✎
09:28
(20) был вечер и голова отказала, сейчас вот занимаюсь
24 Ryzeman
 
16.06.22
✎
09:28
Эх... Это конечно не педагогично

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

Хотя если эта дата отгрузки у тебя заполняется только на форме, то все проверки имеет смысл на форме и делать. Но честно говоря я уже не хочу вникать что там у тебя за задачи и проблемы.
25 Kassern
 
16.06.22
✎
09:28
(21) есть такой параметр волшебный в процедуре перед записью. Называется Отказ, дальше надеюсь сами догадаетесь
26 Ryzeman
 
16.06.22
✎
09:29
Процедура ТвойДокументПередЗаписью(Источник, Отказ) Экспорт
Если Не ЗначениеЗаполнено(Источник.ХХХ_ДатаОтгрузки) Тогда
Отказ = Истина;
ОбщегоНазначения.СообщитьПользователю("ru = 'Не заполнена дата отгрузки, документ не записан!'");
КонецЕсли;
КонецПроцедуры

поправил
27 Kassern
 
16.06.22
✎
09:30
(24) Как-то у вас не педагогично, нужно же на реквизит сослаться, чтобы возле него ошибка отобразилась)
28 NIGHTHUNTER
 
16.06.22
✎
09:32
(25) Вот, я и хочу сейчас это сделать в модуле объекта.

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    q=1;
КонецПроцедуры
29 Ryzeman
 
16.06.22
✎
09:32
(27) у меня темы ТС фрустрацию вызывают. Он же реально не учится. И лишний раз перепроверять что он там пишет или что я сам пишу не хочется, тем более стараться.
30 Ryzeman
 
16.06.22
✎
09:33
(28) и что по-твоему твоя процедура делает?
31 Kassern
 
16.06.22
✎
09:33
(28) just do it!
32 Мимохожий Однако
 
16.06.22
✎
09:35
(29) Зато ты учишься на его ошибках. Есть возможность потренировать психологическую устойчивость и повысить самооценку. )
33 NIGHTHUNTER
 
16.06.22
✎
09:36
(30)(28) Вот так в модуле объекта сделал. Сойдет?

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если ЭтотОбъект.ХХХ_Товары.Количество() = 0 Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры
34 Ryzeman
 
16.06.22
✎
09:37
(32) Ну, с самооценкой у меня и так порядок, мне в целом нравится помогать людям. Тем более я довольно многому сам научился на этом форуме, ещё задолго до того, как зарегался. Но тут же блин реально человек месяцами даже на уровня джуна выйти не может.
35 NIGHTHUNTER
 
16.06.22
✎
09:37
(25) Это не совсем актуально. Так как ДатаОтгрузки при создании документа заполняется датой документа. Если потом вот ее стереть. Тогда может.
36 Ryzeman
 
16.06.22
✎
09:37
(33) попробуй. У тебя тестовая база есть? Зачем нас то спрашиваешь?) Не получится - спроси.
37 NIGHTHUNTER
 
16.06.22
✎
09:38
(35) -> (26)
38 Kassern
 
16.06.22
✎
09:38
(33) Ну так проверьте логику работы в тестовой базе. Если устраивает, то "и так сойдет")
39 NIGHTHUNTER
 
16.06.22
✎
09:39
(33) Тут не хватает сообщения ещё , сейчас добавлю.
(38) Ок !
40 Kassern
 
16.06.22
✎
09:40
(33) В модуле объекта можно напрямую обращаться к реквизитам объекта. Например, для вашего сексшопа можно просто написать ХХХ_Товары.Количество() = 0
41 NIGHTHUNTER
 
16.06.22
✎
10:00
(40) Я сделал так.


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




Но сейчас как я вижу, не получается удалить документы с пустой табличной частью товары.
Это же как то не нормально?
42 NIGHTHUNTER
 
16.06.22
✎
10:01
(41) Установить пометку удаления не удается.
43 Мимохожий Однако
 
16.06.22
✎
10:01
(34) Способность к обучению у всех разная. ТС в режиме аквариумной рыбки. Но он настойчив. Без него многие бы заскучали.
44 Kassern
 
16.06.22
✎
10:01
(41) А теперь смотрим на еще один параметр этой процедуры - РежимПроведения)
45 Ryzeman
 
16.06.22
✎
10:01
Проверяй на режим проведения.
46 Мимохожий Однако
 
16.06.22
✎
10:02
(42) Установка пометки удаления, как и проведение, связана с процедурами ПриЗаписи() и ПередЗаписью().
47 Ryzeman
 
16.06.22
✎
10:02
(45) Хотя на самом деле это нормально. Если ты не можешь создавать документы с пустой ТЧ, то их в базе и не должно быть, нечего будет удалять.
48 NIGHTHUNTER
 
16.06.22
✎
10:05
(45) (46) А что проверять , как? Подскажите пожалуйста. Как это может помочь, удалить эти документы?
49 Kassern
 
16.06.22
✎
10:09
(47) он уже нахерачил таких документов)
50 Kassern
 
16.06.22
✎
10:09
(48) Подумайте, пока голова "работает" или погуглите как с этим параметром работать. В отладке гляньте как он заполняется
51 NIGHTHUNTER
 
16.06.22
✎
10:12
(49) Думаю как их удалить теперь
52 H A D G E H O G s
 
16.06.22
✎
10:17
Я думаю, кто то тренирует нейросетку.
53 H A D G E H O G s
 
16.06.22
✎
10:17
Сейчас дотренирует и 80% писателей пойдут работать в вебкам.
54 NIGHTHUNTER
 
16.06.22
✎
10:19
Я тут как то могу влиять на пометку удаления?


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если ЭтотОбъект.ХХХ_Товары.Количество() = 0 Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не заполнена табличная часть товары !";
        Сообщение.Сообщить();
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры
55 Ryzeman
 
16.06.22
✎
10:20
(53) Думаешь, пора себя в форму приводить? Там и так конкуренция... Как бы в кладмены не пойти :(
56 Kassern
 
16.06.22
✎
10:22
(54) при пометке удаления какое значение принимает параметр РежимПроведения? И какое значение принимает, когда проводите документ?
57 NIGHTHUNTER
 
16.06.22
✎
10:22
Я сейчас тогда это закомментирую (54), помечу документы. Пройдясь по ним. А потом верну, продолжу тестирование.
58 Выпрь
 
16.06.22
✎
10:23
перед записью на сервере нужно заполнять не объект, а текущийобъект
59 NIGHTHUNTER
 
16.06.22
✎
10:23
(56) Пока закомментировал. Я не понимаю, как это может помочь пометить их на удаление.
60 NIGHTHUNTER
 
16.06.22
✎
10:24
(58) Заполнять????? Я проверяю заполнение табличной части товары. От заполнения отказался.
61 Kassern
 
16.06.22
✎
10:25
(59) пока не попробуете, не поймете
62 Kassern
 
16.06.22
✎
10:26
поставьте точку останова в этой процедуре и посмотрите как заполняется параметр при проведении и при пометке удаления. А потом подумайте какое можно условие написать, чтобы давало помечать на удаление с пустой ТЧ
63 NIGHTHUNTER
 
16.06.22
✎
10:29
(62) Ясно!!!! Спасибо!!! Я верю, что вы подсказываете, т очто нужно делать. Но сам спешу, и первое что придумал, закомментировать. Не все быстро открывается, по этому уже по этому пути иду. А так взял на заметку.
64 NIGHTHUNTER
 
16.06.22
✎
10:34
Там ещё проблема при заполнении табличной части товары выявилась.
Она заполняется по кнопке. И не заполняется, если документ не записан.
А документ не записывается с пустой табличной частью товары. Как тут правильно сделать? Замкнутый круг иначе.
65 NIGHTHUNTER
 
16.06.22
✎
10:37
Получается, не подойдет в данном случае эта проверка.
Как ее записать, если она не будет записываться. Потому что пустая табличная часть товары.
66 Kassern
 
16.06.22
✎
10:37
(64) "Как тут правильно сделать?" - страдать! Зачем нужно записывать документ при заполнении ТЧ?
67 NIGHTHUNTER
 
16.06.22
✎
10:50
(66) Как убрать кнопку записать? Тогда можно было бы пользоваться галкой проверка заполнения выдавать ошибку, табличной части товары?

(66) Дело в том что, эта табличная часть, вторая у документа. И она заполняется по первой табличной части документа. Чем заполнять если документ не записан?
68 NIGHTHUNTER
 
16.06.22
✎
10:51
Можно ли убрать кнопку записать? Что бы попробовать без нее?
69 Мультук
 
гуру
16.06.22
✎
10:55
(68) Просто не нажимай на нее
70 NIGHTHUNTER
 
16.06.22
✎
10:56
(69) Я то причем тут? Я что ли пользуюсь.

Убрал ее через состав команд, свойств формы.
71 NIGHTHUNTER
 
16.06.22
✎
10:58
Я использовал вот такие конструкции, -

        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("Ссылка", Объект.Ссылка);    


По этому документ, должен быть что бы был записан.

Иначе то никак же. Вот сейчас пробую кнопку записать убрать.
72 hhhh
 
16.06.22
✎
11:09
(71)      ЗапросОтгруженоЗаказчиком.УстановитьПараметр("Ссылка", Объект.Ссылка);

это сразу выкинь. пиши

ТЗ = Объект.Товары.Выгрузить();
Запрос.УстановитьПараметр("ТЗ", ТЗ);


тогда и записывать ничего не надо.
73 Kassern
 
16.06.22
✎
11:13
(72) вы что! Сейчас еще ТСа учить как с временными таблицами работать?)
74 NIGHTHUNTER
 
16.06.22
✎
11:13
(72) А ТЗ, как получу из незаписанного документа?
75 Kassern
 
16.06.22
✎
11:14
(74) ТЗ=ТЧ.Выгрузить() - ваш кэп
76 Kassern
 
16.06.22
✎
11:14
Или можно из коллекции получить ТЧ и ее прям указать в параметрах запроса
77 Мультук
 
гуру
16.06.22
✎
11:14
(72) (73)

Может там и запрос не нужен...
нам ведь неизвестно что у него в секретной функции ЗаполнитьНаСервере()
78 hhhh
 
16.06.22
✎
11:22
(77) если покрутить хрустальный шар, то ведь предельно ясно. ТС заполняет одну табчасть по другой табчасти. И чтобы получить эту табчасть запросом, он записывает документ.
79 NIGHTHUNTER
 
16.06.22
✎
11:23
(77)

Если Объект.ХХХ_ВидДокумента = ПредопределенноеЗначение("Перечисление.ХХХ_ВидДокументаВнутреннегоПеремещения.НарядЗадание") Тогда      
        ЗапросОтгруженоЗаказчиком       = Новый Запрос;
        ЗапросОтгруженоЗаказчиком.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание_НарядЗадание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ОтгруженоЗаказчиком = ИСТИНА
            |И  ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.Ссылка = &Ссылка";
        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоЗаказчиком.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоЗаказчиком = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоЗаказчиком = Новый Массив;
        КонецЕсли;
        //
        ЗапросОтгруженоИсполнителем       = Новый Запрос;
        ЗапросОтгруженоИсполнителем.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание_НарядЗадание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ОтгруженоИсполнителем = ИСТИНА
            |И  ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.Ссылка = &Ссылка";
        ЗапросОтгруженоИсполнителем.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоИсполнителем.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоИсполнителем = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоИсполнителем = Новый Массив;
        КонецЕсли;
        //
        ОсновнойЗапрос = Новый Запрос;
        Если МасОтгруженоЗаказчиком.Количество() > 0 и МасОтгруженоИсполнителем.Количество() > 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоЗаказчиком",   МасОтгруженоЗаказчиком);  
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоИсполнителем", МасОтгруженоИсполнителем);
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.КоличествоСклад КАК КоличествоСклад,                
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ХХХ_НарядЗадание.ОтгруженоЗаказчиком КАК ХХХ_НарядЗаданиеОтгруженоЗаказчиком
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка В(&МасОтгруженоЗаказчиком)
                |    И ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада = &ТекДата
                |
                |ОБЪЕДИНИТЬ ВСЕ
                |
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.КоличествоСклад КАК КоличествоСклад,                
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ХХХ_НарядЗадание.ОтгруженоИсполнителем КАК ХХХ_НарядЗаданиеОтгруженоИсполнителем
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка В(&МасОтгруженоИсполнителем)
                |    И ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада = &ТекДата";
        ИначеЕсли МасОтгруженоЗаказчиком.Количество() > 0 и МасОтгруженоИсполнителем.Количество() = 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоЗаказчиком", МасОтгруженоЗаказчиком);  
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ХХХ_НарядЗадание.ОтгруженоЗаказчиком КАК ХХХ_НарядЗаданиеОтгруженоЗаказчиком
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка В(&МасОтгруженоЗаказчиком)
                |    И ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада = &ТекДата";
        ИначеЕсли МасОтгруженоЗаказчиком.Количество() = 0 и МасОтгруженоИсполнителем.Количество() > 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоИсполнителем", МасОтгруженоИсполнителем);
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ХХХ_НарядЗадание.ОтгруженоИсполнителем КАК ХХХ_НарядЗаданиеОтгруженоИсполнителем
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка В(&МасОтгруженоИсполнителем)
                |    И ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада = &ТекДата";
        КонецЕсли;
    ИначеЕсли Объект.ХХХ_ВидДокумента = ПредопределенноеЗначение("Перечисление.ХХХ_ВидДокументаВнутреннегоПеремещения.ЭтапПроизводства") Тогда
        ЗапросОтгруженоЗаказчиком       = Новый Запрос;
        ЗапросОтгруженоЗаказчиком.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание.ОтгруженоЗаказчиком = ИСТИНА
            |    И ХХХ_ВнутреннееПеремещениеХХХ_Основание.Ссылка = &Ссылка";
        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоЗаказчиком.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоЗаказчиком = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоЗаказчиком = Новый Массив;
        КонецЕсли;
        //
        ЗапросОтгруженоИсполнителем       = Новый Запрос;
        ЗапросОтгруженоИсполнителем.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание.ОтгруженоИсполнителем = ИСТИНА
            |    И ХХХ_ВнутреннееПеремещениеХХХ_Основание.Ссылка = &Ссылка";
        ЗапросОтгруженоИсполнителем.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоИсполнителем.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоИсполнителем = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоИсполнителем = Новый Массив;
        КонецЕсли;
        //
        ОсновнойЗапрос = Новый Запрос;
        Если МасОтгруженоЗаказчиком.Количество() > 0 и МасОтгруженоИсполнителем.Количество() > 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоЗаказчиком",   МасОтгруженоЗаказчиком);  
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоИсполнителем", МасОтгруженоИсполнителем);
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ЭтапПроизводства2_2.ХХХ_ОтгруженоЗаказчиком КАК ХХХ_НарядЗаданиеОтгруженоЗаказчиком
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка В(&МасОтгруженоЗаказчиком)
                |    И ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада = &ТекДата
                |
                |ОБЪЕДИНИТЬ ВСЕ
                |
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ЭтапПроизводства2_2.ХХХ_ОтгруженоИсполнителем КАК ХХХ_НарядЗаданиеОтгруженоИсполнителем
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка В(&МасОтгруженоИсполнителем)
                |    И ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада = &ТекДата";
        ИначеЕсли МасОтгруженоЗаказчиком.Количество() > 0 и МасОтгруженоИсполнителем.Количество() = 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоЗаказчиком", МасОтгруженоЗаказчиком);  
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ЭтапПроизводства2_2.ХХХ_ОтгруженоЗаказчиком КАК ХХХ_НарядЗаданиеОтгруженоЗаказчиком
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка В(&МасОтгруженоЗаказчиком)
                |    И ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада = &ТекДата";
        ИначеЕсли МасОтгруженоЗаказчиком.Количество() = 0 и МасОтгруженоИсполнителем.Количество() > 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоИсполнителем", МасОтгруженоИсполнителем);
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ЭтапПроизводства2_2.ХХХ_ОтгруженоИсполнителем КАК ХХХ_НарядЗаданиеОтгруженоИсполнителем
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка В(&МасОтгруженоИсполнителем)
                |    И ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада = &ТекДата";
        КонецЕсли;
    КонецЕсли;
    //
    ОсновнойЗапрос.УстановитьПараметр("ТекДата", Объект.ХХХ_ДатаОтгрузки);
    Выборка = ОсновнойЗапрос.Выполнить().Выбрать();
    //
    // <-
    Объект.ХХХ_Товары.Очистить();
    Пока Выборка.Следующий() Цикл
        НоваяСтрока                = Объект.ХХХ_Товары.Добавить();
        Если ЗначениеЗаполнено(Выборка.Номенклатура) Тогда
            НоваяСтрока.Номенклатура   = Выборка.Номенклатура;
        Иначе
            НоваяСтрока.Номенклатура   = Выборка.Комментарий;    
        КонецЕсли;
        НоваяСтрока.Количество     = Выборка.КоличествоСклад;
        НоваяСтрока.ДатаОтгрузки   = Выборка.ДатаСклада;
        НоваяСтрока.ДокументСсылка = Выборка.ДокументСсылка;
    КонецЦикла;
80 NIGHTHUNTER
 
16.06.22
✎
11:25
(72) (78)  Да. Вот этот прием, использования табличной части, без записи документа мне нужно выучить!!!
(76) И это тоже интересно! А то делаю как то не по свойственному ((.
81 Мультук
 
гуру
16.06.22
✎
11:37
(80)

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

Номенклатура в таб.части "ХХХ_Товары" это составное поле?


P.S.
Что-то новое молодежное?

P.P.S.

Почему автор не хочет засунуть условие в запрос, сделать в запросе нормальные имена полей и

тз = ОсновнойЗапрос.Выполнить().выгрузить();
Объект.ХХХ_Товары.Загрузить(тз);
82 NIGHTHUNTER
 
16.06.22
✎
11:54
(81) Да поле составного типа, или номенклатура или строка.
Может быть, по условию. Но сейчас я пришел к тому, что нельзя использовать Объект. <- Это.

И сейчас вынужден буду применять эти подсказки (72) (78) (76) . Раньше видимо я с этим не сталкивался.
Так как редко для документа. выбирают данные самого же документа.

Буду рад поддержке. Сейчас моя задача, отказаться от всех конструкций с Объект. , как я понимаю.
83 hhhh
 
16.06.22
✎
11:58
(82) нет, не нужно отказываться от всех конструкций. От некоторых откажитесь, от остальных не отказывайтесь.
84 NIGHTHUNTER
 
16.06.22
✎
12:20
(83) От всех и не получится. Нужно отказаться от них вот в этой процедуре.

Подскажите пожалуйста как сделать правильно?

(83) Как сделать что бы вот это работало вне зависимости от того записан документ или нет?

&НаСервере
Процедура ЗаполнитьНаСервере()
    Если Не ЕстьДокументыНаПечать() Тогда
        Возврат;
    КонецЕсли;
    Если Объект.ХХХ_ВидДокумента = ПредопределенноеЗначение("Перечисление.ХХХ_ВидДокументаВнутреннегоПеремещения.НарядЗадание") Тогда      
        ЗапросОтгруженоЗаказчиком       = Новый Запрос;
        ЗапросОтгруженоЗаказчиком.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание_НарядЗадание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ОтгруженоЗаказчиком = ИСТИНА
            |И  ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.Ссылка = &Ссылка";
        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоЗаказчиком.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоЗаказчиком = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоЗаказчиком = Новый Массив;
        КонецЕсли;
        //
        ЗапросОтгруженоИсполнителем       = Новый Запрос;
        ЗапросОтгруженоИсполнителем.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание_НарядЗадание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ОтгруженоИсполнителем = ИСТИНА
            |И  ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.Ссылка = &Ссылка";
        ЗапросОтгруженоИсполнителем.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоИсполнителем.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоИсполнителем = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоИсполнителем = Новый Массив;
        КонецЕсли;
        //
        ОсновнойЗапрос = Новый Запрос;
        Если МасОтгруженоЗаказчиком.Количество() > 0 и МасОтгруженоИсполнителем.Количество() > 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоЗаказчиком",   МасОтгруженоЗаказчиком);  
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоИсполнителем", МасОтгруженоИсполнителем);
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.КоличествоСклад КАК КоличествоСклад,                
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ХХХ_НарядЗадание.ОтгруженоЗаказчиком КАК ХХХ_НарядЗаданиеОтгруженоЗаказчиком
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка В(&МасОтгруженоЗаказчиком)
                |    И ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада = &ТекДата
                |
                |ОБЪЕДИНИТЬ ВСЕ
                |
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.КоличествоСклад КАК КоличествоСклад,                
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ХХХ_НарядЗадание.ОтгруженоИсполнителем КАК ХХХ_НарядЗаданиеОтгруженоИсполнителем
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка В(&МасОтгруженоИсполнителем)
                |    И ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада = &ТекДата";
        ИначеЕсли МасОтгруженоЗаказчиком.Количество() > 0 и МасОтгруженоИсполнителем.Количество() = 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоЗаказчиком", МасОтгруженоЗаказчиком);  
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ХХХ_НарядЗадание.ОтгруженоЗаказчиком КАК ХХХ_НарядЗаданиеОтгруженоЗаказчиком
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка В(&МасОтгруженоЗаказчиком)
                |    И ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада = &ТекДата";
        ИначеЕсли МасОтгруженоЗаказчиком.Количество() = 0 и МасОтгруженоИсполнителем.Количество() > 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоИсполнителем", МасОтгруженоИсполнителем);
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ХХХ_НарядЗадание.ОтгруженоИсполнителем КАК ХХХ_НарядЗаданиеОтгруженоИсполнителем
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка В(&МасОтгруженоИсполнителем)
                |    И ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада = &ТекДата";
        КонецЕсли;
    ИначеЕсли Объект.ХХХ_ВидДокумента = ПредопределенноеЗначение("Перечисление.ХХХ_ВидДокументаВнутреннегоПеремещения.ЭтапПроизводства") Тогда
        ЗапросОтгруженоЗаказчиком       = Новый Запрос;
        ЗапросОтгруженоЗаказчиком.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание.ОтгруженоЗаказчиком = ИСТИНА
            |    И ХХХ_ВнутреннееПеремещениеХХХ_Основание.Ссылка = &Ссылка";
        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоЗаказчиком.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоЗаказчиком = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоЗаказчиком = Новый Массив;
        КонецЕсли;
        //
        ЗапросОтгруженоИсполнителем       = Новый Запрос;
        ЗапросОтгруженоИсполнителем.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание.ОтгруженоИсполнителем = ИСТИНА
            |    И ХХХ_ВнутреннееПеремещениеХХХ_Основание.Ссылка = &Ссылка";
        ЗапросОтгруженоИсполнителем.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоИсполнителем.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоИсполнителем = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоИсполнителем = Новый Массив;
        КонецЕсли;
        //
        ОсновнойЗапрос = Новый Запрос;
        Если МасОтгруженоЗаказчиком.Количество() > 0 и МасОтгруженоИсполнителем.Количество() > 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоЗаказчиком",   МасОтгруженоЗаказчиком);  
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоИсполнителем", МасОтгруженоИсполнителем);
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ЭтапПроизводства2_2.ХХХ_ОтгруженоЗаказчиком КАК ХХХ_НарядЗаданиеОтгруженоЗаказчиком
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка В(&МасОтгруженоЗаказчиком)
                |    И ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада = &ТекДата
                |
                |ОБЪЕДИНИТЬ ВСЕ
                |
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ЭтапПроизводства2_2.ХХХ_ОтгруженоИсполнителем КАК ХХХ_НарядЗаданиеОтгруженоИсполнителем
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка В(&МасОтгруженоИсполнителем)
                |    И ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада = &ТекДата";
        ИначеЕсли МасОтгруженоЗаказчиком.Количество() > 0 и МасОтгруженоИсполнителем.Количество() = 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоЗаказчиком", МасОтгруженоЗаказчиком);  
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ЭтапПроизводства2_2.ХХХ_ОтгруженоЗаказчиком КАК ХХХ_НарядЗаданиеОтгруженоЗаказчиком
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоЗаказчиком.Ссылка В(&МасОтгруженоЗаказчиком)
                |    И ХХХ_НарядЗаданиеОтгруженоЗаказчиком.ДатаСклада = &ТекДата";
        ИначеЕсли МасОтгруженоЗаказчиком.Количество() = 0 и МасОтгруженоИсполнителем.Количество() > 0 Тогда
            ОсновнойЗапрос.УстановитьПараметр("МасОтгруженоИсполнителем", МасОтгруженоИсполнителем);
            ОсновнойЗапрос.Текст = "
                |ВЫБРАТЬ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Номенклатура    КАК Номенклатура,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Комментарий     КАК Комментарий,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.КоличествоСклад КАК КоличествоСклад,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Количество      КАК Количество,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада      КАК ДатаСклада,
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка          КАК ДокументСсылка
                |ИЗ
                |    Документ.ЭтапПроизводства2_2.ХХХ_ОтгруженоИсполнителем КАК ХХХ_НарядЗаданиеОтгруженоИсполнителем
                |ГДЕ
                |    ХХХ_НарядЗаданиеОтгруженоИсполнителем.Ссылка В(&МасОтгруженоИсполнителем)
                |    И ХХХ_НарядЗаданиеОтгруженоИсполнителем.ДатаСклада = &ТекДата";
        КонецЕсли;
    КонецЕсли;
    //
    ОсновнойЗапрос.УстановитьПараметр("ТекДата", Объект.ХХХ_ДатаОтгрузки);
    Выборка = ОсновнойЗапрос.Выполнить().Выбрать();
    //
    // <-
    Объект.ХХХ_Товары.Очистить();
    Пока Выборка.Следующий() Цикл
        НоваяСтрока                = Объект.ХХХ_Товары.Добавить();
        Если ЗначениеЗаполнено(Выборка.Номенклатура) Тогда
            НоваяСтрока.Номенклатура   = Выборка.Номенклатура;
        Иначе
            НоваяСтрока.Номенклатура   = Выборка.Комментарий;    
        КонецЕсли;
        НоваяСтрока.Количество     = Выборка.КоличествоСклад;
        НоваяСтрока.ДатаОтгрузки   = Выборка.ДатаСклада;
        НоваяСтрока.ДокументСсылка = Выборка.ДокументСсылка;
    КонецЦикла;
85 NIGHTHUNTER
 
16.06.22
✎
12:21
(72) Как я напишу, если объекта то нет?????? Получается этот пример тоже не подойдет.
86 NIGHTHUNTER
 
16.06.22
✎
12:22
(76) Это можно получить у незаписанного документа?
87 Мультук
 
гуру
16.06.22
✎
12:22
(85)

Как нет объекта ? Объект есть. В базе его нет, ссылка пустая. А объект и данные в нем есть.
88 NIGHTHUNTER
 
16.06.22
✎
12:23
То есть вопрос!!!! Как мне сделать выборку по табличной части не записанного документа ?
89 NIGHTHUNTER
 
16.06.22
✎
12:23
(87) А вот как. Ясно. То есть нет ссылки, так как незаписан.
Приступаю.
90 Мультук
 
гуру
16.06.22
✎
12:23
(88) Наконец-то сходить на курсы по 1С?
91 NIGHTHUNTER
 
16.06.22
✎
12:25
А как переделать запросы  (84) что бы, работало не по ссылке, а по табличной части?
93 NIGHTHUNTER
 
16.06.22
✎
12:28
Честно я потерялся, как вот это (84) можно было бы перевести на выполнение когда документ не записан.
Там нужно получить ссылки из первой табливной части. для выборки как я вижу.
94 NIGHTHUNTER
 
16.06.22
✎
12:32
На сколько я понимаю, перевести на таблицы, без записи документа мне нужно только вот эти запросы. Подскажите пожалуйста по коду  (83) ?

        ЗапросОтгруженоЗаказчиком.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание_НарядЗадание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ОтгруженоЗаказчиком = ИСТИНА
            |И  ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.Ссылка = &Ссылка";
        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоЗаказчиком.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоЗаказчиком = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоЗаказчиком = Новый Массив;
        КонецЕсли;
        //
        ЗапросОтгруженоИсполнителем       = Новый Запрос;
        ЗапросОтгруженоИсполнителем.Текст = "
            |ВЫБРАТЬ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    Документ.ХХХ_ВнутреннееПеремещение.ХХХ_Основание_НарядЗадание КАК ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание
            |ГДЕ
            |    ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.ОтгруженоИсполнителем = ИСТИНА
            |И  ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.Ссылка = &Ссылка";
        ЗапросОтгруженоИсполнителем.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоИсполнителем.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоИсполнителем = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоИсполнителем = Новый Массив;
        КонецЕсли;
95 NIGHTHUNTER
 
16.06.22
✎
12:53
Так будет? Сам сейчас проверяю.

        ЗапросОтгруженоЗаказчиком       = Новый Запрос;
        ЗапросОтгруженоЗаказчиком.Текст = "
            |ВЫБРАТЬ
            |    ТЗ_ХХХ_Основание_НарядЗадание.ДокументСсылка КАК ДокументСсылка
            |ИЗ
            |    ТЗ_ХХХ_Основание_НарядЗадание КАК ТЗ_ХХХ_Основание_НарядЗадание
            |ГДЕ
            |    ТЗ_ХХХ_Основание_НарядЗадание.ОтгруженоЗаказчиком = ИСТИНА
            //|И  ХХХ_ВнутреннееПеремещениеХХХ_Основание_НарядЗадание.Ссылка = &Ссылка";
        ТЗ_ХХХ_Основание_НарядЗадание = Объект.ХХХ_Основание_НарядЗадание.Выгрузить();
        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("ТЗ_ХХХ_Основание_НарядЗадание", ТЗ_ХХХ_Основание_НарядЗадание);        
        // <-
        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("Ссылка", Объект.Ссылка);    
        Рез = ЗапросОтгруженоЗаказчиком.Выполнить();
        Если Не Рез.Пустой() Тогда
            МасОтгруженоЗаказчиком = Рез.Выгрузить().ВыгрузитьКолонку("ДокументСсылка");
        Иначе
            МасОтгруженоЗаказчиком = Новый Массив;
        КонецЕсли;
96 NIGHTHUNTER
 
16.06.22
✎
13:01
Начинаю проверять (95), подскажите, верно ли это по сравнению с (84) ?
97 Мультук
 
гуру
16.06.22
✎
13:03
(96)

Прошло 10 мин. Как результаты, что сказала 1С ?
98 NIGHTHUNTER
 
16.06.22
✎
13:06
(97) Да пока, то кавычки пропустил, то точки забыл, перезапускаюсь все.
99 Ёпрст
 
гуру
16.06.22
✎
13:18
(95) это пять, да!

Выкинь это и не позорься.
100 Ёпрст
 
гуру
16.06.22
✎
13:20
только под этим ником, Ливингстар 2 года че-то где-то кодит, и простейшие вещи не понимает.

Мот ну его, эту 1с-ину ? И бегом в военкомат, за контрактом и на сво ?
101 NIGHTHUNTER
 
16.06.22
✎
13:22
на Рез = ЗапросОтгруженоЗаказчиком.Выполнить();


{(5, 2)}: Таблица не найдена "ТЗ_ХХХ_Основание_НарядЗадание"
<<?>>ТЗ_ХХХ_Основание_НарядЗадание КАК ТЗ_ХХХ_Основание_НарядЗадание
{Документ.ХХХ_ВнутреннееПеремещение.Форма.ФормаДокумента.Форма(664)}:        Рез = ЗапросОтгруженоЗаказчиком.Выполнить();
{Документ.ХХХ_ВнутреннееПеремещение.Форма.ФормаДокумента.Форма(638)}:    ЗаполнитьНаСервере();

по причине:
{(5, 2)}: Таблица не найдена "ТЗ_ХХХ_Основание_НарядЗадание"
<<?>>ТЗ_ХХХ_Основание_НарядЗадание КАК ТЗ_ХХХ_Основание_НарядЗадание
102 NIGHTHUNTER
 
16.06.22
✎
13:23
(101+) Это выгрузилось ТЗ_ХХХ_Основание_НарядЗадание

Почему что то не так? Как нужно?
103 NIGHTHUNTER
 
16.06.22
✎
13:24
Что тут не так, подскажите пожалуйста

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

        ТЗ_ХХХ_Основание_НарядЗадание = Объект.ХХХ_Основание_НарядЗадание.Выгрузить();
        ЗапросОтгруженоЗаказчиком.УстановитьПараметр("ТЗ_ХХХ_Основание_НарядЗадание", ТЗ_ХХХ_Основание_НарядЗадание);
104 Ёпрст
 
гуру
16.06.22
✎
13:32
(102) Нужно взять военный билет или приписное свидетельство и бегом в военкомат, там от тебя больше пользы. Раз ты за 2 года не смог понять примитивные вещи и как передать в запрос таблицу значений.
105 Ryzeman
 
16.06.22
✎
13:34
(104) Там возможно ни в 1с ни в красную армию, как говорится...
106 Ёпрст
 
гуру
16.06.22
✎
13:37
(105) Ну, может договорится в военкомате полы мыть, хотя бы, или в армейке плац подметать
107 Kassern
 
16.06.22
✎
13:45
(106) Я вот держу метлу и не понимаю как подметать, голова, что-то не работает уже. Посмотрите я правильно делаю? https://cdn.trinixy.ru/pics4/20110602/china_08.jpg
108 Kassern
 
16.06.22
✎
13:46
Интересно, сколько лет ТСу?
109 NIGHTHUNTER
 
16.06.22
✎
14:05
Что тут может быть не так?

        ТЗ_ХХХ_Основание_НарядЗадание = новый ТаблицаЗначений;
        ТЗ_ХХХ_Основание_НарядЗадание.Колонки.Добавить("ДокументСсылка", Новый ОписаниеТипов("ДокументСсылка.ХХХ_НарядЗаказ"));
110 NIGHTHUNTER
 
16.06.22
✎
14:07
что тут не так?

Недопустимое значение параметра (параметр номер '1') (ДокументСсылка.ХХХ_НарядЗаказ)
{Документ.ХХХ_ВнутреннееПеремещение.Форма.ФормаДокумента.Форма(669)}:        ТЗ_ХХХ_Основание_НарядЗадание.Колонки.Добавить("ДокументСсылка", Новый ОписаниеТипов("ДокументСсылка.ХХХ_НарядЗаказ"));
{Документ.ХХХ_ВнутреннееПеремещение.Форма.ФормаДокумента.Форма(638)}:    ЗаполнитьНаСервере();

по причине:
Недопустимое значение параметра (параметр номер '1') (ДокументСсылка.ХХХ_НарядЗаказ)
111 Kassern
 
16.06.22
✎
14:08
(110) один вопрос, зачем?
112 Kassern
 
16.06.22
✎
14:08
откройте СП и почитайте, что нужно передавать в ОписаниеТипов()
113 NIGHTHUNTER
 
16.06.22
✎
14:10
(111) нашел почему нужно ХХХ_НарядЗадание, пробую снова ...
114 hhhh
 
16.06.22
✎
17:40
(113) где у тебя параметр в твоем запросе? типа

ИЗ &ТЗ КАК ТЗ
115 H A D G E H O G s
 
16.06.22
✎
17:41
(100) Не надо. Пусть он тут сидит на шее работодателя, чем там подставит ребят.
2 + 2 = 3.9999999999999999999999999999999...