Имя: Пароль:
1C
 
Экспортировать документ из одной базы в другую.
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
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) Это не поле это таблиа