Имя: Пароль:
1C
1C 7.7
v7: Элемент есть - инфы нет. Как?
,
0 Масянька
 
25.12.15
15:06
День добрый!

В справочнике номенклатуры есть элемент. В журнале регистрации по данному элементу нет никакой информации (кто и когда создал).
Как так?
1 ДенисЧ
 
25.12.15
15:06
программно создали.
Вот так.
2 Масянька
 
25.12.15
15:07
(1) И что - в этом случае нет инфы? Программно же создавали под каким-то пользователем?
3 Strogg
 
25.12.15
15:07
(1) в ЖР прописывается пользак, под которым создали.
4 Масянька
 
25.12.15
15:09
+(2) Кстати, приход заводится программно (обработка, новые элементы в справ. номенклатура создаются программно). И у таких элементов инфа в ЖР есть.
5 ДенисЧ
 
25.12.15
15:09
(2) В 77, при программном создании - нет.
(3) нет, не прописывается
6 ДенисЧ
 
25.12.15
15:09
(4) Значит, там этим озаботились.
7 Масянька
 
25.12.15
15:12
(5) То есть - никак не выцепить откуда взялся?
8 ДенисЧ
 
25.12.15
15:12
(7) Могу продать паяльник и инструкцию по использованию...
9 Масянька
 
25.12.15
15:16
(8) Комп пытать?
Говорю же - автоматом грузятся приходы, при этом номенклатура создается. Элемент в справочнике есть, а в приходе - нет. И остатков нет.
11 aka AMIGO
 
25.12.15
15:20
(9) ой-ёй.. элемент в спр есть. "В приходе нет" - это уже не сабж..
Это кривизна обработки
12 Масянька
 
25.12.15
15:24
(11) Обработка работает уже лет пять. ничего подобного не было.
При создании новой номенклатуры (обработкой) она садится в определенную папку. То есть - не руками сделали.
Приход - сравниваются только суммы (в журнале) и при приходе док-ов входящие номер и дата заносятся. То есть - сама номенклатура в приходе не трогается.
13 DDwe
 
25.12.15
15:25
(11) +100500
14 DDwe
 
25.12.15
15:25
(12) И палка бывает стреляет.
15 Масянька
 
25.12.15
15:26
+(12) В ЖР по данному приходу 3 записи:
- создан.
- проведен.
- открыт (сегодня).
Первые 2 записи с разницей в одну секунду.
16 aka AMIGO
 
25.12.15
15:28
(15) ну, согласись - чудес-то не бывает..
17 aka AMIGO
 
25.12.15
15:29
(15) а скажи, в доке по щелчку на номенклатуре карточка в справочнике открывается?
18 vladko
 
25.12.15
15:32
чтобы с обработки писалась информация в журнал регистрации, есть метод
ЗаписьЖурналаРегистрации(<?>,,,,);
Синтаксис:
ЗаписьЖурналаРегистрации(<Коммент>,<ТипСобытия>,<Событие>,<Объект>,<Категория>)
Назначение:
Выводит строку текста в системный журнал регистрации.
Параметры:
<Коммент> - строковое выражение, комментарий к событию. Если этот параметр - единственный переданный при вызове метода, то тогда в журнал записывается стандартное дополнительное событие с указанным комментарием.
<ТипСобытия> - необязательный параметр. Строковое выражение -  тип события. По умолчанию или при пустой строке ''Дополнительные события''.
<Событие> - необязательный параметр. Строковое выражение -  событие. По умолчанию ''Дополнительное событие''.
<Объект> - необязательный параметр. Объект события, по умолчанию отсутствует. Для переданных в функцию объектов типа Документ/ Справочник/ Счет представление объекта будет записано автоматически (это не зависит от типа события и самого события).
<Категория> - необязательный параметр. Число - категория события: 1 - администрирование; 2 - изменение данных; 3 - информация; 4 - предупреждение; 5 - ошибка. Значение по умолчанию 3.
Замечание:
Системой зарезервирован большой перечень типов событий/события. Незарезервированные имена позволяют пользователю фактически указывать свои собственные типы событий и события. Подробнее см. в документации гл. ''Системные процедуры и функции''.

без него не пишется
19 Масянька
 
25.12.15
15:32
(17) В док-е не было этой позиции. Совсем. Но сумма док-а один в один.
20 Масянька
 
25.12.15
15:33
(18) А окно сообщений нигде не пишется? Ну, в смысле, не сохраняется.
21 aka AMIGO
 
25.12.15
15:34
(19) Анька, я те щас стукну! смотри обработку..
В отладчике умеешь работать? :)
22 aka AMIGO
 
25.12.15
15:35
(20) нет, из него можно только копипастить
23 Масянька
 
25.12.15
15:35
(21) Я не поняла... :(
24 aka AMIGO
 
25.12.15
15:36
(23) ну, хорошо, приход - это ТЧ, в ТЧ есть что-то?
"Сумма" - это фигня..
25 Масянька
 
25.12.15
15:39
(24) Есессьно. И номенклатура из ТЧ док-а открывается в справочнике... Ну, ты понял :)
26 aka AMIGO
 
25.12.15
15:39
Я тоже вот не понимаю.. пишешь в табличной части "нет этой позиции" - ну откуда взяться остаткам-то..
27 Масянька
 
25.12.15
15:40
Кстати, партия по этой номенклатуре помечена на удаление, как пустая - нет приходного док-та.
Чет, я совсем ничего не понимаю.....
28 Масянька
 
25.12.15
15:41
(26) Так она есть в справочнике. Причем, в той папке, где созданная при создании прихода (т. е. созданная программно, а не руками). Откуда?
29 aka AMIGO
 
25.12.15
15:43
(19) В док-е не было этой позиции
(25) И номенклатура из ТЧ док-а открывается в справочнике

рррррр.. ... ... :((

(28) "откуда" - так из твоей обработки.. Ты её модуль смотрела?
30 aka AMIGO
 
25.12.15
15:44
(28) у тебя ТиС? вышлешь обработку? посмотрю на досуге.
31 Масянька
 
25.12.15
15:56
(29) У-у-у-у, ё-ё-ё-ё-ё-ё...

Excel-файл (в котором приход) обработкой грузится в 1С: создается док-т прихода, новая номенклатура (в спец. папку), партии, ГТД. Док-т прихода проводится.
По реальному приходу (на склад) - в док-т прихода заносятся номер и дата (входящие), проверяется сумма (с бумажным вариантом док-ов).
Пока вопросов нет.

Потом идет товар на витрины, то есть - печатаются ценники. Обработке для ценников указывается приходный док-т, по нему заполняется номенклатура, заполняются цены и печатают ценники.
И вот тут вылез вопрос: номенклатура есть (в обработке для ценников), остатков нет... Открываем приход - нет там этой номенклатуры...
32 Масянька
 
25.12.15
15:58
+(31) Не. И в обработке для ценников нет. Есть только в справочнике.
33 Масянька
 
25.12.15
16:03
А что есть поле в dbf - VERSTAMP  |Version stamp?
34 aka AMIGO
 
25.12.15
16:06
(32)  ...Док-т прихода проводится.
Док проводится, стало быть остатки сформированы.. в рег.остатков, как минимум

Открываем приход - нет там этой номенклатуры...
"приход" - это Док-т прихода? ты ведь только что его провела..

деточка, чем "открываем приход" ?
35 aka AMIGO
 
25.12.15
16:07
(33) не знаю.. перевел только как номер версии.. это 1с-овская заморочка, отношения к номенклатуре не имеет..
ИМХО, разумеется.
36 Масянька
 
25.12.15
16:12
(34) Журналом :)
как можно открыть док-т прихода? Выбрали в журнале и открыли.

Я понять не могу откуда в справочнике эта номенклатура.
37 aka AMIGO
 
25.12.15
16:12
(35) + Файл ДБФ, что за поле VERSTAMP?
давний вопрос, ответа не нашел
38 aka AMIGO
 
25.12.15
16:13
(36) номенклатура - из файла Excel и поместила его туда обработка..
39 Масянька
 
25.12.15
16:14
(38) Во-о-о-т... Почему нет в док-е прихода?
40 aka AMIGO
 
25.12.15
16:15
(39) Пришли мне эту обработку, и 1 (один) файл Excel, после просмотра обязуюсь вернуть тебе их обратно :)
41 aka AMIGO
 
25.12.15
16:17
(39) Почему нет в док-е прихода?
Обработка не обработала..
42 Масянька
 
25.12.15
16:19
(41) А почему сумма по док-т (в 1С) и бумажному варианту сходятся тютелька в тютельку?
43 aka AMIGO
 
25.12.15
16:21
(42) возможно, подмена номенклатуры.
44 Масянька
 
25.12.15
16:23
(43) Отправила. Тема - пустая.
Не может быть подмена номенклатуры.
45 aka AMIGO
 
25.12.15
16:24
(42) Обработка твоя?
Когда читаешь строки прихода из Excel, как проверяешь наличие поступившей номенклатуры в справочнике?
46 aka AMIGO
 
25.12.15
16:25
(44) Ладушки, дома посмотрю. Через полчаса всех выгонять начнут.
47 Масянька
 
25.12.15
16:37
(46) Причем, партия образовалась. С ГТД. А откуда ГТД берется? Из прихода...
Бред, короче, какой-то...
48 HawkEye
 
25.12.15
19:11
(47) если накладная совпадает с бумажной, ты же проверила, что она совпадает, да? с чего ты взяла, что найденная тобой номенклатура относится к этой накладной?
49 NorthWind
 
25.12.15
22:34
(9) Там где создается автоматом номенклатура (в обработке) - так же программой писать в свой собственный лог, в текстовый файл. ЖР в семерке регит только интерактивную работу, программные манипуляции не регит. От слова вообще. Надо - пиши свое логирование.
50 HawkEye
 
25.12.15
23:04
(49) не трынди... ЖР в семерке регит интерактивную работу и то, что хочет регить программист...
51 73с
 
26.12.15
09:37
(50) ну значит обработка по этой номенклатуре прошла мимо зарегить в журнале, но не мимо создать
52 Dump
 
26.12.15
10:17
(47) "Бред, короче, какой-то..."
Если элемент создан неизвестно когда - забить.
Если точно во время последнего импорта - проделать этот импорт на старой копии, предварительно напихав отладочных сообщений или отладчиком - по вкусу.
53 Web00001
 
26.12.15
12:02
(12)Так возьми обработку и проверь создаются записи в ЖР при ее работе или нет. И тему можно не создавать. С ЖР за долгое время тоже много чего могло приключиться. Особенно если база файловая.
54 пипец
 
26.12.15
12:17
много плакал ))) видимо тяпничная ветка
ЗЫ о много нам открытий ... (с)
помню как на почти супер закрытом сеансе через калькулятор влезал в реестр винды ;))) админы были в шоке, так что вариант может быть любой, от редактирования ЖР ручками
55 шаэс
 
26.12.15
12:19
(0) ты ЗиКом никогда не занималась? там особо продвинутые расчетчики чистили ЖР вручную, дабы некоторые свои грехи сокрыть.
56 шаэс
 
26.12.15
12:21
+(55) неправильно спросила... про ЗиК помню, что занималась. Именно никому не помогала сама чистить журналы?
57 фобка
 
26.12.15
12:33
Вариантов 2:
1) фиксировалось в логе
2) никогда не фиксировалось в логе

Ну и возможные события:
1) вытерли руками в файле, срезали лог, лог от другой базы
2) программное создание элемента (внешней обработкой ли, либо объектом конфы ли, либо через ком-соединение), без записи в журнале
58 NorthWind
 
26.12.15
14:05
(50) Тогда было бы интересно узнать как, потому что я заморачивался этим вопросом - и ничего не нашел по нему. У меня работает обработка под специально выделенным для этой цели пользователем, создает за сутки десятки документов. Если ничего специально не делать, то все что я вижу в логе - это утром пользователь залогинился, вечером вышел. Поскольку логи работы мне были нужны, я просто написал свой механизм логов в текстовые файлы.
59 HawkEye
 
26.12.15
17:33
(58) ты программист или где?
ЗаписьЖурналаРегистрации() - пиши в ЖР все, что тебя надо и когда надо...
60 NorthWind
 
26.12.15
17:44
(59) Вот она-то мне и не попалась. Теперь ясно.
61 NorthWind
 
26.12.15
17:57
+ (60) спасибо
62 Масянька
 
28.12.15
08:52
(56) Фишка в том, что ЖР вообще не трогаю. Совсем.
63 aka AMIGO
 
28.12.15
09:00
(62) В ЖР никакой инфы о запущенной и отработавшей обработке нет.
Посмотрела в свой почтовик?
64 Масянька
 
28.12.15
09:02
Народ! Попытаюсь объяснить...
В док-те Поступление ТМЦ есть кнопка. По этой кнопке открывается внешняя обработка - указывается файл (Excel) и идет загрузка ТМЦ в док-т. Если в файле есть новая номенклатура (её нет в справочнике) - новая номенклатура создается в справочнике в определенной папке (так, как заведена у поставщика). Есесьно, для новой номенклатуры создаются единицы. Все это - автоматом (то бишь программно).
Когда обработка отработала - сумма по док-ту (Поступления) сравнивается с суммой в файле. Док-т проводится (руками).
Бумажных док-ов нет. Пока.

Вот обработка работала и работала. Все были довольны.

И вот в пятницу: пришел товар, пришли док-ты (бумажные). Делаются ценники... И тут выясняется, что есть номенклатура (вот она лежит - нужно ценник делать). В справочнике номенклатуры есть эта позиция (причем, в той папке, где лежит созданная программно). Но в док-те (в 1С) этой номенклатуры нет. Совсем.

Сумма по док-ту (1С и бумажный) тютелька в тютельку. Номенклатура заведена не руками - мало того, что папка определенная, так и наименование такое, как у поставщика (там есть нюанс - в квадратных скобках указывается группа). Еще и партия есть (в справочнике Партий) с ГТД. Только док-т партии пустой.

Вот я и не могу понять - как, откуда и почему...
65 Масянька
 
28.12.15
09:03
(63) Да. Спасибо за уделенное время.
66 Масянька
 
28.12.15
09:04
(63) Док-т открыт (создан вручную). Обработкой все заполняется - номенклатура есть. И партии формируются...
67 HawkEye
 
28.12.15
09:05
(64) как ты выяснила, что номенклатура из этого документа, если
а) суммы документа в 1С и файла и бумажки - совпадают.
б) в документе нет этой номенклатуры, в бумажке нет этой номенклатуры, в файле нет это номенклатуры.
68 lamme
 
28.12.15
09:06
(64)
а как такое может быть
если сумма по документу  1С и по бумажному носителю - одинаковая, при этом в документе 1С товара меньше по строкам ?
69 HawkEye
 
28.12.15
09:06
(66) ты путаешься в показаниях...
"Обработкой все заполняется - номенклатура есть"
или все таки
"Но в док-те (в 1С) этой номенклатуры нет. Совсем."
определись уже ))
70 lamme
 
28.12.15
09:07
(64)
ТиИ делал ?
71 Mikeware
 
28.12.15
09:07
потому, что документ не смог провестись (или записаться) - например, из-за транзакции, выполняемой другим пользователем.
72 Масянька
 
28.12.15
09:08
(67) В бумажном док-те есть эта номенклатура. И суммы опять совпадают...

Уже думала: поставщик мог переиграть и отгрузить другую позицию - но сумма совпадает (раз) и номенклатура есть в справочнике (два).

(69) В док-те (1С) нет этой конкретной номенклатуры. Другая есть.
73 Mikeware
 
28.12.15
09:08
(68) Да очень просто - пишут сумму по документу сразу в СуммуВзаиморасчетов. И СуммаВзаиморасечтов не совпадает с итогом по строкам
74 HawkEye
 
28.12.15
09:08
(70) это онА и чем ТиИ поможет в этом случае? ))
75 Масянька
 
28.12.15
09:08
(70) Нет. В партии нет приходного док-та. И ссылки на эту непонятную номенклатуру нет, кроме единиц и партий.
76 HawkEye
 
28.12.15
09:09
(72) ну вот... главное во время включить паяльник..

итак..

в файле эта номенклатура есть
в документе 1С, вместо нее выбрана другая номенклатура
так?
77 Масянька
 
28.12.15
09:09
(73) Нет.
78 Масянька
 
28.12.15
09:09
(76) Нет. Строк меньше. Ровно на одну.
79 Mikeware
 
28.12.15
09:09
(72) Значит, руками поменяли. Регистрация исправлений - есть?
80 HawkEye
 
28.12.15
09:09
(75) откуда в партии возьмется приходный документ, если эта номенклатура не оприходывалась? ))
81 Масянька
 
28.12.15
09:10
(80) Откуда она в справочнике взялась-то?
82 HawkEye
 
28.12.15
09:10
(78) строк меньше на одну, а сумма совпадает? )))
кто обработку по загрузке ваял? )))
83 Масянька
 
28.12.15
09:10
(79) Нет.
84 lamme
 
28.12.15
09:10
(73)
в1С7 суммавзаиморасчетов - это сумма табл части .
при этом она в регистр ВзаиморасчетыПокупателей/Поставщиков попадает только при проведении документа.
отдельного реквизита в документе - СуммаВзаиморасчетов - нет.
85 HawkEye
 
28.12.15
09:10
(81) программно создалась, это-же очевидно )
86 Mikeware
 
28.12.15
09:10
(81) создалась твоей обработкой
87 lamme
 
28.12.15
09:11
(0)
а ты в тестовой базе - загрузи этот ексель и посмотри как загрузка встанет.
с этим товаром или нет.
Если с этим - то всяко потом документ вручную правили.
если нет - разбираться в коде.
88 Mikeware
 
28.12.15
09:11
(84) авотхрен!
89 Масянька
 
28.12.15
09:11
(82) Я.
Там батарейки (2А и 3А). В 1С: 2А - 16 штук. В бумажном: 2А - 8 штук, 3А - 8 штук. Цена и сумма одинаковая.
90 HawkEye
 
28.12.15
09:12
(84) во первых не тренди...
во вторых, нет такой конфигурации "1С7"...
91 Масянька
 
28.12.15
09:12
(85) (86) А почему в док-ту не села? Создается же из файла...

(87) Тот файл уже затерли...
92 aka AMIGO
 
28.12.15
09:13
Стоп-стоп с домыслами! :)

(72) В общем и целом причина мне очевидна.

В эту Масянькину обработку передается контекст документа.

Документ остается открытым.
Читается файл, номенклатура по доп. артикулу записывается в справочник.

Там-же, в обработке, в ТЧ контекста делается попытка записи номенклатуры..
При этом:

КонтДок.НоваяСтрока() - срабатывает, но! количество строк в ТЧ остается равным нулю!
Номенклатура в ТЧ не поступает.

Вот и причина сабжа.
93 HawkEye
 
28.12.15
09:13
(89) "Я" - вот тебе и ответы на все вопросы ))))
я тебе давно говорил завязывай ты с этим делом...
код показывай своей нетленки...
94 Mikeware
 
28.12.15
09:13
(90) "это как - .опа есть, а слова нет?"© :-)
95 HawkEye
 
28.12.15
09:13
(91) потому что "Я"... код показывай...
96 Mikeware
 
28.12.15
09:13
(93) думаешь, из-за соотношения радиусов? :-)
97 lamme
 
28.12.15
09:15
(90)
открой любую типовую конфиг 1С7 - и покажи в любом документе реквизит СуммаВзаиморасчетов.
не найдешь.
поэтому - сам не трынди.


(91)
из почты получить еще раз ? если оно конечно там ...
98 HawkEye
 
28.12.15
09:15
(96) ну есть еще вариант, что кто-то из пользователей шутит над Масей... но я ставлю на радиусы ))
99 aka AMIGO
 
28.12.15
09:15
+92 в то-же время подобный оператор Конт.НоваяСтрока() с заполнением реквизитами прекрасно срабатывает в ГМ..
100 Масянька
 
28.12.15
09:17
(97) Оно не по почет приходит. С программы поставщика сохраняется в Excel. Короче, тот файл не достать :(
101 HawkEye
 
28.12.15
09:18
(97) юноша.... ТиС 9.2 документа ПоступлениеТМЦ
реквизит шапки: СуммаВзаиморасчетов (Сумма документа в валюте взаиморасчетов)

давай ты будешь сначала думать, а потом пытаться казаться умным, ок?
102 oslokot
 
28.12.15
09:18
(97) ЛПП!!!
103 aka AMIGO
 
28.12.15
09:18
(100) а причем тут файл?
104 HawkEye
 
28.12.15
09:18
(92) ну-да... из 10 раз, в 100 документах, один раз в одном не сработало... ))))
105 Масянька
 
28.12.15
09:19
(99) Я тебе говорю, что обработка грузит строки в док-т. После того, как обработка отработает - сравниваются суммы (по док-там 1С и Excel).
Все выяснилось по реальному приходу. Причем, (повторяю) суммы одинаковые.
106 HawkEye
 
28.12.15
09:19
(100)  я конечно могу еще раз предложить показать код... но в принципе это тебе больше надо )
107 Масянька
 
28.12.15
09:20
(103) Уже новые приходы были. Сегодня бумажки должны прийти.
108 Mikeware
 
28.12.15
09:20
(97) В Комплексной - практически в каждом документе. Хотя бы потому, что валюта взаиморасчетов вполне может отличаться от валюты документа.
109 chelentano
 
28.12.15
09:21
(107) По какому реквизиту идёт поиск номенклатуры? Код, артикул? Нет ли задвоения?
110 Масянька
 
28.12.15
09:21
(106) На:

Перем КонтекстДокумента;         // Переменная, в которой запоминаем контекст редактируемого документа

//********************************************************************************
Процедура ПриОткрытии()
    
    КонтекстДокумента = Форма.Параметр;  

КонецПроцедуры // ПриОткрытии

//******************************************************************************
Процедура ПриНачалеВыбораЗначения(Элемент, Продолжать)
    
    Каталог    = "\\Main\DOC\OutPrices\Москва\_NetLab\_Заказы-Резервы\";
    Файл     = "";
    
    Если Элемент = "ИмяФайлаЗагрузки" Тогда  
        
        Выбор = ФС.ВыбратьФайл(0, Файл, Каталог, "Файл с прайс-листом");
        
        Если Выбор = 1 Тогда ИмяФайлаЗагрузки = Каталог + Файл; КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры // ПриНачалеВыбораЗначения

//******************************************************************************
Процедура СоздатьПартию(ПартияИсточник = 0, СпрПартии, мГТД, мСтрана, мНомерСтроки)
    
    Если ПустоеЗначение(КонтекстДокумента.Номенклатура) = 1 Тогда
        Возврат;
    КонецЕсли;  
    
    Если ПустоеЗначение(КонтекстДокумента.Партия) = 0 Тогда
        // если партия уже записана - не трогаем ее!
        Возврат;
    КонецЕсли;  
    
    Если ПустоеЗначение(ПартияИсточник) = 0 Тогда
        Если (ПартияИсточник.ГТД.Выбран() = 1) или  (ПартияИсточник.СтранаПроисхождения.Выбран() = 1) или  
             (ПартияИсточник.Свойство.Выбран() = 1) Тогда
            СпрПартии.ИспользоватьВладельца(КонтекстДокумента.Номенклатура);
            СпрПартии.Новый();
            СпрПартии.ГТД                 = ПартияИсточник.ГТД;
            СпрПартии.СтранаПроисхождения = ПартияИсточник.СтранаПроисхождения;
            СпрПартии.Свойство            = ПартияИсточник.Свойство;
            Попытка
                СпрПартии.Записать();
            Исключение  
                Сообщить("Строка № " + мНомерСтроки + " ошибка." + РазделительСтрок + ОписаниеОшибки(),"I");
                Возврат;
            КонецПопытки;
            Партия = СпрПартии.ТекущийЭлемент();
        КонецЕсли;
    Иначе  
        СпрПартии.ИспользоватьВладельца(КонтекстДокумента.Номенклатура);
        СпрПартии.Новый();
        СпрПартии.ГТД                 = мГТД;
        СпрПартии.СтранаПроисхождения = мСтрана;

        Попытка
            СпрПартии.Записать();
        Исключение  
            Сообщить("Строка № " + мНомерСтроки + " ошибка." + РазделительСтрок + ОписаниеОшибки(),"I");
            Возврат;
        КонецПопытки;
        Партия = СпрПартии.ТекущийЭлемент();
    КонецЕсли;

КонецПроцедуры // СоздатьПартию

//******************************************************************************
Процедура Выполнить()  
    
    // вид номенклатуры
    мСклад = КонтекстДокумента.Склад.Наименование;
    Если (СокрЛП(мСклад) = "Материалы") Тогда
        мВидНоменклатуры = Перечисление.ВидыТМЦ.Материал;
    Иначе
        мВидНоменклатуры = Перечисление.ВидыТМЦ.Товар;
    КонецЕсли;
    
    Если СокрЛП(ИмяФайлаЗагрузки) = "" Тогда
        Предупреждение("Выберите файл для загрузки данных.");
        Активизировать("ИмяФайлаЗагрузки");
        Возврат;
    КонецЕсли;
    
    Предупреждение("Настоятельно рекомендуется закрыть все файлы, открытые в программе ""Excel"".");
    
    Excel    = СоздатьОбъект("Excel.Application");
    Книга     = Excel.Application.Workbooks.Open(ИмяФайлаЗагрузки);
    Лист     = Книга.WorkSheets(1);
    
    КолВоСтрок = Excel.Cells.CurrentRegion.Rows.Count;

    // ставка налога с продаж
    СпрСтавкаНП        = СоздатьОбъект("Справочник.СтавкиНП");
    СпрСтавкаНП.НайтиПоНаименованию("Без налога");    
    
    // классификатор единиц измерения
    СпрОКЕИ        = СоздатьОбъект("Справочник.ОКЕИ");
    СпрОКЕИ.НайтиПоКоду("796");

    СпрНоменклатура    = СоздатьОбъект("Справочник.Номенклатура");
    СпрГруппа        = СоздатьОбъект("Справочник.Номенклатура");
    
    СпрЕдиницы    = СоздатьОбъект("Справочник.Единицы");
    
    СпрПартии      = СоздатьОбъект("Справочник.Партии");
    СпрГТД        = СоздатьОбъект("Справочник.ГТД");
    СпрСтраны    = СоздатьОбъект("Справочник.ОКСМ");

    Для НомерСтроки = 2 По КолВоСтрок - 1 Цикл

        // артикул
        мАртикул    = СокрЛП(Строка(Лист.Cells(НомерСтроки, 2).Value));

        // ищем номенклатуру по Артикулу
        Если СпрНоменклатура.НайтиПоРеквизиту("АртикулПрайс", мАртикул, 1) = 1 Тогда
            // нашли - выбираем
            мНоменклатура    = СпрНоменклатура.ТекущийЭлемент();
            мЕИ                = СпрНоменклатура.БазоваяЕдиница;
        Иначе
            // не нашли - добавляем новый элемент в группу "_Не обработано"
            Сообщить("Строка № " + (КонтекстДокумента.НомерСтроки + 1) + "." + РазделительСтрок +
                     "       Не найдена номенклатура с артикулом - " + мАртикул + ". Данная номенклатура будет добавлена в папку ""_Не обработано"".");            
            
            СпрГруппа.НайтиПоНаименованию("_Не обработано");
            СпрНоменклатура.ИспользоватьРодителя(СпрГруппа.ТекущийЭлемент());
            СпрНоменклатура.Новый();
            СпрНоменклатура.Наименование         = СокрЛП(Строка(Лист.Cells(НомерСтроки, 3).Value));
            СпрНоменклатура.ВидНоменклатуры     = Перечисление.ВидыНоменклатуры.Прочее;
            СпрНоменклатура.ПолнНаименование    = СокрЛП(Строка(Лист.Cells(НомерСтроки, 3).Value));
            СпрНоменклатура.АртикулПрайс         = мАртикул;
            СпрНоменклатура.Записать();

            // штрих-код
            КодТовараЧисло = Число(СокрЛ(Прав(СпрНоменклатура.Код, 5)));
            Для Сч = 1 По КодТовараЧисло Цикл
                ДопКод             = глДополнитьСтрокуЛ(Строка(Сч), "0", 5);
                ВремШтрихкод     = глСформироватьШтрихкод(глПрефиксВесовогоШтрихкода, ДопКод + "00000");
            КонецЦикла;
            
            // единицы измерения
            СпрЕдиницы.ИспользоватьВладельца(СпрНоменклатура.ТекущийЭлемент());
            СпрЕдиницы.Новый();
            СпрЕдиницы.ОКЕИ            = СпрОКЕИ.ТекущийЭлемент();
            СпрЕдиницы.Коэффициент    = 1;
            СпрЕдиницы.ШтрихКод        = ВремШтрихкод;
            СпрЕдиницы.Записать();
            
            СпрНоменклатура.УстановитьАтрибут("ОсновнаяЕдиница", СпрЕдиницы.ТекущийЭлемент());
            СпрНоменклатура.УстановитьАтрибут("БазоваяЕдиница", СпрЕдиницы.ТекущийЭлемент());
            СпрНоменклатура.СтавкаНДС    = Перечисление.СтавкиНДС.НДС18;
            СпрНоменклатура.СтавкаНП    = СпрСтавкаНП.ТекущийЭлемент();

            СпрНоменклатура.Записать();

            мНоменклатура    = СпрНоменклатура.ТекущийЭлемент();
            мЕИ                = СпрНоменклатура.БазоваяЕдиница;
        КонецЕсли;
        
        // количество
        мКолВо    = Лист.Cells(НомерСтроки, 4).Value;
        
        // сумма
        мСумма    = Лист.Cells(НомерСтроки, 5).Value;
        
        // ставка НДС
        мСтавкаНДС    = Перечисление.СтавкиНДС.НДС18;
        
        // ГТД
        мГТД    = СокрЛП(Строка(Лист.Cells(НомерСтроки, 6).Value));    

        Если (СтрДлина(СокрЛП(мГТД)) = 0) ИЛИ (СтрДлина(СокрЛП(мГТД)) < 10) Тогда
            СпрГТД.НайтиПоНаименованию(СокрЛП("...."),,1);
            мГТДСправ = СпрГТД.ТекущийЭлемент();
        Иначе
            Если СпрГТД.НайтиПоНаименованию(СокрЛП(мГТД),,1) = 0 Тогда
                СпрГТД.Новый();
                СпрГТД.Наименование = СокрЛП(мГТД);
                СпрГТД.Записать();            
                мГТДСправ = СпрГТД.ТекущийЭлемент();
                Сообщить("В справочник ""ГТД"" добавлена строка ГТД: " + мГТДСправ.Наименование);
            Иначе
                мГТДСправ = СпрГТД.ТекущийЭлемент();
            КонецЕсли;  
        КонецЕсли;

        // страна
        мСтрана    = СокрЛП(Строка(Лист.Cells(НомерСтроки, 7).Value));  
        СпрСтраны.НайтиПоНаименованию(СокрЛП(мСтрана));
        мСтранаСправ = СпрСтраны.ТекущийЭлемент();
        
        // заполняем строку
        КонтекстДокумента.НоваяСтрока();
        
        КонтекстДокумента.Номенклатура     = мНоменклатура;
        КонтекстДокумента.Единица        = мЕИ;
        КонтекстДокумента.Количество    = мКолВо;
        КонтекстДокумента.Сумма            = мСумма;
        КонтекстДокумента.СтавкаНДС        = мСтавкаНДС;
        КонтекстДокумента.Коэффициент    = 1.000;
        КонтекстДокумента.ВидТМЦ        = мВидНоменклатуры;

        глПересчетТаблЧасти(КонтекстДокумента, "Сумма");

        СоздатьПартию(, СпрПартии, мГТДСправ, мСтранаСправ, НомерСтроки);
        КонтекстДокумента.Партия          = СпрПартии.ТекущийЭлемент();
        КонтекстДокумента.Партия.ГТД     = СпрПартии.ГТД;
        
    КонецЦикла;

    Excel.DisplayAlerts = 0;
    Excel.ActiveWorkBook.Close(0);
    
    Предупреждение("Готово.");
    
    Форма.Закрыть();
    
КонецПроцедуры
111 Масянька
 
28.12.15
09:21
(109) По артикулу. Нет, задвоения нет.
112 chelentano
 
28.12.15
09:22
+(109) Не может ли код (ну или что там у вас) "Батарейка 2А" совпадать с кодом "Батарейка 3А"?
113 aka AMIGO
 
28.12.15
09:22
(110) чем-то тебя не устроил мой вариант?
114 Масянька
 
28.12.15
09:22
(112) Нет. Коды и артикулы разные.
115 Масянька
 
28.12.15
09:23
(113) Я ненавижу (!!!), когда не понимаю, почему ошибка возникла :(
116 chelentano
 
28.12.15
09:23
(114) А в файле?
117 Масянька
 
28.12.15
09:23
(116) Нету файла. Уже :(
118 HawkEye
 
28.12.15
09:25
(110) покажи АртикулПрайс у  "2А"  и "3А"
119 aka AMIGO
 
28.12.15
09:26
(115) Я тебе объяснил причину ошибки. в (92).
Посмотри в отладчике, останови  на ..НоваяСтрока(), В табло: ...КоличествоСтрок()
проследи за заполнением реквизитов строки контекста документа..

Вроде не так сложно.. И всё видно.
120 Mikeware
 
28.12.15
09:27
Мораль: если "оригиналы заказов" могут утрачиваться - пишите лог, храните копии.
зы. табличка с регистрацией изменеий документов была самой большой в базе...
121 Масянька
 
28.12.15
09:27
1379597, код - 6290
1379594, код - 6291
122 chelentano
 
28.12.15
09:29
имхо, косяк в файле, две позиции с одинаковым артикулом (это если допустить, что обработка работает верно)
123 HawkEye
 
28.12.15
09:30
(121) значит в файле было
1379597 - 16 шт
1379594 - 0 шт

или наоборот.

(122) тогда бы номенклатура не создалась
124 Масянька
 
28.12.15
09:31
(122) Но сели-то с разными артикулами...
Мне тоже кажется, что косяк в файле...
Суммы проверяются, а количество строк - нет... Но с другой стороны - суммы не сошлись бы...
125 aka AMIGO
 
28.12.15
09:31
(122) (123) Да нет, немного не то.. всё в порядке с файлом, проверено

Еще раз: В обработку поступает контекст дока. Доходит до записи строки, но в контекст строка не добавляется.
ТЧ после обработки - пуста. А в Справочник Номенклатура всё пишется правильно.
126 Mikeware
 
28.12.15
09:32
(125) njulf ,s rjkbxtcndf yt cjikbcm
127 Масянька
 
28.12.15
09:32
(123) Вот похоже... И партия села, но не провелась (док-та поступления нет), потому, как кол-во 0...
128 Mikeware
 
28.12.15
09:32
(125) тогда бы количества не сошлись
129 Масянька
 
28.12.15
09:32
(125) А я тебе говорю, что добавляется.
130 aka AMIGO
 
28.12.15
09:33
(129) Ну, хорошо.
131 chelentano
 
28.12.15
09:35
(123), (124) Так, может, она раньше когда-то была создана... А вообще, без исходного файла трудно понять. Согласен со (120) - пишите логи на будущее, если файлы не сохраняются
132 HawkEye
 
28.12.15
09:37
(125) с чего ты это взял про файл? )) не правильно все в твоей логике


(131) во первых, коды по порядку идут, значит создались друг за другом, во вторых если бы раньше создалась использовалась где-нибудь еще.
133 chelentano
 
28.12.15
09:43
(125) Если в контекст строка не добавилась - почему сошлись суммы?
(132) Ну тогда, ты прав в (123), один фиг без файла или логов не разобраться...
Или реально кто-то из пользователей подменил потом номенклатуру
134 Масянька
 
28.12.15
11:01
А что есть "PARENTID  |ID parent obj"?
135 Остап Сулейманович
 
28.12.15
11:03
(134) АйДи родителя | родительского объекта.
136 Масянька
 
28.12.15
11:04
(135) Вас пока дождешься... Уже сама нашла :)
137 Злопчинский
 
28.12.15
11:11
смотрите исходный файл.
вроде все возможные моменты обсосоали.
138 Mikeware
 
28.12.15
11:13
(136) а зачем искать? написано же - "parent"
139 Bigbro
 
28.12.15
11:36
проверь в предпоследней строке партия и ГТД правильные или от последней строки.
в смысле от последней = несозданной, которая должна была быть последней.
140 Масянька
 
28.12.15
12:52
(139) Смешно, но они одинаковые...
6 штук (те, что сели в док-т) и 6 штук (те, что не сели в док-т).