Имя: Пароль:
1C
1С v8
v8: как перебрать документы в табличной части
, ,
0 Tilirxs
 
18.06.14
07:14
Я создал документ и поместил на форме документа кнопку по которой выбираются все документы которые не оплачены. Мне нужно что бы при проведении документа во всех документах в табличных частях перебирался и проставлялся что оплачено. Как можно перебрать документы из табличной части формы. Подскажите пожалуйста как перебрать документы в табличной части? Я новичок.
1 Wobland
 
18.06.14
07:19
проводится один документ, а меняется целая пачка. нехорошо
2 Godofsin
 
18.06.14
07:23
для каждого СтрокаТЧ из НазваниеТвоейТЧ цикл

СТрокаТЧ.Документ.ТвойРеквизит = ...;

КонецЦикла;
3 kosts
 
18.06.14
07:38
(0)
Лучше примерно так в обработке проведения:

для каждого СтрокаТЧ из НазваниеТвоейТЧ цикл

    ЗаписьРегистра.Документ = СТрокаТЧ.Документ;
    ЗаписьРегистра.Оплачен = СТрокаТЧ.Оплачен;

КонецЦикла;
4 Tilirxs
 
18.06.14
09:09
Это проста задача на программирование мне дают (Я на испытательном сроке). Мне нужно сделать запись в регистр сведений.
5 Wobland
 
18.06.14
09:11
(4) >регистр сведений
вот это сейчас откуда выпрыгнуло?
6 Tilirxs
 
18.06.14
09:21
Извините опаздывал на работу опаздывал быстро напечатал.
7 Godofsin
 
18.06.14
09:23
вот это поворот!
8 Wobland
 
18.06.14
09:25
думаю, приз за телепатический дар получает kosts
9 Tilirxs
 
18.06.14
09:26
как можно будет программно перебрать документы. получить и записать в регистр сведений уже с статусом оплаты "Оплачено". Статус оплаты это перечисления.  Как можно будет это реализовать?
10 Tilirxs
 
18.06.14
09:27
Извините может я не правильно говорю просто в программирование только новичок.
11 Tilirxs
 
18.06.14
09:32
Мне нужно просто перепровести документы из табличной части только с другим статусом.Изменения коснуться только регистра сведений вместо "НеОплачено" на "Оплачено".
12 devochka_1c
 
18.06.14
09:37
(11) Вам в (3) дали зацепку. конечно можно.
13 Рэйв
 
18.06.14
09:38
(9)Тебе не надо перебирать ничего. Ссылку при проведении ты уже и так имеешь.Она во всех таб частях где он есть - одинаковая.
Просто сделай запись в регистр и все
14 Рэйв
 
18.06.14
09:39
если я конечно правильно понял что "при проведении документа"
15 Tilirxs
 
18.06.14
09:50
(13) Мне нужно при проведении документа. в табличной части у документов изменился статус на "Оплачено".
16 Tilirxs
 
18.06.14
09:51
у уже проведенных документов со статусом "Не оплачено" на статус "оплачено". Изменение только в регистре касаются.
17 Tilirxs
 
18.06.14
09:53
извините. у уже проведенных документов со статусом "Не оплачено" на статус "оплачено". Изменение только в регистре сведений касаются.
18 Godofsin
 
18.06.14
09:54
19 Рэйв
 
18.06.14
09:55
(17) объясни мне свяь между
>>в табличной части у документов изменился статус на "Оплачено"."

и  

>>Изменение только в регистре сведений касаются.

они какбэ противоречат друг другу
20 YF
 
18.06.14
09:58
Вообще ТС, мне кажется, не понимает что ему нужно в связи с непониманием терминологии 1С
21 Infsams654
 
18.06.14
10:00
(19)+ зачем держать в ТЧ документа Оплачено? И так ясно, документ проведен или нет. Если надо на форме, то показать в соответствующей колонке состояние проведения
22 Godofsin
 
18.06.14
10:00
ТС, выкладывай текст задания, как его тебе написали дословно
23 Рэйв
 
18.06.14
10:01
(21)Мы это понимаем, а вот ТС, боюсь, не очень:-)
24 Tilirxs
 
18.06.14
10:10
(22) Задание. В документ реализации поставить статус (Перечисление) с видом "Оплачено"  и "НеОплачено". 2 Создать документ и разместить в нем кнопку по нажатию которой производиться поиск документов со статусом "НеОплачено" и вывести в табличную часть. 3 При проведении у всех документов содержащие в табличной части документа в статусе что бы статус изменился с "НеОплачено" на "Оплачено".
25 Tilirxs
 
18.06.14
10:12
Я поиск сделал запросом. и вывел в табличную часть. теперь осталось разобраться с изменением статуса "НеОплачено" на "Оплачено"
26 Рэйв
 
18.06.14
10:16
(24)Нда..:-)  Задание тоже суперское оказывается!:-)
27 Любопытная
 
18.06.14
10:16
" 3 При проведении у всех документов содержащие в табличной части документа в статусе что бы статус изменился с "НеОплачено" на "Оплачено"."
Какой ужасно косноязычный человек давал это задание...
При проведении документа у документов из ТЧ должен поменяться признак оплаты?
28 Tilirxs
 
18.06.14
10:19
(3) Да
29 Tilirxs
 
18.06.14
10:24
(27) Да нужно что бы у всех документов из ТЧ изменился статус оплаты на "Оплачено". В документе Статусоплаты это регистр сведений
30 Рэйв
 
18.06.14
10:25
(29)>>В документе Статусоплаты это регистр сведений

Опять за рыбу деньги!:-)

что значит "В документе Статусоплаты это регистр сведений"?
31 РенеДекарт
 
18.06.14
10:27
(29)>>В документе Статусоплаты это регистр сведений
как Статус может быть РС?!
РС - это таблица. И все. Каким образом она у вас связана с документом? Связана ли вообще?
32 Tilirxs
 
18.06.14
10:29
(30) в Документе я разместил реквизит перечисления Статус оплаты. При проведении документа статус оплаты записывается в регистр сведений. Извините если что то не так говорю.
33 Tilirxs
 
18.06.14
10:34
(31)  Я типа дорабатываю типовую УТ 11. В документ реализация товаров и услуг. поставил реквизит с типом перечисления и разместил этот реквизит на форму. И записываю значения реквизита в Регистр Сведений (Статус оплаты)
34 hhhh
 
18.06.14
10:34
(31) походу это два разных документа. Есть супермега документ, в котором ТЧ с двумя колонками: документ и статус.
35 Tilirxs
 
18.06.14
10:39
добавил в документ реквизит и все. И поиск только по этому реквизиту среди документов  я сделал запросом все отлично работает. А вот с изменением этого реквизита проблема у меня. Может я не так делаю?
36 Рэйв
 
18.06.14
10:42
(35)Может ты
.ПолучитьОбъект()
не делаешь?:-)
37 Tilirxs
 
18.06.14
10:53
(36) нет не пробовал. Подскажите с примером пожалуйста.
38 Василёна
 
18.06.14
11:09
(37) Вас нельзя и близко подпускать к 1С
39 Tilirxs
 
18.06.14
11:15
(36) Спасибо!!!Разобрался. Блин самому стыдно что спрашивал о таких вещах.
40 Tilirxs
 
18.06.14
11:16
(38) Буду исправляться. )))
41 catena
 
18.06.14
11:16
А зачем регистр, если патчим документы?
Если перезаписывать регистр - зачем собираем по реквизиту в документе? Чтобы 20 раз закрывались одни и те же документы?

Проще всего (и правильнее) не трогать уже проведенные документы, а текущим документом в том же регистре проставлять по ним "Оплачено".
42 Kalambur
 
18.06.14
11:24
(38) сама то спец наверно?
43 Godofsin
 
18.06.14
11:27
(42) Симпатичная деваха из Иваново )))) ей простительно ))))
44 Василёна
 
18.06.14
11:28
(42) нет, только проф)
45 РенеДекарт
 
18.06.14
11:31
(35) в 1С есть "Ссылка". Есть "Объект". Есть реквизиты. Запись в регистр (любой) - называется "проведением по регистру", и к начинке самого документа прямого отношения не имеет.
Изменение реквизитов документа - отдельно, запись в регистр - отдельно. Они могут быть вместе, могут быть отдельно, по частям и по-всякому.
46 РенеДекарт
 
18.06.14
11:33
(0) тебе нужно определиться с опреациями:
- что хочу сделать с объектами
- как хочу это сделать
- как это сделать в реальности 1С
47 РенеДекарт
 
18.06.14
11:34
(43) на фото маленькая еще ))
48 Segate
 
18.06.14
11:37
(0) сделай Оплачено - реквизитом формы, и вычисляй его при открытии, тогда не надо будет ничего менять, инфа 146%
49 Василёна
 
18.06.14
11:39
(48) ему не надо открывать эти документы
50 Dionis Sergeevich
 
18.06.14
11:41
(0) Не боишься что твой шеф сейчас читает эту тему? =) Исп срок думаешь пройдешь?
51 Segate
 
18.06.14
11:42
(49)вы не поняли смысл того, что я написал.
52 Василёна
 
18.06.14
11:43
(51) зато я поняла, что ему надо.
53 Teresa
 
18.06.14
11:43
По идее нужно при обходе ТЧ в цикле так, как уже указано в(3) осуществлять поиск регистратора в регистре и меняеть значение "Оплачено" в найденной записи регистра сведений.
54 Василёна
 
18.06.14
11:46
(53) именно
55 Teresa
 
18.06.14
11:51
ВыбратьПоРегистратору(<Регистратор>)
Параметры:

<Регистратор> (обязательный)

Тип: ДокументСсылка.
Ссылка на документ, являющийся регистратором для записей регистра.

Возвращаемое значение:
Тип: РегистрСведенийВыборка.

Описание:
Формирует выборку по регистратору записей регистра сведений. Применяется для регистров сведений, для которых в конфигураторе установлен режим записи "Подчинение регистратору".
56 Segate
 
18.06.14
11:52
(52) Я тоже понял, и предлагаю самый лучший вариант.
Ну а вы все упоролись.
Какую запись менять? Зачем? а если потом перепроведут реализацию? она опять станет не оплаченой? )

Надо просто использовать РН где учитываются деньги, и делать в нем движение документом который создает автор. а оплату вычислять при открытии формы реализации. тогда не будет возникать конфликто
57 Segate
 
18.06.14
11:58
т.е. реализация должна делать движения по РН.
Например по взаиморассчетом с контрагентами. И там у него образуется минус при проведении реализации. При проведении документа который создает автор, не только надо ставить галочку "Оплачено", но и что то делать с этими движениями. а то что вы предлагаете - это, простите, полный бред.

В итоге потом будут спрашивать, почему у нас все заказы оплачены а по взаиморассчетам сплошные минуса.
58 Рэйв
 
18.06.14
11:59
(56)Имхается мне что пример в сабже - просто пример и никакого отношения к жизни не имеет. Так что скорее стоит задлача сделать "так как сказано" для проверки знаний.

Но конечно уровень косноязычия что у постановщика задачи, что у ТС - зашкаливает:-)
59 Godofsin
 
18.06.14
12:00
(57) +1
60 Teresa
 
18.06.14
12:03
(58)+1 Весь вопрос в том, как поставлена задача. Судя по настроению автора, он хочет менять регистр. Поэтому именно этот вариант и предлагают одни. А по уму конечно нужно действовать по принципу (57). Какова цель, таковы и средства.
61 Segate
 
18.06.14
12:07
(0) в общем так, делай документ, который делает движения по регистрам типа "взаиморассчеты с контрагентами" и тп движения закрывающие все долги по конкретным документам, с пометкой - типа "Зашибись, теперь все оплачено, так требует нащяльнике"

добавь реквизит формы "Оплачено" и при открытии запросом дергай статус документа из регистра взаиморассчетов. Типа если долг = 0 тогда "оплачено" иначе "Писечка вам шершавенькая, а не оплачено." ну и все. только менять регистр взаиморассчетов документом не связанным с поступлением ДС - тоже бред )
62 Василёна
 
18.06.14
12:08
Если уж так пошло, то лучше делать на основе (3). При проведении обходить ТЧ, получать объект роикаждой ссылке, менять реквизит и проводить документ
63 Segate
 
18.06.14
12:08
(62) за такие советы, я бы у вас и профа отобрал бы.=))
64 catena
 
18.06.14
12:16
(62)Клево, создам я документ этот, заполню его, переведу все накладные в статус "Оплачено", а документ потом очищу. Никто концов-то и не найдет...
65 Василёна
 
18.06.14
12:16
(63) Попробуйте) только руки коротки) и, да, в задании ни слова о регистрах
66 Василёна
 
18.06.14
12:19
Задание, все-таки, не имеет никакого отношения к практическому применению. Это тупо проверка понимания автором принципов работы с объектами конфигурации
67 Segate
 
18.06.14
12:21
(65) задание обычно дает пользователь, он может вообще не знать, что есть регистры. Он может сказать: Хочу, чтоб было оплачено. И уже ты, как программист, должна сказать, что либо так делать нельзя, либо продумать, как сделать то что хочет пользователь, без нарушения логики программы.
68 Segate
 
18.06.14
12:22
я почти уверен, что у пользователя кривая база, и какие-то оплаты от контрагента не подтягиваются к реализациям, и задача документа актуализировать эти самые оплаты. а не тупо проставить признак.
69 Василёна
 
18.06.14
12:24
(67) если у автора не возникает вопроса "а действительно ли документ оплачен?", то ему ещё учиться и учиться.
70 Godofsin
 
18.06.14
12:24
))))
71 Василёна
 
18.06.14
12:25
(0) автор, где пропал? Тебя уже уволили?
72 Teresa
 
18.06.14
13:18
(68) В таком случае логичнее вообще поменять подход и работать над усовершенствованием процедуры проведения реализации.
73 Segate
 
18.06.14
13:36
(72)в таком случае надо проканифолить мозги пользователям чтоб вели учет как пологается, а не как попало
74 Любопытная
 
18.06.14
13:38
Вы все еще не сделали что ли?
75 Teresa
 
18.06.14
13:44
(72) не все пользователи одинаково полезны)
76 Teresa
 
18.06.14
13:45
(72)->(73)
77 hhhh
 
18.06.14
13:48
(73) всё-таки статус документа - это регистр сведений. Каждой раз динамически лазить по регистрам накопления его вычислять? Это мазохизм.
78 Fish
 
18.06.14
14:06
(77) Зачем что-то вычислять? Смотришь остаток долга по РН, и всех делов.
79 hhhh
 
18.06.14
14:08
(78) ну например журнал документов, в нем колонка статус. Динамически ее будешь каждый раз обновлять? Когда пользователь листает журнал?
80 Segate
 
18.06.14
14:09
(79) Вот ты не поверишь, но в ут 11 так и сделан статус документа )
81 Teresa
 
18.06.14
14:12
(80) и прям не тормозит ничего при таком раскладе? а если пользователи толпой начнут его листать?
82 Segate
 
18.06.14
14:23
(81) нуу... как по мне, дык тормозит )) но в принципе, если не открывать журналы с начала времен, то нормас
83 Teresa
 
18.06.14
14:25
(82) какой ужас
84 Segate
 
18.06.14
14:34
(83)
Вот как считается состояние для заказа в ут 11. В модуле менеджера для каждого заказа.






// Осуществляет вычисление текущего состояния заказа клиента
//
// Параметры:
//    ЗаказКлиента            - ДокументСсылка.ЗаказКлиента - Документ, состояние которого необходимо вычислить
//    Договор                 - СправочникСсылка.ДоговорыКонтрагентов    - Договор с клиентом
//    СостояниеРасчетов       - УправляемаяФорма - Форма, в реквизиты которой будет помещено рассчитанное состояние
//
Процедура РассчитатьСостояние(Знач ЗаказКлиента, Знач Договор, СостояниеРасчетов) Экспорт
    ЗаполнитьЗначенияСвойств(СостояниеРасчетов, СтруктураСостоянияРасчетов());
    
    Если ЗначениеЗаполнено(ЗаказКлиента)
        И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСКлиентами)
        И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ЗаказыКлиентов)
        И ПравоДоступа("Чтение", Метаданные.Документы.ЗаказКлиента) Тогда
    
        УстановитьПривилегированныйРежим(Истина);
        
        Запрос = Новый Запрос("
            |ВЫБРАТЬ
            |ВЫБОР
            |// НЕ ПРОВЕДЕН /////////////////////////////////////////////////////////////
            |    КОГДА
            |        НЕ ДокументЗаказКлиента.Проведен
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
            |// ОЖИДАЕТСЯ СОГЛАСОВАНИЕ //////////////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяСогласование)
            |// ОЖИДАЕТСЯ АВАНС ДО ОБЕСПЕЧЕНИЯ //////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован) ИЛИ &НеИспользоватьСтатусыЗаказовКлиентов) И
            |        ДокументЗаказКлиента.СуммаАвансаДоОбеспечения > 0 И
            |        ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) < ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяАвансДоОбеспечения)
            |// ГОТОВ К ОБЕСПЕЧЕНИЮ /////////////////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован) И
            |        ДокументЗаказКлиента.СуммаДокумента + ДокументЗаказКлиента.СуммаВозвратнойТары > 0 И
            |        (ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) >= ДокументЗаказКлиента.СуммаАвансаДоОбеспечения ИЛИ
            |        ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОбеспечению)
            |// ОЖИДАЕТСЯ ПРЕДОПЛАТА ДО ОТГРУЗКИ ////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован) ИЛИ &НеИспользоватьСтатусыЗаказовКлиентов ИЛИ
            |        ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению)) И
            |        ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0 И
            |        ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) < ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяПредоплатаДоОтгрузки)
            |// ГОТОВ К ОТГРУЗКЕ //////////////////////////////////////////////////////
            |    КОГДА
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован)
            |        ИЛИ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению)) И
            |        ДокументЗаказКлиента.СуммаДокумента + ДокументЗаказКлиента.СуммаВозвратнойТары > 0 И
            |        (ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения ИЛИ
            |        ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
            |        И ЕСТЬNULL(ЗаказыКлиентовОстатки.СуммаОстаток, 0) <> 0
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОтгрузке)
            |// ОЖИДАЕТСЯ ОТГРУЗКА //////////////////////////////////////////////////////
            |    КОГДА
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке) ИЛИ &НеИспользоватьСтатусыЗаказовКлиентов) И
            |        ДокументЗаказКлиента.СуммаДокумента + ДокументЗаказКлиента.СуммаВозвратнойТары > 0 И
            |        (ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения ИЛИ
            |        ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
            |        И ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюОстаток, 0) <> 0
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяОтгрузка)
            |// ОЖИДАЕТСЯ ОПЛАТА ПОСЛЕ ОТГРУЗКИ /////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке) ИЛИ &НеИспользоватьСтатусыЗаказовКлиентов) И
            |        ДокументЗаказКлиента.СуммаДокумента - ДокументЗаказКлиента.СуммаАвансаДоОбеспечения - ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0 И
            |        ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюОстаток, 0) = 0 И
            |        ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеКонечныйОстаток, 0) > 0
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяОплатаПослеОтгрузки)
            |// ГОТОВ К ЗАКРЫТИЮ ////////////////////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКЗакрытию)
            |// ЗАКРЫТ //////////////////////////////////////////////////////////////////
            |    КОГДА
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт) И НЕ &НеИспользоватьСтатусыЗаказовКлиентов) ИЛИ (&НеИспользоватьСтатусыЗаказовКлиентов)
            |    ТОГДА
            |        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)
            |КОНЕЦ КАК Состояние,
            |ВЫБОР
            |// НЕ ПРОВЕДЕН /////////////////////////////////////////////////////////////
            |    КОГДА
            |        НЕ ДокументЗаказКлиента.Проведен
            |    ТОГДА
            |        ЛОЖЬ
            |// ЗАКРЫТ //////////////////////////////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт) И НЕ &НеИспользоватьСтатусыЗаказовКлиентов
            |    ТОГДА
            |        ЛОЖЬ
            |// ПРОСРОЧЕНО СОГЛАСОВАНИЕ /////////////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
            |        И ДокументЗаказКлиента.ДатаСогласования <> ДАТАВРЕМЯ(1,1,1)
            |        И ДокументЗаказКлиента.ДатаСогласования < &ТекущаяДата
            |    ТОГДА
            |        ИСТИНА
            |// ПРОСРОЧЕН АВАНС ДО ОБЕСПЕЧЕНИЯ //////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован) ИЛИ &НеИспользоватьСтатусыЗаказовКлиентов) И
            |        ДокументЗаказКлиента.СуммаАвансаДоОбеспечения > 0 И
            |        ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) < ДокументЗаказКлиента.СуммаАвансаДоОбеспечения И
            |        РасчетыСКлиентамиОстаткиНаДатуАктуальности.КОплатеОстаток > 0
            |    ТОГДА
            |        ИСТИНА
            |// ПРОСРОЧЕНО ОБЕСПЕЧЕНИЕ //////////////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован) И
            |        ДокументЗаказКлиента.СуммаДокумента + ДокументЗаказКлиента.СуммаВозвратнойТары > 0 И
            |        ДокументЗаказКлиента.ДатаОтгрузки <> ДАТАВРЕМЯ(1,1,1) И
            |        ДокументЗаказКлиента.ДатаОтгрузки < &ТекущаяДата И
            |        (ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) >= ДокументЗаказКлиента.СуммаАвансаДоОбеспечения ИЛИ
            |        ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
            |    ТОГДА
            |        ИСТИНА
            |// ПРОСРОЧЕНА ПРЕДОПЛАТА ДО ОТГРУЗКИ ///////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению) ИЛИ &НеИспользоватьСтатусыЗаказовКлиентов) И
            |        ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0 И
            |        ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) < ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения И
            |        РасчетыСКлиентамиОстаткиНаДатуАктуальности.КОплатеОстаток > 0
            |    ТОГДА
            |        ИСТИНА
            |// ПРОСРОЧЕНА ОЖИДАЕТСЯ ОТГРУЗКА ///////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению) И
            |        ДокументЗаказКлиента.ДатаОтгрузки <> ДАТАВРЕМЯ(1,1,1) И
            |        ДокументЗаказКлиента.ДатаОтгрузки  < &ТекущаяДата И
            |        (ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения ИЛИ
            |        ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
            |    ТОГДА
            |        ИСТИНА
            |// ПРОСРОЧЕНА ОТГРУЗКА /////////////////////////////////////////////////////
            |    КОГДА
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке) ИЛИ &НеИспользоватьСтатусыЗаказовКлиентов) И
            |        (ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения ИЛИ
            |        ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)) И
            |        ЕСТЬNULL(ЗаказыКлиентовОстаткиНаДатуАктуальности.КОформлениюОстаток, 0) <> 0
            |    ТОГДА
            |        ИСТИНА
            |// ПРОСРОЧЕНА ОПЛАТА ПОСЛЕ ОТГРУЗКИ /////////////////////////////////////////
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке) ИЛИ &НеИспользоватьСтатусыЗаказовКлиентов) И
            |        ДокументЗаказКлиента.СуммаДокумента - ДокументЗаказКлиента.СуммаАвансаДоОбеспечения - ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0 И
            |        ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюОстаток, 0) = 0 И
            |        ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеКонечныйОстаток, 0) > 0 И
            |        РасчетыСКлиентамиОстаткиНаДатуАктуальности.КОплатеОстаток > 0
            |    ТОГДА
            |        ИСТИНА
            |    ИНАЧЕ
            |        ЛОЖЬ
            |КОНЕЦ КАК СостояниеПросрочено,
            |// СУММА ОПЛАТЫ /////////////////////////////////////////////////////////////
            |ВЫБОР
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        ДокументЗаказКлиента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) И
            |        ДокументЗаказКлиента.Проведен И
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
            |        ДокументЗаказКлиента.СуммаДокумента > 0
            |    ТОГДА
            |        ВЫРАЗИТЬ (ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0) КАК ЧИСЛО(15, 2))
            |    ИНАЧЕ
            |        0
            |КОНЕЦ КАК СуммаОплаты,
            |// ПРОЦЕНТ ОПЛАТЫ ///////////////////////////////////////////////////////////
            |ВЫБОР
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        ДокументЗаказКлиента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) И
            |        ДокументЗаказКлиента.Проведен И
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
            |        ДокументЗаказКлиента.СуммаДокумента > 0
            |    ТОГДА
            |        ВЫРАЗИТЬ ((ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0)) * 100 / ДокументЗаказКлиента.СуммаДокумента КАК ЧИСЛО(15, 0))
            |    ИНАЧЕ
            |        0
            |КОНЕЦ КАК ПроцентОплаты,
            |// СУММА ПРОСРОЧЕННОЙ ОПЛАТЫ ////////////////////////////////////////////////
            |ВЫБОР
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        ДокументЗаказКлиента.Проведен И
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
            |        ДокументЗаказКлиента.СуммаДокумента > 0
            |    ТОГДА
            |        ВЫРАЗИТЬ (ЕСТЬNULL(РасчетыСКлиентамиОстаткиНаДатуАктуальности.КОплатеОстаток, 0) КАК ЧИСЛО(15, 2))
            |    ИНАЧЕ
            |        0
            |КОНЕЦ КАК СуммаПросроченнойОплаты,
            |// СУММА ОТГРУЗКИ ///////////////////////////////////////////////////////////
            |ВЫБОР
            |    КОГДА
            |        ДокументЗаказКлиента.Проведен И
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован) И
            |        ДокументЗаказКлиента.СуммаДокумента > 0
            |    ТОГДА
            |        ДокументЗаказКлиента.СуммаДокумента - ЕСТЬNULL(ЗаказыКлиентовОстатки.СуммаОстаток, 0)
            |    ИНАЧЕ
            |        0
            |КОНЕЦ КАК СуммаОтгрузки,
            |// ПРОЦЕНТ ОТГРУЗКИ /////////////////////////////////////////////////////////
            |ВЫБОР
            |    КОГДА
            |        ДокументЗаказКлиента.Проведен И
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован) И
            |        ДокументЗаказКлиента.СуммаДокумента + ДокументЗаказКлиента.СуммаВозвратнойТары > 0
            |    ТОГДА
            |        ВЫРАЗИТЬ ((ДокументЗаказКлиента.СуммаДокумента + ДокументЗаказКлиента.СуммаВозвратнойТары - ЕСТЬNULL(ЗаказыКлиентовОстатки.СуммаОстаток, 0)) * 100
            |            / (ДокументЗаказКлиента.СуммаДокумента + ДокументЗаказКлиента.СуммаВозвратнойТары) КАК ЧИСЛО(15, 0))
            |    ИНАЧЕ
            |        0
            |КОНЕЦ КАК ПроцентОтгрузки,
            |// ДОЛГ (+ НАМ ДОЛЖНЫ, - МЫ ДОЛЖНЫ)//////////////////////////////////////////
            |ВЫБОР
            |    КОГДА
            |        ДокументЗаказКлиента.Проведен И
            |        ((ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
            |        ДокументЗаказКлиента.СуммаДокумента > 0) ИЛИ
            |        ДокументЗаказКлиента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
            |    ТОГДА
            |        ВЫРАЗИТЬ (ЕСТЬNULL(РасчетыСКлиентамиОстатки.СуммаКонечныйОстаток, 0) КАК ЧИСЛО(15, 2))
            |    ИНАЧЕ
            |        0
            |КОНЕЦ КАК СуммаДолга,
            |ВЫБОР
            |    КОГДА
            |        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
            |        ДокументЗаказКлиента.Проведен И
            |        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
            |        ДокументЗаказКлиента.СуммаДокумента > 0
            |    ТОГДА
            |        ВЫБОР
            |            КОГДА
            |                ЕСТЬNULL(РасчетыСКлиентамиОстатки.СуммаКонечныйОстаток, 0) > 0
            |            ТОГДА
            |                ВЫРАЗИТЬ ((ЕСТЬNULL(РасчетыСКлиентамиОстатки.СуммаКонечныйОстаток, 0) * 100 / ДокументЗаказКлиента.СуммаДокумента) КАК ЧИСЛО(15, 0))
            |            ИНАЧЕ
            |                ВЫРАЗИТЬ ((ЕСТЬNULL(-РасчетыСКлиентамиОстатки.СуммаКонечныйОстаток, 0) * 100 / ДокументЗаказКлиента.СуммаДокумента) КАК ЧИСЛО(15, 0))
            |        КОНЕЦ
            |    ИНАЧЕ
            |        0
            |КОНЕЦ КАК ПроцентДолга
            |ИЗ
            |    Документ.ЗаказКлиента КАК ДокументЗаказКлиента
            |ЛЕВОЕ СОЕДИНЕНИЕ
            |    РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(,,,,ЗаказКлиента = &РасчетныйДокумент) КАК РасчетыСКлиентамиОстатки
            |ПО
            |    Истина
            |ЛЕВОЕ СОЕДИНЕНИЕ
            |    РегистрНакопления.РасчетыСКлиентами.Остатки(КОНЕЦПЕРИОДА(&ТекущаяДата, ДЕНЬ), ЗаказКлиента = &РасчетныйДокумент) КАК РасчетыСКлиентамиОстаткиНаДатуАктуальности
            |ПО
            |    Истина
            |ЛЕВОЕ СОЕДИНЕНИЕ
            |    РегистрНакопления.ЗаказыКлиентов.Остатки(, ЗаказКлиента = &ЗаказКлиента) КАК ЗаказыКлиентовОстатки
            |ПО
            |    Истина
            |ЛЕВОЕ СОЕДИНЕНИЕ
            |    РегистрНакопления.ЗаказыКлиентов.Остатки(КОНЕЦПЕРИОДА(&ТекущаяДата, ДЕНЬ), ЗаказКлиента = &ЗаказКлиента) КАК ЗаказыКлиентовОстаткиНаДатуАктуальности
            |ПО
            |    Истина
            |ГДЕ
            |    ДокументЗаказКлиента.Ссылка = &ЗаказКлиента
            |
            |");
        
        ПорядокРасчетов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказКлиента, "ПорядокРасчетов");
        
        Запрос.УстановитьПараметр("ЗаказКлиента", ЗаказКлиента);
        Запрос.УстановитьПараметр("РасчетныйДокумент", ?(ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов,
            Договор,
            ЗаказКлиента));
        Запрос.УстановитьПараметр("ТекущаяДата",  НачалоДня(ТекущаяДата()));
        Запрос.УстановитьПараметр("НеИспользоватьСтатусыЗаказовКлиентов", НЕ ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовКлиентов"));
        Выборка = Запрос.Выполнить().Выбрать();
        Выборка.Следующий();
        
        ЗаполнитьЗначенияСвойств(СостояниеРасчетов, Выборка);
    КонецЕсли;
    
КонецПроцедуры
85 РенеДекарт
 
18.06.14
15:15
(84) разработчики УТ первый раз сели за 1С?
86 Segate
 
18.06.14
15:29
(85) предлжи вариант оптимальнее, навскидку.
87 РенеДекарт
 
20.06.14
16:14
(86) если уж наваяли такое 1С, так пусть промежуточные "архивы" пользуют - регистры, что угодно.
Прекрасно известно, что 1С не может сама отсеять "старую" инфо, показывая только актуальную (по типу "сбросил в архив и забыл, но все в пределах шаговой доступности за все года).
88 Tilirxs
 
21.06.14
12:25
(71) все хорошо.
89 Tilirxs
 
21.06.14
12:28
Всем спасибо