|
Блуждание 1с или Функции | ☑ | ||
---|---|---|---|---|
0
karpos
11.02.14
✎
11:37
|
Всем привет может кому то покажется что я что то покурил а может мне кажется.
Вопрос такой теоретически возможно сделать две процедуры чтоб в одной заполнилась табличная часть. А во второй документ создавался и записывался.????? |
|||
1
Ненавижу 1С
гуру
11.02.14
✎
11:38
|
ну абстрактно, сферически в вакууме, по-конски, можно
|
|||
2
Wobland
11.02.14
✎
11:39
|
так тебе кажется, что ты покурил, или нет?
|
|||
3
karpos
11.02.14
✎
11:40
|
я не курил, серьезно?
|
|||
4
Godofsin
11.02.14
✎
11:40
|
(0) ну а чо не то? и курить немного даже надо...
|
|||
5
Godofsin
11.02.14
✎
11:40
|
не_много
|
|||
6
qeos
11.02.14
✎
11:40
|
чочо?
|
|||
7
Wobland
11.02.14
✎
11:40
|
(3) синтетическое что-то?
|
|||
8
jsmith
11.02.14
✎
11:41
|
честно, по существу, без иронии - нет
но если заменить "табличную часть" на "таблица значений" и передавать её во вторую процедуру - то да |
|||
9
rbcvg
11.02.14
✎
11:42
|
"в одной заполнилась табличная часть. А во второй документ создавался и записывался.?????" - именно в такой последовательности?
|
|||
10
Godofsin
11.02.14
✎
11:42
|
Видимо, все по-разному поняли вопрос... ТС, ну отсыпь у же нам, мы на твою волну перестроимся
|
|||
11
Ненавижу 1С
гуру
11.02.14
✎
11:43
|
(8) почему нельзя то?
вызываем вторую: она создает объект, передаем объект второй, она заполняет ТЧ, записываем |
|||
12
Wobland
11.02.14
✎
11:43
|
(10) а выводить нас кто будет?
|
|||
13
Godofsin
11.02.14
✎
11:43
|
(12) Оно само проходит, поверь мне ))))
|
|||
14
AaNnDdRrEeYy
11.02.14
✎
11:44
|
типо такого?
Процедура СоздатьДок() Док = Документы.Реализация.СоздатьДокумент(); ЗаполнитьТЧ(Док); КонецПроцедуры Процедура ЗаполнитьТч(Док) НоваяСтрока = Док.Товары.Добавить(); КонецПроцедуры |
|||
15
Wobland
11.02.14
✎
11:44
|
(13) чо-та я очкую, Славик ©
|
|||
16
karpos
11.02.14
✎
11:46
|
AaNnDdRrEeYy, да да да врое подойдет
|
|||
17
karpos
11.02.14
✎
11:47
|
так погоди пять сек не рано ли радоваться
|
|||
18
Godofsin
11.02.14
✎
11:47
|
(16) Скуууччноооо... Я думал, чонить позаковырестей...
|
|||
19
ICWiner
11.02.14
✎
11:47
|
Мои глаза... ТС, пунктуацию учи...
|
|||
20
Godofsin
11.02.14
✎
11:48
|
(15) Не очкуй, я сто раз так делал! (с)
|
|||
21
ICWiner
11.02.14
✎
11:48
|
(16) Заковыристость - разобрать этот поток сознания. Загвоздка именно в этом. А если он еще и думает так же...
|
|||
22
AaNnDdRrEeYy
11.02.14
✎
11:56
|
(0) как этот вопрос к 1С относится? это самые основы программирования, передача параметра.
|
|||
23
karpos
11.02.14
✎
12:04
|
ну AaNnDdRrEeYy, програмирование на 1с же.
|
|||
24
karpos
11.02.14
✎
12:05
|
я знаю как писать процедуры и функций но когда задача посложнее путаюсь
|
|||
25
Wobland
11.02.14
✎
12:06
|
(24) та же проблема, но с алкоголем. после второго литра не могу программить
|
|||
26
karpos
11.02.14
✎
12:07
|
ахх
Процедура СоздатьДокумент() НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); ЗаполнитьТабличнуюЧасть(НовыйДокумент); НовыйДокумент.Записать(); КонецПроцедуры Процедура ЗаполнитьТабличнуюЧасть(НовыйДокумент, ТекТовар, ТекКоличество, ТекСуммаОПТ) Товар = НовыйДокумент.Товары.Добавить(); ТекНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекТовар)); Если ПустаяСтрока(ТекНоменклатура) = Ложь Тогда Товары.Номенклатура = ТекНоменклатура; Товары.ЕдиницаИзмерения = ТекНоменклатура.ЕдиницаХраненияОстатков; Товары.Склад = Склад; Товары.Количество = ТекКоличество; Товары.Цена = ТекСуммаОПТ; //Иначе КонецЕсли; КонецПроцедуры |
|||
27
karpos
11.02.14
✎
12:11
|
мда блин чего хочу сам не знаю, не укладывается в голове.
|
|||
28
karpos
11.02.14
✎
12:12
|
я хотел в процедуре туда предавать параметры табличной части и заполнять ее., я потом в друой процедуре что то типа того
Процедура СоздатьДокумент() НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); ЗаполнитьТабличнуюЧасть(НовыйДокумент); НовыйДокумент.Записать(); КонецПроцедуры |
|||
29
karpos
11.02.14
✎
12:14
|
только получает процедура заполнения табличной части будет вызвоана один раз, раз она находится в процедуре создания и записи документа вообщем туда передадутся только крайние значения.
|
|||
30
1Сергей
11.02.14
✎
12:15
|
(29) отдышись и спокойно объясни чего тебе нужно
|
|||
31
Wobland
11.02.14
✎
12:16
|
(30) это он у нас хочет узнать
|
|||
32
rbcvg
11.02.14
✎
12:16
|
(29) хотя б намекни почему нельзя сначала создать док,а потом его заполнить?!
|
|||
33
karpos
11.02.14
✎
12:17
|
Блин ребета бы такие клевые!!! честно столько раз помогали
|
|||
34
MSII
11.02.14
✎
12:19
|
(33) >Блин ребета бы такие клевые!!! честно столько раз помогали
Дай угадаю... Ничего ты не курил. Это экстази, да? |
|||
35
karpos
11.02.14
✎
12:21
|
У меня есть проблема все что я делаю думаю что награжденно и не правильно поэтому всегда куда то тыкаюсь. Задача такая и в голове есть почти ее решение. Есть xml файл надо взять от туда данные и создать документ либо поступление товаров и услуг, либо поступление товаров и услуг Нтт.
|
|||
36
karpos
11.02.14
✎
12:22
|
вот что будет делать по нажатию кпоки загрузить файл
Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ПутьКФайлу); Пока Чтение.Прочитать() Цикл Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяУзла = Чтение.Имя; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда Если ИмяУзла = "Грузополучатель" Тогда Сообщить(Чтение.Значение); ТекГрузополучатель = Чтение.Значение; КонецЕсли; Если ИмяУзла = "Товар" Тогда Сообщить(Чтение.Значение); ТекТовар = Чтение.Значение; КонецЕсли; Если ИмяУзла = "Количество" Тогда Сообщить(Чтение.Значение); ТекКоличество = Чтение.Значение; КонецЕсли; Если ИмяУзла = "СуммаОпт" Тогда Сообщить(Чтение.Значение); ТекСуммаОпт = Чтение.Значение; КонецЕсли; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда Если ИмяУзла = "ТоварнаяПозиция" Тогда //Вызываеем процедуру Если ТекГрузополучатель = "Основной склад" Тогда Иначе КонецЕсли; КонецЕсли; Если ИмяУзла = "Документ" Тогда КонецДокумента = Истина; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
37
karpos
11.02.14
✎
12:28
|
будут две процедуру как задумывал(пока не решил спросить, можно ли в одной процедуре заполнить тб часть, в другой создать и записать документ)
Одна будет создавать ПоступлениеТоавроИУслуг другая ПоступлениеТоавроИУслугНтт вот первая Процедура ПоступлениеТоваровИУслуг(ТекТовар, ТекКоличество, ТекСуммаОПТ, КонецДокумента) Если КонецДокумента = Ложь Тогда НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент.Дата = ТекущаяДата(); НовыйДокумент.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад; НовыйДокумент.Организация = Организация; НовыйДокумент.Контрагент = Контрагент; НовыйДокумент.ДоговорКонтрагента = Договор; НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия; Товары = НовыйДокумент.Товары.Добавить(); ТекНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекТовар)); Если ПустаяСтрока(ТекНоменклатура) = Ложь Тогда Товары.Номенклатура = ТекНоменклатура; Товары.ЕдиницаИзмерения = ТекНоменклатура.ЕдиницаХраненияОстатков; Товары.Склад = Склад; Товары.Количество = ТекКоличество; Товары.Цена = ТекСуммаОПТ; //Иначе КонецЕсли; //Если КонецДокумента = Истина Тогда // НовыйДокумент.Записать(); // КонецДокумента = Ложь; // //НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); //КонецЕсли; КонецПроцедуры |
|||
38
karpos
11.02.14
✎
12:28
|
стоп не глядите
|
|||
39
Junior1s
11.02.14
✎
12:28
|
за тобой уже выехали.
|
|||
40
karpos
11.02.14
✎
12:29
|
Процедура ПоступлениеТоваровИУслуг(ТекТовар, ТекКоличество, ТекСуммаОПТ, КонецДокумента)
НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент.Дата = ТекущаяДата(); НовыйДокумент.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад; НовыйДокумент.Организация = Организация; НовыйДокумент.Контрагент = Контрагент; НовыйДокумент.ДоговорКонтрагента = Договор; НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия; Товары = НовыйДокумент.Товары.Добавить(); ТекНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекТовар)); Если ПустаяСтрока(ТекНоменклатура) = Ложь Тогда Товары.Номенклатура = ТекНоменклатура; Товары.ЕдиницаИзмерения = ТекНоменклатура.ЕдиницаХраненияОстатков; Товары.Склад = Склад; Товары.Количество = ТекКоличество; Товары.Цена = ТекСуммаОПТ; //Иначе КонецЕсли; Если КонецДокумента = Истина Тогда НовыйДокумент.Записать(); КонецДокумента = Ложь; //НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; КонецПроцедуры |
|||
41
karpos
11.02.14
✎
12:31
|
я просто дружелюбный я на работе, не курю и экстези не принимаю. А вот г* кодить могу легко.
|
|||
42
ICWiner
11.02.14
✎
12:34
|
Что может быть приятней, чем коллега - дружелюбный oвнокодeр :)
|
|||
43
1Сергей
11.02.14
✎
12:35
|
(42) :)))))))))))))))))))))
|
|||
44
Godofsin
11.02.14
✎
12:36
|
ПустаяСтрока(ТекНоменклатура) = Ложь - это 5!
|
|||
45
Wobland
11.02.14
✎
12:37
|
(41) не, это не алкоголь. пейота?
|
|||
46
karpos
11.02.14
✎
12:39
|
и туп проблема в принце решаемая Процедура будет вызываться каждый раз когда увидела конец секций товарной позиций, он создает документ и начинает заполнять его а по передаче параметра КонецДокумента Записывает его.
И вот проблема что каждый раз когда новая позиция товара он будет создавать новый документ а не добавлять в старый, надо определить начало документа. |
|||
47
karpos
11.02.14
✎
12:42
|
Поэтому я и хотел заполнить табличную часть отдельно, не создавая массивы не перегоняя данные туда сюда. а потом вроде как, создать документ и записать.
|
|||
48
Godofsin
11.02.14
✎
12:42
|
(46) Формируй таблицу товара отдельно, через ТЗ, с названиями колонок как у ТЧ документа, Затем:
НовыйДокумент.Товары.Загрузить(ТвояТЗСТоваром); |
|||
49
karpos
11.02.14
✎
12:43
|
если кто смотри на мой код и думаю вот оторвать бы ему руки, закройте вкладку браузера если кто хочет помочь, укажите где я не так думаю
|
|||
50
Godofsin
11.02.14
✎
12:44
|
(49) Ну вот еще! из-за тебя браузер закрывать ))))
|
|||
51
karpos
11.02.14
✎
12:44
|
чтот такое ТЗ??? не сооображу
|
|||
52
Godofsin
11.02.14
✎
12:44
|
Таблица значений
|
|||
53
Wobland
11.02.14
✎
12:44
|
(49) к счастью, твой код сворачивается
|
|||
54
catena
11.02.14
✎
12:45
|
(51)ТекстЗапроса... ТемноЗеленый... ТихийЗайка...
|
|||
55
karpos
11.02.14
✎
12:46
|
Godofsin , "ПустаяСтрока(ТекНоменклатура) = Ложь - это 5!"
ты тут серьезно или шутишь просто мне нужно проверять есть данная номенклатура в базе |
|||
56
Wobland
11.02.14
✎
12:53
|
тёмно-зелёный тихий заяц
запрос писал, не видя смысла. сгруппировать+сумма(яиц) - система наглухо повисла. |
|||
57
catena
11.02.14
✎
12:56
|
(56)Не, это не трава и не экстази. Это что-то заразное.
|
|||
58
Godofsin
11.02.14
✎
12:56
|
(55) Да не, норм. просто я не догадался так проверять )))
|
|||
59
Godofsin
11.02.14
✎
12:57
|
+(58) но такой метод работать должен, лень проверять
|
|||
60
Wobland
11.02.14
✎
12:57
|
Результат функции, возвращающей логическое значение, не следует проверять путем сравнения с логической константой.
Правильно: Копировать в буфер обмена Если ЭтоНовый() Тогда Неправильно: Копировать в буфер обмена Если ЭтоНовый() = Истина Тогда ©ИТС |
|||
61
AaNnDdRrEeYy
11.02.14
✎
12:58
|
(46)>>И вот проблема что каждый раз когда новая позиция товара он будет создавать новый документ а не добавлять в старый, надо определить начало документа.
СоздатьДокумент() из цикла вытащи |
|||
62
Godofsin
11.02.14
✎
12:58
|
(60) Кстати да
|
|||
63
Wobland
11.02.14
✎
12:58
|
(59) если основное представление по коду с длиной кода 0 (а так можно?) или же дело в 8.3, где можно рисовать своё представление, то не взлетит
|
|||
64
AaNnDdRrEeYy
11.02.14
✎
12:59
|
(60) бывают самописные кривые функции которые могут возвратить и Неопределено, тогда стоит проверить на = Истина
|
|||
65
Wobland
11.02.14
✎
12:59
|
(64) наверняка в стандартах разработки где-то об этом сказано
|
|||
66
AaNnDdRrEeYy
11.02.14
✎
13:00
|
(65) я кода пишу Если ЧтотоТам() = Истина Тогда
обязательно коммент пишу //Эта функция может возвращать неопределено что бы потом не ржали когда мой код читать будут и нуба не держали |
|||
67
Wobland
11.02.14
✎
13:02
|
(66) ну не наю.. нормальная булевская функция не возвращает хрень
|
|||
68
Ненавижу 1С
гуру
11.02.14
✎
13:05
|
(66) не надо писать уебанские функции и все будет хорошо
|
|||
69
AaNnDdRrEeYy
11.02.14
✎
13:09
|
(68) они типовые мля.....
|
|||
70
Серго62
11.02.14
✎
13:18
|
(69) Пример можно?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |