Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Загрузка данных в документ , Заполнение нового документа 3 страниц V  < 1 2 3 >          
vadim007 Подменю пользователя
сообщение 02.07.11, 20:13
Сообщение #21

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

В общем, поэкспериментировал с различными вариантами, покопался в инете, и выводы следующие:
1 Вариант
Док = СоздатьОбъект("Документ.СписаниеТМЦ");
Док.Новый();
Док.ЗагрузитьТабличнуюЧасть(Таб);
Рез = ОткрытьФорму(Док, Конт);

Табличная часть заполняется, но документ не открывается, т.к. он не сохранен.
2 Вариант
В продолжение первого:
НачатьТранзакцию();
Рез = Док.Записать();
Сообщить(Рез);
Рез = ОткрытьФормуМодально(Док,Конт);
Сообщить(Рез);
Если ПустоеЗначение(Конт) = 0 Тогда
.....ЗафиксироватьТранзакцию();
Иначе
.....ОтменитьТранзакцию();
КонецЕсли;

также не работает - ОткрытьФормуМодально(..) возвращает 0. Оно и понятно - документа в системе еще нет.
3 Вариант
ОткрытьФорму("Документ.СписаниеТМЦ", Конт);
Если ТипЗначения(Конт) = 100 Тогда
...Конт.ПричинаСписания = "Проверка алгоритма";
...Конт.ЗагрузитьТабличнуюЧасть(Таб);
...Таб.ВыбратьСтроки();
...Пока Таб.ПолучитьСтроку() = 1 Цикл
......Конт.АктивизироватьСтроку(1);
......Конт.НоваяСтрока();
......Конт.ТМЦ = Таб.ТМЦ;
......Конт.Партия = Таб.Партия;
......Конт.Кво = Таб.Кво;
......Конт.Ед = Таб.Ед;
......Конт.Коэффициент = Таб.Коэффициент;
......Конт.ЦенаБезНДС = Таб.ЦенаБезНДС;
......Конт.СуммаБезНДС = Таб.СуммаБезНДС;
......Конт.СуммаСНДС = Таб.СуммаСНДС;
......Конт.НДС = Таб.НДС;
...КонецЦикла;
КонецЕсли;

документ открывается, но ТЧ пуста. Это багофича от 1С.
Т.о., работоспособный вариант - внести некоторые изменения в код формы документа. Или анализировать параметр, как предложила 5 копеек, или дописать ВводНаОсновании(..). Более просто - анализировать переданный форме параметр.
PS: в инете натыкался на обсуждение этой проблемы аж в 90-х годах.
Причина редактирования: Выделяйте код!

kalyamov Подменю пользователя
сообщение 02.07.11, 20:35
Сообщение #22

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

Цитата(vadim007 @ 02.07.11, 21:13) *
документ открывается, но ТЧ пуста. Это багофича от 1С.


Это не фича, после открытьформу() с конт работать как Вы написали нет смысла.

"Можно сразу передавать данные и в модуле документа обрабатывать их через форму.параметр." А это я Вам написал на первый призыв не трогать транзакцию. Хотя, проверю еще сам, как оно неработает.

5_kopeek Подменю пользователя
сообщение 02.07.11, 22:06
Сообщение #23

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Цитата(vadim007 @ 02.07.11, 20:13) *
В общем, поэкспериментировал с различными вариантами, покопался в инете, и выводы следующие:
3 Вариант
ОткрытьФорму("Документ.СписаниеТМЦ", Конт);
Если ТипЗначения(Конт) = 100 Тогда
...
...Конт.ЗагрузитьТабличнуюЧасть(Таб);
...Таб.ВыбратьСтроки();
...Пока Таб.ПолучитьСтроку() = 1 Цикл
......Конт.АктивизироватьСтроку(1);
......Конт.НоваяСтрока();
...
КонецЕсли;

Зачем Вы пытаетесь активизировать строку, которой нет?
Цитата(vadim007 @ 02.07.11, 20:13) *
документ открывается, но ТЧ пуста. Это багофича от 1С.

Об этом и шла речь. Это не багофича, а
Цитата(5_kopeek @ 02.07.11, 14:39) *
Не думаю, что получится произвольно манипулировать табличной частью документа, в частности, воспользоваться методом ЗагрузитьТабличнуюЧасть(), поскольку КонтекстОткрытойФормы не есть КонтекстДокумента и не есть КонтекстМодуляФормыДокумента, а "манипулировать открытой формой" не значит "манипулировать табличной частью документа".

vadim007 Подменю пользователя
сообщение 03.07.11, 7:33
Сообщение #24

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Цитата(5_kopeek @ 02.07.11, 23:06) *
Зачем Вы пытаетесь активизировать строку, которой нет?

Это остатки кода от шаманства.

-=VJ=- Подменю пользователя
сообщение 03.07.11, 9:23
Сообщение #25

Оратор
Иконка группы
Группа: Местный
Сообщений: 402
Из: Киев
Спасибо сказали: 73 раз
Рейтинг: 0

Цитата(5_kopeek @ 02.07.11, 23:06) *
Об этом и шла речь.


Некоторые любят наступать на грабли самостоятельно smile.gif


Signature
Живу на VJ.net.ua.
Спілкуюсь в ЖЖ

kalyamov Подменю пользователя
сообщение 03.07.11, 12:30
Сообщение #26

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

Надо как то уже подитоживать тему. Она не первый раз поднимается на форумах, но конкретного решения никто не озвучил - помоему, просто жмутся, чтоб другим не досталось.
1. Добавлять в модуле документа обработку - форма.параметр
2. Через транзакцию - пусть он и не правильный, но можно работать, если это редкие случаи.
3. Искать другой вариант, он есть, но о нем не хотят писать. Как то через контекст пробовать. Открыть форму, на какое то время сделать так , чтоб пользователь не мог с ней работать,заполнить ее и открыть форму еще раз, тогда у нас будет контекст открытой формы, но еще не записаной. Это теория, надо проверить.

vadim007 Подменю пользователя
сообщение 03.07.11, 12:44
Сообщение #27

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Цитата(kalyamov @ 03.07.11, 13:30) *
3. Искать другой вариант, он есть, но о нем не хотят писать.

В инете было решение через использование внешних компонент (Formex и др), но это нарушает лицензионные условия 1С.

kalyamov Подменю пользователя
сообщение 03.07.11, 12:52
Сообщение #28

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

Цитата(vadim007 @ 03.07.11, 13:44) *
В инете было решение через использование внешних компонент (Formex и др), но это нарушает лицензионные условия 1С.


Там некоторые хвастались, что есть у них еще какое то решение, но на предложение поделиться - отшучивались. Черт его знает, верить или нет. Самый приемлимый вариант - изменение модуля документа. Только при обновлении релиза будут проблемы, но тут уж надо выбирать.

5_kopeek Подменю пользователя
сообщение 03.07.11, 15:03
Сообщение #29

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Цитата(kalyamov @ 03.07.11, 12:52) *
Самый приемлимый вариант - изменение модуля документа. Только при обновлении релиза будут проблемы, но тут уж надо выбирать.

Человек пишет обработку для загрузки данных из какого-то файла, неужели для него будет проблемой восстановить 3 строчки в документе после обновления?! Тем более, СписаниеТМЦ -- не самый изменяемый документ, не удивлюсь, если в 10 последних релизах он менялся аж раз.

kalyamov Подменю пользователя
сообщение 03.07.11, 15:54
Сообщение #30

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

Цитата(5_kopeek @ 03.07.11, 16:03) *
Человек пишет обработку для загрузки данных из какого-то файла, неужели для него будет проблемой восстановить 3 строчки в документе после обновления?! Тем более, СписаниеТМЦ -- не самый изменяемый документ, не удивлюсь, если в 10 последних релизах он менялся аж раз.


Это к чему?

Vofka Подменю пользователя
сообщение 03.07.11, 16:11
Сообщение #31

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(kalyamov)
Это к чему?

Я так понял, к тому, что
Цитата(vadim007)
Т.о., работоспособный вариант - внести некоторые изменения в код формы документа. Или анализировать параметр, как предложила 5 копеек, или дописать ВводНаОсновании(..). Более просто - анализировать переданный форме параметр.

kalyamov Подменю пользователя
сообщение 03.07.11, 16:22
Сообщение #32

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

Цитата(Vofka @ 03.07.11, 17:11) *
Я так понял, к тому, что


"Можно сразу передавать данные и в модуле документа обрабатывать их через форму.параметр" - предложено давно и не 5 коп.. Уже предложено тему подитожить и закрыть. К чему дальнейший треп ?

5_kopeek Подменю пользователя
сообщение 03.07.11, 22:11
Сообщение #33

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Цитата(kalyamov @ 03.07.11, 15:54) *
Это к чему?

Вы выразили опасения
Цитата(kalyamov @ 03.07.11, 12:52) *
Только при обновлении релиза будут проблемы, но тут уж надо выбирать.

, что при изменении модуля документа возникнут сложности с обновлением. Поскольку Вам непонятен был смысл моего поста, попробую объяснить более доступно. Мои слова были к тому, что человеку, который может написать обработку по загрузке данных из файла, не составит труда при установке очередного обновления вписать 3 строчки необходимого кода в модуль документа. К тому же речь идет о документе, который очень редко меняется в типовой конфигурации, поэтому вполне вероятно, что и вписывать ничего не придется -- просто снимать галку с этого документа при обновлении. Так что не думаю, что возникнут большие проблемы и стоит сложный выбор.
Цитата(kalyamov @ 03.07.11, 16:22) *
"Можно сразу передавать данные и в модуле документа обрабатывать их через форму.параметр" - предложено давно и не 5 коп..

Калям., хоть и процитировала Вас
Цитата(kalyamov @ 01.07.11, 22:13) *
... Можно сразу передавать данные и в модуле документа обрабатывать их через форму.параметр...

, а только сейчас заметила (пришлось специально перечитать всю тему smile.gif), что это -- передать данные, а не получать контекст, через параметр -- впервые было предложено Вами. В общем, не претендую на первенство, не переживайте так сильно.

kalyamov Подменю пользователя
сообщение 03.07.11, 23:22
Сообщение #34

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

Я не переживаю, хоть по некоторым предидущим темам заметил странную тенденцию. По поводу моего опасения насчет обновления - не думаю, что это лишнее предупреждение автору темы. Вам конечно, оно не к чему, три строчки , три там.

Цитата(5_kopeek @ 03.07.11, 23:11) *
Поскольку Вам непонятен был смысл моего поста, попробую объяснить более доступно.


Лучше попробуйте понять, к чему я написал к чему это ?

Vladimir1C Подменю пользователя
сообщение 04.07.11, 10:28
Сообщение #35

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день!
Провозился немного на выходных, пробуя Ваши советы, но увы пока невезет...
при вызове из обработки на кнопку
 
    НачатьТранзакцию();
    Док = СоздатьОбъект("Документ.СписаниеТМЦ");    
    Док.Записать();       /// здесь вызываеться  err при попытке записи и код дальше не выполняется...
    Конт="";
    ОткрытьФормуМодально(Док,Конт);
    Если ПустоеЗначение(конт)=0 тогда
    ЗафиксироватьТранзакцию();
    Сообщить("документ сохраниться");    
    Иначе
    ОтменитьТранзакцию(); // Если в конт ничего не вернулось, то не сохраняем
    Сообщить("в конт ничего не вернулось");    
    КонецЕсли;


Не работает. при выполнении кода Док.Записать(); пишет: err: Док.Записать();
и все.
Моя мечта создать обработку которая загружает список товара из файла(*.DBF) полученого из терминала сбора данных(это без особых проблем реализовано)
и на кнопку этот список загружать в новый документ который отображаться пользователю, тот его правит потом
сохрнаняет...
Не дается последняя часть вроде все елементарно, создал обьект документа залил туда информацию, показал пользователю.

Но есть сильное желание реализовать это без записи документа и без модификации основной конфигурации, посредством только обработки.
Т.е. не трогая модуль докумнта.

В журнале документов, на прав клик мышкой есть меню, команда "Копировать" 1С создает копию существ документа из нов номером из таким же перечнем материала...
Это то похожее что хотел реализовать.



Запоздалый у меня этот ответ, извините...(не обновил страничку форума)


Signature
POLTAVA

5_kopeek Подменю пользователя
сообщение 04.07.11, 10:31
Сообщение #36

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Цитата(Vladimir1C @ 04.07.11, 10:28) *
Запоздалый у меня этот ответ, извините...(не обновил страничку форума)

Да уж, тут такие страсти, а Вы о каком-то заполнении без изменения конфигурации... biggrin.gif

Vladimir1C Подменю пользователя
сообщение 04.07.11, 10:49
Сообщение #37

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(5_kopeek @ 04.07.11, 11:31) *
Да уж, тут такие страсти, а Вы о каком-то заполнении без изменения конфигурации... biggrin.gif


Да это точно...
Есть шанс попробовать использовать передачу параметров в документ - это сработает.
Придется подпортить ориг код модуля, ну и ладно.


Signature
POLTAVA

Vofka Подменю пользователя
сообщение 04.07.11, 11:07
Сообщение #38

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата
Есть шанс попробовать использовать передачу параметров в документ - это сработает.

Ну вы ж потом результат предоставьте, вдруг ещё кому пригодится wink.gif

Vladimir1C Подменю пользователя
сообщение 04.07.11, 11:11
Сообщение #39

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Хорошо)


Signature
POLTAVA

Vladimir1C Подменю пользователя
сообщение 07.07.11, 9:16
Сообщение #40

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Доброе утро, участникам форума!
Предоставляю результат, может кому пригодится(да и хоть как то отблагодарить Вам всем за выявленную поддержку).
Если вкратце, воспользовался советом 5_kopeek.

Как это выглядит:
во внешней обработке код такой:
Процедура СоздатьСписаниеТМЦ()
                
    ОткрытьФорму("Документ.СписаниеТМЦ",ТаблицаЗнач);
            
КонецПроцедуры


В конфигурации "подпортил" так сказать одно место, это предоопределена процедура Процедура ВводНового(ПризнакКопирования)
Процедура ВводНового(ПризнакКопирования)
    
        // ....код выше не изменял, там выполняются установка, первоначальная инициализация и прочея
    /// это код размещен в самом конце(надеюсь на на что больше не влияет, кроме на то что надо сделать), который обрабатывает принимаемый параметр
    Если ТипЗначенияСтр(Форма.Параметр)="ТаблицаЗначений" Тогда
        
        СпрСотр = СоздатьОбъект("Справочник.ТМЦ");
        ТаблЗначФайла = Форма.Параметр;
        
        ТаблЗначФайла.ВыбратьСтроки();
        Пока ТаблЗначФайла.ПолучитьСтроку()>0 Цикл
            
            НоваяСтрока();
            
            Если СпрСотр.НайтиПоКоду(ТаблЗначФайла.Код) = 1 Тогда
                НайденныйТовар = СпрСотр.ТекущийЭлемент();
                ТМЦ = НайденныйТовар;
            КонецЕсли;
            
            //Коэффициент = Док.Коэффициент;
            Кво = ТаблЗначФайла.ПредвКолВо;        
            
        КонецЦикла;        

//вот  еще один вариант заполнения, но я его не совсем понял.таблица значений
///наверное должна быть идентична табличной части документа???  просто еще не пробивал вариант...
///        ЗагрузитьТабличнуюЧасть(Форма.Параметр);

    Сообщить("Пошли мои параметры...");
        
    КонецЕсли; // ТипЗначенияСтр(Форма.Параметр)="ТаблицаЗначений"    
        
КонецПроцедуры


Вот и все. На кнопку во внешней обработке создается форма нового документа(ранее не записанного в базу,напомню)
с уже заполненными позициями переданными из обработки, которая их загрузила из файла.

Надо попробовать еще этот вариант: help.gif
Процедура ВводНового(ПризнакКопирования)
    
        // ....код выше не изменял, там выполняются установка, первоначальная инициализация и прочея
    /// это код размещен в самом конце(надеюсь на на что больше не влияет, кроме на то что надо сделать), который обрабатывает принимаемый параметр
    Если ТипЗначенияСтр(Форма.Параметр)="ТаблицаЗначений" Тогда        

               ЗагрузитьТабличнуюЧасть(Форма.Параметр);
           Сообщить("Пошли мои параметры...");        

    КонецЕсли; // ТипЗначенияСтр(Форма.Параметр)="ТаблицаЗначений"    
        
КонецПроцедуры


Но я не понял в каком виде надо создавать таблицу значений в параметре Форма.Параметр.

Напоследок скажу, один товарищ говорил мне передавать параметры также(если я его правильно понял, в детали правда не посвятил,т.е. на словах объяснил ),
но в теле "Процедура ВводНаОснованииВводНаОсновании(Док)" он посмотрел конфигурацию базы и предлагал сделать там проверку на тип и если это
тип таблица то соответственно делать свое.
Аргументировал он это что ввод на основании документа "Списание ТМЦ" предусмотрен только на основании документа "Инвентаризация".
Если честно я его не совсем(или вообще не ) понял..Попытался распросить, но увы пока молчит.
Не знаю как правильней, но то получилось уже работает, та что...над этим голова уже не болит :-)


Signature
POLTAVA

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


3 страниц V  < 1 2 3 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 21:39
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!