|
Экспортировать документ из одной базы в другую. | ☑ | ||
---|---|---|---|---|
0
Олеся999
30.03.15
✎
07:39
|
Подскажите пожалуйста как можно экспортировать документ из одной базы в другую. Там на сколько я понимаю делается через СОМ объекты.
Может есть какие нибудь примеры ? :) |
|||
1
ДенисЧ
30.03.15
✎
07:47
|
Use power of КД, younf padavan! And let the Force be with you!
|
|||
2
Lama12
30.03.15
✎
07:52
|
(0) Если конфигурации одинаковы, то обработка с итс.
|
|||
3
ИС-2
naïve
30.03.15
✎
07:53
|
(0) да. Через ком например. Если (2) то ВыгрузкаЗагрузкаДанныхXML82.epf
|
|||
4
Мастер Йода
30.03.15
✎
07:55
|
(1) "The Force will be with you" said I
|
|||
5
Олеся999
30.03.15
✎
07:55
|
(2) Конфы разные из самописной в типовую Бух.
Может кто делал есть примеры какие-нибудь? |
|||
6
ДенисЧ
30.03.15
✎
07:56
|
(4) Прав и ты, падаван поседевший
(5) только Кд в таком случае. Примеров - хоть этой... как её... ложкой! кушай... В любой современной типовой. |
|||
7
Ligor
30.03.15
✎
07:58
|
(6) Ну почему сразу КД, если структура документов одинаковая можно и ВыгрузкаЗагрузкаДанныхXML82.epf попробовать :)
|
|||
8
Олеся999
30.03.15
✎
08:02
|
(7) ВыгрузкаЗагрузкаДанныхXML82.epf
Не подойдет т.к надо выгружать не все документы приходной накладной а некоторые |
|||
9
smitru
30.03.15
✎
08:06
|
(8) Для решения Вашей задачи создан и давно с успехом используется типовой механизм "Конвертация данных 2.1".
Не нужно изобретать велосипед, пользуйтесь проверенными средствами :-) |
|||
10
Славен
30.03.15
✎
08:09
|
(8)не поверишь там есть отбор
|
|||
11
yavasya
30.03.15
✎
08:11
|
(0) через КОМу быстрее выйдет быстрее если справочники синхронизированы
|
|||
12
Олеся999
30.03.15
✎
08:27
|
(10) Дело в том что Бухи не хотят в это вникать, им выбрал галками, кнопку жмакнул и все.
|
|||
13
Славен
30.03.15
✎
08:29
|
(12) так там выбрал, галки поставил и сёёё. Но если не лень пиши обработку с обменом, преферансом и куртизанками
|
|||
14
Олеся999
30.03.15
✎
08:33
|
(13) Ну мне просто нужны же некоторые реквизиты т.к структура разная
|
|||
15
smitru
30.03.15
✎
08:35
|
(14) (вздыхая)
Для ваших задач есть "КД 2.1" - там можно реализовать все - и "флашки" и переход из одной структуры в другую и механизм com при нужде и многое, многое иное. |
|||
16
s_ustinov
30.03.15
✎
08:38
|
(15) куртизанок и преферанса там нет...
а бухи - они такие, им без куртизанок неинтересно. точно знаю - сам одно время бухгалтером работал :) |
|||
17
Cube
30.03.15
✎
09:01
|
А чё сразу КД? Если выгружать надо пару видов документов и несколько справочников, то я за COM.
COM гибче, проще в освоении на порядок и можно свои бантики прилепить. |
|||
18
Cube
30.03.15
✎
09:02
|
(0) Какой документ в БП должен создаваться?
|
|||
19
smitru
30.03.15
✎
09:04
|
(17) "то я за COM"
Вы явно путаете "транспорт" и сам механизм", (ни "офф-лайн", ни "он-лайн" - ни как не противоречат механизму КД). |
|||
20
Cube
30.03.15
✎
09:09
|
(19) Я ничего не путаю. Я имел ввиду просто подключиться по COM и простым кодом реализовать весь обмен.
|
|||
21
smitru
30.03.15
✎
09:16
|
(20) "и простым кодом реализовать весь обмен. "
Вы явно либо не знаете о чем говорите, либо издеваетесь :-) Проганье через ком ссылочных значений, требует ещё кучу телодвижений по связыванию гуидов одной базы с гуидами другой... Т.е. куча всякой шелухи, которую спокойно можно не напрягаясь избавиться благодаря КД. Р.S. А соединяться штатными обработками КД через сом - проще простого |
|||
22
Славен
30.03.15
✎
09:51
|
И никто не спросил с какой конфы на какую надо перебрасывать
|
|||
23
smitru
30.03.15
✎
09:51
|
(22) Для КД - это инвариантно
|
|||
24
Славен
30.03.15
✎
09:53
|
(23) в одном случае ничего писать не надо, галки расставил и полетело (ВыгрузкаЗагрузкаДанны...), в другом надо телодвижения делать (в КД) ... Разницу чуешь?
|
|||
25
Cube
30.03.15
✎
09:55
|
(22) Я полагаю с той самописки, про которую у неё все ветки :)
|
|||
26
Cube
30.03.15
✎
10:02
|
(21) "Вы явно либо не знаете о чем говорите, либо издеваетесь"
"Пилите, Шура, пилите..." (c) "Проганье через ком ссылочных значений, требует ещё кучу телодвижений по связыванию гуидов одной базы с гуидами другой... Т.е. куча всякой шелухи, которую спокойно можно не напрягаясь избавиться благодаря КД. " Ой, да ладно. Если справочники синхронизировать по УИДам, то передача ссылочного значения через COM делается в одну строку кода. Ну а если УИДы отличаются, то врукопашную найти элемент в COM-базе по тем же условиям поиска, что и в КД не составит труда. А вот изучение КД для простейшего обмена - это из пушки по воробьям. Я много обменов написал, я знаю что говорю. |
|||
27
Олеся999
30.03.15
✎
11:43
|
(26) А там же получается нужно обязательно выгрузку по датам делать ?
|
|||
28
Cube
30.03.15
✎
11:45
|
(27) Правильные обмены написаны с использованием планов обмена. Тогда не надо думать, за какой период выгружать, а просто жмешь на кнопку или вообще автоматом всё...
|
|||
29
organizm
30.03.15
✎
11:54
|
+(28) в КД замучаешься ошибки отлавливать. В самописной обработке достаточно Отладчик открыть.
|
|||
30
Олеся999
30.03.15
✎
12:12
|
Ну там просто нужно из самописной ПриходнаяНакладная
в Бухгалтерию ПоступленияТоваровИУслуг Следующие реквизиты: ПриходнаяНакладная.Контрагент, ПриходнаяНакладная.Фирма, ПриходнаяНакладная.ИнфНакладной, ПриходнаяНакладная.ИнфСчета, ПриходнаяНакладная.ДатаНакладной, ПриходнаяНакладная.ДатаСчета, ПриходнаяНакладная.ТаблЧасть.( Артикул, Количество, Цена |
|||
31
Олеся999
30.03.15
✎
12:13
|
(28) А есть какие-нибудь примеры по этому поводу?:)
|
|||
32
Cube
30.03.15
✎
12:13
|
(30) О, ты фотку поменяла?))) Зачётная!) Давно?
|
|||
33
Cube
30.03.15
✎
12:17
|
(30) О, так тебе ссылочные типы вообще не надо грузить что-ли? А как тебе вариант выгрузки/загрузки?
Примерно так: 1). В самописной базе открываешь ПриходнуюНакладую и нажимаешь кнопку "Выгрузить в файл". 2). Создаешь в БП новый документ ПТиУ и нажимаешь "Загрузить из файла". 3). Проверяешь правильность заполнения документа в БП и проводишь его. Для небольших объемов самое то. |
|||
34
Олеся999
30.03.15
✎
12:17
|
(32) Да не помню :) спасибо:)))
|
|||
35
Олеся999
30.03.15
✎
12:23
|
(33) У меня нету кнопки выгрузить
http://lvkr.ru/f/nqn1dn/640.jpg |
|||
36
Cube
30.03.15
✎
12:26
|
(35) Так я предлагаю её написать :))
Просто надо решить сейчас, на сколько автоматизирован должен быть этот обмен. Вариант 1: Это (33). Каждый документ отдельно. Очень прост в реализации. Вариант 2: Одной большой кнопкой "Выгрузить всё". Сложнее. |
|||
37
GreyK
30.03.15
✎
12:31
|
(0) Сообщи хотя-бы на каких движках базы.
|
|||
38
Олеся999
30.03.15
✎
12:32
|
Нужно Доки из Самописной в Бухню короче так чтобы было понятнее ))http://lvkr.ru/f/XQYGZt/800.jpg
|
|||
39
Cube
30.03.15
✎
12:32
|
(37) На снеговиках.
|
|||
40
Олеся999
30.03.15
✎
12:33
|
(39) Хахах (37) 8.3
|
|||
41
Олеся999
30.03.15
✎
12:33
|
(36) Удобнее по одному я думаю
|
|||
42
ДенисЧ
30.03.15
✎
12:34
|
За 5 часов уже можно было бы набросать первый вариант правил обмена...
И уже сидеть и отлаживать... |
|||
43
Cube
30.03.15
✎
12:34
|
(38) Давай по порядку. Номенклатура в БП откуда возьмется? Если в БП нет номенклатуры с тем артикулом, что ты выгружаешь, что должно произойти?
|
|||
44
GreyK
30.03.15
✎
12:35
|
(40) Тогда КД удобнее.
|
|||
45
Олеся999
30.03.15
✎
12:40
|
(43) Получается что (Артикул в самописной)=(Номенклатура в Бухне)
|
|||
46
DrShad
30.03.15
✎
12:41
|
(45) это уже даже не *рукалицо*, а круче
|
|||
47
Cube
30.03.15
✎
12:42
|
(46) Да погоди ты, фотка ж есть)))
|
|||
48
Cube
30.03.15
✎
12:42
|
(45) Перечитай (43) ещё на раз :)
|
|||
49
Олеся999
30.03.15
✎
12:44
|
(43) Ну наверно пустые строки тогда будут
|
|||
50
DrShad
30.03.15
✎
12:45
|
(47) а вот ее то я и не посмотрел, сенкс
|
|||
51
DrShad
30.03.15
✎
12:46
|
+(50) и чего ее потянуло в проги да еще и на обмены...
|
|||
52
Cube
30.03.15
✎
12:46
|
(49) И это всех устроит? Что-то я сильно сомневаюсь...
|
|||
53
Cube
30.03.15
✎
12:49
|
(51) Ну видишь, брюнетка - тянется к знаниям :)))
Традиции мисты чтет - фотки в профиль выкладывает. Надо помогать) |
|||
54
Олеся999
30.03.15
✎
12:49
|
Там получается так как пример
Самописная : Номенклатура= ДатчикТемпературы DF667S Артикул=ДатчикТемпературы БП : Номенклатура= ДатчикТемпературы Артикул=000634 Получается связь будет Артикул->Номенклатура |
|||
55
Cube
30.03.15
✎
12:52
|
(54) Всё чудесатее и чудесатее... :)
А почему в самописной конфе в поле "Артикул" совсем не артикул? Назвала бы этот реквизит "Наименование в БП" или что-то вроде... |
|||
56
Олеся999
30.03.15
✎
12:55
|
(55) Да он не использовался вообще и ни кто его не заполнял вот и решила бод Бухг Наименования заделать
|
|||
57
Cube
30.03.15
✎
12:59
|
Ладно, давай начнем с выгрузки.
Делай в самописке кнопку (в списке документов или в форме документа - решай сама), к которой прикручивай примерно такой код: Процедура ВыгрузитьМатериалыВФайл() СохраняемыеЗначения = Новый структура; СохраняемыеЗначения.Вставить("ФирмаКод", Фирма.Код); СохраняемыеЗначения.Вставить("КонтрагентКод", Контрагент.Код); СохраняемыеЗначения.Вставить("КонтрагентНаименование", Контрагент.Наименование); СохраняемыеЗначения.Вставить("ИнфНакладной", ИнфНакладной); СохраняемыеЗначения.Вставить("ИнфСчета", ИнфСчета); СохраняемыеЗначения.Вставить("ДатаНакладной", ДатаНакладной); СохраняемыеЗначения.Вставить("ДатаСчета", ДатаСчета); ТаблицаМатериалов = Новый ТаблицаЗначений; ТаблицаМатериалов.Колонки.Добавить("Артикул"); ТаблицаМатериалов.Колонки.Добавить("Количество"); ТаблицаМатериалов.Колонки.Добавить("Цена"); Для Каждого СтрокаДокумента Из ТаблЧасть Цикл НоваяСтрока = ТаблицаМатериалов.Добавить(); НоваяСтрока.Артикул = СтрокаДокумента.Артикул; НоваяСтрока.Количество = СтрокаДокумента.Количество; НоваяСтрока.Цена = СтрокаДокумента.Цена; КонецЦикла; СохраняемыеЗначения.Вставить("ТаблицаМатериалов", ТаблицаМатериалов); ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", СохраняемыеЗначения); Предупреждение("Готово"); КонецПроцедуры //ВыгрузитьМатериалыВФайл() |
|||
58
Олеся999
30.03.15
✎
13:05
|
(57) Это в самописной
ПриходнойНакладной ФормаСписка правильно ? |
|||
59
DrShad
30.03.15
✎
13:06
|
можно и в списке, только ссылку правильно обработать
|
|||
60
Cube
30.03.15
✎
13:07
|
+(57) Ну а дальше в БП считывай эти данные и обрабатывай.
ДанныеОбмена = ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); Для Каждого СтрокаТаблицы Из ДанныеОбмена.ТаблицаМатериалов Цикл Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТаблицы.Артикул); |
|||
61
Cube
30.03.15
✎
13:08
|
(58) Лчше всё же в форме документа, чтобы визуально контролировать правильность переноса.
|
|||
62
Олеся999
30.03.15
✎
13:14
|
(61) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(716,46)}: Переменная не определена (Фирма)
СохраняемыеЗначения.Вставить("ФирмаКод", <<?>>Фирма.Код); (Проверка: Сервер) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(717,51)}: Переменная не определена (Контрагент) СохраняемыеЗначения.Вставить("КонтрагентКод", <<?>>Контрагент.Код); (Проверка: Сервер) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(718,60)}: Переменная не определена (Контрагент) СохраняемыеЗначения.Вставить("КонтрагентНаименование", <<?>>Контрагент.Наименование); (Проверка: Сервер) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(719,49)}: Переменная не определена (ИнфНакладной) СохраняемыеЗначения.Вставить("ИнфНакладной", <<?>>ИнфНакладной); (Проверка: Сервер) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(720,46)}: Переменная не определена (ИнфСчета) СохраняемыеЗначения.Вставить("ИнфСчета", <<?>>ИнфСчета); (Проверка: Сервер) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(721,51)}: Переменная не определена (ДатаНакладной) СохраняемыеЗначения.Вставить("ДатаНакладной", <<?>>ДатаНакладной); (Проверка: Сервер) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(722,47)}: Переменная не определена (ДатаСчета) СохраняемыеЗначения.Вставить("ДатаСчета", <<?>>ДатаСчета); (Проверка: Сервер) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(727,36)}: Переменная не определена (ТаблЧасть) Для Каждого СтрокаДокумента Из <<?>>ТаблЧасть Цикл (Проверка: Сервер) {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(735,5)}: Процедура или функция с указанным именем не определена (Предупреждение) <<?>>Предупреждение("Готово"); (Проверка: Сервер) На формеДокумента Сделала Вывалились ошибки |
|||
63
DrShad
30.03.15
✎
13:16
|
(61) уверен что брюнетка?
|
|||
64
Олеся999
30.03.15
✎
13:17
|
(62) Туплю Все исправила :)
|
|||
65
Cube
30.03.15
✎
13:19
|
(63) Да какая разница?)) Фотки качественные, так что, помощь в радость :)
|
|||
66
DrShad
30.03.15
✎
13:22
|
(65) везет же девушкам, у меня вот тоже фотка качественная, а за меня не пишут :)
|
|||
67
Cube
30.03.15
✎
13:24
|
(66) За-то у нас есть чем мериться)))
|
|||
68
Олеся999
30.03.15
✎
13:25
|
(60) А как преобразовывать ?)))))
|
|||
69
Олеся999
30.03.15
✎
13:25
|
{Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1480)}: Ошибка при вызове метода контекста (ЗначениеИзФайла)
ДанныеОбмена = ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); по причине: Ошибка преобразования |
|||
70
DrShad
30.03.15
✎
13:25
|
(67) да ладно!? все равно ведь 22 и ни ни
|
|||
71
Cube
30.03.15
✎
13:26
|
(68) (69) Ну, показывай код, чего ты там навыгружала...
Выгружать надо данные примитивных типов (Строка, дата, число, булево), а всякие ссылочные типы выкинь из файла. |
|||
72
Cube
30.03.15
✎
13:28
|
(70) Ну, когда по длине одинаковые, начинают толщину там сравнивать))))
Что-то мы оффтопим... :) |
|||
73
Олеся999
30.03.15
✎
13:28
|
Самописная ПриходнаяНакладная ФормаДокумента
&НаКлиенте Процедура ВыгрузкаДанных(Команда) ВыгрузитьМатериалыВФайл() КонецПроцедуры Процедура ВыгрузитьМатериалыВФайл() СохраняемыеЗначения = Новый структура; СохраняемыеЗначения.Вставить("ФирмаКод", Объект.Фирма.Код); СохраняемыеЗначения.Вставить("КонтрагентКод", Объект.Контрагент.Код); СохраняемыеЗначения.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); СохраняемыеЗначения.Вставить("ИнфНакладной", Объект.ИнфНакладной); СохраняемыеЗначения.Вставить("ИнфСчета", Объект.ИнфСчета); СохраняемыеЗначения.Вставить("ДатаНакладной", Объект.ДатаНакладной); СохраняемыеЗначения.Вставить("ДатаСчета", Объект.ДатаСчета); ТаблицаМатериалов = Новый ТаблицаЗначений; ТаблицаМатериалов.Колонки.Добавить("Артикул"); ТаблицаМатериалов.Колонки.Добавить("Количество"); ТаблицаМатериалов.Колонки.Добавить("Цена"); Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл НоваяСтрока = ТаблицаМатериалов.Добавить(); НоваяСтрока.Артикул = СтрокаДокумента.Артикул; НоваяСтрока.Количество = СтрокаДокумента.Количество; НоваяСтрока.Цена = СтрокаДокумента.Цена; КонецЦикла; СохраняемыеЗначения.Вставить("ТаблицаМатериалов", ТаблицаМатериалов); ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", СохраняемыеЗначения); //Предупреждение("Готово"); КонецПроцедуры |
|||
74
DrShad
30.03.15
✎
13:29
|
(72) апаем
|
|||
75
Cube
30.03.15
✎
13:29
|
(73) Объект.ИнфНакладной и Объект.ИнфСчета какой тип имеют?
|
|||
76
Олеся999
30.03.15
✎
13:30
|
В БП Поступление товаров и услуг ФормаДокументаТовары
&НаСервере Процедура СоединениеСкладНаСервере() ДанныеОбмена = ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); Для Каждого СтрокаТаблицы Из ДанныеОбмена.ТаблицаМатериалов Цикл Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТаблицы.Артикул); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура СоединениеСклад(Команда) СоединениеСкладНаСервере(); КонецПроцедуры |
|||
77
Олеся999
30.03.15
✎
13:31
|
(75) Строка 60
|
|||
78
Cube
30.03.15
✎
13:35
|
(77) Хм... А СтрокаДокумента.Артикул тоже строка?
|
|||
79
Олеся999
30.03.15
✎
13:40
|
(78) Строка 50
|
|||
80
Cube
30.03.15
✎
13:40
|
И проверь КаталогВременныхФайлов() в самописке и в БП - один и тот же путь или нет
|
|||
81
Cube
30.03.15
✎
13:40
|
У меня рабочий день заканчивается через 20 минут :)
|
|||
82
Cube
30.03.15
✎
13:42
|
Попробуй в процедуре ВыгрузитьМатериалыВФайл() закомментировать всё, оставив только строки:
СохраняемыеЗначения = Новый структура; //закомментировано ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", СохраняемыеЗначения); |
|||
83
Олеся999
30.03.15
✎
13:43
|
||||
84
Cube
30.03.15
✎
13:43
|
+(82) И потом раскомментируй по одной строке.
|
|||
85
Azverin
30.03.15
✎
13:44
|
(81) не переживай, мы проводим до дома)
|
|||
86
Cube
30.03.15
✎
13:44
|
(85) )))
|
|||
87
DrShad
30.03.15
✎
13:45
|
(85) в этом плане я пас :) и так уже четверо детей
|
|||
88
Cube
30.03.15
✎
13:46
|
(87) Красавчик. У меня только двое... :(
|
|||
89
Azverin
30.03.15
✎
13:47
|
(87) (88) красавчики. у меня только будет)
|
|||
90
Олеся999
30.03.15
✎
13:47
|
(82) {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1480)}: Ошибка при вызове метода контекста (ЗначениеИзФайла)
ДанныеОбмена = ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); по причине: Ошибка преобразования Также как и было ) |
|||
91
Cube
30.03.15
✎
13:50
|
(90) Хм... Неужели ему структура не нравится?...
А так? СохраняемыеЗначения = Новый Соответствие; //закомментировано ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", СохраняемыеЗначения); |
|||
92
Олеся999
30.03.15
✎
13:53
|
(91) Тоже самое
|
|||
93
Cube
30.03.15
✎
13:54
|
(92) КаталогВременныхФайлов() одинаковый в обоих базах?
|
|||
94
Олеся999
30.03.15
✎
14:00
|
(93) А где можно посмотреть ...дело в том что Самописная база Локальная БП на серваке
|
|||
95
Олеся999
30.03.15
✎
14:01
|
Ну вообще рабочие базы Самописная и БП обе на серваках
я просто на Самописной в тестовой версии делаю |
|||
96
Cube
30.03.15
✎
14:08
|
(95) С мобильника пишу))
Ты формируй структуру &НаСервере и возвращай на клиент, а уж &НаКлиенте делай ЗначениеВФайл() |
|||
97
Олеся999
30.03.15
✎
14:10
|
(91) Делаю обе на серваке ...
и {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1481)}: Поле объекта не обнаружено (ТаблицаМатериалов) Для Каждого СтрокаТаблицы Из ДанныеОбмена.ТаблицаМатериалов Цикл |
|||
98
Cube
30.03.15
✎
14:11
|
В БП аналогично:
ЗнпчениеИзфайла() делай &НаКлиенте, а дальше передавай ДанныеОбмена на сервер и там обрабатывай |
|||
99
Cube
30.03.15
✎
14:12
|
(97) так тыж всё закоментировала. Раскомментируй.
|
|||
100
Cube
30.03.15
✎
14:12
|
Сотка!
|
|||
101
Олеся999
30.03.15
✎
14:16
|
||||
102
Олеся999
30.03.15
✎
14:17
|
&НаСервере
Процедура СоединениеСкладНаСервере() ДанныеОбмена = ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); Для Каждого СтрокаТаблицы Из ДанныеОбмена.ТаблицаМатериалов Цикл Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТаблицы.Артикул); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура СоединениеСклад(Команда) СоединениеСкладНаСервере(); КонецПроцедуры СоединениеСклад Жму ниче не происходит |
|||
103
Олеся999
30.03.15
✎
14:18
|
(99) Я все раскоментировала
|
|||
104
Cube
30.03.15
✎
14:24
|
(102) Перечитай (98)
|
|||
105
Олеся999
30.03.15
✎
14:37
|
БП :
Процедура СоединениеСклад(Команда) ДанныеОбмена = ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); Для Каждого СтрокаТаблицы Из ДанныеОбмена.ТаблицаМатериалов Цикл Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТаблицы.Артикул); КонецЦикла; КонецПроцедуры Самописная: &НаКлиенте Процедура ВыгрузкаДанных(Команда) ВыгрузитьМатериалыВФайл() КонецПроцедуры Процедура ВыгрузитьМатериалыВФайл() СохраняемыеЗначения = Новый структура; СохраняемыеЗначения.Вставить("ФирмаКод", Объект.Фирма.Код); СохраняемыеЗначения.Вставить("КонтрагентКод", Объект.Контрагент.Код); СохраняемыеЗначения.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); СохраняемыеЗначения.Вставить("ИнфНакладной", Объект.ИнфНакладной); СохраняемыеЗначения.Вставить("ИнфСчета", Объект.ИнфСчета); СохраняемыеЗначения.Вставить("ДатаНакладной", Объект.ДатаНакладной); СохраняемыеЗначения.Вставить("ДатаСчета", Объект.ДатаСчета); ТаблицаМатериалов = Новый ТаблицаЗначений; ТаблицаМатериалов.Колонки.Добавить("Артикул"); ТаблицаМатериалов.Колонки.Добавить("Количество"); ТаблицаМатериалов.Колонки.Добавить("Цена"); Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл НоваяСтрока = ТаблицаМатериалов.Добавить(); НоваяСтрока.Артикул = СтрокаДокумента.Артикул; НоваяСтрока.Количество = СтрокаДокумента.Количество; НоваяСтрока.Цена = СтрокаДокумента.Цена; КонецЦикла; СохраняемыеЗначения.Вставить("ТаблицаМатериалов", ТаблицаМатериалов); ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", СохраняемыеЗначения); //Предупреждение("Готово"); КонецПроцедуры Так вот ? :) |
|||
106
Cube
30.03.15
✎
14:39
|
(105) Эх... Через минут 20 доберусь до компа - покажу как надо))
|
|||
107
Cube
30.03.15
✎
15:46
|
Самописная:
&НаКлиенте Процедура ВыгрузкаДанных(Команда) ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", ПолучитьДанныеОбмена()); КонецПроцедуры Функция ПолучитьДанныеОбмена() ДанныеОбмена = Новый Структура; ДанныеОбмена.Вставить("ФирмаКод", Объект.Фирма.Код); ДанныеОбмена.Вставить("КонтрагентКод", Объект.Контрагент.Код); ДанныеОбмена.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); ДанныеОбмена.Вставить("ИнфНакладной", Объект.ИнфНакладной); ДанныеОбмена.Вставить("ИнфСчета", Объект.ИнфСчета); ДанныеОбмена.Вставить("ДатаНакладной", Объект.ДатаНакладной); ДанныеОбмена.Вставить("ДатаСчета", Объект.ДатаСчета); ТаблицаМатериалов = Новый ТаблицаЗначений; ТаблицаМатериалов.Колонки.Добавить("Артикул"); ТаблицаМатериалов.Колонки.Добавить("Количество"); ТаблицаМатериалов.Колонки.Добавить("Цена"); Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл НоваяСтрока = ТаблицаМатериалов.Добавить(); НоваяСтрока.Артикул = СтрокаДокумента.Артикул; НоваяСтрока.Количество = СтрокаДокумента.Количество; НоваяСтрока.Цена = СтрокаДокумента.Цена; КонецЦикла; ДанныеОбмена.Вставить("ТаблицаМатериалов", ТаблицаМатериалов); Возврат ДанныеОбмена; КонецФункции БП: &НаКлиенте Процедура СоединениеСклад(Команда) ДанныеОбмена = ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); СоединениеСкладНаСервере(ДанныеОбмена); КонецПроцедуры &НаСервере Процедура СоединениеСкладНаСервере(ДанныеОбмена) Для Каждого СтрокаТаблицы Из ДанныеОбмена.ТаблицаМатериалов Цикл Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТаблицы.Артикул); КонецЦикла; КонецПроцедуры |
|||
108
Cube
30.03.15
✎
15:48
|
Если возникнут проблемы с передачей таблицы значений с сервера на клиент или обратно, то:
Самописная: &НаКлиенте Процедура ВыгрузкаДанных(Команда) ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", ПолучитьДанныеОбмена()); КонецПроцедуры &НаСерере Функция ПолучитьДанныеОбмена() ДанныеОбмена = Новый Структура; ДанныеОбмена.Вставить("ФирмаКод", Объект.Фирма.Код); ДанныеОбмена.Вставить("КонтрагентКод", Объект.Контрагент.Код); ДанныеОбмена.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); ДанныеОбмена.Вставить("ИнфНакладной", Объект.ИнфНакладной); ДанныеОбмена.Вставить("ИнфСчета", Объект.ИнфСчета); ДанныеОбмена.Вставить("ДатаНакладной", Объект.ДатаНакладной); ДанныеОбмена.Вставить("ДатаСчета", Объект.ДатаСчета); ТаблицаМатериалов = Новый ТаблицаЗначений; ТаблицаМатериалов.Колонки.Добавить("Артикул"); ТаблицаМатериалов.Колонки.Добавить("Количество"); ТаблицаМатериалов.Колонки.Добавить("Цена"); Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл НоваяСтрока = ТаблицаМатериалов.Добавить(); НоваяСтрока.Артикул = СтрокаДокумента.Артикул; НоваяСтрока.Количество = СтрокаДокумента.Количество; НоваяСтрока.Цена = СтрокаДокумента.Цена; КонецЦикла; ДанныеОбмена.Вставить("ТаблицаМатериалов", ТаблицаМатериалов); Возврат ЗначениеВСтрокуВнутр(ДанныеОбмена); КонецФункции БП: &НаКлиенте Процедура СоединениеСклад(Команда) ДанныеОбмена = ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); СоединениеСкладНаСервере(ДанныеОбмена); КонецПроцедуры &НаСервере Процедура СоединениеСкладНаСервере(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); Для Каждого СтрокаТаблицы Из ДанныеОбмена.ТаблицаМатериалов Цикл Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТаблицы.Артикул); КонецЦикла; КонецПроцедуры |
|||
109
Cube
30.03.15
✎
15:49
|
(107) Пропустил &НаСерере перед функцией ПолучитьДанныеОбмена()
|
|||
110
Олеся999
30.03.15
✎
15:57
|
(107) в БП
{Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1479,20)}: Процедура или функция с указанным именем не определена (ЗначениеИзФайла) ДанныеОбмена = <<?>>ЗначениеИзФайла(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); (Проверка: Тонкий клиент) |
|||
111
Олеся999
30.03.15
✎
15:58
|
в самописной тоже
<<?>>ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", ПолучитьДанныеОбмена()); (Проверка: Тонкий клиент) |
|||
112
alle68
30.03.15
✎
16:12
|
Замени на ЗаписьТекста/ЧтениеТекста.
|
|||
113
Олеся999
30.03.15
✎
16:14
|
Исправила на Объект.ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", ПолучитьДанныеОбмена()); (Проверка: Тонкий клиент)
В итоге вывалило : {Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(681)}: Ошибка при вызове метода контекста (ПолучитьДанныеОбмена) Объект.ЗначениеВФайл(КаталогВременныхФайлов() + "ДанныеОбмена.txt", ПолучитьДанныеОбмена()); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка преобразования данных XDTO: НачалоСвойства: Value Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable' |
|||
114
Cube
30.03.15
✎
16:17
|
(110) (111) Ну, блин...
Тогда так: Самописная: &НаКлиенте Процедура ВыгрузкаДанных(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.УстановитьТекст(ПолучитьДанныеОбмена()); ТекстовыйДокумент.Записать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); КонецПроцедуры &НаСерере Функция ПолучитьДанныеОбмена() ДанныеОбмена = Новый Структура; ДанныеОбмена.Вставить("ФирмаКод", Объект.Фирма.Код); ДанныеОбмена.Вставить("КонтрагентКод", Объект.Контрагент.Код); ДанныеОбмена.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); ДанныеОбмена.Вставить("ИнфНакладной", Объект.ИнфНакладной); ДанныеОбмена.Вставить("ИнфСчета", Объект.ИнфСчета); ДанныеОбмена.Вставить("ДатаНакладной", Объект.ДатаНакладной); ДанныеОбмена.Вставить("ДатаСчета", Объект.ДатаСчета); ТаблицаМатериалов = Новый ТаблицаЗначений; ТаблицаМатериалов.Колонки.Добавить("Артикул"); ТаблицаМатериалов.Колонки.Добавить("Количество"); ТаблицаМатериалов.Колонки.Добавить("Цена"); Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл НоваяСтрока = ТаблицаМатериалов.Добавить(); НоваяСтрока.Артикул = СтрокаДокумента.Артикул; НоваяСтрока.Количество = СтрокаДокумента.Количество; НоваяСтрока.Цена = СтрокаДокумента.Цена; КонецЦикла; ДанныеОбмена.Вставить("ТаблицаМатериалов", ТаблицаМатериалов); Возврат ЗначениеВСтрокуВнутр(ДанныеОбмена); КонецФункции БП: &НаКлиенте Процедура СоединениеСклад(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); СоединениеСкладНаСервере(ТекстовыйДокумент.ПолучитьТекст()); КонецПроцедуры &НаСервере Процедура СоединениеСкладНаСервере(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); Для Каждого СтрокаТаблицы Из ДанныеОбмена.ТаблицаМатериалов Цикл Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТаблицы.Артикул); КонецЦикла; КонецПроцедуры |
|||
115
Олеся999
30.03.15
✎
16:22
|
(114) )))))))))
{Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(682,39)}: Процедура или функция с указанным именем не определена (ПолучитьДанныеОбмена) ТекстовыйДокумент.УстановитьТекст(<<?>>ПолучитьДанныеОбмена()); (Проверка: Тонкий клиент) |
|||
116
Cube
30.03.15
✎
16:42
|
(115) Ну, значит, ты не всё скопировала или допустила ошибку в имени функции.
|
|||
117
Олеся999
30.03.15
✎
16:42
|
Поставила в кавычки ТекстовыйДокумент.УстановитьТекст("ПолучитьДанныеОбмена()");
Вот так вроде съела... Дальше запустила БП поступление товаров и услуг и выдала такую штучку ... {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1488)}: Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); по причине: Ошибка преобразования по причине: Ошибка формата потока |
|||
118
Cube
30.03.15
✎
16:44
|
(117) "Поставила в кавычки ТекстовыйДокумент.УстановитьТекст("ПолучитьДанныеОбмена()"); "
Сорти быстро, пока никто не увидел! :))) Ты что, копировать не умеешь?)) |
|||
119
Славен
30.03.15
✎
16:44
|
(117) ахах, где мой попкорн
|
|||
120
Олеся999
30.03.15
✎
16:46
|
(118) Ну копирую все 1 в 1
и ТекстовыйДокумент.УстановитьТекст(<<?>>ПолучитьДанныеОбмена()); (Проверка: Тонкий клиент) |
|||
121
Cube
30.03.15
✎
16:47
|
(120) Вываливай свой код из самопски)
|
|||
122
Cube
30.03.15
✎
16:47
|
(119) )))
|
|||
123
Олеся999
30.03.15
✎
16:48
|
&НаКлиенте
Процедура ТаблЧастьШтрихКодПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.ТаблЧасть.ТекущиеДанные; СтрокаТабличнойЧасти.Номенклатура = РаботаСоСправочниками.УстанавливаемаяНоменклатура(СтрокаТабличнойЧасти.ШтрихКод); СтрокаТабличнойЧасти.ЕдИзм = РаботаСоСправочниками.УстановкаЕдИзм(СтрокаТабличнойЧасти.Номенклатура); Объект.ИтоговаяСумма = Объект.ТаблЧасть.Итог("Сумма"); СтрокаТабличнойЧасти.Артикул = РаботаСоСправочниками.УстановкаАртикула(СтрокаТабличнойЧасти.Номенклатура); КонецПроцедуры &НаКлиенте Процедура ТаблЧастьНоменклатураПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.ТаблЧасть.ТекущиеДанные; СтрокаТабличнойЧасти.ШтрихКод = РаботаСоСправочниками.УстанавливаемыйШтрихКод(СтрокаТабличнойЧасти.Номенклатура); СтрокаТабличнойЧасти.ЕдИзм = РаботаСоСправочниками.УстановкаЕдИзм(СтрокаТабличнойЧасти.Номенклатура); СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ПолучитьТекущуюЦену(СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены, Объект.Дата, Объект.Валюта); СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; СтрокаТабличнойЧасти.Артикул = РаботаСоСправочниками.УстановкаАртикула(СтрокаТабличнойЧасти.Номенклатура); СтрокаТабличнойЧасти.ОстатокНаСкладе = ОстатокНаСкладе(СтрокаТабличнойЧасти.Номенклатура, Объект.Склад); Объект.ИтоговаяСумма = Объект.ТаблЧасть.Итог("Сумма"); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ТекущийСотрудник = Справочники.Сотрудники.НайтиПоНаименованию(СокрЛП(ИмяПользователя())); // Заполняем валюту по умолчанию Если ПустаяСтрока( Объект.Валюта) Тогда Объект.Валюта = Константы.ФирмаПоУмолчанию.Получить().ВалютаПоУмолчанию; Объект.КурсВалюты = РаботаСоСправочниками.ТекущийКурсВалюты(Объект.Валюта, Объект.Дата); КонецЕсли; // Заполняем склад по умолчанию Если ПустаяСтрока(Объект.Склад) Тогда Объект.Менеджер = ТекущийСотрудник; Объект.Склад = ТекущийСотрудник.СкладПоУмолчанию; КонецЕсли; Если ПустаяСтрока(Объект.Менеджер) Тогда Объект.Менеджер = ТекущийСотрудник; КонецЕсли; Если ПустаяСтрока(Объект.ВидЦены) Тогда Объект.ВидЦены = Справочники.ВидЦены.НайтиПоНаименованию("Закупочная"); КонецЕсли; Если ПустаяСтрока(Объект.Фирма) Тогда Объект.Фирма = Константы.ФирмаПоУмолчанию.Получить(); КонецЕсли; Объект.ОбновитьЦены = Ложь; КонецПроцедуры &НаКлиенте Процедура ТаблЧастьКоличествоПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.ТаблЧасть.ТекущиеДанные; СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена; Объект.ИтоговаяСумма = Объект.ТаблЧасть.Итог("Сумма"); КонецПроцедуры &НаКлиенте Процедура ТаблЧастьЦенаПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.ТаблЧасть.ТекущиеДанные; СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена; Объект.ИтоговаяСумма = Объект.ТаблЧасть.Итог("Сумма"); КонецПроцедуры &НаКлиенте Процедура НоваяСтрока(Команда) СтрокаТабличнойЧасти = Элементы.ТаблЧасть.ТекущиеДанные; ТекущийЭлемент = Элементы.ТекущийШтрихКод; КонецПроцедуры &НаКлиенте Процедура ТекущийШтрихКодПриИзменении(Элемент) НайтиПоШтрихКоду(); ТекущийЭлемент = Элементы.ТекущийШтрихКод; КонецПроцедуры &НаСервере Процедура НайтипоШтрихКоду() Выборка = Объект.ТаблЧасть; Сч = 0; Для Каждого Строч из Выборка Цикл Если Строч.ШтрихКод = Объект.ТекущийШтрихКод Тогда Сч = 1; Строч.Количество = Строч.Количество+1; Прервать; КонецЕсли; КонецЦикла; Если Сч = 0 тогда Номенклатура = ""; Номенклатура = РаботаСоСправочниками.УстанавливаемаяНоменклатура(Объект.ТекущийШтрихКод); Если Номенклатура = Неопределено тогда Сообщить("Товар по штрих-коду не найден") Иначе НовСтрока = Объект.ТаблЧасть.Добавить(); НовСтрока.Номенклатура = Номенклатура; НовСтрока.ШтрихКод = Объект.ТекущийШтрихКод; НовСтрока.Количество = 1; НовСтрока.Цена = РаботаСоСправочниками.ПолучитьТекущуюЦену(Номенклатура, Объект.ВидЦены, Объект.Дата, Объект.Валюта); НовСтрока.Сумма = НовСтрока.Цена * НовСтрока.Количество; НовСтрока.ЕдИзм = Номенклатура.ЕдиницаИзмерения; НовСтрока.ОстатокНаСкладе = ОстатокНаСкладе(Номенклатура, Объект.Склад); НовСтрока.Артикул = Номенклатура.Артикул; //арт КонецЕсли; КонецЕсли; Объект.ИтоговаяСумма = Объект.ТаблЧасть.Итог("Сумма"); Объект.ТекущийШтрихКод = ""; КонецПроцедуры Функция ОстатокНаСкладе (Номенклатура, Склад) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиТоваровОстатки.Склад, | ОстаткиТоваровОстатки.Номенклатура, | ОстаткиТоваровОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ОстаткиТоваров.Остатки(&Дата) КАК ОстаткиТоваровОстатки |ГДЕ | ОстаткиТоваровОстатки.Склад = &Склад | И ОстаткиТоваровОстатки.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("Склад", Склад); Если Объект.Дата = НачалоДня(ТекущаяДата()) И ПустаяСтрока(Объект.Номер) Тогда Запрос.УстановитьПараметр("Дата", ТекущаяДата()); Иначе Запрос.УстановитьПараметр("Дата", Объект.Дата); КонецЕсли; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); ОстатокНоменклатуры = 0; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОстатокНоменклатуры = ВыборкаДетальныеЗаписи.КоличествоОстаток; КонецЦикла; Возврат ОстатокНоменклатуры; КонецФункции //&НаКлиенте // Процедура СкладПриИзменении(Элемент) // МеняемСклад(); // КонецПроцедуры // // &НаСервере // // Процедура МеняемСклад() // Для Каждого ТекСтрокаТаблЧасть Из Объект.ТаблЧасть Цикл // Номенклатура = ТекСтрокаТаблЧасть.Номенклатура; // ТекСтрокаТаблЧасть.ОстатокНаСкладе = ОстатокНаСкладе (Номенклатура, Объект.Склад); // // КонецЦикла; // // КонецПроцедуры &НаКлиенте Процедура ТаблЧастьПослеУдаления(Элемент) Объект.ИтоговаяСумма = Объект.ТаблЧасть.Итог("Сумма"); КонецПроцедуры // отрабатываем подбор &НаКлиенте Процедура Подбор(Команда) ПараметрыФормы = Новый Структура ("ЗакрыватьПриВыборе", Ложь); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.ТаблЧасть); КонецПроцедуры // отрабатываем подбор &НаКлиенте Процедура ТаблЧастьОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Сч = проверкаНаличия(ВыбранноеЗначение); Если Сч = 0 Тогда Элементы.ТаблЧасть.ДобавитьСтроку(); Элементы.ТаблЧасть.ТекущиеДанные.Номенклатура = ВыбранноеЗначение; ЗаполнитьДанные(Элементы.ТаблЧасть.ТекущиеДанные.Номенклатура, Элементы.ТаблЧасть.ТекущиеДанные.НомерСтроки); КонецЕсли КонецПроцедуры // отрабатываем подбор &НаСервере Функция проверкаНаличия(ВыбранноеЗначение) Сч = 0; Для каждого Строч Из Объект.ТаблЧасть Цикл Если Строч.Номенклатура = ВыбранноеЗначение тогда Строч.Количество = Строч.Количество + 1;// Если товар уже есть - то просто приплюсуем его; Строч.Сумма = Строч.Цена*Строч.Количество; Объект.ИтоговаяСумма = Объект.ТаблЧасть.Итог("Сумма"); Сч = 1; КонецЕсли; КонецЦикла; Возврат Сч; КонецФункции // отрабатываем подбор &НаСервере Процедура ЗаполнитьДанные(товар, строка) Для каждого строч из Объект.ТаблЧасть Цикл Если Строч.НомерСтроки = Строка Тогда Строч.ШтрихКод = Товар.ШтрихКод; Строч.ЕдИзм = Товар.ЕдиницаИзмерения; Строч.Количество = 1; Строч.Цена = РаботаСоСправочниками.ПолучитьТекущуюЦену(Строч.Номенклатура, Объект.ВидЦены, Объект.Дата, Объект.Валюта); //Цена Строч.Сумма = Строч.Цена*Строч.Количество; Строч.ОстатокНаСкладе = ОстатокНаСкладе(Строч.Номенклатура, Объект.Склад); Объект.ИтоговаяСумма = Объект.ТаблЧасть.Итог("Сумма"); КонецЕсли; КонецЦикла; КонецПроцедуры //арт &НаКлиенте Процедура НайтиПоАртикулу(Команда) СтрокаТабличнойЧасти = Элементы.ТаблЧасть.ТекущиеДанные; ТекущийЭлемент = Элементы.ТекущийАртикул; КонецПроцедуры //арт &НаКлиенте Процедура ТекущийАртикулПриИзменении(Элемент) НайтиПоТекущемуАртикулу(); ТекущийЭлемент = Элементы.ТекущийАртикул; КонецПроцедуры //арт &НаСервере Процедура НайтиПоТекущемуАртикулу() Выборка = Объект.ТаблЧасть; Сч = 0; Для Каждого Строч из Выборка Цикл Если Строч.Артикул = Объект.ТекущийАртикул Тогда Сч = 1; Строч.Количество = Строч.Количество+1; Прервать; КонецЕсли; КонецЦикла; Если Сч = 0 тогда Номенклатура = ""; Номенклатура = РаботаСоСправочниками.НайтиПоАртикулу(Объект.ТекущийАртикул); Если Номенклатура = Неопределено тогда Сообщить("Товар по Артикулу не найден") Иначе НовСтрока = Объект.ТаблЧасть.Добавить(); НовСтрока.Номенклатура = Номенклатура; НовСтрока.ШтрихКод = Номенклатура.ШтрихКод; НовСтрока.Количество = 1; НовСтрока.ЕдИзм = Номенклатура.ЕдиницаИзмерения; НовСтрока.ОстатокНаСкладе = ОстатокНаСкладе(Номенклатура, Объект.Склад); НовСтрока.Артикул = РаботаСоСправочниками.НайтиАртикул(Номенклатура); НовСтрока.Цена = РаботаСоСправочниками.ПолучитьТекущуюЦену(Номенклатура, Объект.ВидЦены, Объект.Дата, Объект.Валюта); НовСтрока.Сумма = НовСтрока.Цена * НовСтрока.Количество; КонецЕсли; КонецЕсли; Объект.ТекущийАртикул = ""; КонецПроцедуры &НаКлиенте Процедура ВидЦеныПриИзменении(Элемент) Если РольПользователя("Администратор") = Ложь Тогда Если Строка(Объект.ВидЦены) = "Закупочная" тогда ВидЦены(); Сообщить ("У Вас нет прав выбирать закупочную Цену"); КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервере Функция РольПользователя(Роль) Возврат РольДоступна(Роль); КонецФункции &НаСервере Процедура ВидЦены() ТекущийСотрудник = Справочники.Сотрудники.НайтиПоНаименованию(СокрЛП(ИмяПользователя())); Объект.ВидЦены = ТекущийСотрудник.ВидПродажнойЦены; КонецПроцедуры // пересчитываем в курсах валют &НаКлиенте Процедура ВалютаПриИзменении(Элемент) КурсВалюты() КонецПроцедуры // пересчитываем в курсах валют &НаСервере Процедура КурсВалюты() Валюта=10; //Объект.КурсВалюты = РаботаСоСправочниками.ТекущийКурсВалюты(Объект.Валюта, Объект.Дата); //Для КАЖДОГО Строч ИЗ Объект.ТаблЧасть Цикл // Если Объект.КурсВалюты = 0 Тогда // Сообщить("Для данной валюты, на дату документа не установлен курс!"); // Возврат // КонецЕсли; // // Строч.Цена = Окр(Строч.Цена/Объект.КурсВалюты,6); // Строч.Сумма = Строч.Цена * Строч.Количество; //КонецЦикла; КонецПроцедуры // пересчитываем в курсах валют &НаКлиенте Процедура ВалютаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) // //курсВалюты = РаботаСоСправочниками.ТекущийКурсВалюты(Объект.Валюта, Объект.Дата); //Если КурсВалюты = 0 Тогда // Сообщить("Для данной валюты, на дату документа не установлен курс!"); // Возврат //КонецЕсли; //Для КАЖДОГО Строч ИЗ Объект.ТаблЧасть Цикл // Строч.Цена = Строч.Цена*курсВалюты; //КонецЦикла; КонецПроцедуры //+ найти в таблице &НаКлиенте Процедура НайтиПоШКПриИзменении(Элемент) НайтиВТаб("ШК"); ////+++++ КонецПроцедуры &НаКлиенте Процедура ШтрихТабПриИзменении(Элемент) НайтиВТаб("Штрих"); КонецПроцедуры &НаКлиенте Процедура АртикулТабПриИзменении(Элемент) НайтиВТаб("Арт"); КонецПроцедуры &НаСервере Процедура НайтиВТаб(Инд) Сч = 0; НомерСтроки = 1; Если Инд = "Арт" Тогда АртикулТаб = Объект.АртикулТаб; //================= Пока Сч < Объект.ТаблЧасть.Количество() Цикл Если Объект.ТаблЧасть[Сч].Артикул = АртикулТаб тогда НомерСтроки = Объект.ТаблЧасть[Сч].ИсходныйНомерСтроки; Если НомерСтроки = 0 Тогда НомерСтроки = Объект.ТаблЧасть[Сч].НомерСтроки; КонецЕсли; Прервать КонецЕсли; Сч = Сч+1; КонецЦикла; Объект.АртикулТаб = ""; //================= ИначеЕсли Инд = "Штрих" Тогда ШтрихТаб = Объект.ШтрихТаб; //================= Пока Сч < Объект.ТаблЧасть.Количество() Цикл Если Объект.ТаблЧасть[Сч].ШтрихКод = ШтрихТаб тогда НомерСтроки = Объект.ТаблЧасть[Сч].ИсходныйНомерСтроки; Если НомерСтроки = 0 Тогда НомерСтроки = Объект.ТаблЧасть[Сч].НомерСтроки; КонецЕсли; Прервать КонецЕсли; Сч = Сч+1; КонецЦикла; Объект.ШтрихТаб = ""; //КонецЕсли; // =================== // Гордейчук // ИначеЕсли Инд = "ШК" Тогда НайтиПоШК = Объект.НайтиПоШК; //================= Пока Сч < Объект.ТаблЧасть.Количество() Цикл Если Объект.ТаблЧасть[Сч].ШК= НайтиПоШК тогда НомерСтроки = Объект.ТаблЧасть[Сч].ИсходныйНомерСтроки; Если НомерСтроки = 0 Тогда НомерСтроки = Объект.ТаблЧасть[Сч].НомерСтроки; КонецЕсли; Прервать КонецЕсли; Сч = Сч+1; КонецЦикла; Объект.НайтиПоШК = ""; КонецЕсли; //=================== Элементы.ТаблЧасть.ТекущаяСтрока = НомерСтроки-1; КонецПроцедуры &НаКлиенте Процедура СкладПриИзменении(Элемент) Элементы.ТаблЧастьЯчейка.Видимость = тк_Сервер.ПолучитьРеквизитПоСсылке(Объект.Склад, "ИспользоватьАдресноеХранение"); КонецПроцедуры //&НаКлиенте //Процедура Сгенерировать(Команда) // ТД=Элементы.ТаблЧасть.ТекущиеДанные; // ТС=Элементы.ТаблЧасть.ТекущаяСтрока; // //ТД.ШК=ГенераторЧисел(); // Элементы.ТаблЧасть.ТекущаяСтрока=ТС+1; // // Элементы.ТаблЧасть.ТекущиеДанные.ШК = Объект.ТекстШтрихКода; // ЭтаФорма.Записать(); // ГенераторЧисел(); // //КонецПроцедуры &НаСервере Процедура ГенераторЧисел() Экспорт случайноеЧисло = ""; Сч = 0; КоличествоЦифр = Объект.КоличествоЦифр; ГСЧ = Новый ГенераторСлучайныхЧисел(); ДлинаШтрихКода = 12; Пока Сч < ДлинаШтрихКода Цикл; случайноеЧисло = случайноеЧисло + ГСЧ.СлучайноеЧисло(1,9); Сч = Сч+1; КонецЦикла; случайноеЧисло = случайноеЧисло; Если Объект.ИспользоватьПрефикс = Истина Тогда Префикс = Объект.ПрефиксШтрихКода; ДлинаПрефикса = СтрДлина(Префикс); ДлинаШтрихКода = ДлинаШтрихКода-ДлинаПрефикса; ШтрихКод = Строка(Префикс) + Лев(случайноеЧисло, ДлинаШтрихКода); Объект.ТекстШтрихКода = ШтрихКод + КонтрольныйИсмвол(ШтрихКод); Иначе Префикс = 0; Объект.ТекстШтрихКода = случайноеЧисло + КонтрольныйИсмвол(случайноеЧисло); КонецЕсли; ПоискШтрихКода(); КонецПроцедуры // &НаСервере Функция КонтрольныйИсмвол(ШтрихКод) Экспорт Результат = ""; Сумма = 0; Коэффициент = 1; Индекс = Неопределено; Для Индекс = 1 По 12 Цикл КодСимв = КодСимвола(Штрихкод, Индекс); Сумма = Сумма + Коэффициент * (КодСимв - 48); Коэффициент = 4 - Коэффициент; КонецЦикла; Сумма = (10 - Сумма % 10) % 10; Результат = Символ(Сумма + 48); Возврат Результат; КонецФункции // КонтрольныйСимфол() &НаСервере Функция ПоискШтрихКода() //+Serko 04.08.12 Если Объект.КонтрольнаяЦифра = Истина тогда Если СтрДлина(Объект.ТекстШтрихКода) = 12 Тогда Объект.ТекстШтрихКода = Объект.ТекстШтрихКода + КонтрольныйИсмвол(Объект.ТекстШтрихКода); КонецЕсли; КонецЕсли; //-Serko 04.08.12 Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ШтрихКоды.Ссылка, | ШтрихКоды.Наименование, | ШтрихКоды.Владелец |ИЗ | Справочник.ШтрихКоды КАК ШтрихКоды"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Сч = 0; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВРЕГ(ВыборкаДетальныеЗаписи.Наименование) = ВРЕГ(Объект.ТекстШтрихКода) Тогда Сч = Сч+1; //Если ВыборкаДетальныеЗаписи.Владелец = Объект.Ссылка Тогда // Объект.ШтрихКод = ВыборкаДетальныеЗаписи.Ссылка; //Иначе // //Сообщить("Введеный Штрих-код уже принадлежит товару: " + ВыборкаДетальныеЗаписи.Владелец + // //", и не может быть назначен другому товару." ); // // //Ответ = ДиалоговыеВопросы.ЗадатьВопрос(ВыборкаДетальныеЗаписи.Владелец); // // //Режим = РежимДиалогаВопрос.ДаНет; // //Ответ = Вопрос("Введеный Штрих-код уже принадлежит товару: " + ВыборкаДетальныеЗаписи.Владелец + // //", и не может быть назначен другому товару.", Режим, 0); // //Если Ответ = КодВозвратаДиалога.Нет Тогда // // Прервать; // //Иначе // // Объект.ШтрихКод = ВыборкаДетальныеЗаписи.Ссылка; // // ШтирихКодперем = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); // // ШтирихКодперем.Владелец = Объект.Ссылка; // // ШтирихКодперем.Записать(); // //КонецЕсли // //Владелец = ВыборкаДетальныеЗаписи.Ссылка; // // //КонецЕсли; КонецЕсли; КонецЦикла; Если Сч = 0 тогда НовыйШтрихКод = Справочники.ШтрихКоды.СоздатьЭлемент(); НовыйШтрихКод.Наименование = Объект.ТекстШтрихКода; //НовыйШтрихКод.Владелец = Объект.Ссылка; // НовыйШтрихКод.код = Объект.Наименование; НовыйШтрихКод.Записать(); Объект.ШтрихКод = Справочники.ШтрихКоды.НайтиПоНаименованию(Объект.ТекстШтрихКода); КонецЕсли; //Возврат Владелец КонецФункции &НаКлиенте Процедура ТекстШтрихКодаПриИзменении(Элемент) //ЭтаФорма.Записать(); //Владелец = ПоискШтрихКода(); // //Если Владелец <> Неопределено тогда // //Ответ = ЗадатьВопрос(Владелец); //КонецЕсли; //Если Ответ = КодВозвратаДиалога.Да Тогда // переназначитьШтрихКод(Владелец); // //ИначеЕсли Ответ = КодВозвратаДиалога.Нет тогда // // Объект.ТекстШтрихКода = Объект.ШтрихКод; //КонецЕсли; // //Объект.ПредыдущийШтрихКод = Элемент.ТекстРедактирования; КонецПроцедуры // Отобразим ячейки, Шпаров &НаКлиенте Процедура ПриОткрытии(Отказ) СкладПриИзменении("Открытие"); КонецПроцедуры &НаКлиенте Процедура НайтиПоШК(Команда) СтрокаТабличнойЧасти = Элементы.ТаблЧасть.ТекущиеДанные; ТекущийЭлемент = Элементы.НайтиПоШК1; //+++++ КонецПроцедуры &НаСервере Процедура СгенерироватьНаСервере() ШК = Константы.ШК_Константа.Получить(); Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл ШК = ШК + 1; СтрокаДокумента.ШК = ШК; КонецЦикла; Константы.ШК_Константа.Установить(ШК); КонецПроцедуры &НаКлиенте Процедура Сгенерировать(Команда) СгенерироватьНаСервере(); КонецПроцедуры &НаСервере Процедура Команда1НаСервере() //Для каждого Стр из Объект.ТаблЧасть Цикл // Наименование = Стр.Номенклатура; // Стр.PartNamber = Справочники.ШтрихКоды.НайтиПоРеквизиту("Наименование",Наименование); // ////НаименованиеТх = Стр.НаименованиеТх; ////Стр.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("НаименованиеТх",НаименованиеТх); //КонецЦикла КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) //Команда1НаСервере(); // Фильтр=ОткрытьФормуМодально("Справочник.ШтрихКоды.ФормаВыбора", Новый Структура("Отбор", Новый Структура("Конденсатор-Керам. SMD-C0402-100nF-16V-X7R-10%", Элементы.ТаблЧастьНоменклатура))); Фильтр=ОткрытьФормуМодально("Справочник.ШтрихКоды.ФормаВыбора", Новый Структура("Отбор", Новый Структура("ТаблЧастьНоменклатура", Элементы.ТаблЧастьНоменклатура))); КонецПроцедуры &НаКлиенте Процедура ТаблЧастьPartNamberНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) //Фильтр=ОткрытьФормуМодально("Справочник.ШтрихКоды.ФормаВыбора", Новый Структура("Отбор", Новый Структура("Элементы.ТаблЧастьНоменклатура", Элементы.ТаблЧастьНоменклатура))); //Фильтр=ОткрытьФормуМодально("Справочник.ШтрихКоды.ФормаВыбора", Новый Структура("Отбор", Новый Структура("ТаблЧастьНоменклатура", Элементы.ТаблЧастьНоменклатура))); КонецПроцедуры //================================================================================================================================ //================================================================================================================================ &НаКлиенте Процедура ВыгрузкаДанных(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.УстановитьТекст(ПолучитьДанныеОбмена()); ТекстовыйДокумент.Записать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); КонецПроцедуры &НаСерере Функция ПолучитьДанныеОбмена() ДанныеОбмена = Новый Структура; ДанныеОбмена.Вставить("ФирмаКод", Объект.Фирма.Код); ДанныеОбмена.Вставить("КонтрагентКод", Объект.Контрагент.Код); ДанныеОбмена.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); ДанныеОбмена.Вставить("ИнфНакладной", Объект.ИнфНакладной); ДанныеОбмена.Вставить("ИнфСчета", Объект.ИнфСчета); ДанныеОбмена.Вставить("ДатаНакладной", Объект.ДатаНакладной); ДанныеОбмена.Вставить("ДатаСчета", Объект.ДатаСчета); ТаблицаМатериалов = Новый ТаблицаЗначений; ТаблицаМатериалов.Колонки.Добавить("Артикул"); ТаблицаМатериалов.Колонки.Добавить("Количество"); ТаблицаМатериалов.Колонки.Добавить("Цена"); Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл НоваяСтрока = ТаблицаМатериалов.Добавить(); НоваяСтрока.Артикул = СтрокаДокумента.Артикул; НоваяСтрока.Количество = СтрокаДокумента.Количество; НоваяСтрока.Цена = СтрокаДокумента.Цена; КонецЦикла; ДанныеОбмена.Вставить("ТаблицаМатериалов", ТаблицаМатериалов); Возврат ЗначениеВСтрокуВнутр(ДанныеОбмена); КонецФункции |
|||
124
Олеся999
30.03.15
✎
16:48
|
В конце интересующее нас
|
|||
125
Славен
30.03.15
✎
16:49
|
"&НаСерере" замени на &НаСерВере
|
|||
126
Cube
30.03.15
✎
16:50
|
(125) ))))))
(123) Зачем всё-то?) |
|||
127
Славен
30.03.15
✎
16:50
|
+(125) Это перед ПолучитьДанныеОбмена()
(121) А там бородатый одмин в свитере с оленями |
|||
128
Cube
30.03.15
✎
16:52
|
(127) "А там бородатый одмин в свитере с оленями"
Да не, фотки не гуглятся - значит настоящие))) |
|||
129
Олеся999
30.03.15
✎
16:57
|
Жмакаю Соединение склад а кнопка бездействует :(
|
|||
130
1976vas
30.03.15
✎
17:00
|
А если я сейчас домой уеду - вечером будет продолжение?
|
|||
131
Олеся999
30.03.15
✎
17:00
|
(125) Да я исправила спасиб... проглядела чегота
|
|||
132
Cube
30.03.15
✎
17:01
|
(129) Значит, все работает. Теперь надо дописать код на стороне БП))
|
|||
133
Cube
30.03.15
✎
17:01
|
(130) Я уже дома)
|
|||
134
Олеся999
30.03.15
✎
17:02
|
хах это уже во 2 серии
|
|||
135
1976vas
30.03.15
✎
17:02
|
(133) Я к тому, что закупаться мне или нет по дороге ))
|
|||
136
Олеся999
30.03.15
✎
17:08
|
(132) Там он как то по реквизитам должен распределять ?
|
|||
137
Cube
30.03.15
✎
17:14
|
(136) Сначала перепиши в самописке немного:
&НаСервере Функция ПолучитьДанныеОбмена() ДанныеОбмена = Новый Структура; ДанныеОбмена.Вставить("ФирмаКод", Объект.Фирма.Код); ДанныеОбмена.Вставить("КонтрагентКод", Объект.Контрагент.Код); ДанныеОбмена.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); ДанныеОбмена.Вставить("ИнфНакладной", Объект.ИнфНакладной); ДанныеОбмена.Вставить("ИнфСчета", Объект.ИнфСчета); ДанныеОбмена.Вставить("ДатаНакладной", Объект.ДатаНакладной); ДанныеОбмена.Вставить("ДатаСчета", Объект.ДатаСчета); ТаблицаДанныхОбмена = Новый Массив; СтрокаДанныхОбмена = Новый Структура; Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл СтрокаДанныхОбмена.Вставить("Артикул", СтрокаДокумента.Артикул); СтрокаДанныхОбмена.Вставить("Количество", СтрокаДокумента.Количество); СтрокаДанныхОбмена.Вставить("Цена", СтрокаДокумента.Цена); ТаблицаДанныхОбмена.Добавить(СтрокаДанныхОбмена); КонецЦикла; ДанныеОбмена.Вставить("ТаблицаДанныхОбмена", ТаблицаДанныхОбмена); Возврат ЗначениеВСтрокуВнутр(ДанныеОбмена); КонецФункции |
|||
138
Олеся999
30.03.15
✎
17:18
|
||||
139
Cube
30.03.15
✎
17:21
|
(138) Я ещё не дописал, не торописька!)))
Код для БП примерно такой: &НаКлиенте Процедура СоединениеСклад(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); ДанныеОбмена = ПолучитьДанныеОбмена(ТекстовыйДокумент.ПолучитьТекст()); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДокумента = Объект.Товары.Добавить(); СтрокаДокумента.Номенклатура = СтрокаДанныхОбмена.Номенклатура; СтрокаДокумента.Количество = СтрокаДанныхОбмена.Количество; СтрокаДокумента.Цена = СтрокаДанныхОбмена.Цена; КонецЦикла; КонецПроцедуры &НаСервере Функция ПолучитьДанныеОбмена(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДанныхОбмена.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул)); КонецЦикла; Возврат ДанныеОбмена; КонецФункции |
|||
140
Cube
30.03.15
✎
17:23
|
(139) То есть, смысл такой:
В процедуре ПолучитьДанныеОбмена() ты пробегаешься по структуре, созданной в (137) и дополняешь эту структуру данными, которые тебе потом нужны будут &НаКлиенте для заполнения документа. |
|||
141
Олеся999
30.03.15
✎
17:27
|
(139) Круто))))))))))))))) в Поступления товаров и услуг ТЧ добавляется строка .... а на форму в реквизиты почему то не добавляются ....
|
|||
142
Cube
30.03.15
✎
17:31
|
(141) " а на форму в реквизиты почему то не добавляются"
Что? В ТЧ номенклатура, кол-во и цена заполняются? |
|||
143
Олеся999
30.03.15
✎
17:33
|
(142) Да заполняются :)
|
|||
144
Олеся999
30.03.15
✎
17:38
|
А ну нормально по коду только табл должна заполняться ...
Там нужно просто добавить , номернакладной, НомерСчета , контрагент и.т.д. http://lvkr.ru/f/p6mRCa/1024.jpg Только там писала 10 а там кол-во 10 000 ставит |
|||
145
Cube
30.03.15
✎
17:38
|
(143) Ну а теперь дополняй структуру другими полями:
&НаСервере Функция ПолучитьДанныеОбмена(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); СтрокаДанныхОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоКоду(СтрокаДанныхОбмена.КонтрагентКод)); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДанныхОбмена.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул)); СтрокаДанныхОбмена.Вставить("СтавкаНДС", СтрокаДанныхОбмена.Номенклатура.СтавкаНДС); СтрокаДанныхОбмена.Вставить("Сумма", СтрокаДанныхОбмена.Количество * СтрокаДанныхОбмена.Цена); КонецЦикла; Возврат ДанныеОбмена; КонецФункции |
|||
146
Cube
30.03.15
✎
17:39
|
(144) На скрине кол-во = 10,000. Это 10 штук. Там запятая отделяет целую и дробную части.
|
|||
147
Олеся999
30.03.15
✎
17:41
|
Хорошо Завтра займусь доделаю. А ну формат другой поставлю .... Спасибо Большое за помощь !))))))))))))))))))))))
|
|||
148
Cube
30.03.15
✎
17:41
|
Дальше сама попробуй разобраться. Чтоб хоть что-то почерпуть для себя.
|
|||
149
Cube
30.03.15
✎
17:42
|
(147) Да, пожалуйста))
|
|||
150
Олеся999
30.03.15
✎
17:43
|
Туплю уже маленько с 8 на работе, 12 часов в офисе) щас уже тут заночую ))))
|
|||
151
Cube
30.03.15
✎
17:45
|
(150) Не прибедняйся, я вообще только 4 часа сегодня спал и ничего - на часах почти 22:00, а я тут консультирую)))
|
|||
152
1976vas
30.03.15
✎
18:25
|
Зря печеньки покупал (
|
|||
153
Олеся999
31.03.15
✎
07:53
|
(145) Самописная
&НаКлиенте Процедура ВыгрузкаДанных(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.УстановитьТекст(ПолучитьДанныеОбмена()); ТекстовыйДокумент.Записать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); КонецПроцедуры &НаСервере Функция ПолучитьДанныеОбмена() ДанныеОбмена = Новый Структура; ДанныеОбмена.Вставить("Фирма", Объект.Фирма); ДанныеОбмена.Вставить("КонтрагентИНН", Объект.Контрагент.ИНН); ДанныеОбмена.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); ДанныеОбмена.Вставить("ИнфНакладной", Объект.ИнфНакладной); ДанныеОбмена.Вставить("ИнфСчета", Объект.ИнфСчета); ДанныеОбмена.Вставить("ДатаНакладной", Объект.ДатаНакладной); ДанныеОбмена.Вставить("ДатаСчета", Объект.ДатаСчета); ТаблицаДанныхОбмена = Новый Массив; СтрокаДанныхОбмена = Новый Структура; Для Каждого СтрокаДокумента Из Объект.ТаблЧасть Цикл СтрокаДанныхОбмена.Вставить("Артикул", СтрокаДокумента.Артикул); СтрокаДанныхОбмена.Вставить("Количество", СтрокаДокумента.Количество); СтрокаДанныхОбмена.Вставить("Цена", СтрокаДокумента.Цена); ТаблицаДанныхОбмена.Добавить(СтрокаДанныхОбмена); КонецЦикла; ДанныеОбмена.Вставить("ТаблицаДанныхОбмена", ТаблицаДанныхОбмена); Возврат ЗначениеВСтрокуВнутр(ДанныеОбмена); КонецФункции БП: &НаКлиенте Процедура СоединениеСклад(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); ДанныеОбмена = ПолучитьДанныеОбмена(ТекстовыйДокумент.ПолучитьТекст()); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДокумента = Объект.Товары.Добавить(); СтрокаДокумента.Номенклатура = СтрокаДанныхОбмена.Номенклатура; СтрокаДокумента.Количество = СтрокаДанныхОбмена.Количество; СтрокаДокумента.Цена = СтрокаДанныхОбмена.Цена; КонецЦикла; КонецПроцедуры &НаСервере Функция ПолучитьДанныеОбмена(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); СтрокаДанныхОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоИНН(СтрокаДанныхОбмена.КонтрагентИНН)); СтрокаДанныхОбмена.Вставить("Организации", Справочники.Организации.НайтиПоНаименованию(СтрокаДанныхОбмена.Фирма)); СтрокаДанныхОбмена.Вставить("НомерВходящегоДокумента", СтрокаДанныхОбмена.ИнфНакладной)); //СтрокаДанныхОбмена.Вставить("Номер", СтрокаДанныхОбмена.ИнфСчета)); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДанныхОбмена.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул)); СтрокаДанныхОбмена.Вставить("СтавкаНДС", СтрокаДанныхОбмена.Номенклатура.СтавкаНДС); СтрокаДанныхОбмена.Вставить("Сумма", СтрокаДанныхОбмена.Количество * СтрокаДанныхОбмена.Цена); КонецЦикла; Возврат ДанныеОбмена; КонецФункции Ошибки : {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1502,89)}: Неопознанный оператор СтрокаДанныхОбмена.Вставить("НомерВходящегоДокумента", СтрокаДанныхОбмена.ИнфНакладной)<<?>>); (Проверка: Сервер) {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1511,13)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции Возврат <<?>>ДанныеОбмена; (Проверка: Сервер) {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1511,26)}: Обнаружено логическое завершение исходного текста модуля Возврат ДанныеОбмена;<<?>> (Проверка: Сервер) {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1502,89)}: Неопознанный оператор СтрокаДанныхОбмена.Вставить("НомерВходящегоДокумента", СтрокаДанныхОбмена.ИнфНакладной)<<?>>); (Проверка: Тонкий клиент) {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1511,13)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции Возврат <<?>>ДанныеОбмена; (Проверка: Тонкий клиент) {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1511,26)}: Обнаружено логическое завершение исходного текста модуля Возврат ДанныеОбмена;<<?>> (Проверка: Тонкий клиент) |
|||
154
Cube
31.03.15
✎
07:55
|
(153) В строке "СтрокаДанныхОбмена.Вставить("НомерВходящегоДокумента", СтрокаДанныхОбмена.ИнфНакладной));"
лишняя закрывающая скобка. |
|||
155
Олеся999
31.03.15
✎
08:03
|
(154) Все убрала скобку ...
а там пишет еще <<?>>СтрокаДанныхОбмена.Вставить ......... |
|||
156
ЧеловекДуши
31.03.15
✎
08:07
|
(19) И как Буха научить работать через КД?
|
|||
157
ЧеловекДуши
31.03.15
✎
08:15
|
(155) Олеся, вы хоть представляете, что делаете?
... И это только понедельник :DDDDD |
|||
158
ЧеловекДуши
31.03.15
✎
08:16
|
+(155) Посмотри... http://www.youtube.com/watch?v=cisxq5_fXnU
|
|||
159
ЧеловекДуши
31.03.15
✎
08:17
|
+(155) А вот еще
http://www.youtube.com/watch?v=paFobuHxHak |
|||
160
Олеся999
31.03.15
✎
08:36
|
||||
161
Cube
31.03.15
✎
08:37
|
(155) Ошибку полностью давай, мы тут не телепаты, знаешь ли)
|
|||
162
Cube
31.03.15
✎
08:39
|
(160) Да, давно хотел спросить, как у тебя ссылка на фирму в другой базе читается, но, смотрю, ты и сама уже поняла, что никак))
Передавай код, ИНН или наименование, то есть, строку, по которой искать в БП будешь. |
|||
163
Олеся999
31.03.15
✎
08:40
|
(160) Вроде находит но не подставляет.
И там нужно искать КонтрАгента по ИНН а не по коду, а Фирму по наименованию. &НаСервере Функция ПолучитьДанныеОбмена(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); //СтрокаДанныхОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоИНН(СтрокаДанныхОбмена.КонтрагентИНН)); //СтрокаДанныхОбмена.Вставить("Организации", Справочники.Организации.НайтиПоНаименованию(СтрокаДанныхОбмена.Фирма)); //СтрокаДанныхОбмена.Вставить("НомерВходящегоДокумента", СтрокаДанныхОбмена.ИнфНакладной); //СтрокаДанныхОбмена.Вставить("Номер", СтрокаДанныхОбмена.ИнфСчета)); ДанныеОбмена.Вставить("НомерВходящегоДокумента", ДанныеОбмена.ИнфНакладной); //-- ДанныеОбмена.Вставить("Организации", Справочники.Организации.НайтиПоНаименованию(ДанныеОбмена.Фирма)); //-- Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДанныхОбмена.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул)); СтрокаДанныхОбмена.Вставить("СтавкаНДС", СтрокаДанныхОбмена.Номенклатура.СтавкаНДС); СтрокаДанныхОбмена.Вставить("Сумма", СтрокаДанныхОбмена.Количество * СтрокаДанныхОбмена.Цена); КонецЦикла; Возврат ДанныеОбмена; КонецФункции Так вот ошибок нету, вот только не подставляет значения в БП ПоступленияТоваровИУслуг |
|||
164
Cube
31.03.15
✎
08:41
|
(163) Потому что на стороне БП у тебя ДанныеОбмена.Фирма = Неопределено.
Так как со стороны самописки ты в файл засунула не наименование, а ссылку на фирму. |
|||
165
Олеся999
31.03.15
✎
08:42
|
В самописной: Фирма
В БП Организация |
|||
166
Cube
31.03.15
✎
08:42
|
(165) В самописке ты делаешь так:
ДанныеОбмена.Вставить("Фирма", Объект.Фирма); А надо так: ДанныеОбмена.Вставить("Фирма", Объект.Фирма.Наименование); |
|||
167
Олеся999
31.03.15
✎
08:45
|
(166) ДанныеОбмена = Новый Структура;
ДанныеОбмена.Вставить("Фирма", Объект.Фирма.Наименование); ДанныеОбмена.Вставить("КонтрагентИНН", Объект.Контрагент.ИНН); ДанныеОбмена.Вставить("КонтрагентНаименование", Объект.Контрагент.Наименование); Написала так вот |
|||
168
Cube
31.03.15
✎
08:47
|
(167) Ну всё, теперь ищи организацию в БП по наименованию.
|
|||
169
Олеся999
31.03.15
✎
08:51
|
(168) ДанныеОбмена.Вставить("Организации", Справочники.Организации.НайтиПоНаименованию(ДанныеОбмена.Фирма));
Правильно же? ) |
|||
170
Cube
31.03.15
✎
08:55
|
(169) Ага, если наименования совпадают вплоть до каждого пробела...
|
|||
171
Cube
31.03.15
✎
08:56
|
Делай синхронизацию организаций по коду, зачем тебе этот геморрой с наименованиями?
|
|||
172
Олеся999
31.03.15
✎
08:58
|
&НаСервере
Функция ПолучитьДанныеОбмена(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); ДанныеОбмена.Вставить("НомерВходящегоДокумента", ДанныеОбмена.ИнфНакладной); //-- ДанныеОбмена.Вставить("Организации", Справочники.Организации.НайтиПоНаименованию(ДанныеОбмена.Фирма)); //-- СтрокаДанныхОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоИНН(СтрокаДанныхОбмена.КонтрагентИНН)); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДанныхОбмена.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул)); СтрокаДанныхОбмена.Вставить("СтавкаНДС", СтрокаДанныхОбмена.Номенклатура.СтавкаНДС); СтрокаДанныхОбмена.Вставить("Сумма", СтрокаДанныхОбмена.Количество * СтрокаДанныхОбмена.Цена); КонецЦикла; Возврат ДанныеОбмена; КонецФункции {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1502,84)}: Переменная не определена (СтрокаДанныхОбмена) СтрокаДанныхОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоИНН(<<?>>СтрокаДанныхОбмена.КонтрагентИНН)); (Проверка: Сервер) |
|||
173
Cube
31.03.15
✎
09:01
|
(172) Ну так СтрокаДанныхОбмена это у тебя внутри цикла... А вне цикла просто в ДанныеОбмена вставляй...
|
|||
174
Олеся999
31.03.15
✎
09:27
|
&НаСервере
Функция ПолучитьДанныеОбмена(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); ДанныеОбмена.Вставить("НомерВходящегоДокумента", ДанныеОбмена.ИнфНакладной); //-- ДанныеОбмена.Вставить("Организации", Справочники.Организации.НайтиПоНаименованию(ДанныеОбмена.Фирма)); //-- ДанныеОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоИНН(ДанныеОбмена.КонтрагентИНН)); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДанныхОбмена.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул)); СтрокаДанныхОбмена.Вставить("СтавкаНДС", СтрокаДанныхОбмена.Номенклатура.СтавкаНДС); СтрокаДанныхОбмена.Вставить("Сумма", СтрокаДанныхОбмена.Количество * СтрокаДанныхОбмена.Цена); КонецЦикла; Возврат ДанныеОбмена; КонецФункции {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары.Форма(1502)}: Метод объекта не обнаружен (НайтиПоИНН) ДанныеОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоИНН(ДанныеОбмена.КонтрагентИНН)); Когда эту строку комментирую, все равно ничего не подставляет |
|||
175
Cube
31.03.15
✎
09:29
|
(174) А ты метод "НайтиПоИНН()" в СП взяла или сама придумала?)))
Можешь не отвечать, ответ я знаю :) Делай так: ДанныеОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ДанныеОбмена.КонтрагентИНН)); |
|||
176
Славен
31.03.15
✎
09:30
|
может это... позвать специалиста и заплатить ему? ну или тому же Cube заплатить, он удаленно подрубится и сделает
|
|||
177
Славен
31.03.15
✎
09:31
|
у меня попкорн закончился
|
|||
178
Cube
31.03.15
✎
09:31
|
(176) "он удаленно подрубится и сделает"
Ты что, мой менеджер?)) |
|||
179
Cube
31.03.15
✎
09:33
|
Человек учится, и это похвально.
|
|||
180
Олеся999
31.03.15
✎
09:39
|
(175) Да сама придумала )) Так вроде скушала...
Только вот не могу понять почему заполнение не происходит |
|||
181
Cube
31.03.15
✎
09:40
|
(180) Ну нет у тебя в базе контрагента с таким ИНН...
|
|||
182
Олеся999
31.03.15
✎
09:46
|
Нет ИНН одинаковые по номеру и там и там ...ну НомерВходящегоДокумента то тоже не подставляет ?
|
|||
183
Cube
31.03.15
✎
09:48
|
(182) Код БП показывай
|
|||
184
Azverin
31.03.15
✎
09:49
|
я вовремя.
|
|||
185
Cube
31.03.15
✎
09:49
|
(184) Опоздал!
|
|||
186
Олеся999
31.03.15
✎
09:50
|
&НаКлиенте
Процедура СоединениеСклад(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); ДанныеОбмена = ПолучитьДанныеОбмена(ТекстовыйДокумент.ПолучитьТекст()); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДокумента = Объект.Товары.Добавить(); СтрокаДокумента.Номенклатура = СтрокаДанныхОбмена.Номенклатура; СтрокаДокумента.Количество = СтрокаДанныхОбмена.Количество; СтрокаДокумента.Цена = СтрокаДанныхОбмена.Цена; КонецЦикла; //СтрокаДанныхОбмена.Вставить("НомерВходящегоДокумента", СтрокаДанныхОбмена.ИнфНакладной); КонецПроцедуры &НаСервере Функция ПолучитьДанныеОбмена(ДанныеОбменаСтр) ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); ДанныеОбмена.Вставить("НомерВходящегоДокумента", ДанныеОбмена.ИнфНакладной); //-- ДанныеОбмена.Вставить("Организации", Справочники.Организации.НайтиПоНаименованию(ДанныеОбмена.Фирма)); //-- //ДанныеОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоИНН(ДанныеОбмена.КонтрагентИНН)); ДанныеОбмена.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ДанныеОбмена.КонтрагентИНН)); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДанныхОбмена.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул)); СтрокаДанныхОбмена.Вставить("СтавкаНДС", СтрокаДанныхОбмена.Номенклатура.СтавкаНДС); СтрокаДанныхОбмена.Вставить("Сумма", СтрокаДанныхОбмена.Количество * СтрокаДанныхОбмена.Цена); КонецЦикла; Возврат ДанныеОбмена; КонецФункции #КонецОбласти |
|||
187
Cube
31.03.15
✎
09:57
|
(186) Ну так и где ты найденного контрагента подставляешь в документ?
Кстати, зря я вчера тебе предложил на клиент возвращать структуру. Надо всё &НаСервере сделать и всё. Вот так: &НаКлиенте Процедура СоединениеСклад(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); ТекстОшибки = ЗаполнитьДокументПоДанныемОбмена(ТекстовыйДокумент.ПолучитьТекст()); Если НЕ ПустаяСтрока(ТекстОшибки) Тогда СП = Новый СообщениеПользователю; СП.Текст = ТекстОшибки; СП.Сообщить(); КонецЕсли; Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДокумента = Объект.Товары.Добавить(); СтрокаДокумента.Номенклатура = СтрокаДанныхОбмена.Номенклатура; СтрокаДокумента.Количество = СтрокаДанныхОбмена.Количество; СтрокаДокумента.Цена = СтрокаДанныхОбмена.Цена; КонецЦикла; //СтрокаДанныхОбмена.Вставить("НомерВходящегоДокумента", СтрокаДанныхОбмена.ИнфНакладной); КонецПроцедуры &НаСервере Функция ЗаполнитьДокументПоДанныемОбмена(ДанныеОбменаСтр) ТекстОшибки = ""; ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); ДанныеОбмена.Вставить("НомерВходящегоДокумента", ДанныеОбмена.ИнфНакладной); Объект.Организация = Справочники.Организации.НайтиПоНаименованию(ДанныеОбмена.Фирма); Объект.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ДанныеОбмена.КонтрагентИНН); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДокумента = Объект.Товары.Добавить(); СтрокаДокумента.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул); СтрокаДокумента.СтавкаНДС = СтрокаДанныхОбмена.Номенклатура.СтавкаНДС; СтрокаДокумента.Сумма = СтрокаДанныхОбмена.Количество * СтрокаДанныхОбмена.Цена; КонецЦикла; Возврат ТекстОшибки; КонецФункция |
|||
188
Cube
31.03.15
✎
09:58
|
(187) Упс, правильно так:
&НаКлиенте Процедура СоединениеСклад(Команда) ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(КаталогВременныхФайлов() + "ДанныеОбмена.txt"); ТекстОшибки = ЗаполнитьДокументПоДанныемОбмена(ТекстовыйДокумент.ПолучитьТекст()); Если НЕ ПустаяСтрока(ТекстОшибки) Тогда СП = Новый СообщениеПользователю; СП.Текст = ТекстОшибки; СП.Сообщить(); КонецЕсли; КонецПроцедуры &НаСервере Функция ЗаполнитьДокументПоДанныемОбмена(ДанныеОбменаСтр) ТекстОшибки = ""; ДанныеОбмена = ЗначениеИзСтрокиВнутр(ДанныеОбменаСтр); ДанныеОбмена.Вставить("НомерВходящегоДокумента", ДанныеОбмена.ИнфНакладной); Объект.Организация = Справочники.Организации.НайтиПоНаименованию(ДанныеОбмена.Фирма); Объект.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ДанныеОбмена.КонтрагентИНН); Для Каждого СтрокаДанныхОбмена Из ДанныеОбмена.ТаблицаДанныхОбмена Цикл СтрокаДокумента = Объект.Товары.Добавить(); СтрокаДокумента.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанныхОбмена.Артикул); СтрокаДокумента.СтавкаНДС = СтрокаДанныхОбмена.Номенклатура.СтавкаНДС; СтрокаДокумента.Сумма = СтрокаДанныхОбмена.Количество * СтрокаДанныхОбмена.Цена; КонецЦикла; Возврат ТекстОшибки; КонецФункция |
|||
189
Олеся999
31.03.15
✎
10:15
|
(188) Так заполняется норм только вот ("НомерВходящегоДокумента", ДанныеОбмена.ИнфНакладной)
и ТЧ не заполняются |
|||
190
Олеся999
31.03.15
✎
10:15
|
Наверное нужно было оставить на клиенте заполнение ТЧ
|
|||
191
Cube
31.03.15
✎
10:17
|
(189) Ну ты че...
Объект.НомерВходящегоДокументаИлиКакЕгоТам = ДанныеОбмена.НомерВходящегоДокумента; |
|||
192
Cube
31.03.15
✎
10:18
|
(190) Нет.
Строки в ТЧ вообще не создаются? Значит из самописки не выгрузила... |
|||
193
Олеся999
31.03.15
✎
13:41
|
(192) Дак строки создавались до того пока код не поменяли на БП
|
|||
194
Олеся999
31.03.15
✎
13:41
|
я самописку вообще не трогала)
|
|||
195
Cube
31.03.15
✎
13:42
|
(193) Так показывай код из БП, что ты там наворотила :)
|
|||
196
Олеся999
31.03.15
✎
14:06
|
(188) Дак я этот брала единственное что поменяла это в конце КонецФункция на КонецФункции :)))))))
|
|||
197
Олеся999
03.04.15
✎
06:44
|
Этих бухов не понять :( решила сделать все через обработку. Смысл такой в верхней таблице (ДанныеОбмена) мы выбираем Документ. В нижней таблице (тзДокумент) должно появляться его содержимое.
На данный момент появляется содержимое всех документов...пытаюсь сделать отбор строк только вот что то не выходит :( http://lvkr.ru/f/pACgqZ/640.jpg Код: &НаКлиенте Функция ПодключитьсяК1С() // создается объект COM-соединение Соединитель = Новый COMObject("V83.COMConnector"); Попытка v8 = Соединитель.Connect("srvr = ""1C""; ref = ""ПР""; usr = ""Админ""; pwd = """""); Исключение Предупреждение("Не удалось подключиться к Биллингу!",5); Возврат Неопределено; КонецПопытки; Возврат v8; КонецФункции &НаКлиенте Процедура ПолучитьДанные(Команда) Перем COM; Если НЕ ЗначениеЗаполнено(НачПериода) Тогда Предупреждение("Заполните начало периода", 3); ТекущийЭлемент = Элементы.НачПериода; Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(КонПериода) Тогда Предупреждение("Заполните окончание периода", 3); ТекущийЭлемент = Элементы.КонПериода; Возврат; КонецЕсли; Если COM = Неопределено Тогда COM = ПодключитьсяК1С(); Если COM = Неопределено Тогда Возврат; КонецЕсли; КонецЕсли; ДанныеОбмена.Очистить(); ЗапросCOM = COM.NewObject("Запрос"); ЗапросCOM.Текст = "ВЫБРАТЬ | ПриходнаяНакладная.Номер, | ПриходнаяНакладная.Дата, | ПриходнаяНакладная.Контрагент.Наименование КАК Контрагент, | ПриходнаяНакладная.ИтоговаяСумма, | ПриходнаяНакладная.Фирма.Наименование КАК Фирма, | ПриходнаяНакладная.ИнфНакладной, | ПриходнаяНакладная.ДатаНакладной, | ПриходнаяНакладная.ИнфСчета, | ПриходнаяНакладная.ДатаСчета |ИЗ | Документ.ПриходнаяНакладная КАК ПриходнаяНакладная |ГДЕ | ПриходнаяНакладная.Дата МЕЖДУ &НачДата И &КонДата"; ЗапросCOM.УстановитьПараметр("НачДата", НачалоДня(НачПериода)); ЗапросCOM.УстановитьПараметр("КонДата", КонецДня(КонПериода)); Рез = ЗапросCOM.Выполнить(); //Рез.Выгрузить(ДанныеОбмена); Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл НС = ДанныеОбмена.Добавить(); ЗаполнитьЗначенияСвойств(НС, Выборка); КонецЦикла; COM = Неопределено; Сообщение = Новый СообщениеПользователю; //================================================================================ КонецПроцедуры &НаКлиенте Процедура ДанныеОбменаПриАктивизацииСтроки(Элемент) Перем COM; Если COM = Неопределено Тогда COM = ПодключитьсяК1С(); Если COM = Неопределено Тогда Возврат; КонецЕсли; КонецЕсли; //ДанныеОбмена.Очистить(); ЗапросCOM2 = COM.NewObject("Запрос"); ЗапросCOM2.Текст = "ВЫБРАТЬ | ПриходнаяНакладнаяТаблЧасть.Ссылка.Номер, | ПриходнаяНакладнаяТаблЧасть.Номенклатура, | ПриходнаяНакладнаяТаблЧасть.Артикул, | ПриходнаяНакладнаяТаблЧасть.Количество, | ПриходнаяНакладнаяТаблЧасть.Цена, | ПриходнаяНакладнаяТаблЧасть.Сумма |ИЗ | Документ.ПриходнаяНакладная.ТаблЧасть КАК ПриходнаяНакладнаяТаблЧасть"; Рез2 = ЗапросCOM2.Выполнить(); //Рез.Выгрузить(ДанныеОбмена); Выборка2 = Рез2.Выбрать(); Пока Выборка2.Следующий() Цикл НС2 = тзДокумент.Добавить(); ЗаполнитьЗначенияСвойств(НС2, Выборка2); КонецЦикла; //тзДокумент.Очистить(); //// Отберем строки табличной части //ОтборСтрок = Новый Структура; //ОтборСтрок.Вставить("Номер", тзДокумент.Номер); //МассивС = тзДокумент.НайтиСтроки(ОтборСтрок); //Для каждого См Из МассивС Цикл //// Добавим анализ //Если См.Номенклатура.Услуга Тогда // НС = НДок.Услуги.Добавить(); // ЗаполнитьЗначенияСвойств(НС, См, "Номенклатура,Количество,Цена,Сумма"); //Иначе // НС = НДок.Товары.Добавить(); // ЗаполнитьЗначенияСвойств(НС, См, , "Себестоимость"); // НС.СчетУчета = СчетУчетаТч; // НС.КоличествоМест = 1; //КонецЕсли; //КонецЦикла; //COM = Неопределено; // //Сообщение = Новый СообщениеПользователю; КонецПроцедуры |
|||
198
Wobland
03.04.15
✎
07:30
|
вы о чём тут двести постов разговаривали вообще? ;)
(197) из КОМа нормально прилетают только примитивные типы. всё остальное - КОМ-объекты |
|||
199
Олеся999
03.04.15
✎
07:46
|
(198) Я скинула скрин ....там в верхней таблице документы приходной накладной в нижней содержимое этих документов.
Хотелось бы сделать так: когда в верхней таблице выбираешь документ в нижней таблице показывает только его содержимое, а не содержимое всех документов. Нужно делать отбор по номеру. У меня что то не выходит( |
|||
200
Wobland
03.04.15
✎
07:52
|
твести!
|
|||
201
Олеся999
03.04.15
✎
08:29
|
тзДокумент.Очистить();
//// Отберем строки табличной части ОтборСтрок = Новый Структура; ОтборСтрок.Вставить("Номер", тзДокумент.Номер); МассивС = тзДокумент.НайтиСтроки(ОтборСтрок); Для каждого См Из МассивС Цикл Пишет ошибку: {Форма.Форма.Форма(108)}: Поле объекта не обнаружено (Номер) ОтборСтрок.Вставить("Номер", тзДокумент.Номер); |
|||
202
Wobland
03.04.15
✎
09:56
|
хм, надо много думать... может, действительно нет такого поля в тзДокумент?
|
|||
203
Олеся999
03.04.15
✎
12:48
|
(202) Это не поле это таблиа
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |