Имя: Пароль:
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) Не надо. Пусть он тут сидит на шее работодателя, чем там подставит ребят.