Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0
Доброго времени суток. Конфа: Бухгалтерский учет для Украины 7.7 (7.70.289)
Существует следующая задача - в расходных накладных за период с июля по октябрь поменять единицу измерения с ящиков на кг. для одного контрагента. Как это правильно сделать? Входить в каждую расходку и менять вручную или есть автоматизированный способ?
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0
Та ни в чем не накосячили, просто в главный офис нужна информация, а им единица измерения нужна килограммы... Скорее всего нужно ещё и пересчитать всё. А при пересчёте ничего не нарушится?
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Тогда доки лучше не трогать. В офис нужно отправлять отчет, он строится в основных(базовых?) единицах. Тогда непонятно, почему проблема только с одним Контром.
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0
Им только один контрагент нужен. Я через обработку экспорта данных формирую ДБФ-ки, потом через навигатор удаляю всех ненужных контрагентов и отправляю им. Но в наших расходках стоят ящики, а им нужны килограммы...
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Документы-то уже Контру выданы... и с пересчетом гемор. А у ТМЦ какая стоит Базовая единица? - базовую тоже менять нельзя без перепроведения. Болотистая ситуация(
Может, лучше доработать Обработку выгрузки? Добавить в нее пересчет в нужную единицу, а заодно фильтр по Контрагентам(шоб лишнего не выгружало)?
Эксель - да, но если на той стороне импорт из дбф... результат правки в Эксель может оказаться не в жилу
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(Pepe @ 21.11.11, 14:26)
Выгружайте в Ексель, легче править и пересчитывать.
Так им ДБФ-ки нужны.
Цитата(Zaval @ 21.11.11, 14:29)
Документы-то уже Контру выданы... и с пересчетом гемор. А у ТМЦ какая стоит Базовая единица? - базовую тоже менять нельзя без перепроведения. Болотистая ситуация(
Может, лучше доработать Обработку выгрузки? Добавить в нее пересчет в нужную единицу, а заодно фильтр по Контрагентам(шоб лишнего не выгружало)?
Эксель - да, но если на той стороне импорт из дбф... результат правки в Эксель может оказаться не в жилу
Просмотрел я ДБФ файл и оказалось, что в графу KOL-VO берется почему-то не килограммы, а ящики, хотя в самой накладной есть графа с килограммами... Что нужно дописать в обработке, чтобы он брал килограммы, а то я не силён в программировании?
Просмотрел я ДБФ файл и оказалось, что в графу KOL-VO берется почему-то не килограммы, а ящики, хотя в самой накладной есть графа с килограммами... Что нужно дописать в обработке, чтобы он брал килограммы, а то я не силён в программировании?
ми не бачимо код обробки, щоб вам щось порадити...
ДБ = СоздатьОбъект("XBase"); ДБ.ДобавитьПоле("FIRM","S",120,0); ДБ.ДобавитьПоле("DATE1","D",6,0); ДБ.ДобавитьПоле("DATE2","D",6,0); ИмяФайла = Каталог+"IMP_INFO.dbf"; ДБ.СоздатьФайл(ИмяФайла); Если ДБ.Открыта() = 0 Тогда ДБ.ОткрытьФайл(ИмяФайла); КонецЕсли;
Фирма = СоздатьОбъект("Справочник.Фирмы"); Фирма.ВыбратьЭлементы(); Пока Фирма.ПолучитьЭлемент() > 0 Цикл ДБ.Добавить(); ДБ.FIRM = Фирма.ПолнНаименование; ДБ.DATE1 = ВыбНачПериода; ДБ.DATE2 = ВыбКонПериода; ДБ.Записать(); КонецЦикла; ДБ.ЗакрытьФайл(); // ---------------------------- ДБ = СоздатьОбъект("XBase"); ДБ.ДобавитьПоле("ARTIKUL","S",12,0); ДБ.ДобавитьПоле("NAME","S",120,0); ИмяФайла = Каталог+"IMP_TMC.dbf"; ДБ.СоздатьФайл(ИмяФайла); Если ДБ.Открыта() = 0 Тогда ДБ.ОткрытьФайл(ИмяФайла); КонецЕсли;
ТМЦ = СоздатьОбъект("Справочник.ТМЦ"); ТМЦ.ПорядокНаименований(); ТМЦ.ВыбратьЭлементы(); Пока ТМЦ.ПолучитьЭлемент() > 0 Цикл Если (ТМЦ.ЭтоГруппа() = 1) или (ТМЦ.ПометкаУдаления() = 1) Тогда Продолжить; КонецЕсли; Если Новые = 1 Тогда Если Число(ТМЦ.Код) < ТМЦКод Тогда Продолжить; КонецЕсли; КонецЕсли; ДБ.Добавить(); Если ПустоеЗначение(ТМЦ.Артикул) = 1 Тогда ДБ.УстановитьЗначениеПоля("ARTIKUL",0); Иначе ДБ.УстановитьЗначениеПоля("ARTIKUL",ТМЦ.Артикул); КонецЕсли; ДБ.УстановитьЗначениеПоля("NAME",ТМЦ.Наименование); ДБ.Записать(); КонецЦикла; ТМЦ.Новый(); ТМЦКод = Число(ТМЦ.Код); ДБ.ЗакрытьФайл(); // ---------------------------- ДБ = СоздатьОбъект("XBase"); ДБ.ДобавитьПоле("KONTRAGENT","S",24,0); ДБ.ДобавитьПоле("GRUPPA","S",2,0); ДБ.ДобавитьПоле("NAME","S",120,0); ИмяФайла = Каталог+"IMP_KONT.dbf"; ДБ.СоздатьФайл(ИмяФайла); Если ДБ.Открыта() = 0 Тогда ДБ.ОткрытьФайл(ИмяФайла); КонецЕсли; Контра = СоздатьОбъект("Справочник.Контрагенты"); Контра.ПорядокНаименований(); Контра.ВыбратьЭлементы(); Пока Контра.ПолучитьЭлемент() > 0 Цикл Если (Контра.ЭтоГруппа() = 1) или (Контра.ПометкаУдаления() = 1) Тогда Продолжить; КонецЕсли; Если Новые = 1 Тогда Если Число(Контра.Код) < КонтраКод Тогда Продолжить; КонецЕсли; КонецЕсли; ДБ.Добавить(); Попытка Если ПустоеЗначение(Контра.ЕДРПОУ) = 1 Тогда ДБ.УстановитьЗначениеПоля("KONTRAGENT",0); Иначе ДБ.УстановитьЗначениеПоля("KONTRAGENT",Контра.ЕДРПОУ); КонецЕсли; Исключение ДБ.УстановитьЗначениеПоля("KONTRAGENT",0); КонецПопытки; ДБ.УстановитьЗначениеПоля("GRUPPA",0); ДБ.УстановитьЗначениеПоля("NAME",Контра.ПолнНаименование); ДБ.Записать(); КонецЦикла; Контра.Новый(); КонтраКод = Число(Контра.Код); ДБ.ЗакрытьФайл(); // ---------------------------- Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ОбрабатыватьДокументы Проведенные; //|Давалка = Документ.ПриходнаяНакладная.ДавальческоеСырье, Документ.ВозвратПоставщику.ДавальческоеСырье; //|Ответка = Документ.ПриходнаяНакладная.НаОтветХранение, Документ.РасходнаяНакладная.ОтветХранение; //|По281 = Документ.РасходнаяНакладная.По281; |УникальныйКод = Документ.ПриходнаяНакладная.ТекущийДокумент, Документ.РасходнаяНакладная.ТекущийДокумент, Документ.ВозвратнаяНакладная.ТекущийДокумент, Документ.ВозвратПоставщику.ТекущийДокумент, Документ.Перемещение.ТекущийДокумент; |НомерДокумента = Документ.ПриходнаяНакладная.НомерДок, Документ.РасходнаяНакладная.НомерДок, Документ.ВозвратнаяНакладная.НомерДок, Документ.ВозвратПоставщику.НомерДок, Документ.Перемещение.НомерДок; |ДатаДокумента = Документ.ПриходнаяНакладная.ДатаДок, Документ.РасходнаяНакладная.ДатаДок, Документ.ВозвратнаяНакладная.ДатаДок, Документ.ВозвратПоставщику.ДатаДок, Документ.Перемещение.ДатаДок; |КодМестаХр = Документ.ПриходнаяНакладная.МестоХранения, Документ.РасходнаяНакладная.МестоХранения, Документ.ВозвратнаяНакладная.МестоХранения, Документ.ВозвратПоставщику.МестоХранения,Документ.Перемещение.МестоХранения; |НовыйКодМестаХр = Документ.Перемещение.НовоеМестоХранения; |НомерСтроки = Документ.ПриходнаяНакладная.НомерСтроки, Документ.РасходнаяНакладная.НомерСтроки, Документ.ВозвратнаяНакладная.НомерСтроки, Документ.ВозвратПоставщику.НомерСтроки, Документ.Перемещение.НомерСтроки; |ТМЦ = Документ.ПриходнаяНакладная.ТМЦ, Документ.РасходнаяНакладная.ТМЦ, Документ.ВозвратнаяНакладная.ТМЦ, Документ.ВозвратПоставщику.ТМЦ, Документ.Перемещение.ТМЦ; |Счет = Документ.Перемещение.Счет; |НовыйТМЦ = Документ.Перемещение.Стало; |СталоСчет = Документ.Перемещение.СталоСчет; |Контрагент = Документ.ПриходнаяНакладная.Контрагент, Документ.РасходнаяНакладная.Контрагент, Документ.ВозвратнаяНакладная.Контрагент, Документ.ВозвратПоставщику.Контрагент; |Цена = Документ.ПриходнаяНакладная.ЦенаБезНДС, Документ.РасходнаяНакладная.ЦенаБезНДС, Документ.ВозвратнаяНакладная.ЦенаБезНДС, Документ.ВозвратПоставщику.ЦенаБезНДС; |Колво = Документ.ПриходнаяНакладная.Кво, Документ.РасходнаяНакладная.Кво, Документ.ВозвратнаяНакладная.Кво, Документ.ВозвратПоставщику.Кво, Документ.Перемещение.Кво; |Сумма = Документ.ПриходнаяНакладная.СуммаБезНДС, Документ.РасходнаяНакладная.СуммаБезНДС, Документ.ВозвратнаяНакладная.СуммаБезНДС, Документ.ВозвратПоставщику.СуммаБезНДС, Документ.Перемещение.СуммаУчБезНДС; |Группировка НомерДокумента; |Группировка НомерСтроки; //|Условие (Давалка = 0); //|Условие (Ответка = 0); |" ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
ДБ = СоздатьОбъект("XBase"); СоздатьДБ(ДБ,"IMP_IN.dbf"); ДБР = СоздатьОбъект("XBase"); СоздатьДБ(ДБР,"IMP_OUT.dbf"); Пока Запрос.Группировка(1) = 1 Цикл Состояние("Приход/Расход: "+Запрос.НомерДокумента+" "+Запрос.ДатаДокумента); Пока Запрос.Группировка(2) = 1 Цикл Если ПустоеЗначение(Запрос.ТМЦ) = 1 Тогда Продолжить; КонецЕсли; Ном = Запрос.УникальныйКод.Вид(); Если Ном = "Перемещение" Тогда Если ((Запрос.КодМестаХр.Тип <> МОЛы) И (Запрос.НовыйКодМестаХр.Тип <> МОЛы)) И ((Запрос.КодМестаХр.ВидСклада = Розничный) Или (Запрос.НовыйКодМестаХр.ВидСклада = Розничный)) Тогда Если Запрос.ТМЦ.Вид()="ТМЦ" Тогда Ц = Запрос.ТМЦ.Цена_Розн.Получить(Запрос.ДатаДокумента); КонецЕсли; Если Ц = 0 Тогда Если Запрос.НовыйТМЦ.Вид()="ТМЦ" Тогда Ц = Запрос.НовыйТМЦ.Цена_Розн.Получить(Запрос.ДатаДокумента); КонецЕсли; КонецЕсли; Иначе Ц = Запрос.Сумма/?(Запрос.Колво = 0,1,Запрос.Колво); КонецЕсли; Если Запрос.Счет.Забалансовый = 0 Тогда Заполнить(ДБР,Запрос.ТМЦ); ДБР.УстановитьЗначениеПоля("PART_NUMB",0); ДБР.УстановитьЗначениеПоля("ARTIKUL_GP",0); ДБР.PRICE_1C = Ц; ДБР.Записать(); КонецЕсли;
Если Запрос.СталоСчет.Забалансовый = 0 Тогда Заполнить(ДБ,Запрос.НовыйТМЦ); ДБ.COD_SCL = Запрос.НовыйКодМестаХр.ПолныйКод(); ДБ.PRICE_1C = Ц; ДБ.Записать(); КонецЕсли; ИначеЕсли (Ном = "ПриходнаяНакладная") или (Ном = "ВозвратнаяНакладная") Тогда Если Запрос.ТМЦ.Счет.Забалансовый = 0 Тогда Заполнить(ДБ,Запрос.ТМЦ); КонецЕсли; ИначеЕсли (Запрос.ТМЦ.Счет.Забалансовый = 0) Тогда Заполнить(ДБР,Запрос.ТМЦ); ДБР.УстановитьЗначениеПоля("PART_NUMB",0); ДБР.УстановитьЗначениеПоля("ARTIKUL_GP",0); ДБР.Записать(); КонецЕсли; КонецЦикла; КонецЦикла; // ----------КАЛЬКУЛЯЦИИ------------- Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ОбрабатыватьДокументы Проведенные; |УникальныйКод = Документ.КалькуляцияДавалки.ТекущийДокумент, Документ.КалькулДавалкиГотовПрод.ТекущийДокумент; |НомерДокумента = Документ.КалькуляцияДавалки.НомерДок, Документ.КалькулДавалкиГотовПрод.НомерДок; |ДатаДокумента = Документ.КалькуляцияДавалки.ДатаДок, Документ.КалькулДавалкиГотовПрод.ДатаДок; // |Свое = Документ.КалькуляцияДавалки.Свое, Документ.КалькулДавалкиГотовПрод.Свое; |КодМестаХр = Документ.КалькуляцияДавалки.МестоХранения, Документ.КалькулДавалкиГотовПрод.МестоХранения; |КодМестаХрПрод = Документ.КалькулДавалкиГотовПрод.МестоХраненияПродукции; |НомерСтроки = Документ.КалькуляцияДавалки.НомерСтроки; |ТМЦ = Документ.КалькуляцияДавалки.Затрата; |Продукция = Документ.КалькулДавалкиГотовПрод.Продукция, Документ.КалькуляцияДавалки.Продукция; |КолвоПрод = Документ.КалькулДавалкиГотовПрод.КвоПродукции; |Отход1 = Документ.КалькулДавалкиГотовПрод.ВидОтходов; |КолвоОтход1 = Документ.КалькулДавалкиГотовПрод.КвоОтходГотПрод; |Колво = Документ.КалькуляцияДавалки.КвоБаз; |Сумма = Документ.КалькуляцияДавалки.СуммаНач; |Функция СуммаПрод = Сумма (Сумма); |Группировка НомерДокумента; |Группировка НомерСтроки; // изменено // |Условие (Свое = 1); |" ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл Состояние("Калькуляция "+Запрос.ДатаДокумента); Если Запрос.УникальныйКод.Вид() = "КалькулДавалкиГотовПрод" Тогда ДБ.Добавить(); ДБ.COD_ID = СокрЛП(Сред(Запрос.УникальныйКод.ПолучитьПозицию(),20))+"/"+Запрос.НомерСтроки; ДБ.COD_WORKS = Префикс; ДБ.COD_SCL = Запрос.КодМестаХрПрод.ПолныйКод(); ДБ.KONTRAGENT = Префикс+"__111112"+Префикс; ДБ.DATA = Запрос.УникальныйКод.ДокОснование.ДатаДок; Если ПустоеЗначение(Запрос.Продукция.Артикул) = 1 Тогда ДБ.ARTIKUL_SR = 0; Иначе ДБ.ARTIKUL_SR = Запрос.Продукция.Артикул; КонецЕсли; ДБ.NUMBER_DOC = Запрос.УникальныйКод.ДокОснование.НомерДок; ДБ.COD_OPL = 0; ДБ.PRICE_1C = Запрос.УникальныйКод.ДокОснование.Итог("СуммаНач")/(Запрос.КолвоПрод+Запрос.КолвоОтход1); ДБ.KOL_VO = Запрос.КолвоПрод; ДБ.Записать(); Для К = 1 По 1 Цикл КвоОтх = Запрос.ПолучитьАтрибут("КолвоОтход"+СокрЛП(Строка(К))); ВидОтх = Запрос.ПолучитьАтрибут("Отход"+СокрЛП(Строка(К))); Если КвоОтх <> 0 Тогда ДБ.Добавить(); ДБ.COD_ID = СокрЛП(Сред(Запрос.УникальныйКод.ПолучитьПозицию(),20))+"/"+Запрос.НомерСтроки; ДБ.COD_WORKS = Префикс; ДБ.COD_SCL = Запрос.КодМестаХр.ПолныйКод(); ДБ.KONTRAGENT = Префикс+"__111112"+Префикс; ДБ.DATA = Запрос.УникальныйКод.ДокОснование.ДатаДок; Если ПустоеЗначение(ВидОтх.Артикул) = 1 Тогда ДБ.ARTIKUL_SR = 0; Иначе ДБ.ARTIKUL_SR = ВидОтх.Артикул; КонецЕсли; ДБ.NUMBER_DOC = Запрос.УникальныйКод.ДокОснование.НомерДок; ДБ.COD_OPL = 0; ДБ.PRICE_1C = Запрос.УникальныйКод.ДокОснование.Итог("СуммаНач")/(Запрос.КолвоПрод+Запрос.КолвоОтход1); ДБ.KOL_VO = КвоОтх; ДБ.Записать(); КонецЕсли; КонецЦикла; Иначе Пока Запрос.Группировка(2) = 1 Цикл Если Запрос.НомерСтроки < 1 Тогда Продолжить; КонецЕсли; ДБР.Добавить(); ДБР.COD_ID = СокрЛП(Сред(Запрос.УникальныйКод.ПолучитьПозицию(),20))+"/"+Запрос.НомерСтроки; ДБР.COD_WORKS = Префикс; ДБР.COD_SCL = Запрос.КодМестаХр.ПолныйКод(); ДБР.COD_OPL = 0; ДБР.KONTRAGENT = Префикс+"__111112"+Префикс; ДБР.DATA = Запрос.ДатаДокумента; ДБР.PART_NUMB = Запрос.НомерДокумента; Если ПустоеЗначение(Запрос.Продукция.Артикул) = 1 Тогда ДБР.ARTIKUL_GP = 0; Иначе ДБР.ARTIKUL_GP = Запрос.Продукция.Артикул; КонецЕсли; ДБР.NUMBER_DOC = Запрос.НомерДокумента; Если Запрос.ТМЦ.Вид()="ТМЦ" Тогда Если ПустоеЗначение(Запрос.ТМЦ.Артикул) = 1 Тогда ДБР.ARTIKUL_SR = 0; Иначе ДБР.ARTIKUL_SR = Запрос.ТМЦ.Артикул; КонецЕсли; Если Запрос.Колво = 0 Тогда ДБР.PRICE_1C = 0; ДБР.KOL_VO = 0; Иначе ДБР.PRICE_1C = Запрос.Сумма/Запрос.Колво; ДБР.KOL_VO = Запрос.Колво; КонецЕсли; КонецЕсли; ДБР.Записать(); КонецЦикла; КонецЕсли; КонецЦикла; ДБ.ЗакрытьФайл(); ДБР.ЗакрытьФайл(); // ---------------------------- // ТекстЗапроса = // "Период с ВыбНачПериода по ВыбКонПериода; // |Обрабатывать НеПомеченныеНаУдаление; // |ОбрабатыватьДокументы Проведенные; // |УникальныйКод = Документ.БанковскаяВыписка.ТекущийДокумент, Документ.ПриходныйКассовый.ТекущийДокумент, Документ.РасходныйКассовый.ТекущийДокумент; // |НомерДокумента = Документ.БанковскаяВыписка.НомерДок, Документ.ПриходныйКассовый.НомерДок, Документ.РасходныйКассовый.НомерДок; // |ДатаДокумента = Документ.БанковскаяВыписка.ДатаДок, Документ.ПриходныйКассовый.ДатаДок, Документ.РасходныйКассовый.ДатаДок; // |Счет = Документ.БанковскаяВыписка.Счет; // |Номер = Документ.БанковскаяВыписка.НомерСтроки,Документ.ПриходныйКассовый.НомерПО,Докуме нт.РасходныйКассовый.НомерРО; // |ДляВалюты = Документ.БанковскаяВыписка.СчетУчета; // |ПлюсМинусБанка = Документ.БанковскаяВыписка.ПриходРасход; // |Субконто = Документ.БанковскаяВыписка.Субконто, Документ.ПриходныйКассовый.Субконто, Документ.РасходныйКассовый.Субконто; // |Заказ = Документ.БанковскаяВыписка.Заказ, Документ.ПриходныйКассовый.Заказ, Документ.РасходныйКассовый.Заказ; // |Сумма = Документ.БанковскаяВыписка.СуммаСНДС, Документ.ПриходныйКассовый.СуммаВал, Документ.РасходныйКассовый.СуммаВал; // |Содержание = Документ.БанковскаяВыписка.Содержание, Документ.ПриходныйКассовый.Примечание, Документ.РасходныйКассовый.Примечание; // |Группировка НомерДокумента; // |Группировка Номер; // |" //; // // Если ошибка в запросе, то выход из процедуры // Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда // Возврат; // КонецЕсли; // // ДБ = СоздатьОбъект("XBase"); // ДБ.ДобавитьПоле("COD_ID","S",15,0); // ДБ.ДобавитьПоле("COD_WORKS","S",2,0); // ДБ.ДобавитьПоле("DAT_OPL","D",6,0); // ДБ.ДобавитьПоле("COD_OPL","N",1,0); // ДБ.ДобавитьПоле("KONTRAGENT","S",24,0); // ДБ.ДобавитьПоле("NUM_DOC","S",15,0); // ДБ.ДобавитьПоле("NAL_BEZN","S",6,0); // ДБ.ДобавитьПоле("SUMMA","N",20,7); // ДБ.ДобавитьПоле("COMMENT","S",120,0); // ИмяФайла = Каталог + "IMP_OPL.dbf"; // ДБ.СоздатьФайл(ИмяФайла); // Если ДБ.Открыта() = 0 Тогда // ДБ.ОткрытьФайл(ИмяФайла); // КонецЕсли; // Пока Запрос.Группировка(1) = 1 Цикл // Состояние("Оплата: "+Запрос.НомерДокумента+" "+Запрос.ДатаДокумента); // Ном = Лев(Запрос.НомерДокумента,2); // Если (Ном = "БВ") и (Запрос.ДляВалюты.Код = "312") Тогда // Продолжить; // КонецЕсли; // Пока Запрос.Группировка(2) = 1 Цикл // ДБ.Добавить(); // ДБ.УстановитьЗначениеПоля("COD_WORKS",Префикс); // ДБ.УстановитьЗначениеПоля("DAT_OPL",Запрос.ДатаДокумента); // Если Найти(Строка(Запрос.Заказ),"Возврат") <> 0 Тогда // ДБ.COD_OPL = 4; // ИначеЕсли Найти(Строка(Запрос.Заказ),"накл.") <> 0 Тогда // ДБ.COD_OPL = 1; // ИначеЕсли ((Найти(Строка(Запрос.Заказ),"фактура") <> 0) или (Найти(Строка(Запрос.Заказ),"слуг") <> 0)) или (Найти(Строка(Запрос.Заказ),"Сч. вход.") <> 0) Тогда // ДБ.COD_OPL = 2; // ИначеЕсли Найти(Строка(Запрос.Заказ),"Договор") <> 0 Тогда // ДБ.COD_OPL = 3; // Иначе ДБ.COD_OPL = 0; // КонецЕсли; // Если Запрос.Счет.Код = "711" Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","РС__11111117"); // ИначеЕсли Запрос.Счет.Код = "732" Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__КРЕДИТ_ПРОЦЕНТ"); // ИначеЕсли Запрос.Счет.Код = "621" Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__КРЕДИТ"); // ИначеЕсли Строка(Запрос.Субконто) = "" Тогда // Если Запрос.Счет.Код = "6411" Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__КАССА"); // Иначе ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__ПРОЧЕЕ"); // КонецЕсли; // ИначеЕсли Запрос.Субконто.Вид() = "Контрагенты" Тогда // Если ПустоеЗначение(Запрос.Субконто.Артикул) = 1 Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT",0); // Иначе ДБ.УстановитьЗначениеПоля("KONTRAGENT",Запрос.Субконто.Артикул); // КонецЕсли; // ИначеЕсли Запрос.Субконто.Вид() = "НалогиОтчисления" Тогда // Если ((Запрос.Счет.Код = "651") или (Запрос.Счет.Код = "652")) или // ((Запрос.Счет.Код = "653") или (Запрос.Счет.Код = "654")) // Тогда ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__КАССА"); // Иначе ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__НАЛОГИ"); // КонецЕсли; // ИначеЕсли Запрос.Субконто.Вид() = "Сотрудники" Тогда // Если Запрос.Субконто.Код = "" Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__ЗАРПЛАТА"); // Иначе ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__ПОД_ОТЧЕТ"); // КонецЕсли; // ИначеЕсли Запрос.Субконто.Вид() = "НашиДенежныеСчета" Тогда // Если (Запрос.Субконто.Код = "") или (Запрос.Субконто.Код = "") Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__РОЗНИЦА"); // ИначеЕсли Запрос.Субконто.СчетУчета.Код = "301" Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__КАССА"); // ИначеЕсли Запрос.Субконто.СчетУчета.Код = "311" Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__БАНК"); // КонецЕсли; // ИначеЕсли Запрос.Субконто.Вид() = "Кредиты" Тогда // ДБ.УстановитьЗначениеПоля("KONTRAGENT","ЗТ__КРЕДИТ"); // КонецЕсли; // ДБ.УстановитьЗначениеПоля("NUM_DOC",Запрос.НомерДокумента); // Если Ном = "БВ" Тогда // ДБ.COD_ID = СокрЛП(Сред(Запрос.УникальныйКод.ПолучитьПозицию(),20))+"/"+Запрос.Номер; // ДБ.УстановитьЗначениеПоля("NAL_BEZN","БЕЗНАЛ"); // Иначе // ДБ.COD_ID = СокрЛП(Сред(Запрос.УникальныйКод.ПолучитьПозицию(),20)); // ДБ.УстановитьЗначениеПоля("NAL_BEZN","НАЛ"); // КонецЕсли; // Если (Ном = "ПК") или ((Ном = "БВ") и (Запрос.ПлюсМинусБанка = Перечисление.ПлюсМинус.Плюс)) Тогда // ДБ.УстановитьЗначениеПоля("SUMMA",Запрос.Сумма); // Иначе ДБ.УстановитьЗначениеПоля("SUMMA",-(Запрос.Сумма)); // КонецЕсли; // Если ПустоеЗначение(Запрос.Содержание) = 1 Тогда // ДБ.УстановитьЗначениеПоля("COMMENT",0); // Иначе ДБ.УстановитьЗначениеПоля("COMMENT",Запрос.Содержание); // КонецЕсли; // ДБ.Записать(); // КонецЦикла; // КонецЦикла; // ДБ.ЗакрытьФайл(); Таб = СоздатьОбъект("Таблица"); Если СписокКонтра.РазмерСписка() > 0 Тогда Таб.ВывестиСекцию("ШапкаКонтра"); Для К = 1 По СписокКонтра.РазмерСписка() Цикл Таб.ВывестиСекцию("Контра"); КонецЦикла; КонецЕсли; Если СписокТМЦ.РазмерСписка() > 0 Тогда Таб.ВывестиСекцию("ШапкаТМЦ"); Для К = 1 По СписокТМЦ.РазмерСписка() Цикл Таб.ВывестиСекцию("ТМЦ"); КонецЦикла; КонецЕсли; Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать",""); КонецПроцедуры // ================== Процедура ПриЗакрытии() глСохранитьЗначение("ЭкспортДанных","Каталог",Каталог); глСохранитьЗначение("ЭкспортДанных","Новые",Новые); глСохранитьЗначение("ЭкспортДанных","ТМЦКод",ТМЦКод); глСохранитьЗначение("ЭкспортДанных","КонтраКод",КонтраКод); КонецПроцедуры // ================== Процедура ПриОткрытии() Каталог = глВосстановитьЗначение("ЭкспортДанных","Каталог"); Новые = глВосстановитьЗначение("ЭкспортДанных","Новые"); ТМЦКод = глВосстановитьЗначение("ЭкспортДанных","ТМЦКод"); КонтраКод = глВосстановитьЗначение("ЭкспортДанных","КонтраКод"); КонецПроцедуры
Предположу... Добавить в ДБФ поле VES. Добавить в текст запроса переменную, которая запрашивает данные из колонки документа Вес (или как там она у вас называется).
З.Ы. Извините, не удержался... Что это ха документ, КалькуляцияДавалки?
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0
Колво = Документ.ПриходнаяНакладная.Кво, Документ.РасходнаяНакладная.Кво, Документ.ВозвратнаяНакладная.Кво, Документ.ВозвратПоставщику.Кво, Документ.Перемещение.Кво; Вот то ,что попадает в количество. Посмотрите, какой реквизит в выше указанных документах кг.,а который ящики и замените в запросе.
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0
В конфигураторе откройте форму документа расходная накладная, найдите в табличной части колонку в которой отображаются килограммы и идентификатор этой колонки и будет нужным реквизитом. Но мне кажется - он и должен был бы быть Кво, так как ящики - это тара. Но может у Вас по другому. Я не знаю как сюда картинку вставить, но Вы и так справитесь-правой кнопкой на Документе расходнаянакладная (в дереве документов конфигурации )=редактировать форму, и ищите колонку в которой у Вас кг. На ней два раза и в окошке свойств поле идентификатор и есьт реквизит который указан в запросе как : Документ.Расходнаяакладная.Кво.
1. это разовая задача? 2. что офис делает с вашей выгрузкой? у них 1С или другая программа? 3. менять в документах ничего не следует. они проведены и закрыты. можно нарушить итоги. 4. запрос обычно строится по БИ. здесь по документам. по документам нормально тоже, но тогда тщательнее нужно все проверки ставить, проведен ли документ, помечен на удаление и тд. 5. исходя из того, что есть... можно пересчитать в самой обработке. вставить такое:
Если Ном="РасходнаяНакладная" Тогда //Пересчитать Кво и Цену по ед измерения // КилЗаЯщик - содержит сколько килограмм хранится в одном ящике. допустим 10 килограммов в ящике. КилЗаЯщик=10; КолВо=Запрос.КолВо/КилограммЗаЯщик; Ц = Запрос.Сумма/?(Запрос.Колво = 0,1,Запрос.Колво); КонецЕсли;
вставить здесь. показан только кусок кода. у меня вставка со строки 243. это не все. нужно отлаживать и смотреть.
ДБ = СоздатьОбъект("XBase"); СоздатьДБ(ДБ,"IMP_IN.dbf"); ДБР = СоздатьОбъект("XBase"); СоздатьДБ(ДБР,"IMP_OUT.dbf"); Пока Запрос.Группировка(1) = 1 Цикл Состояние("Приход/Расход: "+Запрос.НомерДокумента+" "+Запрос.ДатаДокумента); Пока Запрос.Группировка(2) = 1 Цикл Если ПустоеЗначение(Запрос.ТМЦ) = 1 Тогда Продолжить; КонецЕсли; Ном = Запрос.УникальныйКод.Вид();
Если Ном="РасходнаяНакладная" Тогда //Пересчитать Кво и Цену по ед измерения // КилЗаЯщик - содержит сколько килограмм хранится в одном ящике. допустим 10 килограммов в ящике. КилЗаЯщик=10; КолВо=Запрос.КолВо/КилограммЗаЯщик; Ц = Запрос.Сумма/?(Запрос.Колво = 0,1,Запрос.Колво); КонецЕсли;
Если Ном = "Перемещение" Тогда
не найду, где редактировать свое же. КилограммзаЯщик исправить на КилЗАЯщик. Одна переменная.
поправлен текст вставки
Если Ном="РасходнаяНакладная" Тогда //Пересчитать Кво и Цену по ед измерения // КилЗаЯщик - содержит сколько килограмм хранится в одном ящике. допустим 10 килограммов в ящике. КилЗаЯщик=10; КолВо=Запрос.КолВо/КилЗаЯщик; Ц = Запрос.Сумма/?(Колво = 0,1,Колво); КонецЕсли;
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(kalyamov @ 23.11.11, 15:03)
В конфигураторе откройте форму документа расходная накладная, найдите в табличной части колонку в которой отображаются килограммы и идентификатор этой колонки и будет нужным реквизитом. Но мне кажется - он и должен был бы быть Кво, так как ящики - это тара. Но может у Вас по другому. Я не знаю как сюда картинку вставить, но Вы и так справитесь-правой кнопкой на Документе расходнаянакладная (в дереве документов конфигурации )=редактировать форму, и ищите колонку в которой у Вас кг. На ней два раза и в окошке свойств поле идентификатор и есьт реквизит который указан в запросе как : Документ.Расходнаяакладная.Кво.
В колонке, где ящики стоит - Формат(ТаблТМЦ.Кво,"Ч12.3"), а в той, где килограммы стоит - Формат(КвоКг,"Ч12.3")
Я поменял Кво на КвоКг, но при обработке тогда выдаёт ошибку Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {D:\XLADO\EXTFORMS\ЭКСПОРТДАННЫХ.ERT(228)}: Колво = Документ.ПриходнаяНакладная.Кво, Документ.РасходнаяНакладная. <<?>> КвоКг, Документ.ВозвратнаяНакладная.Кво, Документ.ВозвратПоставщику.Кво, Документ.Перемещение.Кво; Запрос[16] : Неверно заданный путь 'КвоКг'
Домовик, у нас ящики идут с разным весом, поэтому переводить кол-во ящиков в кг не получится
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0
Это Вы посмотрели в печатной форме, я не правильно наверное объяснил. Вы открываете расходную накладную и в той части где заполняется товар надо найти нужную колонку. По логике и КвоКг должно было сработать, но видно в модуле печати есть какие то ухищрения. Наверное КвоКГ = рассчитываемое поле или еще как. Килограммы присутствуют и в печатной форме и в самом документе или только когда печатают накладную? Суть Вы уловили, осталось найти эти килограммы
[quote name='Домовик' date='23.11.11, 15:53' post='37380'] 4. запрос обычно строится по БИ. здесь по документам. по документам нормально тоже, но тогда тщательнее нужно все проверки ставить, проведен ли документ, помечен на удаление и тд. [code=1c] Если Ном="РасходнаяНакладная" Тогда
в БИ как раз скорее всего в нужных единицах. как вариант при записи в ДБФ можно проверять в каких единицах и, если не в килограммах, то пересчитывать по коэфициенту.
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!