Имя: Пароль:
1C
1С v8
Проверка заполненных данных через впф.
0 AL_Rain
 
16.08.16
13:52
Собсна сабж, пишу ВПФ, открывая РТиУ и жмакая кнопку печать, затем выбирая мою ВПФ, должно проверяться заполнены ли данные по доставке в заказе покупателя, если да, то печатать документы, нет - отказ.
Сам ещё нуб в 1С, поэтому обращаюсь к вам за помощью...
Так понимаю, надо сначала выгрузить данные "заказа покупателя" потом свернуть и оттуда проверить их.

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

Правильно ли вообще делаю?
1 Горогуля
 
16.08.16
13:57
вместо отказа рисуй фигу в документе. не откажешь
2 asady
 
16.08.16
13:58
(0) после
ТаблЗнач.Свернуть("ЗаказПокупателя");
в ТаблЗнач останется одна колонка "заказПокупателя"
здесь будет ошибка: Стр.Документы.ЗаказПокупателя

а вообще такое лучше делать запросом
3 AL_Rain
 
16.08.16
14:20
(1) Не знал, запомню... (2) Попробую запросом сделать. Пасиб.
4 AL_Rain
 
16.08.16
15:34
Написал такой запрос для проверки заполненных данных, но что-то тишина, сообщения не выходят никакие, отладчиком проверяю, игнорится код после:
Пока Выборка.Следующий() Цикл
Можете подсказать, куда мне копать...?

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

Выборка = Результат.Выбрать();                 
Пока Выборка.Следующий() Цикл                 
Доставка = Выборка.ОплатаДоставкиПокупателем;
Если Не ЗначениеЗаполнено(Доставка) Тогда
Сообщить("Запрос пустой");
Иначе
Сообщить("Запрос не пустой");
КонецЕсли;        
КонецЦикла;
5 Горогуля
 
16.08.16
15:42
нету следующего. вот прямо так сразу и нету
6 AL_Rain
 
16.08.16
16:03
(5) Понял. Если пишу так: Пока Выборка.Получить() Цикл, то получаю ошибку:
Недостаточно фактических параметров
Пока Выборка.Получить() Цикл     

Если цикл вообще убираю, то получаю сообщение "Запрос пустой", хотя поле "ОплатаДоставкиПокупателем" заполнено в заказе.

Что не так делаю?
Либо направьте что-то конкретное почитать, голова пухнет от изобилия информации...
7 Горогуля
 
16.08.16
16:04
может, заставить запрос что-то доставать из БД? например, корректным указанием параметра
8 AL_Rain
 
16.08.16
16:05
(7) А это разве не оно?
Запрос.УстановитьПараметр("ОплатаДоставкиПокупателем", СсылкаНаОбъект)
9 Горогуля
 
16.08.16
16:06
(8) а следующего нет
10 AL_Rain
 
16.08.16
16:06
(9) А как мне из текущего получить?
11 Горогуля
 
16.08.16
16:08
(10) а и текущего нет. запрос пустой
12 AL_Rain
 
16.08.16
16:09
(11) жесть...
А как правильно запрос написать, чтобы получить нужные мне данные...?
Делал по примерам из инета, вроде всё понятно описывают...
13 Горогуля
 
16.08.16
16:10
>заполнены ли данные по доставке в заказе покупателя
это как понимать?
14 AL_Rain
 
16.08.16
16:13
(13) http://savepic.ru/10996911.png
Тут заполнены данные в программе (скрин из конфигуратора для наглядности)
15 Горогуля
 
16.08.16
16:17
СсылкаНаОбъект - реализация? ну дык найди у ей заказ и посмотри в туда
16 Горогуля
 
16.08.16
16:20
или все заказы
17 AL_Rain
 
16.08.16
16:20
(15) СсылкаНаОбъект у меня стоит на ДокументСсылка.ЗаказПокупателя, отладчиком тестирую только заказ покупателя и тишина, поэтому озадачен...
18 Горогуля
 
16.08.16
16:20
>пишу ВПФ, открывая РТиУ
уже что-то изменилось?
19 AL_Rain
 
16.08.16
16:22
(18) До РТиУ позже дойду, я пока тестирую во внешней обработке с отладчиком, как у меня будет работать запрос, для получения данных по доставке из заказа покупателя.
20 AL_Rain
 
16.08.16
16:23
+ (19) Позже для СсылкаНаОбъект  поставлю составной тип данных.
21 Горогуля
 
16.08.16
16:23
ЗначениеЗаполнено(СсылкаНаОбъект.ОплатаДоставки)
22 AL_Rain
 
16.08.16
16:28
(21) Всё равно игнорит на этой строке...
Пока Выборка.Следующий() Цикл
23 Горогуля
 
16.08.16
16:29
от я тупой, а? ну как так? и в школу ходил, и верхнее образование получил. а донести мысль не могу
24 Горогуля
 
16.08.16
16:33
Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект.ОплатаДоставки) Тогда
ТабДокумент.Область(2, 2).Текст="й вам!";
25 AL_Rain
 
16.08.16
16:33
(23) Мысль то вы донесли, что нету следующего по выборке... Это я туплю, так как нуб пока что в 1С...
26 Горогуля
 
16.08.16
16:35
(25) а доносил мысль, что запрос ничего не выдаёт. а следом мысль, что можно проверить заполнение реквизита и без запроса
27 AL_Rain
 
16.08.16
16:36
(26) "Вот он очо, Михалыч!" (с)
Прокомментировать можете эту строку?
ТабДокумент.Область(2, 2).Текст="й вам!";
Что откуда берётся?
28 Горогуля
 
16.08.16
16:38
(27) это та самая фига из (1)
29 AL_Rain
 
16.08.16
16:39
(28) Ааа... понял... Благодарю...
30 AL_Rain
 
17.08.16
10:23
Забыл отписаться, вот рабочий код, вдруг понадобится новичкам вроде меня...

Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ЗаказПокупателя") И ЗначениеЗаполнено(СсылкаНаОбъект.АдресДоставки) Тогда
//код для вывода на печать
Иначе
Сообщить ("Данные по доставке в заказе не заполнены.");
КонецЕсли;
31 _stay true_
 
17.08.16
10:40
(30) Молодец. Ответственный товарищ.
32 AL_Rain
 
17.08.16
14:02
Приветствую всех ещё раз. Продолжу свою тему, чтобы не плодить в новой. Нубский вопрос, в заказе покупателя заполнено поле выбора по имени "Покупатель" (тип булево).
Привожу скрин из конфигуратора для наглядности.
http://savepic.ru/10996911.png
В отладке внешней печатной форме прописал такой код для получения результата.

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

Получаю в сообщении 1.
Как мне получить ответом в сообщении "Покупатель"?
В инете в примерах пишут такой код:
ЭлементыФормы.МоеПолеВыбора.Значение = ""
Но он мне не подходит, если пишу так
Сообщить (СсылкаНаОбъект.ОплатаДоставкиПокупателе.Значение = "");
То выдаёт ошибку указывая на Значение...
33 Горогуля
 
17.08.16
15:17
>Сообщить (СсылкаНаОбъект.ОплатаДоставкиПокупателе);
а ничего, что тут поле объекта не обнаружено?
34 AL_Rain
 
17.08.16
15:34
(33) ОплатаДоставкиПокупателем - букву М пропустил...
35 Горогуля
 
17.08.16
15:34
(34) и даже не запускал. не числового ли оно типа?
36 Горогуля
 
17.08.16
15:35
>Как мне получить ответом в сообщении "Покупатель"?
Сообщить("Покупатель"); внезапно, правда?
37 AL_Rain
 
17.08.16
15:39
(36) Понял, вопрос закрыт, благодарю)
Закон Брукера: Даже маленькая практика стоит большой теории.