|
v8: создание документа в зависимости от даты | ☑ | ||
---|---|---|---|---|
0
amadeus2010
25.04.12
✎
15:48
|
перем СледующаяДата;
Если СледующаяДата>СтрокаДанных.Fields(0).Value Тогда Док = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент(); ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь); Док.Дата=СтрокаДанных.Fields(0).Value; Док.Ответственный=УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный"); Док.Комментарий="Документ создан при помощи обработки Корректировка записей регистров"; //Док.ИспользоватьЗаполнениеДвижений=Истина; //СтрокаПродажи =Док.Движения.Продажи.Добавить(); СтрокаПродажи=Док.ТаблицаРегистровНакопления.Добавить(); СтрокаПродажи.Имя="Продажи"; СтрокаПродажи.Представление="Продажи"; Док.Записать(); ДокСсылка=Док.Ссылка; НЗПродажи=РегистрыНакопления.Продажи.СоздатьНаборЗаписей(); НЗПродажи.Отбор.Регистратор.Значение=ДокСсылка; ЗПродажи=НЗПродажи.Добавить(); ЗПродажи.Период= СтрокаДанных.Fields(0).Value; ЗПродажи.Регистратор=ДокСсылка; ЗПродажи.Организация=Справочники.Организации.НайтиПоКоду("000000001"); ЗПродажи.Контрагент=ОбщегоНазначения.ПолучитьКонтрагентаПоКодуОракл(Формат(СтрокаДанных.Fields(1).Value,"ЧГ=0")); ЗПродажи.Номенклатура=ОбщегоНазначения.ПолучитьНоменклатуруПоКодуОракл(Формат(СтрокаДанных.Fields(3).Value,"ЧГ=0")); ЗПродажи.Количество=СтрокаДанных.Fields(4).Value; ЗПродажи.Стоимость=СтрокаДанных.Fields(5).Value; ЗПродажи.СтоимостьБезСкидок=СтрокаДанных.Fields(5).Value; ЗПродажи.Активность=Истина; НЗПродажи.Записать(); Иначе Док = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент(); ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь); Док.Дата=СтрокаДанных.Fields(0).Value; Док.Ответственный=УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный"); Док.Комментарий="Документ создан при помощи обработки Корректировка записей регистров"; СтрокаПродажи=Док.ТаблицаРегистровНакопления.Добавить(); СтрокаПродажи.Имя="Продажи"; СтрокаПродажи.Представление="Продажи"; Док.Записать(); ДокСсылка=Док.Ссылка; НЗПродажи=РегистрыНакопления.Продажи.СоздатьНаборЗаписей(); НЗПродажи.Отбор.Регистратор.Значение=ДокСсылка; ЗПродажи=НЗПродажи.Добавить(); ЗПродажи.Период= СтрокаДанных.Fields(0).Value; ЗПродажи.Регистратор=ДокСсылка; ЗПродажи.Организация=Справочники.Организации.НайтиПоКоду("000000001"); ЗПродажи.Контрагент=ОбщегоНазначения.ПолучитьКонтрагентаПоКодуОракл(Формат(СтрокаДанных.Fields(1).Value,"ЧГ=0")); ЗПродажи.Номенклатура=ОбщегоНазначения.ПолучитьНоменклатуруПоКодуОракл(Формат(СтрокаДанных.Fields(3).Value,"ЧГ=0")); ЗПродажи.Количество=СтрокаДанных.Fields(4).Value; ЗПродажи.Стоимость=СтрокаДанных.Fields(5).Value; ЗПродажи.СтоимостьБезСкидок=СтрокаДанных.Fields(5).Value; ЗПродажи.Активность=Истина; НЗПродажи.Записать(); КонецЕсли; теперь хочу сделать так чтобы при смене даты создавался новый документ,т.е новый документ на каждый день. |
|||
1
Mort
25.04.12
✎
15:51
|
Не могу не пожелать успехов!
|
|||
2
amadeus2010
25.04.12
✎
15:55
|
хотелось бы проконсультироваться как лучше сделать проверку на условие.Оставить как у меня или есть более удобные варианты
|
|||
3
Mort
25.04.12
✎
15:57
|
Я не чемпион по игре в "Найди 10 отличий", но имхо в обеих ветках происходит одно и тоже.
|
|||
4
amadeus2010
25.04.12
✎
16:04
|
в первой ветке документ создается если последующая дата больше текущей. Поэтому я хотел спросить как лучше создать условие при котором будет создаваться новый документ если новая дата больше текущей даты
|
|||
5
Mort
25.04.12
✎
16:10
|
А во второй ветке... тоже создаётся документ. А надо походу дописывать чего-то.
А посему держать переменную под текущий документ надо. Пысы: И это, заполнение из условия убери, нафиг два раза писать одно и тоже. И поиск организации, хрен с ним что по строковой константе ищется - но в цикле то зачем. |
|||
6
Eugene_life
25.04.12
✎
16:14
|
(5) "но в цикле то зачем." Простите за очевидную тупость вопроса - но где цикл у автора? Вопрос просто для повышения собственного интеллекта..
|
|||
7
amadeus2010
25.04.12
✎
16:15
|
не совсем понял что и откуда убрать,рязъясните пожалуйста
|
|||
8
amadeus2010
25.04.12
✎
16:17
|
по логике я должен проверить что если дата изменилась то надо создать новый документ, иначе запись данных в старый если дата прежняя, но вот как это можно сделать
|
|||
9
Wobland
25.04.12
✎
16:18
|
(7) пля, следи за руками.
док=СоздатьДокумент(); док.ЗаполнитьЧтоНадо(); Если УсловиеПоДате Тогда док.ЧтоТамЕщё(); Иначе док.ЧтоТамЕщёИначе(); Конец |
|||
10
Wobland
25.04.12
✎
16:20
|
(8) Если Изменилась Тогда док=Создать(); Иначе док=ВзятьСтарый; Конец;
дальше заполняешь как надо |
|||
11
Mort
25.04.12
✎
16:23
|
(6) Ну "перем СледующаяДата" и "СтрокаДанных.Fields(0).Value" наталкивают на мысль что автор читает recordset по строкам и создаёт/дописывает по ним документы.
|
|||
12
Eugene_life
25.04.12
✎
16:27
|
(11) Спасибо. А то я уж испугался своей серости :)
|
|||
13
amadeus2010
25.04.12
✎
16:28
|
вы правы я создаю документ из акцеса,но при выносе условия Если СледующаяДата>СтрокаДанных.Fields(0).Value Тогда выдает ошибку что нельзя сравнивать строкаДанных.Fields(0).Value
|
|||
14
Eugene_life
25.04.12
✎
16:30
|
(13) Их нельзя сравнивать (строку и дату). Хотя бы СледующаяДата>Дата(СтрокаДанных.Fields(0).Value). И то не факт, что взлетит
|
|||
15
amadeus2010
25.04.12
✎
16:38
|
СледующаяДата>Дата(СтрокаДанных.Fields(0).Value) не взлетело:)
|
|||
16
Eugene_life
25.04.12
✎
16:39
|
(15) Смотри в отладке, что у тебя в СледующаяДата, и что в СтрокаДанных.Fields(0).Value
|
|||
17
amadeus2010
25.04.12
✎
17:15
|
я как понял надо изменить запрос по выбору данных из таблицы акцесс, а уже потом делать отбор по датам. Вот сама процедура вызова акцесс и в ней надо сделать изменения
Файл = "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(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |