![]() |
|
v7: Заполнить в Документе1 данные из Документов2 с отбором Ø (Злопчинский 28.01.2016 01:09) |
☑ | ||
---|---|---|---|---|
0
irish-ka
27.01.16
✎
15:46
|
Здравствуйте. Очень нужна помощь знающих людей. У меня нестандартная конфигурация 1С7.7 Есть документ Заказ, в котором имеются числовые реквизиты. Условно Рек1, Рек2, Рек3
Так же имеется реквизит Приёмщик (справочник ФИО). Сейчас я создаю другой вид документа, в котором нужно при нажатии кнопки "Рассчитать" (Процедура Рассчитать()) за указанный в документе период по указанному Приёмщику заполнить из документа Заказ суммы по каждому из трёх реквизитов (Рек1, Рек2 и Рек3). Проблем с кодом в модуле не возникает, когда я эти цифры в поля документа (в диалоговом окне) ввожу руками (они нужны для дальнейших рассчётов документа. Пользуюсь универсальным отчётом, чтоб узнать эти цифры), но не понимаю, как правильно прописать код в самом документе, чтоб эти цифры (суммы) вытаскивались автоматически из нужных документов Заказ. |
|||
1
vicof
27.01.16
✎
15:49
|
Ох, Иришка. Показывай код, который ты уже написала.
|
|||
2
irish-ka
27.01.16
✎
16:11
|
Пока есть это:
Процедура Рассчитать() Док=Док.Заказ; Док.ВыбратьДокументы(Дата1,Дата2); Пока Док.ПолучитьДокумент()=1 Цикл Если Док.Приёмщик=Приёмщик Тогда А вот что дальше? Когда этот код идёт в Отчётах, там сосздаётся объект и таблицы. Но мне ведь не нужно этого, мне нужно только суммировать определённые данные и вывести их в диалоговом окне при прохождении процедуры Рассчитать. И правильно ли я задала Док=Док.Заказ? Этим я хотела прописать, по какому виду документа нужно выборку делать..., но сомневаюсь, что это правильно. |
|||
3
irish-ka
27.01.16
✎
16:13
|
Ничего похожего по функционалу в моей конфигурации я не нашла, а документы с отбором данных из других документов я ещё не писала..
|
|||
4
vicof
27.01.16
✎
16:22
|
Похоже на правду. Теперь надо выбрать строки в документе и получать их, попутно суммируя в переменные нужные данные.
|
|||
5
irish-ka
27.01.16
✎
16:45
|
Выбор строк делаем так?
ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Как дальше задать, по каким реквизитам суммировать и в какое поле документа эти суммы прописывать? |
|||
6
irish-ka
27.01.16
✎
16:45
|
Я так понимаю, что дальше должно быть условие Если, но как его тут правильно применить?
|
|||
7
vicof
27.01.16
✎
17:13
|
(6)
СуммаРек1 = 0; .... пока получитьСтроку() = 1 цикл СуммаРек1 = СуммаРек1 + Док.Рек1; ... |
|||
8
Злопчинский
27.01.16
✎
17:55
|
ТекстЗапроса="Период С ДатаН По ДатаК;
|ОбрабатыватьДокументы Проведенные; |Без Итогов; |Номенклатура=Документ.Номенклатура; |Рекв1=Документ.Заказ.Рекв1; |Рекв2=Документ.Заказ.Рекв2; |Рекв3=Документ.Заказ.Рекв3; |Приемщик=Документ.Заказ.Приемщик; |Функция ИтогРекв1=Сумма(Рекв1); |Функция ИтогРекв2=Сумма(Рекв3); |Функция ИтогРекв3=Сумма(Рекв3); |Условие(Приемщик=ВыбПриемщик); |Группировка Номенклатура Без Групп; |"; Запрос=СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса)<>1 Тогда Возврат; КонецЕли; Пока Запрос.Группировка()=1 Цикл Сообщить(""+Запрос.Номенклатура+" "+Запрос.ИтогРекв1+" "+Запрос.ИтогРекв2+" "+Запрос.ИтогРекв3); КонецЦикла; Примерно вот так, дальше сама допилишь... |
|||
9
Злопчинский
27.01.16
✎
17:56
|
|Номенклатура=Документ.Номенклатура;
читать как |Номенклатура=Документ.Заказ.Номенклатура; |
|||
10
HawkEye
27.01.16
✎
18:38
|
(2) конечно не правильно, надо через СоздатьОбъект.
потом найтиДокумент |
|||
11
Злопчинский
27.01.16
✎
18:39
|
(10) что ты хочешь от девочки, малоквалифицированной, да еще кинутой на семерку...
|
|||
12
HawkEye
27.01.16
✎
18:40
|
(11) ну уж точно не запрос писать )))))
|
|||
13
irish-ka
27.01.16
✎
22:25
|
Решила пока попробовать вывести только один реквизит в свой документ. Для начала прописать в документе сумму принятых Приемщиком заказов.
Процедура Рассчитать() Процедура Рассчитать() Док=СоздатьОбъект("Документ.Заказ"); Док.ВыбратьДокументы(Дата1,Дата2); Пока Док.ПолучитьДокумент()=1 Цикл Если Док.ДатаДок>=Дата1 Тогда Продолжить; КонецЕсли; Если Док.ДатаДок<=Дата2 Тогда Продолжить; КонецЕсли; Если Приёмщик=Док.Приемщик Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку()=1 Цикл ЗаказовВсего=Док.СтоимостьЗаказаСкидка.Сумма; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры Ошибок никаких не выдаёт, но и ничего в документ не выводит. |
|||
14
irish-ka
27.01.16
✎
22:28
|
С Запросом тоже всё сложно - с ними никогда не работала... не понимаю пока, каки куда их пихать.
|
|||
15
Злопчинский
27.01.16
✎
22:29
|
(14) стучись в скайп Zlopun - сейчас все удаленно поправим, сделаем, расскажу. покажу.
..слабость у меня к Иришкам... |
|||
16
Злопчинский
27.01.16
✎
22:35
|
Док.ВыбратьДокументы(Дата1,Дата2);
и Если Док.ДатаДок>=Дата1 Тогда Продолжить; КонецЕсли; Если Док.ДатаДок<=Дата2 Тогда Продолжить; КонецЕсли; . ..как бы взаимоисключающие условия |
|||
17
Злопчинский
27.01.16
✎
22:36
|
это что за хрень?
. Пока Док.ПолучитьСтроку()=1 Цикл ЗаказовВсего=Док.СтоимостьЗаказаСкидка.Сумма; КонецЦикла; . логика какая: перебрать все строки документа, но на выходе получить значение только для последнего? - НАФЕЙХОА? |
|||
18
Злопчинский
27.01.16
✎
22:37
|
эти условия
Если Док.ДатаДок>=Дата1 Тогда Продолжить; КонецЕсли; Если Док.ДатаДок<=Дата2 Тогда Продолжить; КонецЕсли; вообще выкинь, они не нужны .. чувствуется, что у тебя малость нет понимания что к чему.. ;-) |
|||
19
Смотрящий
27.01.16
✎
22:39
|
неужель Йаркая проявилась ?
|
|||
20
Хряк
27.01.16
✎
22:50
|
вроде ещё не пятница, а здоровые мужики на развод уже клюют
|
|||
21
irish-ka
27.01.16
✎
22:52
|
По порядку...
(16) Док.ВыбратьДокументы(Дата1,Дата2) Дата1 и Дата2 - это реквизит документа, который я хочу заполнить. В них я задаю период отбора. В документе Заказ у меня есть разные даты. ДатаДок - дата документа, ДатаГотовности, ДатаВыдачи. Я хочу, чтоб период выборки был именно по Дате документа, а не какой либо другой. (17) ЗаказовВсего - это опять реквизит нового документа, который должен быть равен сумме по перебранным строкам СуммаЗаказаСкидка из документов Заказ. Тут я точно что-то не так сделала, но как сделать правильно, не поняла. Я вообще раньше не писала "с нуля" документы или отчёты, где нужно сделать выборку. Либо делала что-то по аналогии с имеющимся, меняя на нужные реквизиты. Тут же нужно написать документ, не имеющий аналогов в моей конфигурации. Так что прошу прощения, если какие-то простые для вас вещи мне не понятны... |
|||
22
irish-ka
27.01.16
✎
22:53
|
(19) Кто такая?
|
|||
23
Злопчинский
27.01.16
✎
22:54
|
(21) "ЗаказовВсего - это опять реквизит нового документа, который должен быть равен сумме по перебранным строкам"
- ну так если должен быть равен СУММЕ по перебранным строкам - то напиши оператор с выражением суммирования! |
|||
24
Злопчинский
27.01.16
✎
22:55
|
и для того, чтобы получить итог по строкам какого либо дока, совсем не обязательно перебирать строки - достаточно в пофигураторе для реквизита табличной части документа поставить флаг "итог" - и можно получить итог по строкам
Док.Итог("КакойТоРеквизиттабличнойЧасти") |
|||
25
Злопчинский
27.01.16
✎
22:56
|
ну, я в (15) помощь предложил.. на нет - и сюда/туда нет...
|
|||
26
irish-ka
27.01.16
✎
23:06
|
(25) Сейчас нет возможности выйти в Скайп, поэтому спасибо за предложение, возьму на заметку, но пока попробую всё же через форум решить задачку...
|
|||
27
irish-ka
27.01.16
✎
23:06
|
(24) попробую так.
|
|||
28
Злопчинский
27.01.16
✎
23:11
|
(26) наличие фотки в прфиле увеличивает шансы на успешное решение задачи...
тимвьювер тоже покатит... |
|||
29
irish-ka
28.01.16
✎
01:08
|
Всем спасибо, у меня получилось то, что нужно. (18) абсолютно верно. (4) это оказалось лишним. Достаточно было только выбрать Документы и суммировать определённые реквизиты из них.
Задача решена. |
|||
30
Злопчинский
28.01.16
✎
01:08
|
..не прошло и часа ;-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |