Имя: Пароль:
1C
1С v8
УТ 11. Обработка заполнения табличной части дока
0 Maлblш
 
13.07.11
08:58
Доброе утро.
Помогите разобраться. Написала обработку для заполнения ТЧ документов из файла xls для УТ 11 ред. Но с табличной частью какая-то беда. Новые строки добавляются только при повторном открытии обработки заполнения %)
Все делаю обычным способом: получаю объект, добавляю новую строку таб. части, записываю... и ничего не выходит(
1 Maлblш
 
13.07.11
09:39
ап
2 Maлblш
 
13.07.11
12:41
sos
3 palpetrovich
 
13.07.11
12:42
код покажи
4 palpetrovich
 
13.07.11
12:52
ну лано, тогда я покажу :) ...примерно так должно быть:
Excel = новый COMОбъект("Excel.Application");
Док = Excel.Workbooks.Open(ИмяФайла);
СпрНоменклатура= Справочники.Номенклатура;
НовыйОбъект = Документы["РеализацияТоваровУслуг"].СоздатьДокумент();

Загрузка = Док.Worksheets(НомерЛиста).UsedRange;
КоличествоСтрокЭкселе = Док.Worksheets(НомерЛиста).UsedRange.Rows.Count;
Для Стр = НачСтрока  По КоличествоСтрокЭкселе Цикл
   НоваяСтрока = НовыйОбъект.Товары.Добавить();
   Наименование = Загрузка.Cells(Стр, СтолбецНаименование).Value;
   НайденнаяСсылка = СпрНоменклатура.НайтиПоНаименованию(Наименование, Истина);
   Если НайденнаяСсылка <> СпрНоменклатура.ПустаяСсылка() Тогда
       НоваяСтрока.Номенклатура = НайденнаяСсылка;
   КонецЕсли;
   НоваяСтрока.Количество = Загрузка.Cells(Стр, СтолбецКоличество).Value;
КонецЦикла;
НовыйОбъект.Записать();
5 Maлblш
 
13.07.11
12:53
Для каждого ОбъектНазначения  Из ОбъектыНазначения Цикл
       
       Док = ОбъектНазначения.Значение.ПолучитьОбъект();
       
       Док.Товары.Очистить();
       
       Для каждого СтрокаТаблицы Из ТабНоменклатуры Цикл
           Если ВариантПоиска = 0 Тогда
               Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", СтрокаТаблицы.Артикул);
           Иначе                
               Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТаблицы.Наим);
           КонецЕсли;
           Если Номенклатура.Пустая() Тогда
               Сообщить("Не найдена позиция номенклатуры " + СтрокаТаблицы.Наим + ", арт. " + СтрокаТаблицы.Артикул
               + " (строка № " + СтрокаТаблицы.НомСтроки + ")", СтатусСообщения.Внимание);
           Иначе
               СтрокаТовары = Док.Товары.Добавить();
               СтрокаТовары.Номенклатура = Номенклатура;
               СтрокаТовары.Количество = Число(СтрокаТаблицы.Количество);
           КонецЕсли;
       КонецЦикла;
       
       Док.Записать();
       Док.ПолучитьФорму().Обновить();
   
   КонецЦикла;
6 Maлblш
 
13.07.11
12:54
Все те же самое, только из экселя сначала в таблицу значений записываю данные.

Док.ПолучитьФорму().Обновить(); - это убрать из текста
это я уже голову ломаю, что еще можно придумать...
7 Maлblш
 
13.07.11
12:56
У меня внешняя подключаемая обработка заполнения. Документ уже создан.
8 palpetrovich
 
13.07.11
12:58
(7) я понял что создан, а открыт во время заполнения?
9 Maлblш
 
13.07.11
12:59
(8) Конечно открыт. Стандартный механизм подключаемых обработок заполнения (кнопка "Заполнение...")
10 Maлblш
 
13.07.11
13:00
Такое ощущение, что строки попадают в тч, но не отображаются там сразу. Если закрыть документ, а потом открыть - то все появляется.
11 Maлblш
 
13.07.11
13:01
Потому я пытаюсь уже обновлять форму, но этот метод не доступен, не спела я разобраться в управляемых формах этих дурацких(((((
Текущей работы выше крыши.
12 palpetrovich
 
13.07.11
13:02
(9) ну стал-быть форма просто не обновляется ...я еще не делал так, надо попробовать
и запись лучше так навероное делать
   Попытка
       Док.Записать();
   Исключение
       сообщить("  " + ОписаниеОшибки(), СтатусСообщения.Внимание);
   КонецПопытки;
13 palpetrovich
 
13.07.11
13:05
еще и речь о "управляемых формах"... я только только начал с ними знакомиться :)
ну может кто-то из знающих подтянется :)
14 Maлblш
 
13.07.11
13:05
(12) Да, форма не обновляется( А как еще обновить...
Не поняла мысль :) Зачем Док.Записать() помещать в попытку-исключение, она срабатывает стабильно. Запись происходит, но в форме не отображается.
15 Maлblш
 
13.07.11
13:05
(13) Вот и я только-только..)
%)
16 palpetrovich
 
13.07.11
13:14
(14) привычка :) ...Обжегшись на молоке, будешь дуть и на воду :)
17 palpetrovich
 
13.07.11
15:17
может это поможет:
УправляемаяФорма.ОбновитьОтображениеДанных (ManagedForm.RefreshDataRepresentation)
УправляемаяФорма (ManagedForm)
ОбновитьОтображениеДанных (RefreshDataRepresentation)
Синтаксис:

ОбновитьОтображениеДанных()
Описание:

В принудительном порядке обновляет содержание элементов управления.
Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
18 Sarmen
 
13.07.11
15:57
А не получается так, что открыта одна версия объекта. При его программном получении и последующей записи возникает вторая версия объекта. Естественно в первой версии никаких видимых изменений не происходит. Может что-то типа этого?
19 Sarmen
 
13.07.11
16:03
Надо как-то через:
-  ДанныеФормыВЗначение(<Объект>, <Тип>)

А потом вернуть объект в форму:
-  ЗначениеВДанныеФормы(<Значение>, <Объект>)
20 Maлblш
 
14.07.11
01:02
<матерные слова>.. ненавижу одинэсников за эту гребаную платформу 8.2 с тупым управляемым приложением...
Уйти что ли из 1С в какие-то другие сферы деятельности... раз и навсегда.
21 Икогнито
 
14.07.11
01:05
(20) Для некоторых, новое - враг хорошего.
22 Икогнито
 
14.07.11
01:06
(20) мне сегодня сказали, что 8.2 почти ничем от 8.1 не отличается... промолчал...
23 Maлblш
 
14.07.11
01:27
Короче еще один день убит на эту задачу, а решения так и нет %)
(17) Этот метод тоже недоступен.
(19) Может у меня совсем мозги сварились, я не понимаю, как юзать в данном случае эти методы :(
24 Maлblш
 
14.07.11
01:30
(22) да, видно для автора этих слов английский язык почти ничем не отличается от бенгальского...
25 Maniac
 
14.07.11
01:47
Уже давно все етьс
26 Maniac
 
14.07.11
01:48
27 Maniac
 
14.07.11
01:51
Я тоже парился долго пока не нашел решения
28 Maniac
 
14.07.11
01:52
29 Maniac
 
14.07.11
01:53
Надо просто через хранилище передавать данные. в 8.2 только так.
30 Maлblш
 
14.07.11
09:12
Ааааа, получилось!!!!
Воспользовалась алгоритмом:
http://infostart.ru/public/84119/
31 palpetrovich
 
14.07.11
10:46
(30) спасибо что поделилась, умничка :)