|
обработка Корректировка записей регистров | ☑ | ||
---|---|---|---|---|
0
amadeus2010
24.04.12
✎
17:00
|
Добрый вечер, помогите пожалуйста решить такой вопрос. Надо в табличную часть документа сбросить данные полученные из Акцес. для этого я создал обработку в которую загружаются данные из Акцесс. Далее создается документ, но строки документа не заполняются данными из табличной части обработки.Привожу код
Процедура ОсновныеДействияФормыЗагрузитьТаблицу(Кнопка) Файл = "D:\Продажи и возвраты за прошлый период.mdb" ; СтрокаПодключения = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" + Файл + ";"""; Connection = Новый COMОбъект("ADODB.Connection"); Попытка Connection.Open(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = "SELECT * FROM SALES_RETURNS"; Command.CommandType = 1; RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet = Command.Execute(); стр =""; Пока НЕ RecordSet.EOF() Цикл для н=0 по Recordset.Fields.Count -1 цикл стр = стр + " " + Recordset.Fields(н).Value; КонецЦикла; Сообщить(стр); стр =""; ЗаполнитьДокумент(Recordset); RecordSet.MoveNext(); КонецЦикла; RecordSet.Close(); Connection.Close(); Процедура ЗаполнитьДокумент(СтрокаДанных) перем ПоследняяДата; // создание документов по последней дате из списка Док=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент(); Док.Дата=СтрокаДанных.Fields(0).Value; СтрокаПродажи =Док.Движения.Продажи.Добавить(); СтрокаПродажи.Период = СтрокаДанных.Fields(0).Value; СтрокаПродажи.Контрагент=СтрокаДанных.Fields(1).Value; СтрокаПродажи.Номенклатура=СтрокаДанных.Fields(3).Value; СтрокаПродажи.Количество=СтрокаДанных.Fields(4).Value; СтрокаПродажи.Стоимость=СтрокаДанных.Fields(5).Value; Док.Записать(); В табличном поле обработке имеются следующие поля: Период,контрагент,количество,сумма. Пытаюсь создать автоматом документ Корректировка записей регистров |
|||
1
КМ155
24.04.12
✎
17:03
|
(0) MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\1.MDB"); дальше читать не стал |
|||
2
Ирис_яркая
24.04.12
✎
17:08
|
(1) а что так?
|
|||
3
amadeus2010
24.04.12
✎
17:09
|
верхний код был взят с одного из форумов. Подключение к Акцесу происходит, данные выгружаются из таблицы. А какое отличие между
Файл = "D:\Продажи и возвраты за прошлый период.mdb" ; СтрокаПодключения = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" + Файл + ";"""; Connection = Новый COMОбъект("ADODB.Connection"); и MyCon = Новый COMОбъект ("ADODB.Connection"); MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\1.MDB"); |
|||
4
amadeus2010
24.04.12
✎
17:14
|
далее по коду я тоже ссылаюсь на строку подключения
Файл = "D:\Продажи и возвраты за прошлый период.mdb" ; СтрокаПодключения = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" + Файл + ";"""; Connection = Новый COMОбъект("ADODB.Connection"); Попытка Connection.Open(СтрокаПодключения); |
|||
5
Buster007
24.04.12
✎
17:16
|
платформа какая?
|
|||
6
Ахиллес
24.04.12
✎
17:16
|
СтрокаДанных в отладчике проверял? Что там находится?
|
|||
7
amadeus2010
24.04.12
✎
17:17
|
8.1.15.14 конфигурация УПП 1.2
|
|||
8
amadeus2010
24.04.12
✎
17:19
|
Recordset.Fields(н).Value-одно из значений строк таблицы
|
|||
9
Buster007
24.04.12
✎
17:19
|
в ЗаполнитьДокумент заходит?
|
|||
10
Ахиллес
24.04.12
✎
17:25
|
(8) Тогда сделай проще. Если документов не много, то переделай на обработку по заполнению уже существующего документа. Юзер создаёт ручками пустой документ корректировки, а обработка его заполняет. По колхозному конечно, зато работает.
|
|||
11
amadeus2010
24.04.12
✎
17:25
|
да заходит, вопрос заключается в том как вывести строки таблицы из акцесс в строки табличной части обработки
|
|||
12
amadeus2010
24.04.12
✎
17:27
|
пустой документ создается и внизу через Сообщить() заполняет данными таблицы , а мне надо эти данные в готовые поля записать. Документов много весь 2011-апрель2012.
|
|||
13
amadeus2010
25.04.12
✎
07:56
|
ау есть кто-нибудь
|
|||
14
John83
25.04.12
✎
14:42
|
как бы пример
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НДСРеализация0Остатки.Организация, | НДСРеализация0Остатки.Состояние, | НДСРеализация0Остатки.СчетФактура, | НДСРеализация0Остатки.ВидЦенности, | НДСРеализация0Остатки.СтавкаНДС, | НДСРеализация0Остатки.Покупатель, | -НДСРеализация0Остатки.СуммаБезНДСОстаток КАК СуммаБезНДС, | -НДСРеализация0Остатки.НДСОстаток КАК НДС, | -НДСРеализация0Остатки.КурсоваяРазницаОстаток КАК КурсоваяРазница |ИЗ | РегистрНакопления.НДСРеализация0.Остатки(&ДатаНач, СчетФактура.Дата < &Дата) КАК НДСРеализация0Остатки | |УПОРЯДОЧИТЬ ПО | НДСРеализация0Остатки.СчетФактура.Дата |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Дата", НачалоГода(Регистратор.Дата)); Запрос.УстановитьПараметр("ДатаНач", НачалоКвартала(Регистратор.Дата)); Выборка = Запрос.Выполнить().Выбрать(); Док = Регистратор.ПолучитьОбъект(); ДвиженияДок = Док.Движения; Регистры = Док.ТаблицаРегистровНакопления.Добавить(); Регистры.Имя = "НДСРеализация0"; Регистры.Представление = "НДСРеализация0"; НДСРеализация0 = ДвиженияДок.НДСРеализация0; Пока Выборка.Следующий() Цикл СтрокиТаблицы = НДСРеализация0.Добавить(); ЗаполнитьЗначенияСвойств(СтрокиТаблицы, Выборка); СтрокиТаблицы.ВидДвижения = ВидДвиженияНакопления.Приход; СтрокиТаблицы.Период = Регистратор.Дата; КонецЦикла; Док.Записать(); |
|||
15
amadeus2010
25.04.12
✎
15:14
|
добрый день спасибо за пример,я пошел другим путем и сделал вот так
СледующаяДата=ТекущаяДата(); Если СледующаяДата>Док.Дата Тогда Док = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент(); ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь); Док.Дата=СтрокаДанных.Fields(0).Value; Док.Ответственный=УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный"); Док.Комментарий="Документ создан при помощи обработки Корректировка записей регистров"; //Док.ИспользоватьЗаполнениеДвижений=Истина; //СтрокаПродажи =Док.Движения.Продажи.Добавить(); СтрокаПродажи=Док.ТаблицаРегистровНакопления.Добавить(); СтрокаПродажи.Имя="Продажи"; СтрокаПродажи.Представление="Продажи"; Док.Записать(); ДокСсылка=Док.Ссылка; НЗПродажи=РегистрыНакопления.Продажи.СоздатьНаборЗаписей(); НЗПродажи.Отбор.Регистратор.Значение=ДокСсылка; ЗПродажи=НЗПродажи.Добавить(); ЗПродажи.Период= СтрокаДанных.Fields(0).Value; ЗПродажи.Регистратор=ДокСсылка; ЗПродажи.Организация=Справочники.Организации.НайтиПоКоду("000000001"); ЗПродажи.Контрагент=ОбщегоНазначения.ПолучитьКонтрагентаПоКодуОракл(Формат(СтрокаДанных.Fields(1).Value,"ЧГ=0")); ЗПродажи.Номенклатура=ОбщегоНазначения.ПолучитьНоменклатуруПоКодуОракл(Формат(СтрокаДанных.Fields(3).Value,"ЧГ=0")); ЗПродажи.Количество=СтрокаДанных.Fields(4).Value; ЗПродажи.Стоимость=СтрокаДанных.Fields(5).Value; ЗПродажи.СтоимостьБезСкидок=СтрокаДанных.Fields(5).Value; ЗПродажи.Активность=Истина; НЗПродажи.Записать(); КонецЕсли; теперь хочу сделать так чтобы при смене даты создавался новый документ,т.е новый документ на каждый день. |
|||
16
amadeus2010
25.04.12
✎
15:42
|
ау,ау?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |